]> git.sesse.net Git - ffmpeg/blob - doc/filters.texi
Merge commit 'cad739dace55e3446ef7180de688173cd19fb000'
[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,,the "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 dynaudnorm
2542 Dynamic Audio Normalizer.
2543
2544 This filter applies a certain amount of gain to the input audio in order
2545 to bring its peak magnitude to a target level (e.g. 0 dBFS). However, in
2546 contrast to more "simple" normalization algorithms, the Dynamic Audio
2547 Normalizer *dynamically* re-adjusts the gain factor to the input audio.
2548 This allows for applying extra gain to the "quiet" sections of the audio
2549 while avoiding distortions or clipping the "loud" sections. In other words:
2550 The Dynamic Audio Normalizer will "even out" the volume of quiet and loud
2551 sections, in the sense that the volume of each section is brought to the
2552 same target level. Note, however, that the Dynamic Audio Normalizer achieves
2553 this goal *without* applying "dynamic range compressing". It will retain 100%
2554 of the dynamic range *within* each section of the audio file.
2555
2556 @table @option
2557 @item f
2558 Set the frame length in milliseconds. In range from 10 to 8000 milliseconds.
2559 Default is 500 milliseconds.
2560 The Dynamic Audio Normalizer processes the input audio in small chunks,
2561 referred to as frames. This is required, because a peak magnitude has no
2562 meaning for just a single sample value. Instead, we need to determine the
2563 peak magnitude for a contiguous sequence of sample values. While a "standard"
2564 normalizer would simply use the peak magnitude of the complete file, the
2565 Dynamic Audio Normalizer determines the peak magnitude individually for each
2566 frame. The length of a frame is specified in milliseconds. By default, the
2567 Dynamic Audio Normalizer uses a frame length of 500 milliseconds, which has
2568 been found to give good results with most files.
2569 Note that the exact frame length, in number of samples, will be determined
2570 automatically, based on the sampling rate of the individual input audio file.
2571
2572 @item g
2573 Set the Gaussian filter window size. In range from 3 to 301, must be odd
2574 number. Default is 31.
2575 Probably the most important parameter of the Dynamic Audio Normalizer is the
2576 @code{window size} of the Gaussian smoothing filter. The filter's window size
2577 is specified in frames, centered around the current frame. For the sake of
2578 simplicity, this must be an odd number. Consequently, the default value of 31
2579 takes into account the current frame, as well as the 15 preceding frames and
2580 the 15 subsequent frames. Using a larger window results in a stronger
2581 smoothing effect and thus in less gain variation, i.e. slower gain
2582 adaptation. Conversely, using a smaller window results in a weaker smoothing
2583 effect and thus in more gain variation, i.e. faster gain adaptation.
2584 In other words, the more you increase this value, the more the Dynamic Audio
2585 Normalizer will behave like a "traditional" normalization filter. On the
2586 contrary, the more you decrease this value, the more the Dynamic Audio
2587 Normalizer will behave like a dynamic range compressor.
2588
2589 @item p
2590 Set the target peak value. This specifies the highest permissible magnitude
2591 level for the normalized audio input. This filter will try to approach the
2592 target peak magnitude as closely as possible, but at the same time it also
2593 makes sure that the normalized signal will never exceed the peak magnitude.
2594 A frame's maximum local gain factor is imposed directly by the target peak
2595 magnitude. The default value is 0.95 and thus leaves a headroom of 5%*.
2596 It is not recommended to go above this value.
2597
2598 @item m
2599 Set the maximum gain factor. In range from 1.0 to 100.0. Default is 10.0.
2600 The Dynamic Audio Normalizer determines the maximum possible (local) gain
2601 factor for each input frame, i.e. the maximum gain factor that does not
2602 result in clipping or distortion. The maximum gain factor is determined by
2603 the frame's highest magnitude sample. However, the Dynamic Audio Normalizer
2604 additionally bounds the frame's maximum gain factor by a predetermined
2605 (global) maximum gain factor. This is done in order to avoid excessive gain
2606 factors in "silent" or almost silent frames. By default, the maximum gain
2607 factor is 10.0, For most inputs the default value should be sufficient and
2608 it usually is not recommended to increase this value. Though, for input
2609 with an extremely low overall volume level, it may be necessary to allow even
2610 higher gain factors. Note, however, that the Dynamic Audio Normalizer does
2611 not simply apply a "hard" threshold (i.e. cut off values above the threshold).
2612 Instead, a "sigmoid" threshold function will be applied. This way, the
2613 gain factors will smoothly approach the threshold value, but never exceed that
2614 value.
2615
2616 @item r
2617 Set the target RMS. In range from 0.0 to 1.0. Default is 0.0 - disabled.
2618 By default, the Dynamic Audio Normalizer performs "peak" normalization.
2619 This means that the maximum local gain factor for each frame is defined
2620 (only) by the frame's highest magnitude sample. This way, the samples can
2621 be amplified as much as possible without exceeding the maximum signal
2622 level, i.e. without clipping. Optionally, however, the Dynamic Audio
2623 Normalizer can also take into account the frame's root mean square,
2624 abbreviated RMS. In electrical engineering, the RMS is commonly used to
2625 determine the power of a time-varying signal. It is therefore considered
2626 that the RMS is a better approximation of the "perceived loudness" than
2627 just looking at the signal's peak magnitude. Consequently, by adjusting all
2628 frames to a constant RMS value, a uniform "perceived loudness" can be
2629 established. If a target RMS value has been specified, a frame's local gain
2630 factor is defined as the factor that would result in exactly that RMS value.
2631 Note, however, that the maximum local gain factor is still restricted by the
2632 frame's highest magnitude sample, in order to prevent clipping.
2633
2634 @item n
2635 Enable channels coupling. By default is enabled.
2636 By default, the Dynamic Audio Normalizer will amplify all channels by the same
2637 amount. This means the same gain factor will be applied to all channels, i.e.
2638 the maximum possible gain factor is determined by the "loudest" channel.
2639 However, in some recordings, it may happen that the volume of the different
2640 channels is uneven, e.g. one channel may be "quieter" than the other one(s).
2641 In this case, this option can be used to disable the channel coupling. This way,
2642 the gain factor will be determined independently for each channel, depending
2643 only on the individual channel's highest magnitude sample. This allows for
2644 harmonizing the volume of the different channels.
2645
2646 @item c
2647 Enable DC bias correction. By default is disabled.
2648 An audio signal (in the time domain) is a sequence of sample values.
2649 In the Dynamic Audio Normalizer these sample values are represented in the
2650 -1.0 to 1.0 range, regardless of the original input format. Normally, the
2651 audio signal, or "waveform", should be centered around the zero point.
2652 That means if we calculate the mean value of all samples in a file, or in a
2653 single frame, then the result should be 0.0 or at least very close to that
2654 value. If, however, there is a significant deviation of the mean value from
2655 0.0, in either positive or negative direction, this is referred to as a
2656 DC bias or DC offset. Since a DC bias is clearly undesirable, the Dynamic
2657 Audio Normalizer provides optional DC bias correction.
2658 With DC bias correction enabled, the Dynamic Audio Normalizer will determine
2659 the mean value, or "DC correction" offset, of each input frame and subtract
2660 that value from all of the frame's sample values which ensures those samples
2661 are centered around 0.0 again. Also, in order to avoid "gaps" at the frame
2662 boundaries, the DC correction offset values will be interpolated smoothly
2663 between neighbouring frames.
2664
2665 @item b
2666 Enable alternative boundary mode. By default is disabled.
2667 The Dynamic Audio Normalizer takes into account a certain neighbourhood
2668 around each frame. This includes the preceding frames as well as the
2669 subsequent frames. However, for the "boundary" frames, located at the very
2670 beginning and at the very end of the audio file, not all neighbouring
2671 frames are available. In particular, for the first few frames in the audio
2672 file, the preceding frames are not known. And, similarly, for the last few
2673 frames in the audio file, the subsequent frames are not known. Thus, the
2674 question arises which gain factors should be assumed for the missing frames
2675 in the "boundary" region. The Dynamic Audio Normalizer implements two modes
2676 to deal with this situation. The default boundary mode assumes a gain factor
2677 of exactly 1.0 for the missing frames, resulting in a smooth "fade in" and
2678 "fade out" at the beginning and at the end of the input, respectively.
2679
2680 @item s
2681 Set the compress factor. In range from 0.0 to 30.0. Default is 0.0.
2682 By default, the Dynamic Audio Normalizer does not apply "traditional"
2683 compression. This means that signal peaks will not be pruned and thus the
2684 full dynamic range will be retained within each local neighbourhood. However,
2685 in some cases it may be desirable to combine the Dynamic Audio Normalizer's
2686 normalization algorithm with a more "traditional" compression.
2687 For this purpose, the Dynamic Audio Normalizer provides an optional compression
2688 (thresholding) function. If (and only if) the compression feature is enabled,
2689 all input frames will be processed by a soft knee thresholding function prior
2690 to the actual normalization process. Put simply, the thresholding function is
2691 going to prune all samples whose magnitude exceeds a certain threshold value.
2692 However, the Dynamic Audio Normalizer does not simply apply a fixed threshold
2693 value. Instead, the threshold value will be adjusted for each individual
2694 frame.
2695 In general, smaller parameters result in stronger compression, and vice versa.
2696 Values below 3.0 are not recommended, because audible distortion may appear.
2697 @end table
2698
2699 @section earwax
2700
2701 Make audio easier to listen to on headphones.
2702
2703 This filter adds `cues' to 44.1kHz stereo (i.e. audio CD format) audio
2704 so that when listened to on headphones the stereo image is moved from
2705 inside your head (standard for headphones) to outside and in front of
2706 the listener (standard for speakers).
2707
2708 Ported from SoX.
2709
2710 @section equalizer
2711
2712 Apply a two-pole peaking equalisation (EQ) filter. With this
2713 filter, the signal-level at and around a selected frequency can
2714 be increased or decreased, whilst (unlike bandpass and bandreject
2715 filters) that at all other frequencies is unchanged.
2716
2717 In order to produce complex equalisation curves, this filter can
2718 be given several times, each with a different central frequency.
2719
2720 The filter accepts the following options:
2721
2722 @table @option
2723 @item frequency, f
2724 Set the filter's central frequency in Hz.
2725
2726 @item width_type, t
2727 Set method to specify band-width of filter.
2728 @table @option
2729 @item h
2730 Hz
2731 @item q
2732 Q-Factor
2733 @item o
2734 octave
2735 @item s
2736 slope
2737 @item k
2738 kHz
2739 @end table
2740
2741 @item width, w
2742 Specify the band-width of a filter in width_type units.
2743
2744 @item gain, g
2745 Set the required gain or attenuation in dB.
2746 Beware of clipping when using a positive gain.
2747
2748 @item channels, c
2749 Specify which channels to filter, by default all available are filtered.
2750 @end table
2751
2752 @subsection Examples
2753 @itemize
2754 @item
2755 Attenuate 10 dB at 1000 Hz, with a bandwidth of 200 Hz:
2756 @example
2757 equalizer=f=1000:t=h:width=200:g=-10
2758 @end example
2759
2760 @item
2761 Apply 2 dB gain at 1000 Hz with Q 1 and attenuate 5 dB at 100 Hz with Q 2:
2762 @example
2763 equalizer=f=1000:t=q:w=1:g=2,equalizer=f=100:t=q:w=2:g=-5
2764 @end example
2765 @end itemize
2766
2767 @subsection Commands
2768
2769 This filter supports the following commands:
2770 @table @option
2771 @item frequency, f
2772 Change equalizer frequency.
2773 Syntax for the command is : "@var{frequency}"
2774
2775 @item width_type, t
2776 Change equalizer width_type.
2777 Syntax for the command is : "@var{width_type}"
2778
2779 @item width, w
2780 Change equalizer width.
2781 Syntax for the command is : "@var{width}"
2782
2783 @item gain, g
2784 Change equalizer gain.
2785 Syntax for the command is : "@var{gain}"
2786 @end table
2787
2788 @section extrastereo
2789
2790 Linearly increases the difference between left and right channels which
2791 adds some sort of "live" effect to playback.
2792
2793 The filter accepts the following options:
2794
2795 @table @option
2796 @item m
2797 Sets the difference coefficient (default: 2.5). 0.0 means mono sound
2798 (average of both channels), with 1.0 sound will be unchanged, with
2799 -1.0 left and right channels will be swapped.
2800
2801 @item c
2802 Enable clipping. By default is enabled.
2803 @end table
2804
2805 @section firequalizer
2806 Apply FIR Equalization using arbitrary frequency response.
2807
2808 The filter accepts the following option:
2809
2810 @table @option
2811 @item gain
2812 Set gain curve equation (in dB). The expression can contain variables:
2813 @table @option
2814 @item f
2815 the evaluated frequency
2816 @item sr
2817 sample rate
2818 @item ch
2819 channel number, set to 0 when multichannels evaluation is disabled
2820 @item chid
2821 channel id, see libavutil/channel_layout.h, set to the first channel id when
2822 multichannels evaluation is disabled
2823 @item chs
2824 number of channels
2825 @item chlayout
2826 channel_layout, see libavutil/channel_layout.h
2827
2828 @end table
2829 and functions:
2830 @table @option
2831 @item gain_interpolate(f)
2832 interpolate gain on frequency f based on gain_entry
2833 @item cubic_interpolate(f)
2834 same as gain_interpolate, but smoother
2835 @end table
2836 This option is also available as command. Default is @code{gain_interpolate(f)}.
2837
2838 @item gain_entry
2839 Set gain entry for gain_interpolate function. The expression can
2840 contain functions:
2841 @table @option
2842 @item entry(f, g)
2843 store gain entry at frequency f with value g
2844 @end table
2845 This option is also available as command.
2846
2847 @item delay
2848 Set filter delay in seconds. Higher value means more accurate.
2849 Default is @code{0.01}.
2850
2851 @item accuracy
2852 Set filter accuracy in Hz. Lower value means more accurate.
2853 Default is @code{5}.
2854
2855 @item wfunc
2856 Set window function. Acceptable values are:
2857 @table @option
2858 @item rectangular
2859 rectangular window, useful when gain curve is already smooth
2860 @item hann
2861 hann window (default)
2862 @item hamming
2863 hamming window
2864 @item blackman
2865 blackman window
2866 @item nuttall3
2867 3-terms continuous 1st derivative nuttall window
2868 @item mnuttall3
2869 minimum 3-terms discontinuous nuttall window
2870 @item nuttall
2871 4-terms continuous 1st derivative nuttall window
2872 @item bnuttall
2873 minimum 4-terms discontinuous nuttall (blackman-nuttall) window
2874 @item bharris
2875 blackman-harris window
2876 @item tukey
2877 tukey window
2878 @end table
2879
2880 @item fixed
2881 If enabled, use fixed number of audio samples. This improves speed when
2882 filtering with large delay. Default is disabled.
2883
2884 @item multi
2885 Enable multichannels evaluation on gain. Default is disabled.
2886
2887 @item zero_phase
2888 Enable zero phase mode by subtracting timestamp to compensate delay.
2889 Default is disabled.
2890
2891 @item scale
2892 Set scale used by gain. Acceptable values are:
2893 @table @option
2894 @item linlin
2895 linear frequency, linear gain
2896 @item linlog
2897 linear frequency, logarithmic (in dB) gain (default)
2898 @item loglin
2899 logarithmic (in octave scale where 20 Hz is 0) frequency, linear gain
2900 @item loglog
2901 logarithmic frequency, logarithmic gain
2902 @end table
2903
2904 @item dumpfile
2905 Set file for dumping, suitable for gnuplot.
2906
2907 @item dumpscale
2908 Set scale for dumpfile. Acceptable values are same with scale option.
2909 Default is linlog.
2910
2911 @item fft2
2912 Enable 2-channel convolution using complex FFT. This improves speed significantly.
2913 Default is disabled.
2914
2915 @item min_phase
2916 Enable minimum phase impulse response. Default is disabled.
2917 @end table
2918
2919 @subsection Examples
2920 @itemize
2921 @item
2922 lowpass at 1000 Hz:
2923 @example
2924 firequalizer=gain='if(lt(f,1000), 0, -INF)'
2925 @end example
2926 @item
2927 lowpass at 1000 Hz with gain_entry:
2928 @example
2929 firequalizer=gain_entry='entry(1000,0); entry(1001, -INF)'
2930 @end example
2931 @item
2932 custom equalization:
2933 @example
2934 firequalizer=gain_entry='entry(100,0); entry(400, -4); entry(1000, -6); entry(2000, 0)'
2935 @end example
2936 @item
2937 higher delay with zero phase to compensate delay:
2938 @example
2939 firequalizer=delay=0.1:fixed=on:zero_phase=on
2940 @end example
2941 @item
2942 lowpass on left channel, highpass on right channel:
2943 @example
2944 firequalizer=gain='if(eq(chid,1), gain_interpolate(f), if(eq(chid,2), gain_interpolate(1e6+f), 0))'
2945 :gain_entry='entry(1000, 0); entry(1001,-INF); entry(1e6+1000,0)':multi=on
2946 @end example
2947 @end itemize
2948
2949 @section flanger
2950 Apply a flanging effect to the audio.
2951
2952 The filter accepts the following options:
2953
2954 @table @option
2955 @item delay
2956 Set base delay in milliseconds. Range from 0 to 30. Default value is 0.
2957
2958 @item depth
2959 Set added sweep delay in milliseconds. Range from 0 to 10. Default value is 2.
2960
2961 @item regen
2962 Set percentage regeneration (delayed signal feedback). Range from -95 to 95.
2963 Default value is 0.
2964
2965 @item width
2966 Set percentage of delayed signal mixed with original. Range from 0 to 100.
2967 Default value is 71.
2968
2969 @item speed
2970 Set sweeps per second (Hz). Range from 0.1 to 10. Default value is 0.5.
2971
2972 @item shape
2973 Set swept wave shape, can be @var{triangular} or @var{sinusoidal}.
2974 Default value is @var{sinusoidal}.
2975
2976 @item phase
2977 Set swept wave percentage-shift for multi channel. Range from 0 to 100.
2978 Default value is 25.
2979
2980 @item interp
2981 Set delay-line interpolation, @var{linear} or @var{quadratic}.
2982 Default is @var{linear}.
2983 @end table
2984
2985 @section haas
2986 Apply Haas effect to audio.
2987
2988 Note that this makes most sense to apply on mono signals.
2989 With this filter applied to mono signals it give some directionality and
2990 stretches its stereo image.
2991
2992 The filter accepts the following options:
2993
2994 @table @option
2995 @item level_in
2996 Set input level. By default is @var{1}, or 0dB
2997
2998 @item level_out
2999 Set output level. By default is @var{1}, or 0dB.
3000
3001 @item side_gain
3002 Set gain applied to side part of signal. By default is @var{1}.
3003
3004 @item middle_source
3005 Set kind of middle source. Can be one of the following:
3006
3007 @table @samp
3008 @item left
3009 Pick left channel.
3010
3011 @item right
3012 Pick right channel.
3013
3014 @item mid
3015 Pick middle part signal of stereo image.
3016
3017 @item side
3018 Pick side part signal of stereo image.
3019 @end table
3020
3021 @item middle_phase
3022 Change middle phase. By default is disabled.
3023
3024 @item left_delay
3025 Set left channel delay. By default is @var{2.05} milliseconds.
3026
3027 @item left_balance
3028 Set left channel balance. By default is @var{-1}.
3029
3030 @item left_gain
3031 Set left channel gain. By default is @var{1}.
3032
3033 @item left_phase
3034 Change left phase. By default is disabled.
3035
3036 @item right_delay
3037 Set right channel delay. By defaults is @var{2.12} milliseconds.
3038
3039 @item right_balance
3040 Set right channel balance. By default is @var{1}.
3041
3042 @item right_gain
3043 Set right channel gain. By default is @var{1}.
3044
3045 @item right_phase
3046 Change right phase. By default is enabled.
3047 @end table
3048
3049 @section hdcd
3050
3051 Decodes High Definition Compatible Digital (HDCD) data. A 16-bit PCM stream with
3052 embedded HDCD codes is expanded into a 20-bit PCM stream.
3053
3054 The filter supports the Peak Extend and Low-level Gain Adjustment features
3055 of HDCD, and detects the Transient Filter flag.
3056
3057 @example
3058 ffmpeg -i HDCD16.flac -af hdcd OUT24.flac
3059 @end example
3060
3061 When using the filter with wav, note the default encoding for wav is 16-bit,
3062 so the resulting 20-bit stream will be truncated back to 16-bit. Use something
3063 like @command{-acodec pcm_s24le} after the filter to get 24-bit PCM output.
3064 @example
3065 ffmpeg -i HDCD16.wav -af hdcd OUT16.wav
3066 ffmpeg -i HDCD16.wav -af hdcd -c:a pcm_s24le OUT24.wav
3067 @end example
3068
3069 The filter accepts the following options:
3070
3071 @table @option
3072 @item disable_autoconvert
3073 Disable any automatic format conversion or resampling in the filter graph.
3074
3075 @item process_stereo
3076 Process the stereo channels together. If target_gain does not match between
3077 channels, consider it invalid and use the last valid target_gain.
3078
3079 @item cdt_ms
3080 Set the code detect timer period in ms.
3081
3082 @item force_pe
3083 Always extend peaks above -3dBFS even if PE isn't signaled.
3084
3085 @item analyze_mode
3086 Replace audio with a solid tone and adjust the amplitude to signal some
3087 specific aspect of the decoding process. The output file can be loaded in
3088 an audio editor alongside the original to aid analysis.
3089
3090 @code{analyze_mode=pe:force_pe=true} can be used to see all samples above the PE level.
3091
3092 Modes are:
3093 @table @samp
3094 @item 0, off
3095 Disabled
3096 @item 1, lle
3097 Gain adjustment level at each sample
3098 @item 2, pe
3099 Samples where peak extend occurs
3100 @item 3, cdt
3101 Samples where the code detect timer is active
3102 @item 4, tgm
3103 Samples where the target gain does not match between channels
3104 @end table
3105 @end table
3106
3107 @section headphone
3108
3109 Apply head-related transfer functions (HRTFs) to create virtual
3110 loudspeakers around the user for binaural listening via headphones.
3111 The HRIRs are provided via additional streams, for each channel
3112 one stereo input stream is needed.
3113
3114 The filter accepts the following options:
3115
3116 @table @option
3117 @item map
3118 Set mapping of input streams for convolution.
3119 The argument is a '|'-separated list of channel names in order as they
3120 are given as additional stream inputs for filter.
3121 This also specify number of input streams. Number of input streams
3122 must be not less than number of channels in first stream plus one.
3123
3124 @item gain
3125 Set gain applied to audio. Value is in dB. Default is 0.
3126
3127 @item type
3128 Set processing type. Can be @var{time} or @var{freq}. @var{time} is
3129 processing audio in time domain which is slow.
3130 @var{freq} is processing audio in frequency domain which is fast.
3131 Default is @var{freq}.
3132
3133 @item lfe
3134 Set custom gain for LFE channels. Value is in dB. Default is 0.
3135 @end table
3136
3137 @subsection Examples
3138
3139 @itemize
3140 @item
3141 Full example using wav files as coefficients with amovie filters for 7.1 downmix,
3142 each amovie filter use stereo file with IR coefficients as input.
3143 The files give coefficients for each position of virtual loudspeaker:
3144 @example
3145 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"
3146 output.wav
3147 @end example
3148 @end itemize
3149
3150 @section highpass
3151
3152 Apply a high-pass filter with 3dB point frequency.
3153 The filter can be either single-pole, or double-pole (the default).
3154 The filter roll off at 6dB per pole per octave (20dB per pole per decade).
3155
3156 The filter accepts the following options:
3157
3158 @table @option
3159 @item frequency, f
3160 Set frequency in Hz. Default is 3000.
3161
3162 @item poles, p
3163 Set number of poles. Default is 2.
3164
3165 @item width_type, t
3166 Set method to specify band-width of filter.
3167 @table @option
3168 @item h
3169 Hz
3170 @item q
3171 Q-Factor
3172 @item o
3173 octave
3174 @item s
3175 slope
3176 @item k
3177 kHz
3178 @end table
3179
3180 @item width, w
3181 Specify the band-width of a filter in width_type units.
3182 Applies only to double-pole filter.
3183 The default is 0.707q and gives a Butterworth response.
3184
3185 @item channels, c
3186 Specify which channels to filter, by default all available are filtered.
3187 @end table
3188
3189 @subsection Commands
3190
3191 This filter supports the following commands:
3192 @table @option
3193 @item frequency, f
3194 Change highpass frequency.
3195 Syntax for the command is : "@var{frequency}"
3196
3197 @item width_type, t
3198 Change highpass width_type.
3199 Syntax for the command is : "@var{width_type}"
3200
3201 @item width, w
3202 Change highpass width.
3203 Syntax for the command is : "@var{width}"
3204 @end table
3205
3206 @section join
3207
3208 Join multiple input streams into one multi-channel stream.
3209
3210 It accepts the following parameters:
3211 @table @option
3212
3213 @item inputs
3214 The number of input streams. It defaults to 2.
3215
3216 @item channel_layout
3217 The desired output channel layout. It defaults to stereo.
3218
3219 @item map
3220 Map channels from inputs to output. The argument is a '|'-separated list of
3221 mappings, each in the @code{@var{input_idx}.@var{in_channel}-@var{out_channel}}
3222 form. @var{input_idx} is the 0-based index of the input stream. @var{in_channel}
3223 can be either the name of the input channel (e.g. FL for front left) or its
3224 index in the specified input stream. @var{out_channel} is the name of the output
3225 channel.
3226 @end table
3227
3228 The filter will attempt to guess the mappings when they are not specified
3229 explicitly. It does so by first trying to find an unused matching input channel
3230 and if that fails it picks the first unused input channel.
3231
3232 Join 3 inputs (with properly set channel layouts):
3233 @example
3234 ffmpeg -i INPUT1 -i INPUT2 -i INPUT3 -filter_complex join=inputs=3 OUTPUT
3235 @end example
3236
3237 Build a 5.1 output from 6 single-channel streams:
3238 @example
3239 ffmpeg -i fl -i fr -i fc -i sl -i sr -i lfe -filter_complex
3240 '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'
3241 out
3242 @end example
3243
3244 @section ladspa
3245
3246 Load a LADSPA (Linux Audio Developer's Simple Plugin API) plugin.
3247
3248 To enable compilation of this filter you need to configure FFmpeg with
3249 @code{--enable-ladspa}.
3250
3251 @table @option
3252 @item file, f
3253 Specifies the name of LADSPA plugin library to load. If the environment
3254 variable @env{LADSPA_PATH} is defined, the LADSPA plugin is searched in
3255 each one of the directories specified by the colon separated list in
3256 @env{LADSPA_PATH}, otherwise in the standard LADSPA paths, which are in
3257 this order: @file{HOME/.ladspa/lib/}, @file{/usr/local/lib/ladspa/},
3258 @file{/usr/lib/ladspa/}.
3259
3260 @item plugin, p
3261 Specifies the plugin within the library. Some libraries contain only
3262 one plugin, but others contain many of them. If this is not set filter
3263 will list all available plugins within the specified library.
3264
3265 @item controls, c
3266 Set the '|' separated list of controls which are zero or more floating point
3267 values that determine the behavior of the loaded plugin (for example delay,
3268 threshold or gain).
3269 Controls need to be defined using the following syntax:
3270 c0=@var{value0}|c1=@var{value1}|c2=@var{value2}|..., where
3271 @var{valuei} is the value set on the @var{i}-th control.
3272 Alternatively they can be also defined using the following syntax:
3273 @var{value0}|@var{value1}|@var{value2}|..., where
3274 @var{valuei} is the value set on the @var{i}-th control.
3275 If @option{controls} is set to @code{help}, all available controls and
3276 their valid ranges are printed.
3277
3278 @item sample_rate, s
3279 Specify the sample rate, default to 44100. Only used if plugin have
3280 zero inputs.
3281
3282 @item nb_samples, n
3283 Set the number of samples per channel per each output frame, default
3284 is 1024. Only used if plugin have zero inputs.
3285
3286 @item duration, d
3287 Set the minimum duration of the sourced audio. See
3288 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
3289 for the accepted syntax.
3290 Note that the resulting duration may be greater than the specified duration,
3291 as the generated audio is always cut at the end of a complete frame.
3292 If not specified, or the expressed duration is negative, the audio is
3293 supposed to be generated forever.
3294 Only used if plugin have zero inputs.
3295
3296 @end table
3297
3298 @subsection Examples
3299
3300 @itemize
3301 @item
3302 List all available plugins within amp (LADSPA example plugin) library:
3303 @example
3304 ladspa=file=amp
3305 @end example
3306
3307 @item
3308 List all available controls and their valid ranges for @code{vcf_notch}
3309 plugin from @code{VCF} library:
3310 @example
3311 ladspa=f=vcf:p=vcf_notch:c=help
3312 @end example
3313
3314 @item
3315 Simulate low quality audio equipment using @code{Computer Music Toolkit} (CMT)
3316 plugin library:
3317 @example
3318 ladspa=file=cmt:plugin=lofi:controls=c0=22|c1=12|c2=12
3319 @end example
3320
3321 @item
3322 Add reverberation to the audio using TAP-plugins
3323 (Tom's Audio Processing plugins):
3324 @example
3325 ladspa=file=tap_reverb:tap_reverb
3326 @end example
3327
3328 @item
3329 Generate white noise, with 0.2 amplitude:
3330 @example
3331 ladspa=file=cmt:noise_source_white:c=c0=.2
3332 @end example
3333
3334 @item
3335 Generate 20 bpm clicks using plugin @code{C* Click - Metronome} from the
3336 @code{C* Audio Plugin Suite} (CAPS) library:
3337 @example
3338 ladspa=file=caps:Click:c=c1=20'
3339 @end example
3340
3341 @item
3342 Apply @code{C* Eq10X2 - Stereo 10-band equaliser} effect:
3343 @example
3344 ladspa=caps:Eq10X2:c=c0=-48|c9=-24|c3=12|c4=2
3345 @end example
3346
3347 @item
3348 Increase volume by 20dB using fast lookahead limiter from Steve Harris
3349 @code{SWH Plugins} collection:
3350 @example
3351 ladspa=fast_lookahead_limiter_1913:fastLookaheadLimiter:20|0|2
3352 @end example
3353
3354 @item
3355 Attenuate low frequencies using Multiband EQ from Steve Harris
3356 @code{SWH Plugins} collection:
3357 @example
3358 ladspa=mbeq_1197:mbeq:-24|-24|-24|0|0|0|0|0|0|0|0|0|0|0|0
3359 @end example
3360
3361 @item
3362 Reduce stereo image using @code{Narrower} from the @code{C* Audio Plugin Suite}
3363 (CAPS) library:
3364 @example
3365 ladspa=caps:Narrower
3366 @end example
3367
3368 @item
3369 Another white noise, now using @code{C* Audio Plugin Suite} (CAPS) library:
3370 @example
3371 ladspa=caps:White:.2
3372 @end example
3373
3374 @item
3375 Some fractal noise, using @code{C* Audio Plugin Suite} (CAPS) library:
3376 @example
3377 ladspa=caps:Fractal:c=c1=1
3378 @end example
3379
3380 @item
3381 Dynamic volume normalization using @code{VLevel} plugin:
3382 @example
3383 ladspa=vlevel-ladspa:vlevel_mono
3384 @end example
3385 @end itemize
3386
3387 @subsection Commands
3388
3389 This filter supports the following commands:
3390 @table @option
3391 @item cN
3392 Modify the @var{N}-th control value.
3393
3394 If the specified value is not valid, it is ignored and prior one is kept.
3395 @end table
3396
3397 @section loudnorm
3398
3399 EBU R128 loudness normalization. Includes both dynamic and linear normalization modes.
3400 Support for both single pass (livestreams, files) and double pass (files) modes.
3401 This algorithm can target IL, LRA, and maximum true peak. To accurately detect true peaks,
3402 the audio stream will be upsampled to 192 kHz unless the normalization mode is linear.
3403 Use the @code{-ar} option or @code{aresample} filter to explicitly set an output sample rate.
3404
3405 The filter accepts the following options:
3406
3407 @table @option
3408 @item I, i
3409 Set integrated loudness target.
3410 Range is -70.0 - -5.0. Default value is -24.0.
3411
3412 @item LRA, lra
3413 Set loudness range target.
3414 Range is 1.0 - 20.0. Default value is 7.0.
3415
3416 @item TP, tp
3417 Set maximum true peak.
3418 Range is -9.0 - +0.0. Default value is -2.0.
3419
3420 @item measured_I, measured_i
3421 Measured IL of input file.
3422 Range is -99.0 - +0.0.
3423
3424 @item measured_LRA, measured_lra
3425 Measured LRA of input file.
3426 Range is  0.0 - 99.0.
3427
3428 @item measured_TP, measured_tp
3429 Measured true peak of input file.
3430 Range is  -99.0 - +99.0.
3431
3432 @item measured_thresh
3433 Measured threshold of input file.
3434 Range is -99.0 - +0.0.
3435
3436 @item offset
3437 Set offset gain. Gain is applied before the true-peak limiter.
3438 Range is  -99.0 - +99.0. Default is +0.0.
3439
3440 @item linear
3441 Normalize linearly if possible.
3442 measured_I, measured_LRA, measured_TP, and measured_thresh must also
3443 to be specified in order to use this mode.
3444 Options are true or false. Default is true.
3445
3446 @item dual_mono
3447 Treat mono input files as "dual-mono". If a mono file is intended for playback
3448 on a stereo system, its EBU R128 measurement will be perceptually incorrect.
3449 If set to @code{true}, this option will compensate for this effect.
3450 Multi-channel input files are not affected by this option.
3451 Options are true or false. Default is false.
3452
3453 @item print_format
3454 Set print format for stats. Options are summary, json, or none.
3455 Default value is none.
3456 @end table
3457
3458 @section lowpass
3459
3460 Apply a low-pass filter with 3dB point frequency.
3461 The filter can be either single-pole or double-pole (the default).
3462 The filter roll off at 6dB per pole per octave (20dB per pole per decade).
3463
3464 The filter accepts the following options:
3465
3466 @table @option
3467 @item frequency, f
3468 Set frequency in Hz. Default is 500.
3469
3470 @item poles, p
3471 Set number of poles. Default is 2.
3472
3473 @item width_type, t
3474 Set method to specify band-width of filter.
3475 @table @option
3476 @item h
3477 Hz
3478 @item q
3479 Q-Factor
3480 @item o
3481 octave
3482 @item s
3483 slope
3484 @item k
3485 kHz
3486 @end table
3487
3488 @item width, w
3489 Specify the band-width of a filter in width_type units.
3490 Applies only to double-pole filter.
3491 The default is 0.707q and gives a Butterworth response.
3492
3493 @item channels, c
3494 Specify which channels to filter, by default all available are filtered.
3495 @end table
3496
3497 @subsection Examples
3498 @itemize
3499 @item
3500 Lowpass only LFE channel, it LFE is not present it does nothing:
3501 @example
3502 lowpass=c=LFE
3503 @end example
3504 @end itemize
3505
3506 @subsection Commands
3507
3508 This filter supports the following commands:
3509 @table @option
3510 @item frequency, f
3511 Change lowpass frequency.
3512 Syntax for the command is : "@var{frequency}"
3513
3514 @item width_type, t
3515 Change lowpass width_type.
3516 Syntax for the command is : "@var{width_type}"
3517
3518 @item width, w
3519 Change lowpass width.
3520 Syntax for the command is : "@var{width}"
3521 @end table
3522
3523 @section lv2
3524
3525 Load a LV2 (LADSPA Version 2) plugin.
3526
3527 To enable compilation of this filter you need to configure FFmpeg with
3528 @code{--enable-lv2}.
3529
3530 @table @option
3531 @item plugin, p
3532 Specifies the plugin URI. You may need to escape ':'.
3533
3534 @item controls, c
3535 Set the '|' separated list of controls which are zero or more floating point
3536 values that determine the behavior of the loaded plugin (for example delay,
3537 threshold or gain).
3538 If @option{controls} is set to @code{help}, all available controls and
3539 their valid ranges are printed.
3540
3541 @item sample_rate, s
3542 Specify the sample rate, default to 44100. Only used if plugin have
3543 zero inputs.
3544
3545 @item nb_samples, n
3546 Set the number of samples per channel per each output frame, default
3547 is 1024. Only used if plugin have zero inputs.
3548
3549 @item duration, d
3550 Set the minimum duration of the sourced audio. See
3551 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
3552 for the accepted syntax.
3553 Note that the resulting duration may be greater than the specified duration,
3554 as the generated audio is always cut at the end of a complete frame.
3555 If not specified, or the expressed duration is negative, the audio is
3556 supposed to be generated forever.
3557 Only used if plugin have zero inputs.
3558 @end table
3559
3560 @subsection Examples
3561
3562 @itemize
3563 @item
3564 Apply bass enhancer plugin from Calf:
3565 @example
3566 lv2=p=http\\\\://calf.sourceforge.net/plugins/BassEnhancer:c=amount=2
3567 @end example
3568
3569 @item
3570 Apply bass vinyl plugin from Calf:
3571 @example
3572 lv2=p=http\\\\://calf.sourceforge.net/plugins/Vinyl:c=drone=0.2|aging=0.5
3573 @end example
3574
3575 @item
3576 Apply bit crusher plugin from ArtyFX:
3577 @example
3578 lv2=p=http\\\\://www.openavproductions.com/artyfx#bitta:c=crush=0.3
3579 @end example
3580 @end itemize
3581
3582 @section mcompand
3583 Multiband Compress or expand the audio's dynamic range.
3584
3585 The input audio is divided into bands using 4th order Linkwitz-Riley IIRs.
3586 This is akin to the crossover of a loudspeaker, and results in flat frequency
3587 response when absent compander action.
3588
3589 It accepts the following parameters:
3590
3591 @table @option
3592 @item args
3593 This option syntax is:
3594 attack,decay,[attack,decay..] soft-knee points crossover_frequency [delay [initial_volume [gain]]] | attack,decay ...
3595 For explanation of each item refer to compand filter documentation.
3596 @end table
3597
3598 @anchor{pan}
3599 @section pan
3600
3601 Mix channels with specific gain levels. The filter accepts the output
3602 channel layout followed by a set of channels definitions.
3603
3604 This filter is also designed to efficiently remap the channels of an audio
3605 stream.
3606
3607 The filter accepts parameters of the form:
3608 "@var{l}|@var{outdef}|@var{outdef}|..."
3609
3610 @table @option
3611 @item l
3612 output channel layout or number of channels
3613
3614 @item outdef
3615 output channel specification, of the form:
3616 "@var{out_name}=[@var{gain}*]@var{in_name}[(+-)[@var{gain}*]@var{in_name}...]"
3617
3618 @item out_name
3619 output channel to define, either a channel name (FL, FR, etc.) or a channel
3620 number (c0, c1, etc.)
3621
3622 @item gain
3623 multiplicative coefficient for the channel, 1 leaving the volume unchanged
3624
3625 @item in_name
3626 input channel to use, see out_name for details; it is not possible to mix
3627 named and numbered input channels
3628 @end table
3629
3630 If the `=' in a channel specification is replaced by `<', then the gains for
3631 that specification will be renormalized so that the total is 1, thus
3632 avoiding clipping noise.
3633
3634 @subsection Mixing examples
3635
3636 For example, if you want to down-mix from stereo to mono, but with a bigger
3637 factor for the left channel:
3638 @example
3639 pan=1c|c0=0.9*c0+0.1*c1
3640 @end example
3641
3642 A customized down-mix to stereo that works automatically for 3-, 4-, 5- and
3643 7-channels surround:
3644 @example
3645 pan=stereo| FL < FL + 0.5*FC + 0.6*BL + 0.6*SL | FR < FR + 0.5*FC + 0.6*BR + 0.6*SR
3646 @end example
3647
3648 Note that @command{ffmpeg} integrates a default down-mix (and up-mix) system
3649 that should be preferred (see "-ac" option) unless you have very specific
3650 needs.
3651
3652 @subsection Remapping examples
3653
3654 The channel remapping will be effective if, and only if:
3655
3656 @itemize
3657 @item gain coefficients are zeroes or ones,
3658 @item only one input per channel output,
3659 @end itemize
3660
3661 If all these conditions are satisfied, the filter will notify the user ("Pure
3662 channel mapping detected"), and use an optimized and lossless method to do the
3663 remapping.
3664
3665 For example, if you have a 5.1 source and want a stereo audio stream by
3666 dropping the extra channels:
3667 @example
3668 pan="stereo| c0=FL | c1=FR"
3669 @end example
3670
3671 Given the same source, you can also switch front left and front right channels
3672 and keep the input channel layout:
3673 @example
3674 pan="5.1| c0=c1 | c1=c0 | c2=c2 | c3=c3 | c4=c4 | c5=c5"
3675 @end example
3676
3677 If the input is a stereo audio stream, you can mute the front left channel (and
3678 still keep the stereo channel layout) with:
3679 @example
3680 pan="stereo|c1=c1"
3681 @end example
3682
3683 Still with a stereo audio stream input, you can copy the right channel in both
3684 front left and right:
3685 @example
3686 pan="stereo| c0=FR | c1=FR"
3687 @end example
3688
3689 @section replaygain
3690
3691 ReplayGain scanner filter. This filter takes an audio stream as an input and
3692 outputs it unchanged.
3693 At end of filtering it displays @code{track_gain} and @code{track_peak}.
3694
3695 @section resample
3696
3697 Convert the audio sample format, sample rate and channel layout. It is
3698 not meant to be used directly.
3699
3700 @section rubberband
3701 Apply time-stretching and pitch-shifting with librubberband.
3702
3703 The filter accepts the following options:
3704
3705 @table @option
3706 @item tempo
3707 Set tempo scale factor.
3708
3709 @item pitch
3710 Set pitch scale factor.
3711
3712 @item transients
3713 Set transients detector.
3714 Possible values are:
3715 @table @var
3716 @item crisp
3717 @item mixed
3718 @item smooth
3719 @end table
3720
3721 @item detector
3722 Set detector.
3723 Possible values are:
3724 @table @var
3725 @item compound
3726 @item percussive
3727 @item soft
3728 @end table
3729
3730 @item phase
3731 Set phase.
3732 Possible values are:
3733 @table @var
3734 @item laminar
3735 @item independent
3736 @end table
3737
3738 @item window
3739 Set processing window size.
3740 Possible values are:
3741 @table @var
3742 @item standard
3743 @item short
3744 @item long
3745 @end table
3746
3747 @item smoothing
3748 Set smoothing.
3749 Possible values are:
3750 @table @var
3751 @item off
3752 @item on
3753 @end table
3754
3755 @item formant
3756 Enable formant preservation when shift pitching.
3757 Possible values are:
3758 @table @var
3759 @item shifted
3760 @item preserved
3761 @end table
3762
3763 @item pitchq
3764 Set pitch quality.
3765 Possible values are:
3766 @table @var
3767 @item quality
3768 @item speed
3769 @item consistency
3770 @end table
3771
3772 @item channels
3773 Set channels.
3774 Possible values are:
3775 @table @var
3776 @item apart
3777 @item together
3778 @end table
3779 @end table
3780
3781 @section sidechaincompress
3782
3783 This filter acts like normal compressor but has the ability to compress
3784 detected signal using second input signal.
3785 It needs two input streams and returns one output stream.
3786 First input stream will be processed depending on second stream signal.
3787 The filtered signal then can be filtered with other filters in later stages of
3788 processing. See @ref{pan} and @ref{amerge} filter.
3789
3790 The filter accepts the following options:
3791
3792 @table @option
3793 @item level_in
3794 Set input gain. Default is 1. Range is between 0.015625 and 64.
3795
3796 @item threshold
3797 If a signal of second stream raises above this level it will affect the gain
3798 reduction of first stream.
3799 By default is 0.125. Range is between 0.00097563 and 1.
3800
3801 @item ratio
3802 Set a ratio about which the signal is reduced. 1:2 means that if the level
3803 raised 4dB above the threshold, it will be only 2dB above after the reduction.
3804 Default is 2. Range is between 1 and 20.
3805
3806 @item attack
3807 Amount of milliseconds the signal has to rise above the threshold before gain
3808 reduction starts. Default is 20. Range is between 0.01 and 2000.
3809
3810 @item release
3811 Amount of milliseconds the signal has to fall below the threshold before
3812 reduction is decreased again. Default is 250. Range is between 0.01 and 9000.
3813
3814 @item makeup
3815 Set the amount by how much signal will be amplified after processing.
3816 Default is 1. Range is from 1 to 64.
3817
3818 @item knee
3819 Curve the sharp knee around the threshold to enter gain reduction more softly.
3820 Default is 2.82843. Range is between 1 and 8.
3821
3822 @item link
3823 Choose if the @code{average} level between all channels of side-chain stream
3824 or the louder(@code{maximum}) channel of side-chain stream affects the
3825 reduction. Default is @code{average}.
3826
3827 @item detection
3828 Should the exact signal be taken in case of @code{peak} or an RMS one in case
3829 of @code{rms}. Default is @code{rms} which is mainly smoother.
3830
3831 @item level_sc
3832 Set sidechain gain. Default is 1. Range is between 0.015625 and 64.
3833
3834 @item mix
3835 How much to use compressed signal in output. Default is 1.
3836 Range is between 0 and 1.
3837 @end table
3838
3839 @subsection Examples
3840
3841 @itemize
3842 @item
3843 Full ffmpeg example taking 2 audio inputs, 1st input to be compressed
3844 depending on the signal of 2nd input and later compressed signal to be
3845 merged with 2nd input:
3846 @example
3847 ffmpeg -i main.flac -i sidechain.flac -filter_complex "[1:a]asplit=2[sc][mix];[0:a][sc]sidechaincompress[compr];[compr][mix]amerge"
3848 @end example
3849 @end itemize
3850
3851 @section sidechaingate
3852
3853 A sidechain gate acts like a normal (wideband) gate but has the ability to
3854 filter the detected signal before sending it to the gain reduction stage.
3855 Normally a gate uses the full range signal to detect a level above the
3856 threshold.
3857 For example: If you cut all lower frequencies from your sidechain signal
3858 the gate will decrease the volume of your track only if not enough highs
3859 appear. With this technique you are able to reduce the resonation of a
3860 natural drum or remove "rumbling" of muted strokes from a heavily distorted
3861 guitar.
3862 It needs two input streams and returns one output stream.
3863 First input stream will be processed depending on second stream signal.
3864
3865 The filter accepts the following options:
3866
3867 @table @option
3868 @item level_in
3869 Set input level before filtering.
3870 Default is 1. Allowed range is from 0.015625 to 64.
3871
3872 @item range
3873 Set the level of gain reduction when the signal is below the threshold.
3874 Default is 0.06125. Allowed range is from 0 to 1.
3875
3876 @item threshold
3877 If a signal rises above this level the gain reduction is released.
3878 Default is 0.125. Allowed range is from 0 to 1.
3879
3880 @item ratio
3881 Set a ratio about which the signal is reduced.
3882 Default is 2. Allowed range is from 1 to 9000.
3883
3884 @item attack
3885 Amount of milliseconds the signal has to rise above the threshold before gain
3886 reduction stops.
3887 Default is 20 milliseconds. Allowed range is from 0.01 to 9000.
3888
3889 @item release
3890 Amount of milliseconds the signal has to fall below the threshold before the
3891 reduction is increased again. Default is 250 milliseconds.
3892 Allowed range is from 0.01 to 9000.
3893
3894 @item makeup
3895 Set amount of amplification of signal after processing.
3896 Default is 1. Allowed range is from 1 to 64.
3897
3898 @item knee
3899 Curve the sharp knee around the threshold to enter gain reduction more softly.
3900 Default is 2.828427125. Allowed range is from 1 to 8.
3901
3902 @item detection
3903 Choose if exact signal should be taken for detection or an RMS like one.
3904 Default is rms. Can be peak or rms.
3905
3906 @item link
3907 Choose if the average level between all channels or the louder channel affects
3908 the reduction.
3909 Default is average. Can be average or maximum.
3910
3911 @item level_sc
3912 Set sidechain gain. Default is 1. Range is from 0.015625 to 64.
3913 @end table
3914
3915 @section silencedetect
3916
3917 Detect silence in an audio stream.
3918
3919 This filter logs a message when it detects that the input audio volume is less
3920 or equal to a noise tolerance value for a duration greater or equal to the
3921 minimum detected noise duration.
3922
3923 The printed times and duration are expressed in seconds.
3924
3925 The filter accepts the following options:
3926
3927 @table @option
3928 @item duration, d
3929 Set silence duration until notification (default is 2 seconds).
3930
3931 @item noise, n
3932 Set noise tolerance. Can be specified in dB (in case "dB" is appended to the
3933 specified value) or amplitude ratio. Default is -60dB, or 0.001.
3934 @end table
3935
3936 @subsection Examples
3937
3938 @itemize
3939 @item
3940 Detect 5 seconds of silence with -50dB noise tolerance:
3941 @example
3942 silencedetect=n=-50dB:d=5
3943 @end example
3944
3945 @item
3946 Complete example with @command{ffmpeg} to detect silence with 0.0001 noise
3947 tolerance in @file{silence.mp3}:
3948 @example
3949 ffmpeg -i silence.mp3 -af silencedetect=noise=0.0001 -f null -
3950 @end example
3951 @end itemize
3952
3953 @section silenceremove
3954
3955 Remove silence from the beginning, middle or end of the audio.
3956
3957 The filter accepts the following options:
3958
3959 @table @option
3960 @item start_periods
3961 This value is used to indicate if audio should be trimmed at beginning of
3962 the audio. A value of zero indicates no silence should be trimmed from the
3963 beginning. When specifying a non-zero value, it trims audio up until it
3964 finds non-silence. Normally, when trimming silence from beginning of audio
3965 the @var{start_periods} will be @code{1} but it can be increased to higher
3966 values to trim all audio up to specific count of non-silence periods.
3967 Default value is @code{0}.
3968
3969 @item start_duration
3970 Specify the amount of time that non-silence must be detected before it stops
3971 trimming audio. By increasing the duration, bursts of noises can be treated
3972 as silence and trimmed off. Default value is @code{0}.
3973
3974 @item start_threshold
3975 This indicates what sample value should be treated as silence. For digital
3976 audio, a value of @code{0} may be fine but for audio recorded from analog,
3977 you may wish to increase the value to account for background noise.
3978 Can be specified in dB (in case "dB" is appended to the specified value)
3979 or amplitude ratio. Default value is @code{0}.
3980
3981 @item stop_periods
3982 Set the count for trimming silence from the end of audio.
3983 To remove silence from the middle of a file, specify a @var{stop_periods}
3984 that is negative. This value is then treated as a positive value and is
3985 used to indicate the effect should restart processing as specified by
3986 @var{start_periods}, making it suitable for removing periods of silence
3987 in the middle of the audio.
3988 Default value is @code{0}.
3989
3990 @item stop_duration
3991 Specify a duration of silence that must exist before audio is not copied any
3992 more. By specifying a higher duration, silence that is wanted can be left in
3993 the audio.
3994 Default value is @code{0}.
3995
3996 @item stop_threshold
3997 This is the same as @option{start_threshold} but for trimming silence from
3998 the end of audio.
3999 Can be specified in dB (in case "dB" is appended to the specified value)
4000 or amplitude ratio. Default value is @code{0}.
4001
4002 @item leave_silence
4003 This indicates that @var{stop_duration} length of audio should be left intact
4004 at the beginning of each period of silence.
4005 For example, if you want to remove long pauses between words but do not want
4006 to remove the pauses completely. Default value is @code{0}.
4007
4008 @item detection
4009 Set how is silence detected. Can be @code{rms} or @code{peak}. Second is faster
4010 and works better with digital silence which is exactly 0.
4011 Default value is @code{rms}.
4012
4013 @item window
4014 Set ratio used to calculate size of window for detecting silence.
4015 Default value is @code{0.02}. Allowed range is from @code{0} to @code{10}.
4016 @end table
4017
4018 @subsection Examples
4019
4020 @itemize
4021 @item
4022 The following example shows how this filter can be used to start a recording
4023 that does not contain the delay at the start which usually occurs between
4024 pressing the record button and the start of the performance:
4025 @example
4026 silenceremove=1:5:0.02
4027 @end example
4028
4029 @item
4030 Trim all silence encountered from beginning to end where there is more than 1
4031 second of silence in audio:
4032 @example
4033 silenceremove=0:0:0:-1:1:-90dB
4034 @end example
4035 @end itemize
4036
4037 @section sofalizer
4038
4039 SOFAlizer uses head-related transfer functions (HRTFs) to create virtual
4040 loudspeakers around the user for binaural listening via headphones (audio
4041 formats up to 9 channels supported).
4042 The HRTFs are stored in SOFA files (see @url{http://www.sofacoustics.org/} for a database).
4043 SOFAlizer is developed at the Acoustics Research Institute (ARI) of the
4044 Austrian Academy of Sciences.
4045
4046 To enable compilation of this filter you need to configure FFmpeg with
4047 @code{--enable-libmysofa}.
4048
4049 The filter accepts the following options:
4050
4051 @table @option
4052 @item sofa
4053 Set the SOFA file used for rendering.
4054
4055 @item gain
4056 Set gain applied to audio. Value is in dB. Default is 0.
4057
4058 @item rotation
4059 Set rotation of virtual loudspeakers in deg. Default is 0.
4060
4061 @item elevation
4062 Set elevation of virtual speakers in deg. Default is 0.
4063
4064 @item radius
4065 Set distance in meters between loudspeakers and the listener with near-field
4066 HRTFs. Default is 1.
4067
4068 @item type
4069 Set processing type. Can be @var{time} or @var{freq}. @var{time} is
4070 processing audio in time domain which is slow.
4071 @var{freq} is processing audio in frequency domain which is fast.
4072 Default is @var{freq}.
4073
4074 @item speakers
4075 Set custom positions of virtual loudspeakers. Syntax for this option is:
4076 <CH> <AZIM> <ELEV>[|<CH> <AZIM> <ELEV>|...].
4077 Each virtual loudspeaker is described with short channel name following with
4078 azimuth and elevation in degrees.
4079 Each virtual loudspeaker description is separated by '|'.
4080 For example to override front left and front right channel positions use:
4081 'speakers=FL 45 15|FR 345 15'.
4082 Descriptions with unrecognised channel names are ignored.
4083
4084 @item lfegain
4085 Set custom gain for LFE channels. Value is in dB. Default is 0.
4086 @end table
4087
4088 @subsection Examples
4089
4090 @itemize
4091 @item
4092 Using ClubFritz6 sofa file:
4093 @example
4094 sofalizer=sofa=/path/to/ClubFritz6.sofa:type=freq:radius=1
4095 @end example
4096
4097 @item
4098 Using ClubFritz12 sofa file and bigger radius with small rotation:
4099 @example
4100 sofalizer=sofa=/path/to/ClubFritz12.sofa:type=freq:radius=2:rotation=5
4101 @end example
4102
4103 @item
4104 Similar as above but with custom speaker positions for front left, front right, back left and back right
4105 and also with custom gain:
4106 @example
4107 "sofalizer=sofa=/path/to/ClubFritz6.sofa:type=freq:radius=2:speakers=FL 45|FR 315|BL 135|BR 225:gain=28"
4108 @end example
4109 @end itemize
4110
4111 @section stereotools
4112
4113 This filter has some handy utilities to manage stereo signals, for converting
4114 M/S stereo recordings to L/R signal while having control over the parameters
4115 or spreading the stereo image of master track.
4116
4117 The filter accepts the following options:
4118
4119 @table @option
4120 @item level_in
4121 Set input level before filtering for both channels. Defaults is 1.
4122 Allowed range is from 0.015625 to 64.
4123
4124 @item level_out
4125 Set output level after filtering for both channels. Defaults is 1.
4126 Allowed range is from 0.015625 to 64.
4127
4128 @item balance_in
4129 Set input balance between both channels. Default is 0.
4130 Allowed range is from -1 to 1.
4131
4132 @item balance_out
4133 Set output balance between both channels. Default is 0.
4134 Allowed range is from -1 to 1.
4135
4136 @item softclip
4137 Enable softclipping. Results in analog distortion instead of harsh digital 0dB
4138 clipping. Disabled by default.
4139
4140 @item mutel
4141 Mute the left channel. Disabled by default.
4142
4143 @item muter
4144 Mute the right channel. Disabled by default.
4145
4146 @item phasel
4147 Change the phase of the left channel. Disabled by default.
4148
4149 @item phaser
4150 Change the phase of the right channel. Disabled by default.
4151
4152 @item mode
4153 Set stereo mode. Available values are:
4154
4155 @table @samp
4156 @item lr>lr
4157 Left/Right to Left/Right, this is default.
4158
4159 @item lr>ms
4160 Left/Right to Mid/Side.
4161
4162 @item ms>lr
4163 Mid/Side to Left/Right.
4164
4165 @item lr>ll
4166 Left/Right to Left/Left.
4167
4168 @item lr>rr
4169 Left/Right to Right/Right.
4170
4171 @item lr>l+r
4172 Left/Right to Left + Right.
4173
4174 @item lr>rl
4175 Left/Right to Right/Left.
4176
4177 @item ms>ll
4178 Mid/Side to Left/Left.
4179
4180 @item ms>rr
4181 Mid/Side to Right/Right.
4182 @end table
4183
4184 @item slev
4185 Set level of side signal. Default is 1.
4186 Allowed range is from 0.015625 to 64.
4187
4188 @item sbal
4189 Set balance of side signal. Default is 0.
4190 Allowed range is from -1 to 1.
4191
4192 @item mlev
4193 Set level of the middle signal. Default is 1.
4194 Allowed range is from 0.015625 to 64.
4195
4196 @item mpan
4197 Set middle signal pan. Default is 0. Allowed range is from -1 to 1.
4198
4199 @item base
4200 Set stereo base between mono and inversed channels. Default is 0.
4201 Allowed range is from -1 to 1.
4202
4203 @item delay
4204 Set delay in milliseconds how much to delay left from right channel and
4205 vice versa. Default is 0. Allowed range is from -20 to 20.
4206
4207 @item sclevel
4208 Set S/C level. Default is 1. Allowed range is from 1 to 100.
4209
4210 @item phase
4211 Set the stereo phase in degrees. Default is 0. Allowed range is from 0 to 360.
4212
4213 @item bmode_in, bmode_out
4214 Set balance mode for balance_in/balance_out option.
4215
4216 Can be one of the following:
4217
4218 @table @samp
4219 @item balance
4220 Classic balance mode. Attenuate one channel at time.
4221 Gain is raised up to 1.
4222
4223 @item amplitude
4224 Similar as classic mode above but gain is raised up to 2.
4225
4226 @item power
4227 Equal power distribution, from -6dB to +6dB range.
4228 @end table
4229 @end table
4230
4231 @subsection Examples
4232
4233 @itemize
4234 @item
4235 Apply karaoke like effect:
4236 @example
4237 stereotools=mlev=0.015625
4238 @end example
4239
4240 @item
4241 Convert M/S signal to L/R:
4242 @example
4243 "stereotools=mode=ms>lr"
4244 @end example
4245 @end itemize
4246
4247 @section stereowiden
4248
4249 This filter enhance the stereo effect by suppressing signal common to both
4250 channels and by delaying the signal of left into right and vice versa,
4251 thereby widening the stereo effect.
4252
4253 The filter accepts the following options:
4254
4255 @table @option
4256 @item delay
4257 Time in milliseconds of the delay of left signal into right and vice versa.
4258 Default is 20 milliseconds.
4259
4260 @item feedback
4261 Amount of gain in delayed signal into right and vice versa. Gives a delay
4262 effect of left signal in right output and vice versa which gives widening
4263 effect. Default is 0.3.
4264
4265 @item crossfeed
4266 Cross feed of left into right with inverted phase. This helps in suppressing
4267 the mono. If the value is 1 it will cancel all the signal common to both
4268 channels. Default is 0.3.
4269
4270 @item drymix
4271 Set level of input signal of original channel. Default is 0.8.
4272 @end table
4273
4274 @section superequalizer
4275 Apply 18 band equalizer.
4276
4277 The filter accepts the following options:
4278 @table @option
4279 @item 1b
4280 Set 65Hz band gain.
4281 @item 2b
4282 Set 92Hz band gain.
4283 @item 3b
4284 Set 131Hz band gain.
4285 @item 4b
4286 Set 185Hz band gain.
4287 @item 5b
4288 Set 262Hz band gain.
4289 @item 6b
4290 Set 370Hz band gain.
4291 @item 7b
4292 Set 523Hz band gain.
4293 @item 8b
4294 Set 740Hz band gain.
4295 @item 9b
4296 Set 1047Hz band gain.
4297 @item 10b
4298 Set 1480Hz band gain.
4299 @item 11b
4300 Set 2093Hz band gain.
4301 @item 12b
4302 Set 2960Hz band gain.
4303 @item 13b
4304 Set 4186Hz band gain.
4305 @item 14b
4306 Set 5920Hz band gain.
4307 @item 15b
4308 Set 8372Hz band gain.
4309 @item 16b
4310 Set 11840Hz band gain.
4311 @item 17b
4312 Set 16744Hz band gain.
4313 @item 18b
4314 Set 20000Hz band gain.
4315 @end table
4316
4317 @section surround
4318 Apply audio surround upmix filter.
4319
4320 This filter allows to produce multichannel output from audio stream.
4321
4322 The filter accepts the following options:
4323
4324 @table @option
4325 @item chl_out
4326 Set output channel layout. By default, this is @var{5.1}.
4327
4328 See @ref{channel layout syntax,,the Channel Layout section in the ffmpeg-utils(1) manual,ffmpeg-utils}
4329 for the required syntax.
4330
4331 @item chl_in
4332 Set input channel layout. By default, this is @var{stereo}.
4333
4334 See @ref{channel layout syntax,,the Channel Layout section in the ffmpeg-utils(1) manual,ffmpeg-utils}
4335 for the required syntax.
4336
4337 @item level_in
4338 Set input volume level. By default, this is @var{1}.
4339
4340 @item level_out
4341 Set output volume level. By default, this is @var{1}.
4342
4343 @item lfe
4344 Enable LFE channel output if output channel layout has it. By default, this is enabled.
4345
4346 @item lfe_low
4347 Set LFE low cut off frequency. By default, this is @var{128} Hz.
4348
4349 @item lfe_high
4350 Set LFE high cut off frequency. By default, this is @var{256} Hz.
4351
4352 @item fc_in
4353 Set front center input volume. By default, this is @var{1}.
4354
4355 @item fc_out
4356 Set front center output volume. By default, this is @var{1}.
4357
4358 @item lfe_in
4359 Set LFE input volume. By default, this is @var{1}.
4360
4361 @item lfe_out
4362 Set LFE output volume. By default, this is @var{1}.
4363 @end table
4364
4365 @section treble
4366
4367 Boost or cut treble (upper) frequencies of the audio using a two-pole
4368 shelving filter with a response similar to that of a standard
4369 hi-fi's tone-controls. This is also known as shelving equalisation (EQ).
4370
4371 The filter accepts the following options:
4372
4373 @table @option
4374 @item gain, g
4375 Give the gain at whichever is the lower of ~22 kHz and the
4376 Nyquist frequency. Its useful range is about -20 (for a large cut)
4377 to +20 (for a large boost). Beware of clipping when using a positive gain.
4378
4379 @item frequency, f
4380 Set the filter's central frequency and so can be used
4381 to extend or reduce the frequency range to be boosted or cut.
4382 The default value is @code{3000} Hz.
4383
4384 @item width_type, t
4385 Set method to specify band-width of filter.
4386 @table @option
4387 @item h
4388 Hz
4389 @item q
4390 Q-Factor
4391 @item o
4392 octave
4393 @item s
4394 slope
4395 @item k
4396 kHz
4397 @end table
4398
4399 @item width, w
4400 Determine how steep is the filter's shelf transition.
4401
4402 @item channels, c
4403 Specify which channels to filter, by default all available are filtered.
4404 @end table
4405
4406 @subsection Commands
4407
4408 This filter supports the following commands:
4409 @table @option
4410 @item frequency, f
4411 Change treble frequency.
4412 Syntax for the command is : "@var{frequency}"
4413
4414 @item width_type, t
4415 Change treble width_type.
4416 Syntax for the command is : "@var{width_type}"
4417
4418 @item width, w
4419 Change treble width.
4420 Syntax for the command is : "@var{width}"
4421
4422 @item gain, g
4423 Change treble gain.
4424 Syntax for the command is : "@var{gain}"
4425 @end table
4426
4427 @section tremolo
4428
4429 Sinusoidal amplitude modulation.
4430
4431 The filter accepts the following options:
4432
4433 @table @option
4434 @item f
4435 Modulation frequency in Hertz. Modulation frequencies in the subharmonic range
4436 (20 Hz or lower) will result in a tremolo effect.
4437 This filter may also be used as a ring modulator by specifying
4438 a modulation frequency higher than 20 Hz.
4439 Range is 0.1 - 20000.0. Default value is 5.0 Hz.
4440
4441 @item d
4442 Depth of modulation as a percentage. Range is 0.0 - 1.0.
4443 Default value is 0.5.
4444 @end table
4445
4446 @section vibrato
4447
4448 Sinusoidal phase modulation.
4449
4450 The filter accepts the following options:
4451
4452 @table @option
4453 @item f
4454 Modulation frequency in Hertz.
4455 Range is 0.1 - 20000.0. Default value is 5.0 Hz.
4456
4457 @item d
4458 Depth of modulation as a percentage. Range is 0.0 - 1.0.
4459 Default value is 0.5.
4460 @end table
4461
4462 @section volume
4463
4464 Adjust the input audio volume.
4465
4466 It accepts the following parameters:
4467 @table @option
4468
4469 @item volume
4470 Set audio volume expression.
4471
4472 Output values are clipped to the maximum value.
4473
4474 The output audio volume is given by the relation:
4475 @example
4476 @var{output_volume} = @var{volume} * @var{input_volume}
4477 @end example
4478
4479 The default value for @var{volume} is "1.0".
4480
4481 @item precision
4482 This parameter represents the mathematical precision.
4483
4484 It determines which input sample formats will be allowed, which affects the
4485 precision of the volume scaling.
4486
4487 @table @option
4488 @item fixed
4489 8-bit fixed-point; this limits input sample format to U8, S16, and S32.
4490 @item float
4491 32-bit floating-point; this limits input sample format to FLT. (default)
4492 @item double
4493 64-bit floating-point; this limits input sample format to DBL.
4494 @end table
4495
4496 @item replaygain
4497 Choose the behaviour on encountering ReplayGain side data in input frames.
4498
4499 @table @option
4500 @item drop
4501 Remove ReplayGain side data, ignoring its contents (the default).
4502
4503 @item ignore
4504 Ignore ReplayGain side data, but leave it in the frame.
4505
4506 @item track
4507 Prefer the track gain, if present.
4508
4509 @item album
4510 Prefer the album gain, if present.
4511 @end table
4512
4513 @item replaygain_preamp
4514 Pre-amplification gain in dB to apply to the selected replaygain gain.
4515
4516 Default value for @var{replaygain_preamp} is 0.0.
4517
4518 @item eval
4519 Set when the volume expression is evaluated.
4520
4521 It accepts the following values:
4522 @table @samp
4523 @item once
4524 only evaluate expression once during the filter initialization, or
4525 when the @samp{volume} command is sent
4526
4527 @item frame
4528 evaluate expression for each incoming frame
4529 @end table
4530
4531 Default value is @samp{once}.
4532 @end table
4533
4534 The volume expression can contain the following parameters.
4535
4536 @table @option
4537 @item n
4538 frame number (starting at zero)
4539 @item nb_channels
4540 number of channels
4541 @item nb_consumed_samples
4542 number of samples consumed by the filter
4543 @item nb_samples
4544 number of samples in the current frame
4545 @item pos
4546 original frame position in the file
4547 @item pts
4548 frame PTS
4549 @item sample_rate
4550 sample rate
4551 @item startpts
4552 PTS at start of stream
4553 @item startt
4554 time at start of stream
4555 @item t
4556 frame time
4557 @item tb
4558 timestamp timebase
4559 @item volume
4560 last set volume value
4561 @end table
4562
4563 Note that when @option{eval} is set to @samp{once} only the
4564 @var{sample_rate} and @var{tb} variables are available, all other
4565 variables will evaluate to NAN.
4566
4567 @subsection Commands
4568
4569 This filter supports the following commands:
4570 @table @option
4571 @item volume
4572 Modify the volume expression.
4573 The command accepts the same syntax of the corresponding option.
4574
4575 If the specified expression is not valid, it is kept at its current
4576 value.
4577 @item replaygain_noclip
4578 Prevent clipping by limiting the gain applied.
4579
4580 Default value for @var{replaygain_noclip} is 1.
4581
4582 @end table
4583
4584 @subsection Examples
4585
4586 @itemize
4587 @item
4588 Halve the input audio volume:
4589 @example
4590 volume=volume=0.5
4591 volume=volume=1/2
4592 volume=volume=-6.0206dB
4593 @end example
4594
4595 In all the above example the named key for @option{volume} can be
4596 omitted, for example like in:
4597 @example
4598 volume=0.5
4599 @end example
4600
4601 @item
4602 Increase input audio power by 6 decibels using fixed-point precision:
4603 @example
4604 volume=volume=6dB:precision=fixed
4605 @end example
4606
4607 @item
4608 Fade volume after time 10 with an annihilation period of 5 seconds:
4609 @example
4610 volume='if(lt(t,10),1,max(1-(t-10)/5,0))':eval=frame
4611 @end example
4612 @end itemize
4613
4614 @section volumedetect
4615
4616 Detect the volume of the input video.
4617
4618 The filter has no parameters. The input is not modified. Statistics about
4619 the volume will be printed in the log when the input stream end is reached.
4620
4621 In particular it will show the mean volume (root mean square), maximum
4622 volume (on a per-sample basis), and the beginning of a histogram of the
4623 registered volume values (from the maximum value to a cumulated 1/1000 of
4624 the samples).
4625
4626 All volumes are in decibels relative to the maximum PCM value.
4627
4628 @subsection Examples
4629
4630 Here is an excerpt of the output:
4631 @example
4632 [Parsed_volumedetect_0 @ 0xa23120] mean_volume: -27 dB
4633 [Parsed_volumedetect_0 @ 0xa23120] max_volume: -4 dB
4634 [Parsed_volumedetect_0 @ 0xa23120] histogram_4db: 6
4635 [Parsed_volumedetect_0 @ 0xa23120] histogram_5db: 62
4636 [Parsed_volumedetect_0 @ 0xa23120] histogram_6db: 286
4637 [Parsed_volumedetect_0 @ 0xa23120] histogram_7db: 1042
4638 [Parsed_volumedetect_0 @ 0xa23120] histogram_8db: 2551
4639 [Parsed_volumedetect_0 @ 0xa23120] histogram_9db: 4609
4640 [Parsed_volumedetect_0 @ 0xa23120] histogram_10db: 8409
4641 @end example
4642
4643 It means that:
4644 @itemize
4645 @item
4646 The mean square energy is approximately -27 dB, or 10^-2.7.
4647 @item
4648 The largest sample is at -4 dB, or more precisely between -4 dB and -5 dB.
4649 @item
4650 There are 6 samples at -4 dB, 62 at -5 dB, 286 at -6 dB, etc.
4651 @end itemize
4652
4653 In other words, raising the volume by +4 dB does not cause any clipping,
4654 raising it by +5 dB causes clipping for 6 samples, etc.
4655
4656 @c man end AUDIO FILTERS
4657
4658 @chapter Audio Sources
4659 @c man begin AUDIO SOURCES
4660
4661 Below is a description of the currently available audio sources.
4662
4663 @section abuffer
4664
4665 Buffer audio frames, and make them available to the filter chain.
4666
4667 This source is mainly intended for a programmatic use, in particular
4668 through the interface defined in @file{libavfilter/asrc_abuffer.h}.
4669
4670 It accepts the following parameters:
4671 @table @option
4672
4673 @item time_base
4674 The timebase which will be used for timestamps of submitted frames. It must be
4675 either a floating-point number or in @var{numerator}/@var{denominator} form.
4676
4677 @item sample_rate
4678 The sample rate of the incoming audio buffers.
4679
4680 @item sample_fmt
4681 The sample format of the incoming audio buffers.
4682 Either a sample format name or its corresponding integer representation from
4683 the enum AVSampleFormat in @file{libavutil/samplefmt.h}
4684
4685 @item channel_layout
4686 The channel layout of the incoming audio buffers.
4687 Either a channel layout name from channel_layout_map in
4688 @file{libavutil/channel_layout.c} or its corresponding integer representation
4689 from the AV_CH_LAYOUT_* macros in @file{libavutil/channel_layout.h}
4690
4691 @item channels
4692 The number of channels of the incoming audio buffers.
4693 If both @var{channels} and @var{channel_layout} are specified, then they
4694 must be consistent.
4695
4696 @end table
4697
4698 @subsection Examples
4699
4700 @example
4701 abuffer=sample_rate=44100:sample_fmt=s16p:channel_layout=stereo
4702 @end example
4703
4704 will instruct the source to accept planar 16bit signed stereo at 44100Hz.
4705 Since the sample format with name "s16p" corresponds to the number
4706 6 and the "stereo" channel layout corresponds to the value 0x3, this is
4707 equivalent to:
4708 @example
4709 abuffer=sample_rate=44100:sample_fmt=6:channel_layout=0x3
4710 @end example
4711
4712 @section aevalsrc
4713
4714 Generate an audio signal specified by an expression.
4715
4716 This source accepts in input one or more expressions (one for each
4717 channel), which are evaluated and used to generate a corresponding
4718 audio signal.
4719
4720 This source accepts the following options:
4721
4722 @table @option
4723 @item exprs
4724 Set the '|'-separated expressions list for each separate channel. In case the
4725 @option{channel_layout} option is not specified, the selected channel layout
4726 depends on the number of provided expressions. Otherwise the last
4727 specified expression is applied to the remaining output channels.
4728
4729 @item channel_layout, c
4730 Set the channel layout. The number of channels in the specified layout
4731 must be equal to the number of specified expressions.
4732
4733 @item duration, d
4734 Set the minimum duration of the sourced audio. See
4735 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
4736 for the accepted syntax.
4737 Note that the resulting duration may be greater than the specified
4738 duration, as the generated audio is always cut at the end of a
4739 complete frame.
4740
4741 If not specified, or the expressed duration is negative, the audio is
4742 supposed to be generated forever.
4743
4744 @item nb_samples, n
4745 Set the number of samples per channel per each output frame,
4746 default to 1024.
4747
4748 @item sample_rate, s
4749 Specify the sample rate, default to 44100.
4750 @end table
4751
4752 Each expression in @var{exprs} can contain the following constants:
4753
4754 @table @option
4755 @item n
4756 number of the evaluated sample, starting from 0
4757
4758 @item t
4759 time of the evaluated sample expressed in seconds, starting from 0
4760
4761 @item s
4762 sample rate
4763
4764 @end table
4765
4766 @subsection Examples
4767
4768 @itemize
4769 @item
4770 Generate silence:
4771 @example
4772 aevalsrc=0
4773 @end example
4774
4775 @item
4776 Generate a sin signal with frequency of 440 Hz, set sample rate to
4777 8000 Hz:
4778 @example
4779 aevalsrc="sin(440*2*PI*t):s=8000"
4780 @end example
4781
4782 @item
4783 Generate a two channels signal, specify the channel layout (Front
4784 Center + Back Center) explicitly:
4785 @example
4786 aevalsrc="sin(420*2*PI*t)|cos(430*2*PI*t):c=FC|BC"
4787 @end example
4788
4789 @item
4790 Generate white noise:
4791 @example
4792 aevalsrc="-2+random(0)"
4793 @end example
4794
4795 @item
4796 Generate an amplitude modulated signal:
4797 @example
4798 aevalsrc="sin(10*2*PI*t)*sin(880*2*PI*t)"
4799 @end example
4800
4801 @item
4802 Generate 2.5 Hz binaural beats on a 360 Hz carrier:
4803 @example
4804 aevalsrc="0.1*sin(2*PI*(360-2.5/2)*t) | 0.1*sin(2*PI*(360+2.5/2)*t)"
4805 @end example
4806
4807 @end itemize
4808
4809 @section anullsrc
4810
4811 The null audio source, return unprocessed audio frames. It is mainly useful
4812 as a template and to be employed in analysis / debugging tools, or as
4813 the source for filters which ignore the input data (for example the sox
4814 synth filter).
4815
4816 This source accepts the following options:
4817
4818 @table @option
4819
4820 @item channel_layout, cl
4821
4822 Specifies the channel layout, and can be either an integer or a string
4823 representing a channel layout. The default value of @var{channel_layout}
4824 is "stereo".
4825
4826 Check the channel_layout_map definition in
4827 @file{libavutil/channel_layout.c} for the mapping between strings and
4828 channel layout values.
4829
4830 @item sample_rate, r
4831 Specifies the sample rate, and defaults to 44100.
4832
4833 @item nb_samples, n
4834 Set the number of samples per requested frames.
4835
4836 @end table
4837
4838 @subsection Examples
4839
4840 @itemize
4841 @item
4842 Set the sample rate to 48000 Hz and the channel layout to AV_CH_LAYOUT_MONO.
4843 @example
4844 anullsrc=r=48000:cl=4
4845 @end example
4846
4847 @item
4848 Do the same operation with a more obvious syntax:
4849 @example
4850 anullsrc=r=48000:cl=mono
4851 @end example
4852 @end itemize
4853
4854 All the parameters need to be explicitly defined.
4855
4856 @section flite
4857
4858 Synthesize a voice utterance using the libflite library.
4859
4860 To enable compilation of this filter you need to configure FFmpeg with
4861 @code{--enable-libflite}.
4862
4863 Note that versions of the flite library prior to 2.0 are not thread-safe.
4864
4865 The filter accepts the following options:
4866
4867 @table @option
4868
4869 @item list_voices
4870 If set to 1, list the names of the available voices and exit
4871 immediately. Default value is 0.
4872
4873 @item nb_samples, n
4874 Set the maximum number of samples per frame. Default value is 512.
4875
4876 @item textfile
4877 Set the filename containing the text to speak.
4878
4879 @item text
4880 Set the text to speak.
4881
4882 @item voice, v
4883 Set the voice to use for the speech synthesis. Default value is
4884 @code{kal}. See also the @var{list_voices} option.
4885 @end table
4886
4887 @subsection Examples
4888
4889 @itemize
4890 @item
4891 Read from file @file{speech.txt}, and synthesize the text using the
4892 standard flite voice:
4893 @example
4894 flite=textfile=speech.txt
4895 @end example
4896
4897 @item
4898 Read the specified text selecting the @code{slt} voice:
4899 @example
4900 flite=text='So fare thee well, poor devil of a Sub-Sub, whose commentator I am':voice=slt
4901 @end example
4902
4903 @item
4904 Input text to ffmpeg:
4905 @example
4906 ffmpeg -f lavfi -i flite=text='So fare thee well, poor devil of a Sub-Sub, whose commentator I am':voice=slt
4907 @end example
4908
4909 @item
4910 Make @file{ffplay} speak the specified text, using @code{flite} and
4911 the @code{lavfi} device:
4912 @example
4913 ffplay -f lavfi flite=text='No more be grieved for which that thou hast done.'
4914 @end example
4915 @end itemize
4916
4917 For more information about libflite, check:
4918 @url{http://www.festvox.org/flite/}
4919
4920 @section anoisesrc
4921
4922 Generate a noise audio signal.
4923
4924 The filter accepts the following options:
4925
4926 @table @option
4927 @item sample_rate, r
4928 Specify the sample rate. Default value is 48000 Hz.
4929
4930 @item amplitude, a
4931 Specify the amplitude (0.0 - 1.0) of the generated audio stream. Default value
4932 is 1.0.
4933
4934 @item duration, d
4935 Specify the duration of the generated audio stream. Not specifying this option
4936 results in noise with an infinite length.
4937
4938 @item color, colour, c
4939 Specify the color of noise. Available noise colors are white, pink, brown,
4940 blue and violet. Default color is white.
4941
4942 @item seed, s
4943 Specify a value used to seed the PRNG.
4944
4945 @item nb_samples, n
4946 Set the number of samples per each output frame, default is 1024.
4947 @end table
4948
4949 @subsection Examples
4950
4951 @itemize
4952
4953 @item
4954 Generate 60 seconds of pink noise, with a 44.1 kHz sampling rate and an amplitude of 0.5:
4955 @example
4956 anoisesrc=d=60:c=pink:r=44100:a=0.5
4957 @end example
4958 @end itemize
4959
4960 @section hilbert
4961
4962 Generate odd-tap Hilbert transform FIR coefficients.
4963
4964 The resulting stream can be used with @ref{afir} filter for phase-shifting
4965 the signal by 90 degrees.
4966
4967 This is used in many matrix coding schemes and for analytic signal generation.
4968 The process is often written as a multiplication by i (or j), the imaginary unit.
4969
4970 The filter accepts the following options:
4971
4972 @table @option
4973
4974 @item sample_rate, s
4975 Set sample rate, default is 44100.
4976
4977 @item taps, t
4978 Set length of FIR filter, default is 22051.
4979
4980 @item nb_samples, n
4981 Set number of samples per each frame.
4982
4983 @item win_func, w
4984 Set window function to be used when generating FIR coefficients.
4985 @end table
4986
4987 @section sine
4988
4989 Generate an audio signal made of a sine wave with amplitude 1/8.
4990
4991 The audio signal is bit-exact.
4992
4993 The filter accepts the following options:
4994
4995 @table @option
4996
4997 @item frequency, f
4998 Set the carrier frequency. Default is 440 Hz.
4999
5000 @item beep_factor, b
5001 Enable a periodic beep every second with frequency @var{beep_factor} times
5002 the carrier frequency. Default is 0, meaning the beep is disabled.
5003
5004 @item sample_rate, r
5005 Specify the sample rate, default is 44100.
5006
5007 @item duration, d
5008 Specify the duration of the generated audio stream.
5009
5010 @item samples_per_frame
5011 Set the number of samples per output frame.
5012
5013 The expression can contain the following constants:
5014
5015 @table @option
5016 @item n
5017 The (sequential) number of the output audio frame, starting from 0.
5018
5019 @item pts
5020 The PTS (Presentation TimeStamp) of the output audio frame,
5021 expressed in @var{TB} units.
5022
5023 @item t
5024 The PTS of the output audio frame, expressed in seconds.
5025
5026 @item TB
5027 The timebase of the output audio frames.
5028 @end table
5029
5030 Default is @code{1024}.
5031 @end table
5032
5033 @subsection Examples
5034
5035 @itemize
5036
5037 @item
5038 Generate a simple 440 Hz sine wave:
5039 @example
5040 sine
5041 @end example
5042
5043 @item
5044 Generate a 220 Hz sine wave with a 880 Hz beep each second, for 5 seconds:
5045 @example
5046 sine=220:4:d=5
5047 sine=f=220:b=4:d=5
5048 sine=frequency=220:beep_factor=4:duration=5
5049 @end example
5050
5051 @item
5052 Generate a 1 kHz sine wave following @code{1602,1601,1602,1601,1602} NTSC
5053 pattern:
5054 @example
5055 sine=1000:samples_per_frame='st(0,mod(n,5)); 1602-not(not(eq(ld(0),1)+eq(ld(0),3)))'
5056 @end example
5057 @end itemize
5058
5059 @c man end AUDIO SOURCES
5060
5061 @chapter Audio Sinks
5062 @c man begin AUDIO SINKS
5063
5064 Below is a description of the currently available audio sinks.
5065
5066 @section abuffersink
5067
5068 Buffer audio frames, and make them available to the end of filter chain.
5069
5070 This sink is mainly intended for programmatic use, in particular
5071 through the interface defined in @file{libavfilter/buffersink.h}
5072 or the options system.
5073
5074 It accepts a pointer to an AVABufferSinkContext structure, which
5075 defines the incoming buffers' formats, to be passed as the opaque
5076 parameter to @code{avfilter_init_filter} for initialization.
5077 @section anullsink
5078
5079 Null audio sink; do absolutely nothing with the input audio. It is
5080 mainly useful as a template and for use in analysis / debugging
5081 tools.
5082
5083 @c man end AUDIO SINKS
5084
5085 @chapter Video Filters
5086 @c man begin VIDEO FILTERS
5087
5088 When you configure your FFmpeg build, you can disable any of the
5089 existing filters using @code{--disable-filters}.
5090 The configure output will show the video filters included in your
5091 build.
5092
5093 Below is a description of the currently available video filters.
5094
5095 @section alphaextract
5096
5097 Extract the alpha component from the input as a grayscale video. This
5098 is especially useful with the @var{alphamerge} filter.
5099
5100 @section alphamerge
5101
5102 Add or replace the alpha component of the primary input with the
5103 grayscale value of a second input. This is intended for use with
5104 @var{alphaextract} to allow the transmission or storage of frame
5105 sequences that have alpha in a format that doesn't support an alpha
5106 channel.
5107
5108 For example, to reconstruct full frames from a normal YUV-encoded video
5109 and a separate video created with @var{alphaextract}, you might use:
5110 @example
5111 movie=in_alpha.mkv [alpha]; [in][alpha] alphamerge [out]
5112 @end example
5113
5114 Since this filter is designed for reconstruction, it operates on frame
5115 sequences without considering timestamps, and terminates when either
5116 input reaches end of stream. This will cause problems if your encoding
5117 pipeline drops frames. If you're trying to apply an image as an
5118 overlay to a video stream, consider the @var{overlay} filter instead.
5119
5120 @section ass
5121
5122 Same as the @ref{subtitles} filter, except that it doesn't require libavcodec
5123 and libavformat to work. On the other hand, it is limited to ASS (Advanced
5124 Substation Alpha) subtitles files.
5125
5126 This filter accepts the following option in addition to the common options from
5127 the @ref{subtitles} filter:
5128
5129 @table @option
5130 @item shaping
5131 Set the shaping engine
5132
5133 Available values are:
5134 @table @samp
5135 @item auto
5136 The default libass shaping engine, which is the best available.
5137 @item simple
5138 Fast, font-agnostic shaper that can do only substitutions
5139 @item complex
5140 Slower shaper using OpenType for substitutions and positioning
5141 @end table
5142
5143 The default is @code{auto}.
5144 @end table
5145
5146 @section atadenoise
5147 Apply an Adaptive Temporal Averaging Denoiser to the video input.
5148
5149 The filter accepts the following options:
5150
5151 @table @option
5152 @item 0a
5153 Set threshold A for 1st plane. Default is 0.02.
5154 Valid range is 0 to 0.3.
5155
5156 @item 0b
5157 Set threshold B for 1st plane. Default is 0.04.
5158 Valid range is 0 to 5.
5159
5160 @item 1a
5161 Set threshold A for 2nd plane. Default is 0.02.
5162 Valid range is 0 to 0.3.
5163
5164 @item 1b
5165 Set threshold B for 2nd plane. Default is 0.04.
5166 Valid range is 0 to 5.
5167
5168 @item 2a
5169 Set threshold A for 3rd plane. Default is 0.02.
5170 Valid range is 0 to 0.3.
5171
5172 @item 2b
5173 Set threshold B for 3rd plane. Default is 0.04.
5174 Valid range is 0 to 5.
5175
5176 Threshold A is designed to react on abrupt changes in the input signal and
5177 threshold B is designed to react on continuous changes in the input signal.
5178
5179 @item s
5180 Set number of frames filter will use for averaging. Default is 33. Must be odd
5181 number in range [5, 129].
5182
5183 @item p
5184 Set what planes of frame filter will use for averaging. Default is all.
5185 @end table
5186
5187 @section avgblur
5188
5189 Apply average blur filter.
5190
5191 The filter accepts the following options:
5192
5193 @table @option
5194 @item sizeX
5195 Set horizontal kernel size.
5196
5197 @item planes
5198 Set which planes to filter. By default all planes are filtered.
5199
5200 @item sizeY
5201 Set vertical kernel size, if zero it will be same as @code{sizeX}.
5202 Default is @code{0}.
5203 @end table
5204
5205 @section bbox
5206
5207 Compute the bounding box for the non-black pixels in the input frame
5208 luminance plane.
5209
5210 This filter computes the bounding box containing all the pixels with a
5211 luminance value greater than the minimum allowed value.
5212 The parameters describing the bounding box are printed on the filter
5213 log.
5214
5215 The filter accepts the following option:
5216
5217 @table @option
5218 @item min_val
5219 Set the minimal luminance value. Default is @code{16}.
5220 @end table
5221
5222 @section bitplanenoise
5223
5224 Show and measure bit plane noise.
5225
5226 The filter accepts the following options:
5227
5228 @table @option
5229 @item bitplane
5230 Set which plane to analyze. Default is @code{1}.
5231
5232 @item filter
5233 Filter out noisy pixels from @code{bitplane} set above.
5234 Default is disabled.
5235 @end table
5236
5237 @section blackdetect
5238
5239 Detect video intervals that are (almost) completely black. Can be
5240 useful to detect chapter transitions, commercials, or invalid
5241 recordings. Output lines contains the time for the start, end and
5242 duration of the detected black interval expressed in seconds.
5243
5244 In order to display the output lines, you need to set the loglevel at
5245 least to the AV_LOG_INFO value.
5246
5247 The filter accepts the following options:
5248
5249 @table @option
5250 @item black_min_duration, d
5251 Set the minimum detected black duration expressed in seconds. It must
5252 be a non-negative floating point number.
5253
5254 Default value is 2.0.
5255
5256 @item picture_black_ratio_th, pic_th
5257 Set the threshold for considering a picture "black".
5258 Express the minimum value for the ratio:
5259 @example
5260 @var{nb_black_pixels} / @var{nb_pixels}
5261 @end example
5262
5263 for which a picture is considered black.
5264 Default value is 0.98.
5265
5266 @item pixel_black_th, pix_th
5267 Set the threshold for considering a pixel "black".
5268
5269 The threshold expresses the maximum pixel luminance value for which a
5270 pixel is considered "black". The provided value is scaled according to
5271 the following equation:
5272 @example
5273 @var{absolute_threshold} = @var{luminance_minimum_value} + @var{pixel_black_th} * @var{luminance_range_size}
5274 @end example
5275
5276 @var{luminance_range_size} and @var{luminance_minimum_value} depend on
5277 the input video format, the range is [0-255] for YUV full-range
5278 formats and [16-235] for YUV non full-range formats.
5279
5280 Default value is 0.10.
5281 @end table
5282
5283 The following example sets the maximum pixel threshold to the minimum
5284 value, and detects only black intervals of 2 or more seconds:
5285 @example
5286 blackdetect=d=2:pix_th=0.00
5287 @end example
5288
5289 @section blackframe
5290
5291 Detect frames that are (almost) completely black. Can be useful to
5292 detect chapter transitions or commercials. Output lines consist of
5293 the frame number of the detected frame, the percentage of blackness,
5294 the position in the file if known or -1 and the timestamp in seconds.
5295
5296 In order to display the output lines, you need to set the loglevel at
5297 least to the AV_LOG_INFO value.
5298
5299 This filter exports frame metadata @code{lavfi.blackframe.pblack}.
5300 The value represents the percentage of pixels in the picture that
5301 are below the threshold value.
5302
5303 It accepts the following parameters:
5304
5305 @table @option
5306
5307 @item amount
5308 The percentage of the pixels that have to be below the threshold; it defaults to
5309 @code{98}.
5310
5311 @item threshold, thresh
5312 The threshold below which a pixel value is considered black; it defaults to
5313 @code{32}.
5314
5315 @end table
5316
5317 @section blend, tblend
5318
5319 Blend two video frames into each other.
5320
5321 The @code{blend} filter takes two input streams and outputs one
5322 stream, the first input is the "top" layer and second input is
5323 "bottom" layer.  By default, the output terminates when the longest input terminates.
5324
5325 The @code{tblend} (time blend) filter takes two consecutive frames
5326 from one single stream, and outputs the result obtained by blending
5327 the new frame on top of the old frame.
5328
5329 A description of the accepted options follows.
5330
5331 @table @option
5332 @item c0_mode
5333 @item c1_mode
5334 @item c2_mode
5335 @item c3_mode
5336 @item all_mode
5337 Set blend mode for specific pixel component or all pixel components in case
5338 of @var{all_mode}. Default value is @code{normal}.
5339
5340 Available values for component modes are:
5341 @table @samp
5342 @item addition
5343 @item grainmerge
5344 @item and
5345 @item average
5346 @item burn
5347 @item darken
5348 @item difference
5349 @item grainextract
5350 @item divide
5351 @item dodge
5352 @item freeze
5353 @item exclusion
5354 @item extremity
5355 @item glow
5356 @item hardlight
5357 @item hardmix
5358 @item heat
5359 @item lighten
5360 @item linearlight
5361 @item multiply
5362 @item multiply128
5363 @item negation
5364 @item normal
5365 @item or
5366 @item overlay
5367 @item phoenix
5368 @item pinlight
5369 @item reflect
5370 @item screen
5371 @item softlight
5372 @item subtract
5373 @item vividlight
5374 @item xor
5375 @end table
5376
5377 @item c0_opacity
5378 @item c1_opacity
5379 @item c2_opacity
5380 @item c3_opacity
5381 @item all_opacity
5382 Set blend opacity for specific pixel component or all pixel components in case
5383 of @var{all_opacity}. Only used in combination with pixel component blend modes.
5384
5385 @item c0_expr
5386 @item c1_expr
5387 @item c2_expr
5388 @item c3_expr
5389 @item all_expr
5390 Set blend expression for specific pixel component or all pixel components in case
5391 of @var{all_expr}. Note that related mode options will be ignored if those are set.
5392
5393 The expressions can use the following variables:
5394
5395 @table @option
5396 @item N
5397 The sequential number of the filtered frame, starting from @code{0}.
5398
5399 @item X
5400 @item Y
5401 the coordinates of the current sample
5402
5403 @item W
5404 @item H
5405 the width and height of currently filtered plane
5406
5407 @item SW
5408 @item SH
5409 Width and height scale depending on the currently filtered plane. It is the
5410 ratio between the corresponding luma plane number of pixels and the current
5411 plane ones. E.g. for YUV4:2:0 the values are @code{1,1} for the luma plane, and
5412 @code{0.5,0.5} for chroma planes.
5413
5414 @item T
5415 Time of the current frame, expressed in seconds.
5416
5417 @item TOP, A
5418 Value of pixel component at current location for first video frame (top layer).
5419
5420 @item BOTTOM, B
5421 Value of pixel component at current location for second video frame (bottom layer).
5422 @end table
5423 @end table
5424
5425 The @code{blend} filter also supports the @ref{framesync} options.
5426
5427 @subsection Examples
5428
5429 @itemize
5430 @item
5431 Apply transition from bottom layer to top layer in first 10 seconds:
5432 @example
5433 blend=all_expr='A*(if(gte(T,10),1,T/10))+B*(1-(if(gte(T,10),1,T/10)))'
5434 @end example
5435
5436 @item
5437 Apply linear horizontal transition from top layer to bottom layer:
5438 @example
5439 blend=all_expr='A*(X/W)+B*(1-X/W)'
5440 @end example
5441
5442 @item
5443 Apply 1x1 checkerboard effect:
5444 @example
5445 blend=all_expr='if(eq(mod(X,2),mod(Y,2)),A,B)'
5446 @end example
5447
5448 @item
5449 Apply uncover left effect:
5450 @example
5451 blend=all_expr='if(gte(N*SW+X,W),A,B)'
5452 @end example
5453
5454 @item
5455 Apply uncover down effect:
5456 @example
5457 blend=all_expr='if(gte(Y-N*SH,0),A,B)'
5458 @end example
5459
5460 @item
5461 Apply uncover up-left effect:
5462 @example
5463 blend=all_expr='if(gte(T*SH*40+Y,H)*gte((T*40*SW+X)*W/H,W),A,B)'
5464 @end example
5465
5466 @item
5467 Split diagonally video and shows top and bottom layer on each side:
5468 @example
5469 blend=all_expr='if(gt(X,Y*(W/H)),A,B)'
5470 @end example
5471
5472 @item
5473 Display differences between the current and the previous frame:
5474 @example
5475 tblend=all_mode=grainextract
5476 @end example
5477 @end itemize
5478
5479 @section boxblur
5480
5481 Apply a boxblur algorithm to the input video.
5482
5483 It accepts the following parameters:
5484
5485 @table @option
5486
5487 @item luma_radius, lr
5488 @item luma_power, lp
5489 @item chroma_radius, cr
5490 @item chroma_power, cp
5491 @item alpha_radius, ar
5492 @item alpha_power, ap
5493
5494 @end table
5495
5496 A description of the accepted options follows.
5497
5498 @table @option
5499 @item luma_radius, lr
5500 @item chroma_radius, cr
5501 @item alpha_radius, ar
5502 Set an expression for the box radius in pixels used for blurring the
5503 corresponding input plane.
5504
5505 The radius value must be a non-negative number, and must not be
5506 greater than the value of the expression @code{min(w,h)/2} for the
5507 luma and alpha planes, and of @code{min(cw,ch)/2} for the chroma
5508 planes.
5509
5510 Default value for @option{luma_radius} is "2". If not specified,
5511 @option{chroma_radius} and @option{alpha_radius} default to the
5512 corresponding value set for @option{luma_radius}.
5513
5514 The expressions can contain the following constants:
5515 @table @option
5516 @item w
5517 @item h
5518 The input width and height in pixels.
5519
5520 @item cw
5521 @item ch
5522 The input chroma image width and height in pixels.
5523
5524 @item hsub
5525 @item vsub
5526 The horizontal and vertical chroma subsample values. For example, for the
5527 pixel format "yuv422p", @var{hsub} is 2 and @var{vsub} is 1.
5528 @end table
5529
5530 @item luma_power, lp
5531 @item chroma_power, cp
5532 @item alpha_power, ap
5533 Specify how many times the boxblur filter is applied to the
5534 corresponding plane.
5535
5536 Default value for @option{luma_power} is 2. If not specified,
5537 @option{chroma_power} and @option{alpha_power} default to the
5538 corresponding value set for @option{luma_power}.
5539
5540 A value of 0 will disable the effect.
5541 @end table
5542
5543 @subsection Examples
5544
5545 @itemize
5546 @item
5547 Apply a boxblur filter with the luma, chroma, and alpha radii
5548 set to 2:
5549 @example
5550 boxblur=luma_radius=2:luma_power=1
5551 boxblur=2:1
5552 @end example
5553
5554 @item
5555 Set the luma radius to 2, and alpha and chroma radius to 0:
5556 @example
5557 boxblur=2:1:cr=0:ar=0
5558 @end example
5559
5560 @item
5561 Set the luma and chroma radii to a fraction of the video dimension:
5562 @example
5563 boxblur=luma_radius=min(h\,w)/10:luma_power=1:chroma_radius=min(cw\,ch)/10:chroma_power=1
5564 @end example
5565 @end itemize
5566
5567 @section bwdif
5568
5569 Deinterlace the input video ("bwdif" stands for "Bob Weaver
5570 Deinterlacing Filter").
5571
5572 Motion adaptive deinterlacing based on yadif with the use of w3fdif and cubic
5573 interpolation algorithms.
5574 It accepts the following parameters:
5575
5576 @table @option
5577 @item mode
5578 The interlacing mode to adopt. It accepts one of the following values:
5579
5580 @table @option
5581 @item 0, send_frame
5582 Output one frame for each frame.
5583 @item 1, send_field
5584 Output one frame for each field.
5585 @end table
5586
5587 The default value is @code{send_field}.
5588
5589 @item parity
5590 The picture field parity assumed for the input interlaced video. It accepts one
5591 of the following values:
5592
5593 @table @option
5594 @item 0, tff
5595 Assume the top field is first.
5596 @item 1, bff
5597 Assume the bottom field is first.
5598 @item -1, auto
5599 Enable automatic detection of field parity.
5600 @end table
5601
5602 The default value is @code{auto}.
5603 If the interlacing is unknown or the decoder does not export this information,
5604 top field first will be assumed.
5605
5606 @item deint
5607 Specify which frames to deinterlace. Accept one of the following
5608 values:
5609
5610 @table @option
5611 @item 0, all
5612 Deinterlace all frames.
5613 @item 1, interlaced
5614 Only deinterlace frames marked as interlaced.
5615 @end table
5616
5617 The default value is @code{all}.
5618 @end table
5619
5620 @section chromakey
5621 YUV colorspace color/chroma keying.
5622
5623 The filter accepts the following options:
5624
5625 @table @option
5626 @item color
5627 The color which will be replaced with transparency.
5628
5629 @item similarity
5630 Similarity percentage with the key color.
5631
5632 0.01 matches only the exact key color, while 1.0 matches everything.
5633
5634 @item blend
5635 Blend percentage.
5636
5637 0.0 makes pixels either fully transparent, or not transparent at all.
5638
5639 Higher values result in semi-transparent pixels, with a higher transparency
5640 the more similar the pixels color is to the key color.
5641
5642 @item yuv
5643 Signals that the color passed is already in YUV instead of RGB.
5644
5645 Literal colors like "green" or "red" don't make sense with this enabled anymore.
5646 This can be used to pass exact YUV values as hexadecimal numbers.
5647 @end table
5648
5649 @subsection Examples
5650
5651 @itemize
5652 @item
5653 Make every green pixel in the input image transparent:
5654 @example
5655 ffmpeg -i input.png -vf chromakey=green out.png
5656 @end example
5657
5658 @item
5659 Overlay a greenscreen-video on top of a static black background.
5660 @example
5661 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
5662 @end example
5663 @end itemize
5664
5665 @section ciescope
5666
5667 Display CIE color diagram with pixels overlaid onto it.
5668
5669 The filter accepts the following options:
5670
5671 @table @option
5672 @item system
5673 Set color system.
5674
5675 @table @samp
5676 @item ntsc, 470m
5677 @item ebu, 470bg
5678 @item smpte
5679 @item 240m
5680 @item apple
5681 @item widergb
5682 @item cie1931
5683 @item rec709, hdtv
5684 @item uhdtv, rec2020
5685 @end table
5686
5687 @item cie
5688 Set CIE system.
5689
5690 @table @samp
5691 @item xyy
5692 @item ucs
5693 @item luv
5694 @end table
5695
5696 @item gamuts
5697 Set what gamuts to draw.
5698
5699 See @code{system} option for available values.
5700
5701 @item size, s
5702 Set ciescope size, by default set to 512.
5703
5704 @item intensity, i
5705 Set intensity used to map input pixel values to CIE diagram.
5706
5707 @item contrast
5708 Set contrast used to draw tongue colors that are out of active color system gamut.
5709
5710 @item corrgamma
5711 Correct gamma displayed on scope, by default enabled.
5712
5713 @item showwhite
5714 Show white point on CIE diagram, by default disabled.
5715
5716 @item gamma
5717 Set input gamma. Used only with XYZ input color space.
5718 @end table
5719
5720 @section codecview
5721
5722 Visualize information exported by some codecs.
5723
5724 Some codecs can export information through frames using side-data or other
5725 means. For example, some MPEG based codecs export motion vectors through the
5726 @var{export_mvs} flag in the codec @option{flags2} option.
5727
5728 The filter accepts the following option:
5729
5730 @table @option
5731 @item mv
5732 Set motion vectors to visualize.
5733
5734 Available flags for @var{mv} are:
5735
5736 @table @samp
5737 @item pf
5738 forward predicted MVs of P-frames
5739 @item bf
5740 forward predicted MVs of B-frames
5741 @item bb
5742 backward predicted MVs of B-frames
5743 @end table
5744
5745 @item qp
5746 Display quantization parameters using the chroma planes.
5747
5748 @item mv_type, mvt
5749 Set motion vectors type to visualize. Includes MVs from all frames unless specified by @var{frame_type} option.
5750
5751 Available flags for @var{mv_type} are:
5752
5753 @table @samp
5754 @item fp
5755 forward predicted MVs
5756 @item bp
5757 backward predicted MVs
5758 @end table
5759
5760 @item frame_type, ft
5761 Set frame type to visualize motion vectors of.
5762
5763 Available flags for @var{frame_type} are:
5764
5765 @table @samp
5766 @item if
5767 intra-coded frames (I-frames)
5768 @item pf
5769 predicted frames (P-frames)
5770 @item bf
5771 bi-directionally predicted frames (B-frames)
5772 @end table
5773 @end table
5774
5775 @subsection Examples
5776
5777 @itemize
5778 @item
5779 Visualize forward predicted MVs of all frames using @command{ffplay}:
5780 @example
5781 ffplay -flags2 +export_mvs input.mp4 -vf codecview=mv_type=fp
5782 @end example
5783
5784 @item
5785 Visualize multi-directionals MVs of P and B-Frames using @command{ffplay}:
5786 @example
5787 ffplay -flags2 +export_mvs input.mp4 -vf codecview=mv=pf+bf+bb
5788 @end example
5789 @end itemize
5790
5791 @section colorbalance
5792 Modify intensity of primary colors (red, green and blue) of input frames.
5793
5794 The filter allows an input frame to be adjusted in the shadows, midtones or highlights
5795 regions for the red-cyan, green-magenta or blue-yellow balance.
5796
5797 A positive adjustment value shifts the balance towards the primary color, a negative
5798 value towards the complementary color.
5799
5800 The filter accepts the following options:
5801
5802 @table @option
5803 @item rs
5804 @item gs
5805 @item bs
5806 Adjust red, green and blue shadows (darkest pixels).
5807
5808 @item rm
5809 @item gm
5810 @item bm
5811 Adjust red, green and blue midtones (medium pixels).
5812
5813 @item rh
5814 @item gh
5815 @item bh
5816 Adjust red, green and blue highlights (brightest pixels).
5817
5818 Allowed ranges for options are @code{[-1.0, 1.0]}. Defaults are @code{0}.
5819 @end table
5820
5821 @subsection Examples
5822
5823 @itemize
5824 @item
5825 Add red color cast to shadows:
5826 @example
5827 colorbalance=rs=.3
5828 @end example
5829 @end itemize
5830
5831 @section colorkey
5832 RGB colorspace color keying.
5833
5834 The filter accepts the following options:
5835
5836 @table @option
5837 @item color
5838 The color which will be replaced with transparency.
5839
5840 @item similarity
5841 Similarity percentage with the key color.
5842
5843 0.01 matches only the exact key color, while 1.0 matches everything.
5844
5845 @item blend
5846 Blend percentage.
5847
5848 0.0 makes pixels either fully transparent, or not transparent at all.
5849
5850 Higher values result in semi-transparent pixels, with a higher transparency
5851 the more similar the pixels color is to the key color.
5852 @end table
5853
5854 @subsection Examples
5855
5856 @itemize
5857 @item
5858 Make every green pixel in the input image transparent:
5859 @example
5860 ffmpeg -i input.png -vf colorkey=green out.png
5861 @end example
5862
5863 @item
5864 Overlay a greenscreen-video on top of a static background image.
5865 @example
5866 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
5867 @end example
5868 @end itemize
5869
5870 @section colorlevels
5871
5872 Adjust video input frames using levels.
5873
5874 The filter accepts the following options:
5875
5876 @table @option
5877 @item rimin
5878 @item gimin
5879 @item bimin
5880 @item aimin
5881 Adjust red, green, blue and alpha input black point.
5882 Allowed ranges for options are @code{[-1.0, 1.0]}. Defaults are @code{0}.
5883
5884 @item rimax
5885 @item gimax
5886 @item bimax
5887 @item aimax
5888 Adjust red, green, blue and alpha input white point.
5889 Allowed ranges for options are @code{[-1.0, 1.0]}. Defaults are @code{1}.
5890
5891 Input levels are used to lighten highlights (bright tones), darken shadows
5892 (dark tones), change the balance of bright and dark tones.
5893
5894 @item romin
5895 @item gomin
5896 @item bomin
5897 @item aomin
5898 Adjust red, green, blue and alpha output black point.
5899 Allowed ranges for options are @code{[0, 1.0]}. Defaults are @code{0}.
5900
5901 @item romax
5902 @item gomax
5903 @item bomax
5904 @item aomax
5905 Adjust red, green, blue and alpha output white point.
5906 Allowed ranges for options are @code{[0, 1.0]}. Defaults are @code{1}.
5907
5908 Output levels allows manual selection of a constrained output level range.
5909 @end table
5910
5911 @subsection Examples
5912
5913 @itemize
5914 @item
5915 Make video output darker:
5916 @example
5917 colorlevels=rimin=0.058:gimin=0.058:bimin=0.058
5918 @end example
5919
5920 @item
5921 Increase contrast:
5922 @example
5923 colorlevels=rimin=0.039:gimin=0.039:bimin=0.039:rimax=0.96:gimax=0.96:bimax=0.96
5924 @end example
5925
5926 @item
5927 Make video output lighter:
5928 @example
5929 colorlevels=rimax=0.902:gimax=0.902:bimax=0.902
5930 @end example
5931
5932 @item
5933 Increase brightness:
5934 @example
5935 colorlevels=romin=0.5:gomin=0.5:bomin=0.5
5936 @end example
5937 @end itemize
5938
5939 @section colorchannelmixer
5940
5941 Adjust video input frames by re-mixing color channels.
5942
5943 This filter modifies a color channel by adding the values associated to
5944 the other channels of the same pixels. For example if the value to
5945 modify is red, the output value will be:
5946 @example
5947 @var{red}=@var{red}*@var{rr} + @var{blue}*@var{rb} + @var{green}*@var{rg} + @var{alpha}*@var{ra}
5948 @end example
5949
5950 The filter accepts the following options:
5951
5952 @table @option
5953 @item rr
5954 @item rg
5955 @item rb
5956 @item ra
5957 Adjust contribution of input red, green, blue and alpha channels for output red channel.
5958 Default is @code{1} for @var{rr}, and @code{0} for @var{rg}, @var{rb} and @var{ra}.
5959
5960 @item gr
5961 @item gg
5962 @item gb
5963 @item ga
5964 Adjust contribution of input red, green, blue and alpha channels for output green channel.
5965 Default is @code{1} for @var{gg}, and @code{0} for @var{gr}, @var{gb} and @var{ga}.
5966
5967 @item br
5968 @item bg
5969 @item bb
5970 @item ba
5971 Adjust contribution of input red, green, blue and alpha channels for output blue channel.
5972 Default is @code{1} for @var{bb}, and @code{0} for @var{br}, @var{bg} and @var{ba}.
5973
5974 @item ar
5975 @item ag
5976 @item ab
5977 @item aa
5978 Adjust contribution of input red, green, blue and alpha channels for output alpha channel.
5979 Default is @code{1} for @var{aa}, and @code{0} for @var{ar}, @var{ag} and @var{ab}.
5980
5981 Allowed ranges for options are @code{[-2.0, 2.0]}.
5982 @end table
5983
5984 @subsection Examples
5985
5986 @itemize
5987 @item
5988 Convert source to grayscale:
5989 @example
5990 colorchannelmixer=.3:.4:.3:0:.3:.4:.3:0:.3:.4:.3
5991 @end example
5992 @item
5993 Simulate sepia tones:
5994 @example
5995 colorchannelmixer=.393:.769:.189:0:.349:.686:.168:0:.272:.534:.131
5996 @end example
5997 @end itemize
5998
5999 @section colormatrix
6000
6001 Convert color matrix.
6002
6003 The filter accepts the following options:
6004
6005 @table @option
6006 @item src
6007 @item dst
6008 Specify the source and destination color matrix. Both values must be
6009 specified.
6010
6011 The accepted values are:
6012 @table @samp
6013 @item bt709
6014 BT.709
6015
6016 @item fcc
6017 FCC
6018
6019 @item bt601
6020 BT.601
6021
6022 @item bt470
6023 BT.470
6024
6025 @item bt470bg
6026 BT.470BG
6027
6028 @item smpte170m
6029 SMPTE-170M
6030
6031 @item smpte240m
6032 SMPTE-240M
6033
6034 @item bt2020
6035 BT.2020
6036 @end table
6037 @end table
6038
6039 For example to convert from BT.601 to SMPTE-240M, use the command:
6040 @example
6041 colormatrix=bt601:smpte240m
6042 @end example
6043
6044 @section colorspace
6045
6046 Convert colorspace, transfer characteristics or color primaries.
6047 Input video needs to have an even size.
6048
6049 The filter accepts the following options:
6050
6051 @table @option
6052 @anchor{all}
6053 @item all
6054 Specify all color properties at once.
6055
6056 The accepted values are:
6057 @table @samp
6058 @item bt470m
6059 BT.470M
6060
6061 @item bt470bg
6062 BT.470BG
6063
6064 @item bt601-6-525
6065 BT.601-6 525
6066
6067 @item bt601-6-625
6068 BT.601-6 625
6069
6070 @item bt709
6071 BT.709
6072
6073 @item smpte170m
6074 SMPTE-170M
6075
6076 @item smpte240m
6077 SMPTE-240M
6078
6079 @item bt2020
6080 BT.2020
6081
6082 @end table
6083
6084 @anchor{space}
6085 @item space
6086 Specify output colorspace.
6087
6088 The accepted values are:
6089 @table @samp
6090 @item bt709
6091 BT.709
6092
6093 @item fcc
6094 FCC
6095
6096 @item bt470bg
6097 BT.470BG or BT.601-6 625
6098
6099 @item smpte170m
6100 SMPTE-170M or BT.601-6 525
6101
6102 @item smpte240m
6103 SMPTE-240M
6104
6105 @item ycgco
6106 YCgCo
6107
6108 @item bt2020ncl
6109 BT.2020 with non-constant luminance
6110
6111 @end table
6112
6113 @anchor{trc}
6114 @item trc
6115 Specify output transfer characteristics.
6116
6117 The accepted values are:
6118 @table @samp
6119 @item bt709
6120 BT.709
6121
6122 @item bt470m
6123 BT.470M
6124
6125 @item bt470bg
6126 BT.470BG
6127
6128 @item gamma22
6129 Constant gamma of 2.2
6130
6131 @item gamma28
6132 Constant gamma of 2.8
6133
6134 @item smpte170m
6135 SMPTE-170M, BT.601-6 625 or BT.601-6 525
6136
6137 @item smpte240m
6138 SMPTE-240M
6139
6140 @item srgb
6141 SRGB
6142
6143 @item iec61966-2-1
6144 iec61966-2-1
6145
6146 @item iec61966-2-4
6147 iec61966-2-4
6148
6149 @item xvycc
6150 xvycc
6151
6152 @item bt2020-10
6153 BT.2020 for 10-bits content
6154
6155 @item bt2020-12
6156 BT.2020 for 12-bits content
6157
6158 @end table
6159
6160 @anchor{primaries}
6161 @item primaries
6162 Specify output color primaries.
6163
6164 The accepted values are:
6165 @table @samp
6166 @item bt709
6167 BT.709
6168
6169 @item bt470m
6170 BT.470M
6171
6172 @item bt470bg
6173 BT.470BG or BT.601-6 625
6174
6175 @item smpte170m
6176 SMPTE-170M or BT.601-6 525
6177
6178 @item smpte240m
6179 SMPTE-240M
6180
6181 @item film
6182 film
6183
6184 @item smpte431
6185 SMPTE-431
6186
6187 @item smpte432
6188 SMPTE-432
6189
6190 @item bt2020
6191 BT.2020
6192
6193 @item jedec-p22
6194 JEDEC P22 phosphors
6195
6196 @end table
6197
6198 @anchor{range}
6199 @item range
6200 Specify output color range.
6201
6202 The accepted values are:
6203 @table @samp
6204 @item tv
6205 TV (restricted) range
6206
6207 @item mpeg
6208 MPEG (restricted) range
6209
6210 @item pc
6211 PC (full) range
6212
6213 @item jpeg
6214 JPEG (full) range
6215
6216 @end table
6217
6218 @item format
6219 Specify output color format.
6220
6221 The accepted values are:
6222 @table @samp
6223 @item yuv420p
6224 YUV 4:2:0 planar 8-bits
6225
6226 @item yuv420p10
6227 YUV 4:2:0 planar 10-bits
6228
6229 @item yuv420p12
6230 YUV 4:2:0 planar 12-bits
6231
6232 @item yuv422p
6233 YUV 4:2:2 planar 8-bits
6234
6235 @item yuv422p10
6236 YUV 4:2:2 planar 10-bits
6237
6238 @item yuv422p12
6239 YUV 4:2:2 planar 12-bits
6240
6241 @item yuv444p
6242 YUV 4:4:4 planar 8-bits
6243
6244 @item yuv444p10
6245 YUV 4:4:4 planar 10-bits
6246
6247 @item yuv444p12
6248 YUV 4:4:4 planar 12-bits
6249
6250 @end table
6251
6252 @item fast
6253 Do a fast conversion, which skips gamma/primary correction. This will take
6254 significantly less CPU, but will be mathematically incorrect. To get output
6255 compatible with that produced by the colormatrix filter, use fast=1.
6256
6257 @item dither
6258 Specify dithering mode.
6259
6260 The accepted values are:
6261 @table @samp
6262 @item none
6263 No dithering
6264
6265 @item fsb
6266 Floyd-Steinberg dithering
6267 @end table
6268
6269 @item wpadapt
6270 Whitepoint adaptation mode.
6271
6272 The accepted values are:
6273 @table @samp
6274 @item bradford
6275 Bradford whitepoint adaptation
6276
6277 @item vonkries
6278 von Kries whitepoint adaptation
6279
6280 @item identity
6281 identity whitepoint adaptation (i.e. no whitepoint adaptation)
6282 @end table
6283
6284 @item iall
6285 Override all input properties at once. Same accepted values as @ref{all}.
6286
6287 @item ispace
6288 Override input colorspace. Same accepted values as @ref{space}.
6289
6290 @item iprimaries
6291 Override input color primaries. Same accepted values as @ref{primaries}.
6292
6293 @item itrc
6294 Override input transfer characteristics. Same accepted values as @ref{trc}.
6295
6296 @item irange
6297 Override input color range. Same accepted values as @ref{range}.
6298
6299 @end table
6300
6301 The filter converts the transfer characteristics, color space and color
6302 primaries to the specified user values. The output value, if not specified,
6303 is set to a default value based on the "all" property. If that property is
6304 also not specified, the filter will log an error. The output color range and
6305 format default to the same value as the input color range and format. The
6306 input transfer characteristics, color space, color primaries and color range
6307 should be set on the input data. If any of these are missing, the filter will
6308 log an error and no conversion will take place.
6309
6310 For example to convert the input to SMPTE-240M, use the command:
6311 @example
6312 colorspace=smpte240m
6313 @end example
6314
6315 @section convolution
6316
6317 Apply convolution 3x3, 5x5 or 7x7 filter.
6318
6319 The filter accepts the following options:
6320
6321 @table @option
6322 @item 0m
6323 @item 1m
6324 @item 2m
6325 @item 3m
6326 Set matrix for each plane.
6327 Matrix is sequence of 9, 25 or 49 signed integers.
6328
6329 @item 0rdiv
6330 @item 1rdiv
6331 @item 2rdiv
6332 @item 3rdiv
6333 Set multiplier for calculated value for each plane.
6334
6335 @item 0bias
6336 @item 1bias
6337 @item 2bias
6338 @item 3bias
6339 Set bias for each plane. This value is added to the result of the multiplication.
6340 Useful for making the overall image brighter or darker. Default is 0.0.
6341 @end table
6342
6343 @subsection Examples
6344
6345 @itemize
6346 @item
6347 Apply sharpen:
6348 @example
6349 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"
6350 @end example
6351
6352 @item
6353 Apply blur:
6354 @example
6355 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"
6356 @end example
6357
6358 @item
6359 Apply edge enhance:
6360 @example
6361 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"
6362 @end example
6363
6364 @item
6365 Apply edge detect:
6366 @example
6367 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"
6368 @end example
6369
6370 @item
6371 Apply laplacian edge detector which includes diagonals:
6372 @example
6373 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"
6374 @end example
6375
6376 @item
6377 Apply emboss:
6378 @example
6379 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"
6380 @end example
6381 @end itemize
6382
6383 @section convolve
6384
6385 Apply 2D convolution of video stream in frequency domain using second stream
6386 as impulse.
6387
6388 The filter accepts the following options:
6389
6390 @table @option
6391 @item planes
6392 Set which planes to process.
6393
6394 @item impulse
6395 Set which impulse video frames will be processed, can be @var{first}
6396 or @var{all}. Default is @var{all}.
6397 @end table
6398
6399 The @code{convolve} filter also supports the @ref{framesync} options.
6400
6401 @section copy
6402
6403 Copy the input video source unchanged to the output. This is mainly useful for
6404 testing purposes.
6405
6406 @anchor{coreimage}
6407 @section coreimage
6408 Video filtering on GPU using Apple's CoreImage API on OSX.
6409
6410 Hardware acceleration is based on an OpenGL context. Usually, this means it is
6411 processed by video hardware. However, software-based OpenGL implementations
6412 exist which means there is no guarantee for hardware processing. It depends on
6413 the respective OSX.
6414
6415 There are many filters and image generators provided by Apple that come with a
6416 large variety of options. The filter has to be referenced by its name along
6417 with its options.
6418
6419 The coreimage filter accepts the following options:
6420 @table @option
6421 @item list_filters
6422 List all available filters and generators along with all their respective
6423 options as well as possible minimum and maximum values along with the default
6424 values.
6425 @example
6426 list_filters=true
6427 @end example
6428
6429 @item filter
6430 Specify all filters by their respective name and options.
6431 Use @var{list_filters} to determine all valid filter names and options.
6432 Numerical options are specified by a float value and are automatically clamped
6433 to their respective value range.  Vector and color options have to be specified
6434 by a list of space separated float values. Character escaping has to be done.
6435 A special option name @code{default} is available to use default options for a
6436 filter.
6437
6438 It is required to specify either @code{default} or at least one of the filter options.
6439 All omitted options are used with their default values.
6440 The syntax of the filter string is as follows:
6441 @example
6442 filter=<NAME>@@<OPTION>=<VALUE>[@@<OPTION>=<VALUE>][@@...][#<NAME>@@<OPTION>=<VALUE>[@@<OPTION>=<VALUE>][@@...]][#...]
6443 @end example
6444
6445 @item output_rect
6446 Specify a rectangle where the output of the filter chain is copied into the
6447 input image. It is given by a list of space separated float values:
6448 @example
6449 output_rect=x\ y\ width\ height
6450 @end example
6451 If not given, the output rectangle equals the dimensions of the input image.
6452 The output rectangle is automatically cropped at the borders of the input
6453 image. Negative values are valid for each component.
6454 @example
6455 output_rect=25\ 25\ 100\ 100
6456 @end example
6457 @end table
6458
6459 Several filters can be chained for successive processing without GPU-HOST
6460 transfers allowing for fast processing of complex filter chains.
6461 Currently, only filters with zero (generators) or exactly one (filters) input
6462 image and one output image are supported. Also, transition filters are not yet
6463 usable as intended.
6464
6465 Some filters generate output images with additional padding depending on the
6466 respective filter kernel. The padding is automatically removed to ensure the
6467 filter output has the same size as the input image.
6468
6469 For image generators, the size of the output image is determined by the
6470 previous output image of the filter chain or the input image of the whole
6471 filterchain, respectively. The generators do not use the pixel information of
6472 this image to generate their output. However, the generated output is
6473 blended onto this image, resulting in partial or complete coverage of the
6474 output image.
6475
6476 The @ref{coreimagesrc} video source can be used for generating input images
6477 which are directly fed into the filter chain. By using it, providing input
6478 images by another video source or an input video is not required.
6479
6480 @subsection Examples
6481
6482 @itemize
6483
6484 @item
6485 List all filters available:
6486 @example
6487 coreimage=list_filters=true
6488 @end example
6489
6490 @item
6491 Use the CIBoxBlur filter with default options to blur an image:
6492 @example
6493 coreimage=filter=CIBoxBlur@@default
6494 @end example
6495
6496 @item
6497 Use a filter chain with CISepiaTone at default values and CIVignetteEffect with
6498 its center at 100x100 and a radius of 50 pixels:
6499 @example
6500 coreimage=filter=CIBoxBlur@@default#CIVignetteEffect@@inputCenter=100\ 100@@inputRadius=50
6501 @end example
6502
6503 @item
6504 Use nullsrc and CIQRCodeGenerator to create a QR code for the FFmpeg homepage,
6505 given as complete and escaped command-line for Apple's standard bash shell:
6506 @example
6507 ffmpeg -f lavfi -i nullsrc=s=100x100,coreimage=filter=CIQRCodeGenerator@@inputMessage=https\\\\\://FFmpeg.org/@@inputCorrectionLevel=H -frames:v 1 QRCode.png
6508 @end example
6509 @end itemize
6510
6511 @section crop
6512
6513 Crop the input video to given dimensions.
6514
6515 It accepts the following parameters:
6516
6517 @table @option
6518 @item w, out_w
6519 The width of the output video. It defaults to @code{iw}.
6520 This expression is evaluated only once during the filter
6521 configuration, or when the @samp{w} or @samp{out_w} command is sent.
6522
6523 @item h, out_h
6524 The height of the output video. It defaults to @code{ih}.
6525 This expression is evaluated only once during the filter
6526 configuration, or when the @samp{h} or @samp{out_h} command is sent.
6527
6528 @item x
6529 The horizontal position, in the input video, of the left edge of the output
6530 video. It defaults to @code{(in_w-out_w)/2}.
6531 This expression is evaluated per-frame.
6532
6533 @item y
6534 The vertical position, in the input video, of the top edge of the output video.
6535 It defaults to @code{(in_h-out_h)/2}.
6536 This expression is evaluated per-frame.
6537
6538 @item keep_aspect
6539 If set to 1 will force the output display aspect ratio
6540 to be the same of the input, by changing the output sample aspect
6541 ratio. It defaults to 0.
6542
6543 @item exact
6544 Enable exact cropping. If enabled, subsampled videos will be cropped at exact
6545 width/height/x/y as specified and will not be rounded to nearest smaller value.
6546 It defaults to 0.
6547 @end table
6548
6549 The @var{out_w}, @var{out_h}, @var{x}, @var{y} parameters are
6550 expressions containing the following constants:
6551
6552 @table @option
6553 @item x
6554 @item y
6555 The computed values for @var{x} and @var{y}. They are evaluated for
6556 each new frame.
6557
6558 @item in_w
6559 @item in_h
6560 The input width and height.
6561
6562 @item iw
6563 @item ih
6564 These are the same as @var{in_w} and @var{in_h}.
6565
6566 @item out_w
6567 @item out_h
6568 The output (cropped) width and height.
6569
6570 @item ow
6571 @item oh
6572 These are the same as @var{out_w} and @var{out_h}.
6573
6574 @item a
6575 same as @var{iw} / @var{ih}
6576
6577 @item sar
6578 input sample aspect ratio
6579
6580 @item dar
6581 input display aspect ratio, it is the same as (@var{iw} / @var{ih}) * @var{sar}
6582
6583 @item hsub
6584 @item vsub
6585 horizontal and vertical chroma subsample values. For example for the
6586 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
6587
6588 @item n
6589 The number of the input frame, starting from 0.
6590
6591 @item pos
6592 the position in the file of the input frame, NAN if unknown
6593
6594 @item t
6595 The timestamp expressed in seconds. It's NAN if the input timestamp is unknown.
6596
6597 @end table
6598
6599 The expression for @var{out_w} may depend on the value of @var{out_h},
6600 and the expression for @var{out_h} may depend on @var{out_w}, but they
6601 cannot depend on @var{x} and @var{y}, as @var{x} and @var{y} are
6602 evaluated after @var{out_w} and @var{out_h}.
6603
6604 The @var{x} and @var{y} parameters specify the expressions for the
6605 position of the top-left corner of the output (non-cropped) area. They
6606 are evaluated for each frame. If the evaluated value is not valid, it
6607 is approximated to the nearest valid value.
6608
6609 The expression for @var{x} may depend on @var{y}, and the expression
6610 for @var{y} may depend on @var{x}.
6611
6612 @subsection Examples
6613
6614 @itemize
6615 @item
6616 Crop area with size 100x100 at position (12,34).
6617 @example
6618 crop=100:100:12:34
6619 @end example
6620
6621 Using named options, the example above becomes:
6622 @example
6623 crop=w=100:h=100:x=12:y=34
6624 @end example
6625
6626 @item
6627 Crop the central input area with size 100x100:
6628 @example
6629 crop=100:100
6630 @end example
6631
6632 @item
6633 Crop the central input area with size 2/3 of the input video:
6634 @example
6635 crop=2/3*in_w:2/3*in_h
6636 @end example
6637
6638 @item
6639 Crop the input video central square:
6640 @example
6641 crop=out_w=in_h
6642 crop=in_h
6643 @end example
6644
6645 @item
6646 Delimit the rectangle with the top-left corner placed at position
6647 100:100 and the right-bottom corner corresponding to the right-bottom
6648 corner of the input image.
6649 @example
6650 crop=in_w-100:in_h-100:100:100
6651 @end example
6652
6653 @item
6654 Crop 10 pixels from the left and right borders, and 20 pixels from
6655 the top and bottom borders
6656 @example
6657 crop=in_w-2*10:in_h-2*20
6658 @end example
6659
6660 @item
6661 Keep only the bottom right quarter of the input image:
6662 @example
6663 crop=in_w/2:in_h/2:in_w/2:in_h/2
6664 @end example
6665
6666 @item
6667 Crop height for getting Greek harmony:
6668 @example
6669 crop=in_w:1/PHI*in_w
6670 @end example
6671
6672 @item
6673 Apply trembling effect:
6674 @example
6675 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)
6676 @end example
6677
6678 @item
6679 Apply erratic camera effect depending on timestamp:
6680 @example
6681 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)"
6682 @end example
6683
6684 @item
6685 Set x depending on the value of y:
6686 @example
6687 crop=in_w/2:in_h/2:y:10+10*sin(n/10)
6688 @end example
6689 @end itemize
6690
6691 @subsection Commands
6692
6693 This filter supports the following commands:
6694 @table @option
6695 @item w, out_w
6696 @item h, out_h
6697 @item x
6698 @item y
6699 Set width/height of the output video and the horizontal/vertical position
6700 in the input video.
6701 The command accepts the same syntax of the corresponding option.
6702
6703 If the specified expression is not valid, it is kept at its current
6704 value.
6705 @end table
6706
6707 @section cropdetect
6708
6709 Auto-detect the crop size.
6710
6711 It calculates the necessary cropping parameters and prints the
6712 recommended parameters via the logging system. The detected dimensions
6713 correspond to the non-black area of the input video.
6714
6715 It accepts the following parameters:
6716
6717 @table @option
6718
6719 @item limit
6720 Set higher black value threshold, which can be optionally specified
6721 from nothing (0) to everything (255 for 8-bit based formats). An intensity
6722 value greater to the set value is considered non-black. It defaults to 24.
6723 You can also specify a value between 0.0 and 1.0 which will be scaled depending
6724 on the bitdepth of the pixel format.
6725
6726 @item round
6727 The value which the width/height should be divisible by. It defaults to
6728 16. The offset is automatically adjusted to center the video. Use 2 to
6729 get only even dimensions (needed for 4:2:2 video). 16 is best when
6730 encoding to most video codecs.
6731
6732 @item reset_count, reset
6733 Set the counter that determines after how many frames cropdetect will
6734 reset the previously detected largest video area and start over to
6735 detect the current optimal crop area. Default value is 0.
6736
6737 This can be useful when channel logos distort the video area. 0
6738 indicates 'never reset', and returns the largest area encountered during
6739 playback.
6740 @end table
6741
6742 @anchor{curves}
6743 @section curves
6744
6745 Apply color adjustments using curves.
6746
6747 This filter is similar to the Adobe Photoshop and GIMP curves tools. Each
6748 component (red, green and blue) has its values defined by @var{N} key points
6749 tied from each other using a smooth curve. The x-axis represents the pixel
6750 values from the input frame, and the y-axis the new pixel values to be set for
6751 the output frame.
6752
6753 By default, a component curve is defined by the two points @var{(0;0)} and
6754 @var{(1;1)}. This creates a straight line where each original pixel value is
6755 "adjusted" to its own value, which means no change to the image.
6756
6757 The filter allows you to redefine these two points and add some more. A new
6758 curve (using a natural cubic spline interpolation) will be define to pass
6759 smoothly through all these new coordinates. The new defined points needs to be
6760 strictly increasing over the x-axis, and their @var{x} and @var{y} values must
6761 be in the @var{[0;1]} interval.  If the computed curves happened to go outside
6762 the vector spaces, the values will be clipped accordingly.
6763
6764 The filter accepts the following options:
6765
6766 @table @option
6767 @item preset
6768 Select one of the available color presets. This option can be used in addition
6769 to the @option{r}, @option{g}, @option{b} parameters; in this case, the later
6770 options takes priority on the preset values.
6771 Available presets are:
6772 @table @samp
6773 @item none
6774 @item color_negative
6775 @item cross_process
6776 @item darker
6777 @item increase_contrast
6778 @item lighter
6779 @item linear_contrast
6780 @item medium_contrast
6781 @item negative
6782 @item strong_contrast
6783 @item vintage
6784 @end table
6785 Default is @code{none}.
6786 @item master, m
6787 Set the master key points. These points will define a second pass mapping. It
6788 is sometimes called a "luminance" or "value" mapping. It can be used with
6789 @option{r}, @option{g}, @option{b} or @option{all} since it acts like a
6790 post-processing LUT.
6791 @item red, r
6792 Set the key points for the red component.
6793 @item green, g
6794 Set the key points for the green component.
6795 @item blue, b
6796 Set the key points for the blue component.
6797 @item all
6798 Set the key points for all components (not including master).
6799 Can be used in addition to the other key points component
6800 options. In this case, the unset component(s) will fallback on this
6801 @option{all} setting.
6802 @item psfile
6803 Specify a Photoshop curves file (@code{.acv}) to import the settings from.
6804 @item plot
6805 Save Gnuplot script of the curves in specified file.
6806 @end table
6807
6808 To avoid some filtergraph syntax conflicts, each key points list need to be
6809 defined using the following syntax: @code{x0/y0 x1/y1 x2/y2 ...}.
6810
6811 @subsection Examples
6812
6813 @itemize
6814 @item
6815 Increase slightly the middle level of blue:
6816 @example
6817 curves=blue='0/0 0.5/0.58 1/1'
6818 @end example
6819
6820 @item
6821 Vintage effect:
6822 @example
6823 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'
6824 @end example
6825 Here we obtain the following coordinates for each components:
6826 @table @var
6827 @item red
6828 @code{(0;0.11) (0.42;0.51) (1;0.95)}
6829 @item green
6830 @code{(0;0) (0.50;0.48) (1;1)}
6831 @item blue
6832 @code{(0;0.22) (0.49;0.44) (1;0.80)}
6833 @end table
6834
6835 @item
6836 The previous example can also be achieved with the associated built-in preset:
6837 @example
6838 curves=preset=vintage
6839 @end example
6840
6841 @item
6842 Or simply:
6843 @example
6844 curves=vintage
6845 @end example
6846
6847 @item
6848 Use a Photoshop preset and redefine the points of the green component:
6849 @example
6850 curves=psfile='MyCurvesPresets/purple.acv':green='0/0 0.45/0.53 1/1'
6851 @end example
6852
6853 @item
6854 Check out the curves of the @code{cross_process} profile using @command{ffmpeg}
6855 and @command{gnuplot}:
6856 @example
6857 ffmpeg -f lavfi -i color -vf curves=cross_process:plot=/tmp/curves.plt -frames:v 1 -f null -
6858 gnuplot -p /tmp/curves.plt
6859 @end example
6860 @end itemize
6861
6862 @section datascope
6863
6864 Video data analysis filter.
6865
6866 This filter shows hexadecimal pixel values of part of video.
6867
6868 The filter accepts the following options:
6869
6870 @table @option
6871 @item size, s
6872 Set output video size.
6873
6874 @item x
6875 Set x offset from where to pick pixels.
6876
6877 @item y
6878 Set y offset from where to pick pixels.
6879
6880 @item mode
6881 Set scope mode, can be one of the following:
6882 @table @samp
6883 @item mono
6884 Draw hexadecimal pixel values with white color on black background.
6885
6886 @item color
6887 Draw hexadecimal pixel values with input video pixel color on black
6888 background.
6889
6890 @item color2
6891 Draw hexadecimal pixel values on color background picked from input video,
6892 the text color is picked in such way so its always visible.
6893 @end table
6894
6895 @item axis
6896 Draw rows and columns numbers on left and top of video.
6897
6898 @item opacity
6899 Set background opacity.
6900 @end table
6901
6902 @section dctdnoiz
6903
6904 Denoise frames using 2D DCT (frequency domain filtering).
6905
6906 This filter is not designed for real time.
6907
6908 The filter accepts the following options:
6909
6910 @table @option
6911 @item sigma, s
6912 Set the noise sigma constant.
6913
6914 This @var{sigma} defines a hard threshold of @code{3 * sigma}; every DCT
6915 coefficient (absolute value) below this threshold with be dropped.
6916
6917 If you need a more advanced filtering, see @option{expr}.
6918
6919 Default is @code{0}.
6920
6921 @item overlap
6922 Set number overlapping pixels for each block. Since the filter can be slow, you
6923 may want to reduce this value, at the cost of a less effective filter and the
6924 risk of various artefacts.
6925
6926 If the overlapping value doesn't permit processing the whole input width or
6927 height, a warning will be displayed and according borders won't be denoised.
6928
6929 Default value is @var{blocksize}-1, which is the best possible setting.
6930
6931 @item expr, e
6932 Set the coefficient factor expression.
6933
6934 For each coefficient of a DCT block, this expression will be evaluated as a
6935 multiplier value for the coefficient.
6936
6937 If this is option is set, the @option{sigma} option will be ignored.
6938
6939 The absolute value of the coefficient can be accessed through the @var{c}
6940 variable.
6941
6942 @item n
6943 Set the @var{blocksize} using the number of bits. @code{1<<@var{n}} defines the
6944 @var{blocksize}, which is the width and height of the processed blocks.
6945
6946 The default value is @var{3} (8x8) and can be raised to @var{4} for a
6947 @var{blocksize} of 16x16. Note that changing this setting has huge consequences
6948 on the speed processing. Also, a larger block size does not necessarily means a
6949 better de-noising.
6950 @end table
6951
6952 @subsection Examples
6953
6954 Apply a denoise with a @option{sigma} of @code{4.5}:
6955 @example
6956 dctdnoiz=4.5
6957 @end example
6958
6959 The same operation can be achieved using the expression system:
6960 @example
6961 dctdnoiz=e='gte(c, 4.5*3)'
6962 @end example
6963
6964 Violent denoise using a block size of @code{16x16}:
6965 @example
6966 dctdnoiz=15:n=4
6967 @end example
6968
6969 @section deband
6970
6971 Remove banding artifacts from input video.
6972 It works by replacing banded pixels with average value of referenced pixels.
6973
6974 The filter accepts the following options:
6975
6976 @table @option
6977 @item 1thr
6978 @item 2thr
6979 @item 3thr
6980 @item 4thr
6981 Set banding detection threshold for each plane. Default is 0.02.
6982 Valid range is 0.00003 to 0.5.
6983 If difference between current pixel and reference pixel is less than threshold,
6984 it will be considered as banded.
6985
6986 @item range, r
6987 Banding detection range in pixels. Default is 16. If positive, random number
6988 in range 0 to set value will be used. If negative, exact absolute value
6989 will be used.
6990 The range defines square of four pixels around current pixel.
6991
6992 @item direction, d
6993 Set direction in radians from which four pixel will be compared. If positive,
6994 random direction from 0 to set direction will be picked. If negative, exact of
6995 absolute value will be picked. For example direction 0, -PI or -2*PI radians
6996 will pick only pixels on same row and -PI/2 will pick only pixels on same
6997 column.
6998
6999 @item blur, b
7000 If enabled, current pixel is compared with average value of all four
7001 surrounding pixels. The default is enabled. If disabled current pixel is
7002 compared with all four surrounding pixels. The pixel is considered banded
7003 if only all four differences with surrounding pixels are less than threshold.
7004
7005 @item coupling, c
7006 If enabled, current pixel is changed if and only if all pixel components are banded,
7007 e.g. banding detection threshold is triggered for all color components.
7008 The default is disabled.
7009 @end table
7010
7011 @anchor{decimate}
7012 @section decimate
7013
7014 Drop duplicated frames at regular intervals.
7015
7016 The filter accepts the following options:
7017
7018 @table @option
7019 @item cycle
7020 Set the number of frames from which one will be dropped. Setting this to
7021 @var{N} means one frame in every batch of @var{N} frames will be dropped.
7022 Default is @code{5}.
7023
7024 @item dupthresh
7025 Set the threshold for duplicate detection. If the difference metric for a frame
7026 is less than or equal to this value, then it is declared as duplicate. Default
7027 is @code{1.1}
7028
7029 @item scthresh
7030 Set scene change threshold. Default is @code{15}.
7031
7032 @item blockx
7033 @item blocky
7034 Set the size of the x and y-axis blocks used during metric calculations.
7035 Larger blocks give better noise suppression, but also give worse detection of
7036 small movements. Must be a power of two. Default is @code{32}.
7037
7038 @item ppsrc
7039 Mark main input as a pre-processed input and activate clean source input
7040 stream. This allows the input to be pre-processed with various filters to help
7041 the metrics calculation while keeping the frame selection lossless. When set to
7042 @code{1}, the first stream is for the pre-processed input, and the second
7043 stream is the clean source from where the kept frames are chosen. Default is
7044 @code{0}.
7045
7046 @item chroma
7047 Set whether or not chroma is considered in the metric calculations. Default is
7048 @code{1}.
7049 @end table
7050
7051 @section deconvolve
7052
7053 Apply 2D deconvolution of video stream in frequency domain using second stream
7054 as impulse.
7055
7056 The filter accepts the following options:
7057
7058 @table @option
7059 @item planes
7060 Set which planes to process.
7061
7062 @item impulse
7063 Set which impulse video frames will be processed, can be @var{first}
7064 or @var{all}. Default is @var{all}.
7065
7066 @item noise
7067 Set noise when doing divisions. Default is @var{0.0000001}. Useful when width
7068 and height are not same and not power of 2 or if stream prior to convolving
7069 had noise.
7070 @end table
7071
7072 The @code{deconvolve} filter also supports the @ref{framesync} options.
7073
7074 @section deflate
7075
7076 Apply deflate effect to the video.
7077
7078 This filter replaces the pixel by the local(3x3) average by taking into account
7079 only values lower than the pixel.
7080
7081 It accepts the following options:
7082
7083 @table @option
7084 @item threshold0
7085 @item threshold1
7086 @item threshold2
7087 @item threshold3
7088 Limit the maximum change for each plane, default is 65535.
7089 If 0, plane will remain unchanged.
7090 @end table
7091
7092 @section deflicker
7093
7094 Remove temporal frame luminance variations.
7095
7096 It accepts the following options:
7097
7098 @table @option
7099 @item size, s
7100 Set moving-average filter size in frames. Default is 5. Allowed range is 2 - 129.
7101
7102 @item mode, m
7103 Set averaging mode to smooth temporal luminance variations.
7104
7105 Available values are:
7106 @table @samp
7107 @item am
7108 Arithmetic mean
7109
7110 @item gm
7111 Geometric mean
7112
7113 @item hm
7114 Harmonic mean
7115
7116 @item qm
7117 Quadratic mean
7118
7119 @item cm
7120 Cubic mean
7121
7122 @item pm
7123 Power mean
7124
7125 @item median
7126 Median
7127 @end table
7128
7129 @item bypass
7130 Do not actually modify frame. Useful when one only wants metadata.
7131 @end table
7132
7133 @section dejudder
7134
7135 Remove judder produced by partially interlaced telecined content.
7136
7137 Judder can be introduced, for instance, by @ref{pullup} filter. If the original
7138 source was partially telecined content then the output of @code{pullup,dejudder}
7139 will have a variable frame rate. May change the recorded frame rate of the
7140 container. Aside from that change, this filter will not affect constant frame
7141 rate video.
7142
7143 The option available in this filter is:
7144 @table @option
7145
7146 @item cycle
7147 Specify the length of the window over which the judder repeats.
7148
7149 Accepts any integer greater than 1. Useful values are:
7150 @table @samp
7151
7152 @item 4
7153 If the original was telecined from 24 to 30 fps (Film to NTSC).
7154
7155 @item 5
7156 If the original was telecined from 25 to 30 fps (PAL to NTSC).
7157
7158 @item 20
7159 If a mixture of the two.
7160 @end table
7161
7162 The default is @samp{4}.
7163 @end table
7164
7165 @section delogo
7166
7167 Suppress a TV station logo by a simple interpolation of the surrounding
7168 pixels. Just set a rectangle covering the logo and watch it disappear
7169 (and sometimes something even uglier appear - your mileage may vary).
7170
7171 It accepts the following parameters:
7172 @table @option
7173
7174 @item x
7175 @item y
7176 Specify the top left corner coordinates of the logo. They must be
7177 specified.
7178
7179 @item w
7180 @item h
7181 Specify the width and height of the logo to clear. They must be
7182 specified.
7183
7184 @item band, t
7185 Specify the thickness of the fuzzy edge of the rectangle (added to
7186 @var{w} and @var{h}). The default value is 1. This option is
7187 deprecated, setting higher values should no longer be necessary and
7188 is not recommended.
7189
7190 @item show
7191 When set to 1, a green rectangle is drawn on the screen to simplify
7192 finding the right @var{x}, @var{y}, @var{w}, and @var{h} parameters.
7193 The default value is 0.
7194
7195 The rectangle is drawn on the outermost pixels which will be (partly)
7196 replaced with interpolated values. The values of the next pixels
7197 immediately outside this rectangle in each direction will be used to
7198 compute the interpolated pixel values inside the rectangle.
7199
7200 @end table
7201
7202 @subsection Examples
7203
7204 @itemize
7205 @item
7206 Set a rectangle covering the area with top left corner coordinates 0,0
7207 and size 100x77, and a band of size 10:
7208 @example
7209 delogo=x=0:y=0:w=100:h=77:band=10
7210 @end example
7211
7212 @end itemize
7213
7214 @section deshake
7215
7216 Attempt to fix small changes in horizontal and/or vertical shift. This
7217 filter helps remove camera shake from hand-holding a camera, bumping a
7218 tripod, moving on a vehicle, etc.
7219
7220 The filter accepts the following options:
7221
7222 @table @option
7223
7224 @item x
7225 @item y
7226 @item w
7227 @item h
7228 Specify a rectangular area where to limit the search for motion
7229 vectors.
7230 If desired the search for motion vectors can be limited to a
7231 rectangular area of the frame defined by its top left corner, width
7232 and height. These parameters have the same meaning as the drawbox
7233 filter which can be used to visualise the position of the bounding
7234 box.
7235
7236 This is useful when simultaneous movement of subjects within the frame
7237 might be confused for camera motion by the motion vector search.
7238
7239 If any or all of @var{x}, @var{y}, @var{w} and @var{h} are set to -1
7240 then the full frame is used. This allows later options to be set
7241 without specifying the bounding box for the motion vector search.
7242
7243 Default - search the whole frame.
7244
7245 @item rx
7246 @item ry
7247 Specify the maximum extent of movement in x and y directions in the
7248 range 0-64 pixels. Default 16.
7249
7250 @item edge
7251 Specify how to generate pixels to fill blanks at the edge of the
7252 frame. Available values are:
7253 @table @samp
7254 @item blank, 0
7255 Fill zeroes at blank locations
7256 @item original, 1
7257 Original image at blank locations
7258 @item clamp, 2
7259 Extruded edge value at blank locations
7260 @item mirror, 3
7261 Mirrored edge at blank locations
7262 @end table
7263 Default value is @samp{mirror}.
7264
7265 @item blocksize
7266 Specify the blocksize to use for motion search. Range 4-128 pixels,
7267 default 8.
7268
7269 @item contrast
7270 Specify the contrast threshold for blocks. Only blocks with more than
7271 the specified contrast (difference between darkest and lightest
7272 pixels) will be considered. Range 1-255, default 125.
7273
7274 @item search
7275 Specify the search strategy. Available values are:
7276 @table @samp
7277 @item exhaustive, 0
7278 Set exhaustive search
7279 @item less, 1
7280 Set less exhaustive search.
7281 @end table
7282 Default value is @samp{exhaustive}.
7283
7284 @item filename
7285 If set then a detailed log of the motion search is written to the
7286 specified file.
7287
7288 @end table
7289
7290 @section despill
7291
7292 Remove unwanted contamination of foreground colors, caused by reflected color of
7293 greenscreen or bluescreen.
7294
7295 This filter accepts the following options:
7296
7297 @table @option
7298 @item type
7299 Set what type of despill to use.
7300
7301 @item mix
7302 Set how spillmap will be generated.
7303
7304 @item expand
7305 Set how much to get rid of still remaining spill.
7306
7307 @item red
7308 Controls amount of red in spill area.
7309
7310 @item green
7311 Controls amount of green in spill area.
7312 Should be -1 for greenscreen.
7313
7314 @item blue
7315 Controls amount of blue in spill area.
7316 Should be -1 for bluescreen.
7317
7318 @item brightness
7319 Controls brightness of spill area, preserving colors.
7320
7321 @item alpha
7322 Modify alpha from generated spillmap.
7323 @end table
7324
7325 @section detelecine
7326
7327 Apply an exact inverse of the telecine operation. It requires a predefined
7328 pattern specified using the pattern option which must be the same as that passed
7329 to the telecine filter.
7330
7331 This filter accepts the following options:
7332
7333 @table @option
7334 @item first_field
7335 @table @samp
7336 @item top, t
7337 top field first
7338 @item bottom, b
7339 bottom field first
7340 The default value is @code{top}.
7341 @end table
7342
7343 @item pattern
7344 A string of numbers representing the pulldown pattern you wish to apply.
7345 The default value is @code{23}.
7346
7347 @item start_frame
7348 A number representing position of the first frame with respect to the telecine
7349 pattern. This is to be used if the stream is cut. The default value is @code{0}.
7350 @end table
7351
7352 @section dilation
7353
7354 Apply dilation effect to the video.
7355
7356 This filter replaces the pixel by the local(3x3) maximum.
7357
7358 It accepts the following options:
7359
7360 @table @option
7361 @item threshold0
7362 @item threshold1
7363 @item threshold2
7364 @item threshold3
7365 Limit the maximum change for each plane, default is 65535.
7366 If 0, plane will remain unchanged.
7367
7368 @item coordinates
7369 Flag which specifies the pixel to refer to. Default is 255 i.e. all eight
7370 pixels are used.
7371
7372 Flags to local 3x3 coordinates maps like this:
7373
7374     1 2 3
7375     4   5
7376     6 7 8
7377 @end table
7378
7379 @section displace
7380
7381 Displace pixels as indicated by second and third input stream.
7382
7383 It takes three input streams and outputs one stream, the first input is the
7384 source, and second and third input are displacement maps.
7385
7386 The second input specifies how much to displace pixels along the
7387 x-axis, while the third input specifies how much to displace pixels
7388 along the y-axis.
7389 If one of displacement map streams terminates, last frame from that
7390 displacement map will be used.
7391
7392 Note that once generated, displacements maps can be reused over and over again.
7393
7394 A description of the accepted options follows.
7395
7396 @table @option
7397 @item edge
7398 Set displace behavior for pixels that are out of range.
7399
7400 Available values are:
7401 @table @samp
7402 @item blank
7403 Missing pixels are replaced by black pixels.
7404
7405 @item smear
7406 Adjacent pixels will spread out to replace missing pixels.
7407
7408 @item wrap
7409 Out of range pixels are wrapped so they point to pixels of other side.
7410
7411 @item mirror
7412 Out of range pixels will be replaced with mirrored pixels.
7413 @end table
7414 Default is @samp{smear}.
7415
7416 @end table
7417
7418 @subsection Examples
7419
7420 @itemize
7421 @item
7422 Add ripple effect to rgb input of video size hd720:
7423 @example
7424 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
7425 @end example
7426
7427 @item
7428 Add wave effect to rgb input of video size hd720:
7429 @example
7430 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
7431 @end example
7432 @end itemize
7433
7434 @section drawbox
7435
7436 Draw a colored box on the input image.
7437
7438 It accepts the following parameters:
7439
7440 @table @option
7441 @item x
7442 @item y
7443 The expressions which specify the top left corner coordinates of the box. It defaults to 0.
7444
7445 @item width, w
7446 @item height, h
7447 The expressions which specify the width and height of the box; if 0 they are interpreted as
7448 the input width and height. It defaults to 0.
7449
7450 @item color, c
7451 Specify the color of the box to write. For the general syntax of this option,
7452 check the "Color" section in the ffmpeg-utils manual. If the special
7453 value @code{invert} is used, the box edge color is the same as the
7454 video with inverted luma.
7455
7456 @item thickness, t
7457 The expression which sets the thickness of the box edge.
7458 A value of @code{fill} will create a filled box. Default value is @code{3}.
7459
7460 See below for the list of accepted constants.
7461
7462 @item replace
7463 Applicable if the input has alpha. With value @code{1}, the pixels of the painted box
7464 will overwrite the video's color and alpha pixels.
7465 Default is @code{0}, which composites the box onto the input, leaving the video's alpha intact.
7466 @end table
7467
7468 The parameters for @var{x}, @var{y}, @var{w} and @var{h} and @var{t} are expressions containing the
7469 following constants:
7470
7471 @table @option
7472 @item dar
7473 The input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}.
7474
7475 @item hsub
7476 @item vsub
7477 horizontal and vertical chroma subsample values. For example for the
7478 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
7479
7480 @item in_h, ih
7481 @item in_w, iw
7482 The input width and height.
7483
7484 @item sar
7485 The input sample aspect ratio.
7486
7487 @item x
7488 @item y
7489 The x and y offset coordinates where the box is drawn.
7490
7491 @item w
7492 @item h
7493 The width and height of the drawn box.
7494
7495 @item t
7496 The thickness of the drawn box.
7497
7498 These constants allow the @var{x}, @var{y}, @var{w}, @var{h} and @var{t} expressions to refer to
7499 each other, so you may for example specify @code{y=x/dar} or @code{h=w/dar}.
7500
7501 @end table
7502
7503 @subsection Examples
7504
7505 @itemize
7506 @item
7507 Draw a black box around the edge of the input image:
7508 @example
7509 drawbox
7510 @end example
7511
7512 @item
7513 Draw a box with color red and an opacity of 50%:
7514 @example
7515 drawbox=10:20:200:60:red@@0.5
7516 @end example
7517
7518 The previous example can be specified as:
7519 @example
7520 drawbox=x=10:y=20:w=200:h=60:color=red@@0.5
7521 @end example
7522
7523 @item
7524 Fill the box with pink color:
7525 @example
7526 drawbox=x=10:y=10:w=100:h=100:color=pink@@0.5:t=fill
7527 @end example
7528
7529 @item
7530 Draw a 2-pixel red 2.40:1 mask:
7531 @example
7532 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
7533 @end example
7534 @end itemize
7535
7536 @section drawgrid
7537
7538 Draw a grid on the input image.
7539
7540 It accepts the following parameters:
7541
7542 @table @option
7543 @item x
7544 @item y
7545 The expressions which specify the coordinates of some point of grid intersection (meant to configure offset). Both default to 0.
7546
7547 @item width, w
7548 @item height, h
7549 The expressions which specify the width and height of the grid cell, if 0 they are interpreted as the
7550 input width and height, respectively, minus @code{thickness}, so image gets
7551 framed. Default to 0.
7552
7553 @item color, c
7554 Specify the color of the grid. For the general syntax of this option,
7555 check the "Color" section in the ffmpeg-utils manual. If the special
7556 value @code{invert} is used, the grid color is the same as the
7557 video with inverted luma.
7558
7559 @item thickness, t
7560 The expression which sets the thickness of the grid line. Default value is @code{1}.
7561
7562 See below for the list of accepted constants.
7563
7564 @item replace
7565 Applicable if the input has alpha. With @code{1} the pixels of the painted grid
7566 will overwrite the video's color and alpha pixels.
7567 Default is @code{0}, which composites the grid onto the input, leaving the video's alpha intact.
7568 @end table
7569
7570 The parameters for @var{x}, @var{y}, @var{w} and @var{h} and @var{t} are expressions containing the
7571 following constants:
7572
7573 @table @option
7574 @item dar
7575 The input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}.
7576
7577 @item hsub
7578 @item vsub
7579 horizontal and vertical chroma subsample values. For example for the
7580 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
7581
7582 @item in_h, ih
7583 @item in_w, iw
7584 The input grid cell width and height.
7585
7586 @item sar
7587 The input sample aspect ratio.
7588
7589 @item x
7590 @item y
7591 The x and y coordinates of some point of grid intersection (meant to configure offset).
7592
7593 @item w
7594 @item h
7595 The width and height of the drawn cell.
7596
7597 @item t
7598 The thickness of the drawn cell.
7599
7600 These constants allow the @var{x}, @var{y}, @var{w}, @var{h} and @var{t} expressions to refer to
7601 each other, so you may for example specify @code{y=x/dar} or @code{h=w/dar}.
7602
7603 @end table
7604
7605 @subsection Examples
7606
7607 @itemize
7608 @item
7609 Draw a grid with cell 100x100 pixels, thickness 2 pixels, with color red and an opacity of 50%:
7610 @example
7611 drawgrid=width=100:height=100:thickness=2:color=red@@0.5
7612 @end example
7613
7614 @item
7615 Draw a white 3x3 grid with an opacity of 50%:
7616 @example
7617 drawgrid=w=iw/3:h=ih/3:t=2:c=white@@0.5
7618 @end example
7619 @end itemize
7620
7621 @anchor{drawtext}
7622 @section drawtext
7623
7624 Draw a text string or text from a specified file on top of a video, using the
7625 libfreetype library.
7626
7627 To enable compilation of this filter, you need to configure FFmpeg with
7628 @code{--enable-libfreetype}.
7629 To enable default font fallback and the @var{font} option you need to
7630 configure FFmpeg with @code{--enable-libfontconfig}.
7631 To enable the @var{text_shaping} option, you need to configure FFmpeg with
7632 @code{--enable-libfribidi}.
7633
7634 @subsection Syntax
7635
7636 It accepts the following parameters:
7637
7638 @table @option
7639
7640 @item box
7641 Used to draw a box around text using the background color.
7642 The value must be either 1 (enable) or 0 (disable).
7643 The default value of @var{box} is 0.
7644
7645 @item boxborderw
7646 Set the width of the border to be drawn around the box using @var{boxcolor}.
7647 The default value of @var{boxborderw} is 0.
7648
7649 @item boxcolor
7650 The color to be used for drawing box around text. For the syntax of this
7651 option, check the "Color" section in the ffmpeg-utils manual.
7652
7653 The default value of @var{boxcolor} is "white".
7654
7655 @item line_spacing
7656 Set the line spacing in pixels of the border to be drawn around the box using @var{box}.
7657 The default value of @var{line_spacing} is 0.
7658
7659 @item borderw
7660 Set the width of the border to be drawn around the text using @var{bordercolor}.
7661 The default value of @var{borderw} is 0.
7662
7663 @item bordercolor
7664 Set the color to be used for drawing border around text. For the syntax of this
7665 option, check the "Color" section in the ffmpeg-utils manual.
7666
7667 The default value of @var{bordercolor} is "black".
7668
7669 @item expansion
7670 Select how the @var{text} is expanded. Can be either @code{none},
7671 @code{strftime} (deprecated) or
7672 @code{normal} (default). See the @ref{drawtext_expansion, Text expansion} section
7673 below for details.
7674
7675 @item basetime
7676 Set a start time for the count. Value is in microseconds. Only applied
7677 in the deprecated strftime expansion mode. To emulate in normal expansion
7678 mode use the @code{pts} function, supplying the start time (in seconds)
7679 as the second argument.
7680
7681 @item fix_bounds
7682 If true, check and fix text coords to avoid clipping.
7683
7684 @item fontcolor
7685 The color to be used for drawing fonts. For the syntax of this option, check
7686 the "Color" section in the ffmpeg-utils manual.
7687
7688 The default value of @var{fontcolor} is "black".
7689
7690 @item fontcolor_expr
7691 String which is expanded the same way as @var{text} to obtain dynamic
7692 @var{fontcolor} value. By default this option has empty value and is not
7693 processed. When this option is set, it overrides @var{fontcolor} option.
7694
7695 @item font
7696 The font family to be used for drawing text. By default Sans.
7697
7698 @item fontfile
7699 The font file to be used for drawing text. The path must be included.
7700 This parameter is mandatory if the fontconfig support is disabled.
7701
7702 @item alpha
7703 Draw the text applying alpha blending. The value can
7704 be a number between 0.0 and 1.0.
7705 The expression accepts the same variables @var{x, y} as well.
7706 The default value is 1.
7707 Please see @var{fontcolor_expr}.
7708
7709 @item fontsize
7710 The font size to be used for drawing text.
7711 The default value of @var{fontsize} is 16.
7712
7713 @item text_shaping
7714 If set to 1, attempt to shape the text (for example, reverse the order of
7715 right-to-left text and join Arabic characters) before drawing it.
7716 Otherwise, just draw the text exactly as given.
7717 By default 1 (if supported).
7718
7719 @item ft_load_flags
7720 The flags to be used for loading the fonts.
7721
7722 The flags map the corresponding flags supported by libfreetype, and are
7723 a combination of the following values:
7724 @table @var
7725 @item default
7726 @item no_scale
7727 @item no_hinting
7728 @item render
7729 @item no_bitmap
7730 @item vertical_layout
7731 @item force_autohint
7732 @item crop_bitmap
7733 @item pedantic
7734 @item ignore_global_advance_width
7735 @item no_recurse
7736 @item ignore_transform
7737 @item monochrome
7738 @item linear_design
7739 @item no_autohint
7740 @end table
7741
7742 Default value is "default".
7743
7744 For more information consult the documentation for the FT_LOAD_*
7745 libfreetype flags.
7746
7747 @item shadowcolor
7748 The color to be used for drawing a shadow behind the drawn text. For the
7749 syntax of this option, check the "Color" section in the ffmpeg-utils manual.
7750
7751 The default value of @var{shadowcolor} is "black".
7752
7753 @item shadowx
7754 @item shadowy
7755 The x and y offsets for the text shadow position with respect to the
7756 position of the text. They can be either positive or negative
7757 values. The default value for both is "0".
7758
7759 @item start_number
7760 The starting frame number for the n/frame_num variable. The default value
7761 is "0".
7762
7763 @item tabsize
7764 The size in number of spaces to use for rendering the tab.
7765 Default value is 4.
7766
7767 @item timecode
7768 Set the initial timecode representation in "hh:mm:ss[:;.]ff"
7769 format. It can be used with or without text parameter. @var{timecode_rate}
7770 option must be specified.
7771
7772 @item timecode_rate, rate, r
7773 Set the timecode frame rate (timecode only). Value will be rounded to nearest
7774 integer. Minimum value is "1".
7775 Drop-frame timecode is supported for frame rates 30 & 60.
7776
7777 @item tc24hmax
7778 If set to 1, the output of the timecode option will wrap around at 24 hours.
7779 Default is 0 (disabled).
7780
7781 @item text
7782 The text string to be drawn. The text must be a sequence of UTF-8
7783 encoded characters.
7784 This parameter is mandatory if no file is specified with the parameter
7785 @var{textfile}.
7786
7787 @item textfile
7788 A text file containing text to be drawn. The text must be a sequence
7789 of UTF-8 encoded characters.
7790
7791 This parameter is mandatory if no text string is specified with the
7792 parameter @var{text}.
7793
7794 If both @var{text} and @var{textfile} are specified, an error is thrown.
7795
7796 @item reload
7797 If set to 1, the @var{textfile} will be reloaded before each frame.
7798 Be sure to update it atomically, or it may be read partially, or even fail.
7799
7800 @item x
7801 @item y
7802 The expressions which specify the offsets where text will be drawn
7803 within the video frame. They are relative to the top/left border of the
7804 output image.
7805
7806 The default value of @var{x} and @var{y} is "0".
7807
7808 See below for the list of accepted constants and functions.
7809 @end table
7810
7811 The parameters for @var{x} and @var{y} are expressions containing the
7812 following constants and functions:
7813
7814 @table @option
7815 @item dar
7816 input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}
7817
7818 @item hsub
7819 @item vsub
7820 horizontal and vertical chroma subsample values. For example for the
7821 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
7822
7823 @item line_h, lh
7824 the height of each text line
7825
7826 @item main_h, h, H
7827 the input height
7828
7829 @item main_w, w, W
7830 the input width
7831
7832 @item max_glyph_a, ascent
7833 the maximum distance from the baseline to the highest/upper grid
7834 coordinate used to place a glyph outline point, for all the rendered
7835 glyphs.
7836 It is a positive value, due to the grid's orientation with the Y axis
7837 upwards.
7838
7839 @item max_glyph_d, descent
7840 the maximum distance from the baseline to the lowest grid coordinate
7841 used to place a glyph outline point, for all the rendered glyphs.
7842 This is a negative value, due to the grid's orientation, with the Y axis
7843 upwards.
7844
7845 @item max_glyph_h
7846 maximum glyph height, that is the maximum height for all the glyphs
7847 contained in the rendered text, it is equivalent to @var{ascent} -
7848 @var{descent}.
7849
7850 @item max_glyph_w
7851 maximum glyph width, that is the maximum width for all the glyphs
7852 contained in the rendered text
7853
7854 @item n
7855 the number of input frame, starting from 0
7856
7857 @item rand(min, max)
7858 return a random number included between @var{min} and @var{max}
7859
7860 @item sar
7861 The input sample aspect ratio.
7862
7863 @item t
7864 timestamp expressed in seconds, NAN if the input timestamp is unknown
7865
7866 @item text_h, th
7867 the height of the rendered text
7868
7869 @item text_w, tw
7870 the width of the rendered text
7871
7872 @item x
7873 @item y
7874 the x and y offset coordinates where the text is drawn.
7875
7876 These parameters allow the @var{x} and @var{y} expressions to refer
7877 each other, so you can for example specify @code{y=x/dar}.
7878 @end table
7879
7880 @anchor{drawtext_expansion}
7881 @subsection Text expansion
7882
7883 If @option{expansion} is set to @code{strftime},
7884 the filter recognizes strftime() sequences in the provided text and
7885 expands them accordingly. Check the documentation of strftime(). This
7886 feature is deprecated.
7887
7888 If @option{expansion} is set to @code{none}, the text is printed verbatim.
7889
7890 If @option{expansion} is set to @code{normal} (which is the default),
7891 the following expansion mechanism is used.
7892
7893 The backslash character @samp{\}, followed by any character, always expands to
7894 the second character.
7895
7896 Sequences of the form @code{%@{...@}} are expanded. The text between the
7897 braces is a function name, possibly followed by arguments separated by ':'.
7898 If the arguments contain special characters or delimiters (':' or '@}'),
7899 they should be escaped.
7900
7901 Note that they probably must also be escaped as the value for the
7902 @option{text} option in the filter argument string and as the filter
7903 argument in the filtergraph description, and possibly also for the shell,
7904 that makes up to four levels of escaping; using a text file avoids these
7905 problems.
7906
7907 The following functions are available:
7908
7909 @table @command
7910
7911 @item expr, e
7912 The expression evaluation result.
7913
7914 It must take one argument specifying the expression to be evaluated,
7915 which accepts the same constants and functions as the @var{x} and
7916 @var{y} values. Note that not all constants should be used, for
7917 example the text size is not known when evaluating the expression, so
7918 the constants @var{text_w} and @var{text_h} will have an undefined
7919 value.
7920
7921 @item expr_int_format, eif
7922 Evaluate the expression's value and output as formatted integer.
7923
7924 The first argument is the expression to be evaluated, just as for the @var{expr} function.
7925 The second argument specifies the output format. Allowed values are @samp{x},
7926 @samp{X}, @samp{d} and @samp{u}. They are treated exactly as in the
7927 @code{printf} function.
7928 The third parameter is optional and sets the number of positions taken by the output.
7929 It can be used to add padding with zeros from the left.
7930
7931 @item gmtime
7932 The time at which the filter is running, expressed in UTC.
7933 It can accept an argument: a strftime() format string.
7934
7935 @item localtime
7936 The time at which the filter is running, expressed in the local time zone.
7937 It can accept an argument: a strftime() format string.
7938
7939 @item metadata
7940 Frame metadata. Takes one or two arguments.
7941
7942 The first argument is mandatory and specifies the metadata key.
7943
7944 The second argument is optional and specifies a default value, used when the
7945 metadata key is not found or empty.
7946
7947 @item n, frame_num
7948 The frame number, starting from 0.
7949
7950 @item pict_type
7951 A 1 character description of the current picture type.
7952
7953 @item pts
7954 The timestamp of the current frame.
7955 It can take up to three arguments.
7956
7957 The first argument is the format of the timestamp; it defaults to @code{flt}
7958 for seconds as a decimal number with microsecond accuracy; @code{hms} stands
7959 for a formatted @var{[-]HH:MM:SS.mmm} timestamp with millisecond accuracy.
7960 @code{gmtime} stands for the timestamp of the frame formatted as UTC time;
7961 @code{localtime} stands for the timestamp of the frame formatted as
7962 local time zone time.
7963
7964 The second argument is an offset added to the timestamp.
7965
7966 If the format is set to @code{localtime} or @code{gmtime},
7967 a third argument may be supplied: a strftime() format string.
7968 By default, @var{YYYY-MM-DD HH:MM:SS} format will be used.
7969 @end table
7970
7971 @subsection Examples
7972
7973 @itemize
7974 @item
7975 Draw "Test Text" with font FreeSerif, using the default values for the
7976 optional parameters.
7977
7978 @example
7979 drawtext="fontfile=/usr/share/fonts/truetype/freefont/FreeSerif.ttf: text='Test Text'"
7980 @end example
7981
7982 @item
7983 Draw 'Test Text' with font FreeSerif of size 24 at position x=100
7984 and y=50 (counting from the top-left corner of the screen), text is
7985 yellow with a red box around it. Both the text and the box have an
7986 opacity of 20%.
7987
7988 @example
7989 drawtext="fontfile=/usr/share/fonts/truetype/freefont/FreeSerif.ttf: text='Test Text':\
7990           x=100: y=50: fontsize=24: fontcolor=yellow@@0.2: box=1: boxcolor=red@@0.2"
7991 @end example
7992
7993 Note that the double quotes are not necessary if spaces are not used
7994 within the parameter list.
7995
7996 @item
7997 Show the text at the center of the video frame:
7998 @example
7999 drawtext="fontsize=30:fontfile=FreeSerif.ttf:text='hello world':x=(w-text_w)/2:y=(h-text_h)/2"
8000 @end example
8001
8002 @item
8003 Show the text at a random position, switching to a new position every 30 seconds:
8004 @example
8005 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)"
8006 @end example
8007
8008 @item
8009 Show a text line sliding from right to left in the last row of the video
8010 frame. The file @file{LONG_LINE} is assumed to contain a single line
8011 with no newlines.
8012 @example
8013 drawtext="fontsize=15:fontfile=FreeSerif.ttf:text=LONG_LINE:y=h-line_h:x=-50*t"
8014 @end example
8015
8016 @item
8017 Show the content of file @file{CREDITS} off the bottom of the frame and scroll up.
8018 @example
8019 drawtext="fontsize=20:fontfile=FreeSerif.ttf:textfile=CREDITS:y=h-20*t"
8020 @end example
8021
8022 @item
8023 Draw a single green letter "g", at the center of the input video.
8024 The glyph baseline is placed at half screen height.
8025 @example
8026 drawtext="fontsize=60:fontfile=FreeSerif.ttf:fontcolor=green:text=g:x=(w-max_glyph_w)/2:y=h/2-ascent"
8027 @end example
8028
8029 @item
8030 Show text for 1 second every 3 seconds:
8031 @example
8032 drawtext="fontfile=FreeSerif.ttf:fontcolor=white:x=100:y=x/dar:enable=lt(mod(t\,3)\,1):text='blink'"
8033 @end example
8034
8035 @item
8036 Use fontconfig to set the font. Note that the colons need to be escaped.
8037 @example
8038 drawtext='fontfile=Linux Libertine O-40\:style=Semibold:text=FFmpeg'
8039 @end example
8040
8041 @item
8042 Print the date of a real-time encoding (see strftime(3)):
8043 @example
8044 drawtext='fontfile=FreeSans.ttf:text=%@{localtime\:%a %b %d %Y@}'
8045 @end example
8046
8047 @item
8048 Show text fading in and out (appearing/disappearing):
8049 @example
8050 #!/bin/sh
8051 DS=1.0 # display start
8052 DE=10.0 # display end
8053 FID=1.5 # fade in duration
8054 FOD=5 # fade out duration
8055 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 @}"
8056 @end example
8057
8058 @item
8059 Horizontally align multiple separate texts. Note that @option{max_glyph_a}
8060 and the @option{fontsize} value are included in the @option{y} offset.
8061 @example
8062 drawtext=fontfile=FreeSans.ttf:text=DOG:fontsize=24:x=10:y=20+24-max_glyph_a,
8063 drawtext=fontfile=FreeSans.ttf:text=cow:fontsize=24:x=80:y=20+24-max_glyph_a
8064 @end example
8065
8066 @end itemize
8067
8068 For more information about libfreetype, check:
8069 @url{http://www.freetype.org/}.
8070
8071 For more information about fontconfig, check:
8072 @url{http://freedesktop.org/software/fontconfig/fontconfig-user.html}.
8073
8074 For more information about libfribidi, check:
8075 @url{http://fribidi.org/}.
8076
8077 @section edgedetect
8078
8079 Detect and draw edges. The filter uses the Canny Edge Detection algorithm.
8080
8081 The filter accepts the following options:
8082
8083 @table @option
8084 @item low
8085 @item high
8086 Set low and high threshold values used by the Canny thresholding
8087 algorithm.
8088
8089 The high threshold selects the "strong" edge pixels, which are then
8090 connected through 8-connectivity with the "weak" edge pixels selected
8091 by the low threshold.
8092
8093 @var{low} and @var{high} threshold values must be chosen in the range
8094 [0,1], and @var{low} should be lesser or equal to @var{high}.
8095
8096 Default value for @var{low} is @code{20/255}, and default value for @var{high}
8097 is @code{50/255}.
8098
8099 @item mode
8100 Define the drawing mode.
8101
8102 @table @samp
8103 @item wires
8104 Draw white/gray wires on black background.
8105
8106 @item colormix
8107 Mix the colors to create a paint/cartoon effect.
8108 @end table
8109
8110 Default value is @var{wires}.
8111 @end table
8112
8113 @subsection Examples
8114
8115 @itemize
8116 @item
8117 Standard edge detection with custom values for the hysteresis thresholding:
8118 @example
8119 edgedetect=low=0.1:high=0.4
8120 @end example
8121
8122 @item
8123 Painting effect without thresholding:
8124 @example
8125 edgedetect=mode=colormix:high=0
8126 @end example
8127 @end itemize
8128
8129 @section eq
8130 Set brightness, contrast, saturation and approximate gamma adjustment.
8131
8132 The filter accepts the following options:
8133
8134 @table @option
8135 @item contrast
8136 Set the contrast expression. The value must be a float value in range
8137 @code{-2.0} to @code{2.0}. The default value is "1".
8138
8139 @item brightness
8140 Set the brightness expression. The value must be a float value in
8141 range @code{-1.0} to @code{1.0}. The default value is "0".
8142
8143 @item saturation
8144 Set the saturation expression. The value must be a float in
8145 range @code{0.0} to @code{3.0}. The default value is "1".
8146
8147 @item gamma
8148 Set the gamma expression. The value must be a float in range
8149 @code{0.1} to @code{10.0}.  The default value is "1".
8150
8151 @item gamma_r
8152 Set the gamma expression for red. The value must be a float in
8153 range @code{0.1} to @code{10.0}. The default value is "1".
8154
8155 @item gamma_g
8156 Set the gamma expression for green. The value must be a float in range
8157 @code{0.1} to @code{10.0}. The default value is "1".
8158
8159 @item gamma_b
8160 Set the gamma expression for blue. The value must be a float in range
8161 @code{0.1} to @code{10.0}. The default value is "1".
8162
8163 @item gamma_weight
8164 Set the gamma weight expression. It can be used to reduce the effect
8165 of a high gamma value on bright image areas, e.g. keep them from
8166 getting overamplified and just plain white. The value must be a float
8167 in range @code{0.0} to @code{1.0}. A value of @code{0.0} turns the
8168 gamma correction all the way down while @code{1.0} leaves it at its
8169 full strength. Default is "1".
8170
8171 @item eval
8172 Set when the expressions for brightness, contrast, saturation and
8173 gamma expressions are evaluated.
8174
8175 It accepts the following values:
8176 @table @samp
8177 @item init
8178 only evaluate expressions once during the filter initialization or
8179 when a command is processed
8180
8181 @item frame
8182 evaluate expressions for each incoming frame
8183 @end table
8184
8185 Default value is @samp{init}.
8186 @end table
8187
8188 The expressions accept the following parameters:
8189 @table @option
8190 @item n
8191 frame count of the input frame starting from 0
8192
8193 @item pos
8194 byte position of the corresponding packet in the input file, NAN if
8195 unspecified
8196
8197 @item r
8198 frame rate of the input video, NAN if the input frame rate is unknown
8199
8200 @item t
8201 timestamp expressed in seconds, NAN if the input timestamp is unknown
8202 @end table
8203
8204 @subsection Commands
8205 The filter supports the following commands:
8206
8207 @table @option
8208 @item contrast
8209 Set the contrast expression.
8210
8211 @item brightness
8212 Set the brightness expression.
8213
8214 @item saturation
8215 Set the saturation expression.
8216
8217 @item gamma
8218 Set the gamma expression.
8219
8220 @item gamma_r
8221 Set the gamma_r expression.
8222
8223 @item gamma_g
8224 Set gamma_g expression.
8225
8226 @item gamma_b
8227 Set gamma_b expression.
8228
8229 @item gamma_weight
8230 Set gamma_weight expression.
8231
8232 The command accepts the same syntax of the corresponding option.
8233
8234 If the specified expression is not valid, it is kept at its current
8235 value.
8236
8237 @end table
8238
8239 @section erosion
8240
8241 Apply erosion effect to the video.
8242
8243 This filter replaces the pixel by the local(3x3) minimum.
8244
8245 It accepts the following options:
8246
8247 @table @option
8248 @item threshold0
8249 @item threshold1
8250 @item threshold2
8251 @item threshold3
8252 Limit the maximum change for each plane, default is 65535.
8253 If 0, plane will remain unchanged.
8254
8255 @item coordinates
8256 Flag which specifies the pixel to refer to. Default is 255 i.e. all eight
8257 pixels are used.
8258
8259 Flags to local 3x3 coordinates maps like this:
8260
8261     1 2 3
8262     4   5
8263     6 7 8
8264 @end table
8265
8266 @section extractplanes
8267
8268 Extract color channel components from input video stream into
8269 separate grayscale video streams.
8270
8271 The filter accepts the following option:
8272
8273 @table @option
8274 @item planes
8275 Set plane(s) to extract.
8276
8277 Available values for planes are:
8278 @table @samp
8279 @item y
8280 @item u
8281 @item v
8282 @item a
8283 @item r
8284 @item g
8285 @item b
8286 @end table
8287
8288 Choosing planes not available in the input will result in an error.
8289 That means you cannot select @code{r}, @code{g}, @code{b} planes
8290 with @code{y}, @code{u}, @code{v} planes at same time.
8291 @end table
8292
8293 @subsection Examples
8294
8295 @itemize
8296 @item
8297 Extract luma, u and v color channel component from input video frame
8298 into 3 grayscale outputs:
8299 @example
8300 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
8301 @end example
8302 @end itemize
8303
8304 @section elbg
8305
8306 Apply a posterize effect using the ELBG (Enhanced LBG) algorithm.
8307
8308 For each input image, the filter will compute the optimal mapping from
8309 the input to the output given the codebook length, that is the number
8310 of distinct output colors.
8311
8312 This filter accepts the following options.
8313
8314 @table @option
8315 @item codebook_length, l
8316 Set codebook length. The value must be a positive integer, and
8317 represents the number of distinct output colors. Default value is 256.
8318
8319 @item nb_steps, n
8320 Set the maximum number of iterations to apply for computing the optimal
8321 mapping. The higher the value the better the result and the higher the
8322 computation time. Default value is 1.
8323
8324 @item seed, s
8325 Set a random seed, must be an integer included between 0 and
8326 UINT32_MAX. If not specified, or if explicitly set to -1, the filter
8327 will try to use a good random seed on a best effort basis.
8328
8329 @item pal8
8330 Set pal8 output pixel format. This option does not work with codebook
8331 length greater than 256.
8332 @end table
8333
8334 @section entropy
8335
8336 Measure graylevel entropy in histogram of color channels of video frames.
8337
8338 It accepts the following parameters:
8339
8340 @table @option
8341 @item mode
8342 Can be either @var{normal} or @var{diff}. Default is @var{normal}.
8343
8344 @var{diff} mode measures entropy of histogram delta values, absolute differences
8345 between neighbour histogram values.
8346 @end table
8347
8348 @section fade
8349
8350 Apply a fade-in/out effect to the input video.
8351
8352 It accepts the following parameters:
8353
8354 @table @option
8355 @item type, t
8356 The effect type can be either "in" for a fade-in, or "out" for a fade-out
8357 effect.
8358 Default is @code{in}.
8359
8360 @item start_frame, s
8361 Specify the number of the frame to start applying the fade
8362 effect at. Default is 0.
8363
8364 @item nb_frames, n
8365 The number of frames that the fade effect lasts. At the end of the
8366 fade-in effect, the output video will have the same intensity as the input video.
8367 At the end of the fade-out transition, the output video will be filled with the
8368 selected @option{color}.
8369 Default is 25.
8370
8371 @item alpha
8372 If set to 1, fade only alpha channel, if one exists on the input.
8373 Default value is 0.
8374
8375 @item start_time, st
8376 Specify the timestamp (in seconds) of the frame to start to apply the fade
8377 effect. If both start_frame and start_time are specified, the fade will start at
8378 whichever comes last.  Default is 0.
8379
8380 @item duration, d
8381 The number of seconds for which the fade effect has to last. 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 If both duration and nb_frames are specified, duration is used. Default is 0
8386 (nb_frames is used by default).
8387
8388 @item color, c
8389 Specify the color of the fade. Default is "black".
8390 @end table
8391
8392 @subsection Examples
8393
8394 @itemize
8395 @item
8396 Fade in the first 30 frames of video:
8397 @example
8398 fade=in:0:30
8399 @end example
8400
8401 The command above is equivalent to:
8402 @example
8403 fade=t=in:s=0:n=30
8404 @end example
8405
8406 @item
8407 Fade out the last 45 frames of a 200-frame video:
8408 @example
8409 fade=out:155:45
8410 fade=type=out:start_frame=155:nb_frames=45
8411 @end example
8412
8413 @item
8414 Fade in the first 25 frames and fade out the last 25 frames of a 1000-frame video:
8415 @example
8416 fade=in:0:25, fade=out:975:25
8417 @end example
8418
8419 @item
8420 Make the first 5 frames yellow, then fade in from frame 5-24:
8421 @example
8422 fade=in:5:20:color=yellow
8423 @end example
8424
8425 @item
8426 Fade in alpha over first 25 frames of video:
8427 @example
8428 fade=in:0:25:alpha=1
8429 @end example
8430
8431 @item
8432 Make the first 5.5 seconds black, then fade in for 0.5 seconds:
8433 @example
8434 fade=t=in:st=5.5:d=0.5
8435 @end example
8436
8437 @end itemize
8438
8439 @section fftfilt
8440 Apply arbitrary expressions to samples in frequency domain
8441
8442 @table @option
8443 @item dc_Y
8444 Adjust the dc value (gain) of the luma plane of the image. The filter
8445 accepts an integer value in range @code{0} to @code{1000}. The default
8446 value is set to @code{0}.
8447
8448 @item dc_U
8449 Adjust the dc value (gain) of the 1st chroma plane of the image. The
8450 filter accepts an integer value in range @code{0} to @code{1000}. The
8451 default value is set to @code{0}.
8452
8453 @item dc_V
8454 Adjust the dc value (gain) of the 2nd chroma plane of the image. The
8455 filter accepts an integer value in range @code{0} to @code{1000}. The
8456 default value is set to @code{0}.
8457
8458 @item weight_Y
8459 Set the frequency domain weight expression for the luma plane.
8460
8461 @item weight_U
8462 Set the frequency domain weight expression for the 1st chroma plane.
8463
8464 @item weight_V
8465 Set the frequency domain weight expression for the 2nd chroma plane.
8466
8467 @item eval
8468 Set when the expressions are evaluated.
8469
8470 It accepts the following values:
8471 @table @samp
8472 @item init
8473 Only evaluate expressions once during the filter initialization.
8474
8475 @item frame
8476 Evaluate expressions for each incoming frame.
8477 @end table
8478
8479 Default value is @samp{init}.
8480
8481 The filter accepts the following variables:
8482 @item X
8483 @item Y
8484 The coordinates of the current sample.
8485
8486 @item W
8487 @item H
8488 The width and height of the image.
8489
8490 @item N
8491 The number of input frame, starting from 0.
8492 @end table
8493
8494 @subsection Examples
8495
8496 @itemize
8497 @item
8498 High-pass:
8499 @example
8500 fftfilt=dc_Y=128:weight_Y='squish(1-(Y+X)/100)'
8501 @end example
8502
8503 @item
8504 Low-pass:
8505 @example
8506 fftfilt=dc_Y=0:weight_Y='squish((Y+X)/100-1)'
8507 @end example
8508
8509 @item
8510 Sharpen:
8511 @example
8512 fftfilt=dc_Y=0:weight_Y='1+squish(1-(Y+X)/100)'
8513 @end example
8514
8515 @item
8516 Blur:
8517 @example
8518 fftfilt=dc_Y=0:weight_Y='exp(-4 * ((Y+X)/(W+H)))'
8519 @end example
8520
8521 @end itemize
8522
8523 @section field
8524
8525 Extract a single field from an interlaced image using stride
8526 arithmetic to avoid wasting CPU time. The output frames are marked as
8527 non-interlaced.
8528
8529 The filter accepts the following options:
8530
8531 @table @option
8532 @item type
8533 Specify whether to extract the top (if the value is @code{0} or
8534 @code{top}) or the bottom field (if the value is @code{1} or
8535 @code{bottom}).
8536 @end table
8537
8538 @section fieldhint
8539
8540 Create new frames by copying the top and bottom fields from surrounding frames
8541 supplied as numbers by the hint file.
8542
8543 @table @option
8544 @item hint
8545 Set file containing hints: absolute/relative frame numbers.
8546
8547 There must be one line for each frame in a clip. Each line must contain two
8548 numbers separated by the comma, optionally followed by @code{-} or @code{+}.
8549 Numbers supplied on each line of file can not be out of [N-1,N+1] where N
8550 is current frame number for @code{absolute} mode or out of [-1, 1] range
8551 for @code{relative} mode. First number tells from which frame to pick up top
8552 field and second number tells from which frame to pick up bottom field.
8553
8554 If optionally followed by @code{+} output frame will be marked as interlaced,
8555 else if followed by @code{-} output frame will be marked as progressive, else
8556 it will be marked same as input frame.
8557 If line starts with @code{#} or @code{;} that line is skipped.
8558
8559 @item mode
8560 Can be item @code{absolute} or @code{relative}. Default is @code{absolute}.
8561 @end table
8562
8563 Example of first several lines of @code{hint} file for @code{relative} mode:
8564 @example
8565 0,0 - # first frame
8566 1,0 - # second frame, use third's frame top field and second's frame bottom field
8567 1,0 - # third frame, use fourth's frame top field and third's frame bottom field
8568 1,0 -
8569 0,0 -
8570 0,0 -
8571 1,0 -
8572 1,0 -
8573 1,0 -
8574 0,0 -
8575 0,0 -
8576 1,0 -
8577 1,0 -
8578 1,0 -
8579 0,0 -
8580 @end example
8581
8582 @section fieldmatch
8583
8584 Field matching filter for inverse telecine. It is meant to reconstruct the
8585 progressive frames from a telecined stream. The filter does not drop duplicated
8586 frames, so to achieve a complete inverse telecine @code{fieldmatch} needs to be
8587 followed by a decimation filter such as @ref{decimate} in the filtergraph.
8588
8589 The separation of the field matching and the decimation is notably motivated by
8590 the possibility of inserting a de-interlacing filter fallback between the two.
8591 If the source has mixed telecined and real interlaced content,
8592 @code{fieldmatch} will not be able to match fields for the interlaced parts.
8593 But these remaining combed frames will be marked as interlaced, and thus can be
8594 de-interlaced by a later filter such as @ref{yadif} before decimation.
8595
8596 In addition to the various configuration options, @code{fieldmatch} can take an
8597 optional second stream, activated through the @option{ppsrc} option. If
8598 enabled, the frames reconstruction will be based on the fields and frames from
8599 this second stream. This allows the first input to be pre-processed in order to
8600 help the various algorithms of the filter, while keeping the output lossless
8601 (assuming the fields are matched properly). Typically, a field-aware denoiser,
8602 or brightness/contrast adjustments can help.
8603
8604 Note that this filter uses the same algorithms as TIVTC/TFM (AviSynth project)
8605 and VIVTC/VFM (VapourSynth project). The later is a light clone of TFM from
8606 which @code{fieldmatch} is based on. While the semantic and usage are very
8607 close, some behaviour and options names can differ.
8608
8609 The @ref{decimate} filter currently only works for constant frame rate input.
8610 If your input has mixed telecined (30fps) and progressive content with a lower
8611 framerate like 24fps use the following filterchain to produce the necessary cfr
8612 stream: @code{dejudder,fps=30000/1001,fieldmatch,decimate}.
8613
8614 The filter accepts the following options:
8615
8616 @table @option
8617 @item order
8618 Specify the assumed field order of the input stream. Available values are:
8619
8620 @table @samp
8621 @item auto
8622 Auto detect parity (use FFmpeg's internal parity value).
8623 @item bff
8624 Assume bottom field first.
8625 @item tff
8626 Assume top field first.
8627 @end table
8628
8629 Note that it is sometimes recommended not to trust the parity announced by the
8630 stream.
8631
8632 Default value is @var{auto}.
8633
8634 @item mode
8635 Set the matching mode or strategy to use. @option{pc} mode is the safest in the
8636 sense that it won't risk creating jerkiness due to duplicate frames when
8637 possible, but if there are bad edits or blended fields it will end up
8638 outputting combed frames when a good match might actually exist. On the other
8639 hand, @option{pcn_ub} mode is the most risky in terms of creating jerkiness,
8640 but will almost always find a good frame if there is one. The other values are
8641 all somewhere in between @option{pc} and @option{pcn_ub} in terms of risking
8642 jerkiness and creating duplicate frames versus finding good matches in sections
8643 with bad edits, orphaned fields, blended fields, etc.
8644
8645 More details about p/c/n/u/b are available in @ref{p/c/n/u/b meaning} section.
8646
8647 Available values are:
8648
8649 @table @samp
8650 @item pc
8651 2-way matching (p/c)
8652 @item pc_n
8653 2-way matching, and trying 3rd match if still combed (p/c + n)
8654 @item pc_u
8655 2-way matching, and trying 3rd match (same order) if still combed (p/c + u)
8656 @item pc_n_ub
8657 2-way matching, trying 3rd match if still combed, and trying 4th/5th matches if
8658 still combed (p/c + n + u/b)
8659 @item pcn
8660 3-way matching (p/c/n)
8661 @item pcn_ub
8662 3-way matching, and trying 4th/5th matches if all 3 of the original matches are
8663 detected as combed (p/c/n + u/b)
8664 @end table
8665
8666 The parenthesis at the end indicate the matches that would be used for that
8667 mode assuming @option{order}=@var{tff} (and @option{field} on @var{auto} or
8668 @var{top}).
8669
8670 In terms of speed @option{pc} mode is by far the fastest and @option{pcn_ub} is
8671 the slowest.
8672
8673 Default value is @var{pc_n}.
8674
8675 @item ppsrc
8676 Mark the main input stream as a pre-processed input, and enable the secondary
8677 input stream as the clean source to pick the fields from. See the filter
8678 introduction for more details. It is similar to the @option{clip2} feature from
8679 VFM/TFM.
8680
8681 Default value is @code{0} (disabled).
8682
8683 @item field
8684 Set the field to match from. It is recommended to set this to the same value as
8685 @option{order} unless you experience matching failures with that setting. In
8686 certain circumstances changing the field that is used to match from can have a
8687 large impact on matching performance. Available values are:
8688
8689 @table @samp
8690 @item auto
8691 Automatic (same value as @option{order}).
8692 @item bottom
8693 Match from the bottom field.
8694 @item top
8695 Match from the top field.
8696 @end table
8697
8698 Default value is @var{auto}.
8699
8700 @item mchroma
8701 Set whether or not chroma is included during the match comparisons. In most
8702 cases it is recommended to leave this enabled. You should set this to @code{0}
8703 only if your clip has bad chroma problems such as heavy rainbowing or other
8704 artifacts. Setting this to @code{0} could also be used to speed things up at
8705 the cost of some accuracy.
8706
8707 Default value is @code{1}.
8708
8709 @item y0
8710 @item y1
8711 These define an exclusion band which excludes the lines between @option{y0} and
8712 @option{y1} from being included in the field matching decision. An exclusion
8713 band can be used to ignore subtitles, a logo, or other things that may
8714 interfere with the matching. @option{y0} sets the starting scan line and
8715 @option{y1} sets the ending line; all lines in between @option{y0} and
8716 @option{y1} (including @option{y0} and @option{y1}) will be ignored. Setting
8717 @option{y0} and @option{y1} to the same value will disable the feature.
8718 @option{y0} and @option{y1} defaults to @code{0}.
8719
8720 @item scthresh
8721 Set the scene change detection threshold as a percentage of maximum change on
8722 the luma plane. Good values are in the @code{[8.0, 14.0]} range. Scene change
8723 detection is only relevant in case @option{combmatch}=@var{sc}.  The range for
8724 @option{scthresh} is @code{[0.0, 100.0]}.
8725
8726 Default value is @code{12.0}.
8727
8728 @item combmatch
8729 When @option{combatch} is not @var{none}, @code{fieldmatch} will take into
8730 account the combed scores of matches when deciding what match to use as the
8731 final match. Available values are:
8732
8733 @table @samp
8734 @item none
8735 No final matching based on combed scores.
8736 @item sc
8737 Combed scores are only used when a scene change is detected.
8738 @item full
8739 Use combed scores all the time.
8740 @end table
8741
8742 Default is @var{sc}.
8743
8744 @item combdbg
8745 Force @code{fieldmatch} to calculate the combed metrics for certain matches and
8746 print them. This setting is known as @option{micout} in TFM/VFM vocabulary.
8747 Available values are:
8748
8749 @table @samp
8750 @item none
8751 No forced calculation.
8752 @item pcn
8753 Force p/c/n calculations.
8754 @item pcnub
8755 Force p/c/n/u/b calculations.
8756 @end table
8757
8758 Default value is @var{none}.
8759
8760 @item cthresh
8761 This is the area combing threshold used for combed frame detection. This
8762 essentially controls how "strong" or "visible" combing must be to be detected.
8763 Larger values mean combing must be more visible and smaller values mean combing
8764 can be less visible or strong and still be detected. Valid settings are from
8765 @code{-1} (every pixel will be detected as combed) to @code{255} (no pixel will
8766 be detected as combed). This is basically a pixel difference value. A good
8767 range is @code{[8, 12]}.
8768
8769 Default value is @code{9}.
8770
8771 @item chroma
8772 Sets whether or not chroma is considered in the combed frame decision.  Only
8773 disable this if your source has chroma problems (rainbowing, etc.) that are
8774 causing problems for the combed frame detection with chroma enabled. Actually,
8775 using @option{chroma}=@var{0} is usually more reliable, except for the case
8776 where there is chroma only combing in the source.
8777
8778 Default value is @code{0}.
8779
8780 @item blockx
8781 @item blocky
8782 Respectively set the x-axis and y-axis size of the window used during combed
8783 frame detection. This has to do with the size of the area in which
8784 @option{combpel} pixels are required to be detected as combed for a frame to be
8785 declared combed. See the @option{combpel} parameter description for more info.
8786 Possible values are any number that is a power of 2 starting at 4 and going up
8787 to 512.
8788
8789 Default value is @code{16}.
8790
8791 @item combpel
8792 The number of combed pixels inside any of the @option{blocky} by
8793 @option{blockx} size blocks on the frame for the frame to be detected as
8794 combed. While @option{cthresh} controls how "visible" the combing must be, this
8795 setting controls "how much" combing there must be in any localized area (a
8796 window defined by the @option{blockx} and @option{blocky} settings) on the
8797 frame. Minimum value is @code{0} and maximum is @code{blocky x blockx} (at
8798 which point no frames will ever be detected as combed). This setting is known
8799 as @option{MI} in TFM/VFM vocabulary.
8800
8801 Default value is @code{80}.
8802 @end table
8803
8804 @anchor{p/c/n/u/b meaning}
8805 @subsection p/c/n/u/b meaning
8806
8807 @subsubsection p/c/n
8808
8809 We assume the following telecined stream:
8810
8811 @example
8812 Top fields:     1 2 2 3 4
8813 Bottom fields:  1 2 3 4 4
8814 @end example
8815
8816 The numbers correspond to the progressive frame the fields relate to. Here, the
8817 first two frames are progressive, the 3rd and 4th are combed, and so on.
8818
8819 When @code{fieldmatch} is configured to run a matching from bottom
8820 (@option{field}=@var{bottom}) this is how this input stream get transformed:
8821
8822 @example
8823 Input stream:
8824                 T     1 2 2 3 4
8825                 B     1 2 3 4 4   <-- matching reference
8826
8827 Matches:              c c n n c
8828
8829 Output stream:
8830                 T     1 2 3 4 4
8831                 B     1 2 3 4 4
8832 @end example
8833
8834 As a result of the field matching, we can see that some frames get duplicated.
8835 To perform a complete inverse telecine, you need to rely on a decimation filter
8836 after this operation. See for instance the @ref{decimate} filter.
8837
8838 The same operation now matching from top fields (@option{field}=@var{top})
8839 looks like this:
8840
8841 @example
8842 Input stream:
8843                 T     1 2 2 3 4   <-- matching reference
8844                 B     1 2 3 4 4
8845
8846 Matches:              c c p p c
8847
8848 Output stream:
8849                 T     1 2 2 3 4
8850                 B     1 2 2 3 4
8851 @end example
8852
8853 In these examples, we can see what @var{p}, @var{c} and @var{n} mean;
8854 basically, they refer to the frame and field of the opposite parity:
8855
8856 @itemize
8857 @item @var{p} matches the field of the opposite parity in the previous frame
8858 @item @var{c} matches the field of the opposite parity in the current frame
8859 @item @var{n} matches the field of the opposite parity in the next frame
8860 @end itemize
8861
8862 @subsubsection u/b
8863
8864 The @var{u} and @var{b} matching are a bit special in the sense that they match
8865 from the opposite parity flag. In the following examples, we assume that we are
8866 currently matching the 2nd frame (Top:2, bottom:2). According to the match, a
8867 'x' is placed above and below each matched fields.
8868
8869 With bottom matching (@option{field}=@var{bottom}):
8870 @example
8871 Match:           c         p           n          b          u
8872
8873                  x       x               x        x          x
8874   Top          1 2 2     1 2 2       1 2 2      1 2 2      1 2 2
8875   Bottom       1 2 3     1 2 3       1 2 3      1 2 3      1 2 3
8876                  x         x           x        x              x
8877
8878 Output frames:
8879                  2          1          2          2          2
8880                  2          2          2          1          3
8881 @end example
8882
8883 With top matching (@option{field}=@var{top}):
8884 @example
8885 Match:           c         p           n          b          u
8886
8887                  x         x           x        x              x
8888   Top          1 2 2     1 2 2       1 2 2      1 2 2      1 2 2
8889   Bottom       1 2 3     1 2 3       1 2 3      1 2 3      1 2 3
8890                  x       x               x        x          x
8891
8892 Output frames:
8893                  2          2          2          1          2
8894                  2          1          3          2          2
8895 @end example
8896
8897 @subsection Examples
8898
8899 Simple IVTC of a top field first telecined stream:
8900 @example
8901 fieldmatch=order=tff:combmatch=none, decimate
8902 @end example
8903
8904 Advanced IVTC, with fallback on @ref{yadif} for still combed frames:
8905 @example
8906 fieldmatch=order=tff:combmatch=full, yadif=deint=interlaced, decimate
8907 @end example
8908
8909 @section fieldorder
8910
8911 Transform the field order of the input video.
8912
8913 It accepts the following parameters:
8914
8915 @table @option
8916
8917 @item order
8918 The output field order. Valid values are @var{tff} for top field first or @var{bff}
8919 for bottom field first.
8920 @end table
8921
8922 The default value is @samp{tff}.
8923
8924 The transformation is done by shifting the picture content up or down
8925 by one line, and filling the remaining line with appropriate picture content.
8926 This method is consistent with most broadcast field order converters.
8927
8928 If the input video is not flagged as being interlaced, or it is already
8929 flagged as being of the required output field order, then this filter does
8930 not alter the incoming video.
8931
8932 It is very useful when converting to or from PAL DV material,
8933 which is bottom field first.
8934
8935 For example:
8936 @example
8937 ffmpeg -i in.vob -vf "fieldorder=bff" out.dv
8938 @end example
8939
8940 @section fifo, afifo
8941
8942 Buffer input images and send them when they are requested.
8943
8944 It is mainly useful when auto-inserted by the libavfilter
8945 framework.
8946
8947 It does not take parameters.
8948
8949 @section fillborders
8950
8951 Fill borders of the input video, without changing video stream dimensions.
8952 Sometimes video can have garbage at the four edges and you may not want to
8953 crop video input to keep size multiple of some number.
8954
8955 This filter accepts the following options:
8956
8957 @table @option
8958 @item left
8959 Number of pixels to fill from left border.
8960
8961 @item right
8962 Number of pixels to fill from right border.
8963
8964 @item top
8965 Number of pixels to fill from top border.
8966
8967 @item bottom
8968 Number of pixels to fill from bottom border.
8969
8970 @item mode
8971 Set fill mode.
8972
8973 It accepts the following values:
8974 @table @samp
8975 @item smear
8976 fill pixels using outermost pixels
8977
8978 @item mirror
8979 fill pixels using mirroring
8980
8981 @item fixed
8982 fill pixels with constant value
8983 @end table
8984
8985 Default is @var{smear}.
8986
8987 @item color
8988 Set color for pixels in fixed mode. Default is @var{black}.
8989 @end table
8990
8991 @section find_rect
8992
8993 Find a rectangular object
8994
8995 It accepts the following options:
8996
8997 @table @option
8998 @item object
8999 Filepath of the object image, needs to be in gray8.
9000
9001 @item threshold
9002 Detection threshold, default is 0.5.
9003
9004 @item mipmaps
9005 Number of mipmaps, default is 3.
9006
9007 @item xmin, ymin, xmax, ymax
9008 Specifies the rectangle in which to search.
9009 @end table
9010
9011 @subsection Examples
9012
9013 @itemize
9014 @item
9015 Generate a representative palette of a given video using @command{ffmpeg}:
9016 @example
9017 ffmpeg -i file.ts -vf find_rect=newref.pgm,cover_rect=cover.jpg:mode=cover new.mkv
9018 @end example
9019 @end itemize
9020
9021 @section cover_rect
9022
9023 Cover a rectangular object
9024
9025 It accepts the following options:
9026
9027 @table @option
9028 @item cover
9029 Filepath of the optional cover image, needs to be in yuv420.
9030
9031 @item mode
9032 Set covering mode.
9033
9034 It accepts the following values:
9035 @table @samp
9036 @item cover
9037 cover it by the supplied image
9038 @item blur
9039 cover it by interpolating the surrounding pixels
9040 @end table
9041
9042 Default value is @var{blur}.
9043 @end table
9044
9045 @subsection Examples
9046
9047 @itemize
9048 @item
9049 Generate a representative palette of a given video using @command{ffmpeg}:
9050 @example
9051 ffmpeg -i file.ts -vf find_rect=newref.pgm,cover_rect=cover.jpg:mode=cover new.mkv
9052 @end example
9053 @end itemize
9054
9055 @section floodfill
9056
9057 Flood area with values of same pixel components with another values.
9058
9059 It accepts the following options:
9060 @table @option
9061 @item x
9062 Set pixel x coordinate.
9063
9064 @item y
9065 Set pixel y coordinate.
9066
9067 @item s0
9068 Set source #0 component value.
9069
9070 @item s1
9071 Set source #1 component value.
9072
9073 @item s2
9074 Set source #2 component value.
9075
9076 @item s3
9077 Set source #3 component value.
9078
9079 @item d0
9080 Set destination #0 component value.
9081
9082 @item d1
9083 Set destination #1 component value.
9084
9085 @item d2
9086 Set destination #2 component value.
9087
9088 @item d3
9089 Set destination #3 component value.
9090 @end table
9091
9092 @anchor{format}
9093 @section format
9094
9095 Convert the input video to one of the specified pixel formats.
9096 Libavfilter will try to pick one that is suitable as input to
9097 the next filter.
9098
9099 It accepts the following parameters:
9100 @table @option
9101
9102 @item pix_fmts
9103 A '|'-separated list of pixel format names, such as
9104 "pix_fmts=yuv420p|monow|rgb24".
9105
9106 @end table
9107
9108 @subsection Examples
9109
9110 @itemize
9111 @item
9112 Convert the input video to the @var{yuv420p} format
9113 @example
9114 format=pix_fmts=yuv420p
9115 @end example
9116
9117 Convert the input video to any of the formats in the list
9118 @example
9119 format=pix_fmts=yuv420p|yuv444p|yuv410p
9120 @end example
9121 @end itemize
9122
9123 @anchor{fps}
9124 @section fps
9125
9126 Convert the video to specified constant frame rate by duplicating or dropping
9127 frames as necessary.
9128
9129 It accepts the following parameters:
9130 @table @option
9131
9132 @item fps
9133 The desired output frame rate. The default is @code{25}.
9134
9135 @item start_time
9136 Assume the first PTS should be the given value, in seconds. This allows for
9137 padding/trimming at the start of stream. By default, no assumption is made
9138 about the first frame's expected PTS, so no padding or trimming is done.
9139 For example, this could be set to 0 to pad the beginning with duplicates of
9140 the first frame if a video stream starts after the audio stream or to trim any
9141 frames with a negative PTS.
9142
9143 @item round
9144 Timestamp (PTS) rounding method.
9145
9146 Possible values are:
9147 @table @option
9148 @item zero
9149 round towards 0
9150 @item inf
9151 round away from 0
9152 @item down
9153 round towards -infinity
9154 @item up
9155 round towards +infinity
9156 @item near
9157 round to nearest
9158 @end table
9159 The default is @code{near}.
9160
9161 @item eof_action
9162 Action performed when reading the last frame.
9163
9164 Possible values are:
9165 @table @option
9166 @item round
9167 Use same timestamp rounding method as used for other frames.
9168 @item pass
9169 Pass through last frame if input duration has not been reached yet.
9170 @end table
9171 The default is @code{round}.
9172
9173 @end table
9174
9175 Alternatively, the options can be specified as a flat string:
9176 @var{fps}[:@var{start_time}[:@var{round}]].
9177
9178 See also the @ref{setpts} filter.
9179
9180 @subsection Examples
9181
9182 @itemize
9183 @item
9184 A typical usage in order to set the fps to 25:
9185 @example
9186 fps=fps=25
9187 @end example
9188
9189 @item
9190 Sets the fps to 24, using abbreviation and rounding method to round to nearest:
9191 @example
9192 fps=fps=film:round=near
9193 @end example
9194 @end itemize
9195
9196 @section framepack
9197
9198 Pack two different video streams into a stereoscopic video, setting proper
9199 metadata on supported codecs. The two views should have the same size and
9200 framerate and processing will stop when the shorter video ends. Please note
9201 that you may conveniently adjust view properties with the @ref{scale} and
9202 @ref{fps} filters.
9203
9204 It accepts the following parameters:
9205 @table @option
9206
9207 @item format
9208 The desired packing format. Supported values are:
9209
9210 @table @option
9211
9212 @item sbs
9213 The views are next to each other (default).
9214
9215 @item tab
9216 The views are on top of each other.
9217
9218 @item lines
9219 The views are packed by line.
9220
9221 @item columns
9222 The views are packed by column.
9223
9224 @item frameseq
9225 The views are temporally interleaved.
9226
9227 @end table
9228
9229 @end table
9230
9231 Some examples:
9232
9233 @example
9234 # Convert left and right views into a frame-sequential video
9235 ffmpeg -i LEFT -i RIGHT -filter_complex framepack=frameseq OUTPUT
9236
9237 # Convert views into a side-by-side video with the same output resolution as the input
9238 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
9239 @end example
9240
9241 @section framerate
9242
9243 Change the frame rate by interpolating new video output frames from the source
9244 frames.
9245
9246 This filter is not designed to function correctly with interlaced media. If
9247 you wish to change the frame rate of interlaced media then you are required
9248 to deinterlace before this filter and re-interlace after this filter.
9249
9250 A description of the accepted options follows.
9251
9252 @table @option
9253 @item fps
9254 Specify the output frames per second. This option can also be specified
9255 as a value alone. The default is @code{50}.
9256
9257 @item interp_start
9258 Specify the start of a range where the output frame will be created as a
9259 linear interpolation of two frames. The range is [@code{0}-@code{255}],
9260 the default is @code{15}.
9261
9262 @item interp_end
9263 Specify the end of a range where the output frame will be created as a
9264 linear interpolation of two frames. The range is [@code{0}-@code{255}],
9265 the default is @code{240}.
9266
9267 @item scene
9268 Specify the level at which a scene change is detected as a value between
9269 0 and 100 to indicate a new scene; a low value reflects a low
9270 probability for the current frame to introduce a new scene, while a higher
9271 value means the current frame is more likely to be one.
9272 The default is @code{8.2}.
9273
9274 @item flags
9275 Specify flags influencing the filter process.
9276
9277 Available value for @var{flags} is:
9278
9279 @table @option
9280 @item scene_change_detect, scd
9281 Enable scene change detection using the value of the option @var{scene}.
9282 This flag is enabled by default.
9283 @end table
9284 @end table
9285
9286 @section framestep
9287
9288 Select one frame every N-th frame.
9289
9290 This filter accepts the following option:
9291 @table @option
9292 @item step
9293 Select frame after every @code{step} frames.
9294 Allowed values are positive integers higher than 0. Default value is @code{1}.
9295 @end table
9296
9297 @anchor{frei0r}
9298 @section frei0r
9299
9300 Apply a frei0r effect to the input video.
9301
9302 To enable the compilation of this filter, you need to install the frei0r
9303 header and configure FFmpeg with @code{--enable-frei0r}.
9304
9305 It accepts the following parameters:
9306
9307 @table @option
9308
9309 @item filter_name
9310 The name of the frei0r effect to load. If the environment variable
9311 @env{FREI0R_PATH} is defined, the frei0r effect is searched for in each of the
9312 directories specified by the colon-separated list in @env{FREI0R_PATH}.
9313 Otherwise, the standard frei0r paths are searched, in this order:
9314 @file{HOME/.frei0r-1/lib/}, @file{/usr/local/lib/frei0r-1/},
9315 @file{/usr/lib/frei0r-1/}.
9316
9317 @item filter_params
9318 A '|'-separated list of parameters to pass to the frei0r effect.
9319
9320 @end table
9321
9322 A frei0r effect parameter can be a boolean (its value is either
9323 "y" or "n"), a double, a color (specified as
9324 @var{R}/@var{G}/@var{B}, where @var{R}, @var{G}, and @var{B} are floating point
9325 numbers between 0.0 and 1.0, inclusive) or by a color description specified in the "Color"
9326 section in the ffmpeg-utils manual), a position (specified as @var{X}/@var{Y}, where
9327 @var{X} and @var{Y} are floating point numbers) and/or a string.
9328
9329 The number and types of parameters depend on the loaded effect. If an
9330 effect parameter is not specified, the default value is set.
9331
9332 @subsection Examples
9333
9334 @itemize
9335 @item
9336 Apply the distort0r effect, setting the first two double parameters:
9337 @example
9338 frei0r=filter_name=distort0r:filter_params=0.5|0.01
9339 @end example
9340
9341 @item
9342 Apply the colordistance effect, taking a color as the first parameter:
9343 @example
9344 frei0r=colordistance:0.2/0.3/0.4
9345 frei0r=colordistance:violet
9346 frei0r=colordistance:0x112233
9347 @end example
9348
9349 @item
9350 Apply the perspective effect, specifying the top left and top right image
9351 positions:
9352 @example
9353 frei0r=perspective:0.2/0.2|0.8/0.2
9354 @end example
9355 @end itemize
9356
9357 For more information, see
9358 @url{http://frei0r.dyne.org}
9359
9360 @section fspp
9361
9362 Apply fast and simple postprocessing. It is a faster version of @ref{spp}.
9363
9364 It splits (I)DCT into horizontal/vertical passes. Unlike the simple post-
9365 processing filter, one of them is performed once per block, not per pixel.
9366 This allows for much higher speed.
9367
9368 The filter accepts the following options:
9369
9370 @table @option
9371 @item quality
9372 Set quality. This option defines the number of levels for averaging. It accepts
9373 an integer in the range 4-5. Default value is @code{4}.
9374
9375 @item qp
9376 Force a constant quantization parameter. It accepts an integer in range 0-63.
9377 If not set, the filter will use the QP from the video stream (if available).
9378
9379 @item strength
9380 Set filter strength. It accepts an integer in range -15 to 32. Lower values mean
9381 more details but also more artifacts, while higher values make the image smoother
9382 but also blurrier. Default value is @code{0} âˆ’ PSNR optimal.
9383
9384 @item use_bframe_qp
9385 Enable the use of the QP from the B-Frames if set to @code{1}. Using this
9386 option may cause flicker since the B-Frames have often larger QP. Default is
9387 @code{0} (not enabled).
9388
9389 @end table
9390
9391 @section gblur
9392
9393 Apply Gaussian blur filter.
9394
9395 The filter accepts the following options:
9396
9397 @table @option
9398 @item sigma
9399 Set horizontal sigma, standard deviation of Gaussian blur. Default is @code{0.5}.
9400
9401 @item steps
9402 Set number of steps for Gaussian approximation. Defauls is @code{1}.
9403
9404 @item planes
9405 Set which planes to filter. By default all planes are filtered.
9406
9407 @item sigmaV
9408 Set vertical sigma, if negative it will be same as @code{sigma}.
9409 Default is @code{-1}.
9410 @end table
9411
9412 @section geq
9413
9414 The filter accepts the following options:
9415
9416 @table @option
9417 @item lum_expr, lum
9418 Set the luminance expression.
9419 @item cb_expr, cb
9420 Set the chrominance blue expression.
9421 @item cr_expr, cr
9422 Set the chrominance red expression.
9423 @item alpha_expr, a
9424 Set the alpha expression.
9425 @item red_expr, r
9426 Set the red expression.
9427 @item green_expr, g
9428 Set the green expression.
9429 @item blue_expr, b
9430 Set the blue expression.
9431 @end table
9432
9433 The colorspace is selected according to the specified options. If one
9434 of the @option{lum_expr}, @option{cb_expr}, or @option{cr_expr}
9435 options is specified, the filter will automatically select a YCbCr
9436 colorspace. If one of the @option{red_expr}, @option{green_expr}, or
9437 @option{blue_expr} options is specified, it will select an RGB
9438 colorspace.
9439
9440 If one of the chrominance expression is not defined, it falls back on the other
9441 one. If no alpha expression is specified it will evaluate to opaque value.
9442 If none of chrominance expressions are specified, they will evaluate
9443 to the luminance expression.
9444
9445 The expressions can use the following variables and functions:
9446
9447 @table @option
9448 @item N
9449 The sequential number of the filtered frame, starting from @code{0}.
9450
9451 @item X
9452 @item Y
9453 The coordinates of the current sample.
9454
9455 @item W
9456 @item H
9457 The width and height of the image.
9458
9459 @item SW
9460 @item SH
9461 Width and height scale depending on the currently filtered plane. It is the
9462 ratio between the corresponding luma plane number of pixels and the current
9463 plane ones. E.g. for YUV4:2:0 the values are @code{1,1} for the luma plane, and
9464 @code{0.5,0.5} for chroma planes.
9465
9466 @item T
9467 Time of the current frame, expressed in seconds.
9468
9469 @item p(x, y)
9470 Return the value of the pixel at location (@var{x},@var{y}) of the current
9471 plane.
9472
9473 @item lum(x, y)
9474 Return the value of the pixel at location (@var{x},@var{y}) of the luminance
9475 plane.
9476
9477 @item cb(x, y)
9478 Return the value of the pixel at location (@var{x},@var{y}) of the
9479 blue-difference chroma plane. Return 0 if there is no such plane.
9480
9481 @item cr(x, y)
9482 Return the value of the pixel at location (@var{x},@var{y}) of the
9483 red-difference chroma plane. Return 0 if there is no such plane.
9484
9485 @item r(x, y)
9486 @item g(x, y)
9487 @item b(x, y)
9488 Return the value of the pixel at location (@var{x},@var{y}) of the
9489 red/green/blue component. Return 0 if there is no such component.
9490
9491 @item alpha(x, y)
9492 Return the value of the pixel at location (@var{x},@var{y}) of the alpha
9493 plane. Return 0 if there is no such plane.
9494 @end table
9495
9496 For functions, if @var{x} and @var{y} are outside the area, the value will be
9497 automatically clipped to the closer edge.
9498
9499 @subsection Examples
9500
9501 @itemize
9502 @item
9503 Flip the image horizontally:
9504 @example
9505 geq=p(W-X\,Y)
9506 @end example
9507
9508 @item
9509 Generate a bidimensional sine wave, with angle @code{PI/3} and a
9510 wavelength of 100 pixels:
9511 @example
9512 geq=128 + 100*sin(2*(PI/100)*(cos(PI/3)*(X-50*T) + sin(PI/3)*Y)):128:128
9513 @end example
9514
9515 @item
9516 Generate a fancy enigmatic moving light:
9517 @example
9518 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
9519 @end example
9520
9521 @item
9522 Generate a quick emboss effect:
9523 @example
9524 format=gray,geq=lum_expr='(p(X,Y)+(256-p(X-4,Y-4)))/2'
9525 @end example
9526
9527 @item
9528 Modify RGB components depending on pixel position:
9529 @example
9530 geq=r='X/W*r(X,Y)':g='(1-X/W)*g(X,Y)':b='(H-Y)/H*b(X,Y)'
9531 @end example
9532
9533 @item
9534 Create a radial gradient that is the same size as the input (also see
9535 the @ref{vignette} filter):
9536 @example
9537 geq=lum=255*gauss((X/W-0.5)*3)*gauss((Y/H-0.5)*3)/gauss(0)/gauss(0),format=gray
9538 @end example
9539 @end itemize
9540
9541 @section gradfun
9542
9543 Fix the banding artifacts that are sometimes introduced into nearly flat
9544 regions by truncation to 8-bit color depth.
9545 Interpolate the gradients that should go where the bands are, and
9546 dither them.
9547
9548 It is designed for playback only.  Do not use it prior to
9549 lossy compression, because compression tends to lose the dither and
9550 bring back the bands.
9551
9552 It accepts the following parameters:
9553
9554 @table @option
9555
9556 @item strength
9557 The maximum amount by which the filter will change any one pixel. This is also
9558 the threshold for detecting nearly flat regions. Acceptable values range from
9559 .51 to 64; the default value is 1.2. Out-of-range values will be clipped to the
9560 valid range.
9561
9562 @item radius
9563 The neighborhood to fit the gradient to. A larger radius makes for smoother
9564 gradients, but also prevents the filter from modifying the pixels near detailed
9565 regions. Acceptable values are 8-32; the default value is 16. Out-of-range
9566 values will be clipped to the valid range.
9567
9568 @end table
9569
9570 Alternatively, the options can be specified as a flat string:
9571 @var{strength}[:@var{radius}]
9572
9573 @subsection Examples
9574
9575 @itemize
9576 @item
9577 Apply the filter with a @code{3.5} strength and radius of @code{8}:
9578 @example
9579 gradfun=3.5:8
9580 @end example
9581
9582 @item
9583 Specify radius, omitting the strength (which will fall-back to the default
9584 value):
9585 @example
9586 gradfun=radius=8
9587 @end example
9588
9589 @end itemize
9590
9591 @anchor{haldclut}
9592 @section haldclut
9593
9594 Apply a Hald CLUT to a video stream.
9595
9596 First input is the video stream to process, and second one is the Hald CLUT.
9597 The Hald CLUT input can be a simple picture or a complete video stream.
9598
9599 The filter accepts the following options:
9600
9601 @table @option
9602 @item shortest
9603 Force termination when the shortest input terminates. Default is @code{0}.
9604 @item repeatlast
9605 Continue applying the last CLUT after the end of the stream. A value of
9606 @code{0} disable the filter after the last frame of the CLUT is reached.
9607 Default is @code{1}.
9608 @end table
9609
9610 @code{haldclut} also has the same interpolation options as @ref{lut3d} (both
9611 filters share the same internals).
9612
9613 More information about the Hald CLUT can be found on Eskil Steenberg's website
9614 (Hald CLUT author) at @url{http://www.quelsolaar.com/technology/clut.html}.
9615
9616 @subsection Workflow examples
9617
9618 @subsubsection Hald CLUT video stream
9619
9620 Generate an identity Hald CLUT stream altered with various effects:
9621 @example
9622 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
9623 @end example
9624
9625 Note: make sure you use a lossless codec.
9626
9627 Then use it with @code{haldclut} to apply it on some random stream:
9628 @example
9629 ffmpeg -f lavfi -i mandelbrot -i clut.nut -filter_complex '[0][1] haldclut' -t 20 mandelclut.mkv
9630 @end example
9631
9632 The Hald CLUT will be applied to the 10 first seconds (duration of
9633 @file{clut.nut}), then the latest picture of that CLUT stream will be applied
9634 to the remaining frames of the @code{mandelbrot} stream.
9635
9636 @subsubsection Hald CLUT with preview
9637
9638 A Hald CLUT is supposed to be a squared image of @code{Level*Level*Level} by
9639 @code{Level*Level*Level} pixels. For a given Hald CLUT, FFmpeg will select the
9640 biggest possible square starting at the top left of the picture. The remaining
9641 padding pixels (bottom or right) will be ignored. This area can be used to add
9642 a preview of the Hald CLUT.
9643
9644 Typically, the following generated Hald CLUT will be supported by the
9645 @code{haldclut} filter:
9646
9647 @example
9648 ffmpeg -f lavfi -i @ref{haldclutsrc}=8 -vf "
9649    pad=iw+320 [padded_clut];
9650    smptebars=s=320x256, split [a][b];
9651    [padded_clut][a] overlay=W-320:h, curves=color_negative [main];
9652    [main][b] overlay=W-320" -frames:v 1 clut.png
9653 @end example
9654
9655 It contains the original and a preview of the effect of the CLUT: SMPTE color
9656 bars are displayed on the right-top, and below the same color bars processed by
9657 the color changes.
9658
9659 Then, the effect of this Hald CLUT can be visualized with:
9660 @example
9661 ffplay input.mkv -vf "movie=clut.png, [in] haldclut"
9662 @end example
9663
9664 @section hflip
9665
9666 Flip the input video horizontally.
9667
9668 For example, to horizontally flip the input video with @command{ffmpeg}:
9669 @example
9670 ffmpeg -i in.avi -vf "hflip" out.avi
9671 @end example
9672
9673 @section histeq
9674 This filter applies a global color histogram equalization on a
9675 per-frame basis.
9676
9677 It can be used to correct video that has a compressed range of pixel
9678 intensities.  The filter redistributes the pixel intensities to
9679 equalize their distribution across the intensity range. It may be
9680 viewed as an "automatically adjusting contrast filter". This filter is
9681 useful only for correcting degraded or poorly captured source
9682 video.
9683
9684 The filter accepts the following options:
9685
9686 @table @option
9687 @item strength
9688 Determine the amount of equalization to be applied.  As the strength
9689 is reduced, the distribution of pixel intensities more-and-more
9690 approaches that of the input frame. The value must be a float number
9691 in the range [0,1] and defaults to 0.200.
9692
9693 @item intensity
9694 Set the maximum intensity that can generated and scale the output
9695 values appropriately.  The strength should be set as desired and then
9696 the intensity can be limited if needed to avoid washing-out. The value
9697 must be a float number in the range [0,1] and defaults to 0.210.
9698
9699 @item antibanding
9700 Set the antibanding level. If enabled the filter will randomly vary
9701 the luminance of output pixels by a small amount to avoid banding of
9702 the histogram. Possible values are @code{none}, @code{weak} or
9703 @code{strong}. It defaults to @code{none}.
9704 @end table
9705
9706 @section histogram
9707
9708 Compute and draw a color distribution histogram for the input video.
9709
9710 The computed histogram is a representation of the color component
9711 distribution in an image.
9712
9713 Standard histogram displays the color components distribution in an image.
9714 Displays color graph for each color component. Shows distribution of
9715 the Y, U, V, A or R, G, B components, depending on input format, in the
9716 current frame. Below each graph a color component scale meter is shown.
9717
9718 The filter accepts the following options:
9719
9720 @table @option
9721 @item level_height
9722 Set height of level. Default value is @code{200}.
9723 Allowed range is [50, 2048].
9724
9725 @item scale_height
9726 Set height of color scale. Default value is @code{12}.
9727 Allowed range is [0, 40].
9728
9729 @item display_mode
9730 Set display mode.
9731 It accepts the following values:
9732 @table @samp
9733 @item stack
9734 Per color component graphs are placed below each other.
9735
9736 @item parade
9737 Per color component graphs are placed side by side.
9738
9739 @item overlay
9740 Presents information identical to that in the @code{parade}, except
9741 that the graphs representing color components are superimposed directly
9742 over one another.
9743 @end table
9744 Default is @code{stack}.
9745
9746 @item levels_mode
9747 Set mode. Can be either @code{linear}, or @code{logarithmic}.
9748 Default is @code{linear}.
9749
9750 @item components
9751 Set what color components to display.
9752 Default is @code{7}.
9753
9754 @item fgopacity
9755 Set foreground opacity. Default is @code{0.7}.
9756
9757 @item bgopacity
9758 Set background opacity. Default is @code{0.5}.
9759 @end table
9760
9761 @subsection Examples
9762
9763 @itemize
9764
9765 @item
9766 Calculate and draw histogram:
9767 @example
9768 ffplay -i input -vf histogram
9769 @end example
9770
9771 @end itemize
9772
9773 @anchor{hqdn3d}
9774 @section hqdn3d
9775
9776 This is a high precision/quality 3d denoise filter. It aims to reduce
9777 image noise, producing smooth images and making still images really
9778 still. It should enhance compressibility.
9779
9780 It accepts the following optional parameters:
9781
9782 @table @option
9783 @item luma_spatial
9784 A non-negative floating point number which specifies spatial luma strength.
9785 It defaults to 4.0.
9786
9787 @item chroma_spatial
9788 A non-negative floating point number which specifies spatial chroma strength.
9789 It defaults to 3.0*@var{luma_spatial}/4.0.
9790
9791 @item luma_tmp
9792 A floating point number which specifies luma temporal strength. It defaults to
9793 6.0*@var{luma_spatial}/4.0.
9794
9795 @item chroma_tmp
9796 A floating point number which specifies chroma temporal strength. It defaults to
9797 @var{luma_tmp}*@var{chroma_spatial}/@var{luma_spatial}.
9798 @end table
9799
9800 @section hwdownload
9801
9802 Download hardware frames to system memory.
9803
9804 The input must be in hardware frames, and the output a non-hardware format.
9805 Not all formats will be supported on the output - it may be necessary to insert
9806 an additional @option{format} filter immediately following in the graph to get
9807 the output in a supported format.
9808
9809 @section hwmap
9810
9811 Map hardware frames to system memory or to another device.
9812
9813 This filter has several different modes of operation; which one is used depends
9814 on the input and output formats:
9815 @itemize
9816 @item
9817 Hardware frame input, normal frame output
9818
9819 Map the input frames to system memory and pass them to the output.  If the
9820 original hardware frame is later required (for example, after overlaying
9821 something else on part of it), the @option{hwmap} filter can be used again
9822 in the next mode to retrieve it.
9823 @item
9824 Normal frame input, hardware frame output
9825
9826 If the input is actually a software-mapped hardware frame, then unmap it -
9827 that is, return the original hardware frame.
9828
9829 Otherwise, a device must be provided.  Create new hardware surfaces on that
9830 device for the output, then map them back to the software format at the input
9831 and give those frames to the preceding filter.  This will then act like the
9832 @option{hwupload} filter, but may be able to avoid an additional copy when
9833 the input is already in a compatible format.
9834 @item
9835 Hardware frame input and output
9836
9837 A device must be supplied for the output, either directly or with the
9838 @option{derive_device} option.  The input and output devices must be of
9839 different types and compatible - the exact meaning of this is
9840 system-dependent, but typically it means that they must refer to the same
9841 underlying hardware context (for example, refer to the same graphics card).
9842
9843 If the input frames were originally created on the output device, then unmap
9844 to retrieve the original frames.
9845
9846 Otherwise, map the frames to the output device - create new hardware frames
9847 on the output corresponding to the frames on the input.
9848 @end itemize
9849
9850 The following additional parameters are accepted:
9851
9852 @table @option
9853 @item mode
9854 Set the frame mapping mode.  Some combination of:
9855 @table @var
9856 @item read
9857 The mapped frame should be readable.
9858 @item write
9859 The mapped frame should be writeable.
9860 @item overwrite
9861 The mapping will always overwrite the entire frame.
9862
9863 This may improve performance in some cases, as the original contents of the
9864 frame need not be loaded.
9865 @item direct
9866 The mapping must not involve any copying.
9867
9868 Indirect mappings to copies of frames are created in some cases where either
9869 direct mapping is not possible or it would have unexpected properties.
9870 Setting this flag ensures that the mapping is direct and will fail if that is
9871 not possible.
9872 @end table
9873 Defaults to @var{read+write} if not specified.
9874
9875 @item derive_device @var{type}
9876 Rather than using the device supplied at initialisation, instead derive a new
9877 device of type @var{type} from the device the input frames exist on.
9878
9879 @item reverse
9880 In a hardware to hardware mapping, map in reverse - create frames in the sink
9881 and map them back to the source.  This may be necessary in some cases where
9882 a mapping in one direction is required but only the opposite direction is
9883 supported by the devices being used.
9884
9885 This option is dangerous - it may break the preceding filter in undefined
9886 ways if there are any additional constraints on that filter's output.
9887 Do not use it without fully understanding the implications of its use.
9888 @end table
9889
9890 @section hwupload
9891
9892 Upload system memory frames to hardware surfaces.
9893
9894 The device to upload to must be supplied when the filter is initialised.  If
9895 using ffmpeg, select the appropriate device with the @option{-filter_hw_device}
9896 option.
9897
9898 @anchor{hwupload_cuda}
9899 @section hwupload_cuda
9900
9901 Upload system memory frames to a CUDA device.
9902
9903 It accepts the following optional parameters:
9904
9905 @table @option
9906 @item device
9907 The number of the CUDA device to use
9908 @end table
9909
9910 @section hqx
9911
9912 Apply a high-quality magnification filter designed for pixel art. This filter
9913 was originally created by Maxim Stepin.
9914
9915 It accepts the following option:
9916
9917 @table @option
9918 @item n
9919 Set the scaling dimension: @code{2} for @code{hq2x}, @code{3} for
9920 @code{hq3x} and @code{4} for @code{hq4x}.
9921 Default is @code{3}.
9922 @end table
9923
9924 @section hstack
9925 Stack input videos horizontally.
9926
9927 All streams must be of same pixel format and of same height.
9928
9929 Note that this filter is faster than using @ref{overlay} and @ref{pad} filter
9930 to create same output.
9931
9932 The filter accept the following option:
9933
9934 @table @option
9935 @item inputs
9936 Set number of input streams. Default is 2.
9937
9938 @item shortest
9939 If set to 1, force the output to terminate when the shortest input
9940 terminates. Default value is 0.
9941 @end table
9942
9943 @section hue
9944
9945 Modify the hue and/or the saturation of the input.
9946
9947 It accepts the following parameters:
9948
9949 @table @option
9950 @item h
9951 Specify the hue angle as a number of degrees. It accepts an expression,
9952 and defaults to "0".
9953
9954 @item s
9955 Specify the saturation in the [-10,10] range. It accepts an expression and
9956 defaults to "1".
9957
9958 @item H
9959 Specify the hue angle as a number of radians. It accepts an
9960 expression, and defaults to "0".
9961
9962 @item b
9963 Specify the brightness in the [-10,10] range. It accepts an expression and
9964 defaults to "0".
9965 @end table
9966
9967 @option{h} and @option{H} are mutually exclusive, and can't be
9968 specified at the same time.
9969
9970 The @option{b}, @option{h}, @option{H} and @option{s} option values are
9971 expressions containing the following constants:
9972
9973 @table @option
9974 @item n
9975 frame count of the input frame starting from 0
9976
9977 @item pts
9978 presentation timestamp of the input frame expressed in time base units
9979
9980 @item r
9981 frame rate of the input video, NAN if the input frame rate is unknown
9982
9983 @item t
9984 timestamp expressed in seconds, NAN if the input timestamp is unknown
9985
9986 @item tb
9987 time base of the input video
9988 @end table
9989
9990 @subsection Examples
9991
9992 @itemize
9993 @item
9994 Set the hue to 90 degrees and the saturation to 1.0:
9995 @example
9996 hue=h=90:s=1
9997 @end example
9998
9999 @item
10000 Same command but expressing the hue in radians:
10001 @example
10002 hue=H=PI/2:s=1
10003 @end example
10004
10005 @item
10006 Rotate hue and make the saturation swing between 0
10007 and 2 over a period of 1 second:
10008 @example
10009 hue="H=2*PI*t: s=sin(2*PI*t)+1"
10010 @end example
10011
10012 @item
10013 Apply a 3 seconds saturation fade-in effect starting at 0:
10014 @example
10015 hue="s=min(t/3\,1)"
10016 @end example
10017
10018 The general fade-in expression can be written as:
10019 @example
10020 hue="s=min(0\, max((t-START)/DURATION\, 1))"
10021 @end example
10022
10023 @item
10024 Apply a 3 seconds saturation fade-out effect starting at 5 seconds:
10025 @example
10026 hue="s=max(0\, min(1\, (8-t)/3))"
10027 @end example
10028
10029 The general fade-out expression can be written as:
10030 @example
10031 hue="s=max(0\, min(1\, (START+DURATION-t)/DURATION))"
10032 @end example
10033
10034 @end itemize
10035
10036 @subsection Commands
10037
10038 This filter supports the following commands:
10039 @table @option
10040 @item b
10041 @item s
10042 @item h
10043 @item H
10044 Modify the hue and/or the saturation and/or brightness of the input video.
10045 The command accepts the same syntax of the corresponding option.
10046
10047 If the specified expression is not valid, it is kept at its current
10048 value.
10049 @end table
10050
10051 @section hysteresis
10052
10053 Grow first stream into second stream by connecting components.
10054 This makes it possible to build more robust edge masks.
10055
10056 This filter accepts the following options:
10057
10058 @table @option
10059 @item planes
10060 Set which planes will be processed as bitmap, unprocessed planes will be
10061 copied from first stream.
10062 By default value 0xf, all planes will be processed.
10063
10064 @item threshold
10065 Set threshold which is used in filtering. If pixel component value is higher than
10066 this value filter algorithm for connecting components is activated.
10067 By default value is 0.
10068 @end table
10069
10070 @section idet
10071
10072 Detect video interlacing type.
10073
10074 This filter tries to detect if the input frames are interlaced, progressive,
10075 top or bottom field first. It will also try to detect fields that are
10076 repeated between adjacent frames (a sign of telecine).
10077
10078 Single frame detection considers only immediately adjacent frames when classifying each frame.
10079 Multiple frame detection incorporates the classification history of previous frames.
10080
10081 The filter will log these metadata values:
10082
10083 @table @option
10084 @item single.current_frame
10085 Detected type of current frame using single-frame detection. One of:
10086 ``tff'' (top field first), ``bff'' (bottom field first),
10087 ``progressive'', or ``undetermined''
10088
10089 @item single.tff
10090 Cumulative number of frames detected as top field first using single-frame detection.
10091
10092 @item multiple.tff
10093 Cumulative number of frames detected as top field first using multiple-frame detection.
10094
10095 @item single.bff
10096 Cumulative number of frames detected as bottom field first using single-frame detection.
10097
10098 @item multiple.current_frame
10099 Detected type of current frame using multiple-frame detection. One of:
10100 ``tff'' (top field first), ``bff'' (bottom field first),
10101 ``progressive'', or ``undetermined''
10102
10103 @item multiple.bff
10104 Cumulative number of frames detected as bottom field first using multiple-frame detection.
10105
10106 @item single.progressive
10107 Cumulative number of frames detected as progressive using single-frame detection.
10108
10109 @item multiple.progressive
10110 Cumulative number of frames detected as progressive using multiple-frame detection.
10111
10112 @item single.undetermined
10113 Cumulative number of frames that could not be classified using single-frame detection.
10114
10115 @item multiple.undetermined
10116 Cumulative number of frames that could not be classified using multiple-frame detection.
10117
10118 @item repeated.current_frame
10119 Which field in the current frame is repeated from the last. One of ``neither'', ``top'', or ``bottom''.
10120
10121 @item repeated.neither
10122 Cumulative number of frames with no repeated field.
10123
10124 @item repeated.top
10125 Cumulative number of frames with the top field repeated from the previous frame's top field.
10126
10127 @item repeated.bottom
10128 Cumulative number of frames with the bottom field repeated from the previous frame's bottom field.
10129 @end table
10130
10131 The filter accepts the following options:
10132
10133 @table @option
10134 @item intl_thres
10135 Set interlacing threshold.
10136 @item prog_thres
10137 Set progressive threshold.
10138 @item rep_thres
10139 Threshold for repeated field detection.
10140 @item half_life
10141 Number of frames after which a given frame's contribution to the
10142 statistics is halved (i.e., it contributes only 0.5 to its
10143 classification). The default of 0 means that all frames seen are given
10144 full weight of 1.0 forever.
10145 @item analyze_interlaced_flag
10146 When this is not 0 then idet will use the specified number of frames to determine
10147 if the interlaced flag is accurate, it will not count undetermined frames.
10148 If the flag is found to be accurate it will be used without any further
10149 computations, if it is found to be inaccurate it will be cleared without any
10150 further computations. This allows inserting the idet filter as a low computational
10151 method to clean up the interlaced flag
10152 @end table
10153
10154 @section il
10155
10156 Deinterleave or interleave fields.
10157
10158 This filter allows one to process interlaced images fields without
10159 deinterlacing them. Deinterleaving splits the input frame into 2
10160 fields (so called half pictures). Odd lines are moved to the top
10161 half of the output image, even lines to the bottom half.
10162 You can process (filter) them independently and then re-interleave them.
10163
10164 The filter accepts the following options:
10165
10166 @table @option
10167 @item luma_mode, l
10168 @item chroma_mode, c
10169 @item alpha_mode, a
10170 Available values for @var{luma_mode}, @var{chroma_mode} and
10171 @var{alpha_mode} are:
10172
10173 @table @samp
10174 @item none
10175 Do nothing.
10176
10177 @item deinterleave, d
10178 Deinterleave fields, placing one above the other.
10179
10180 @item interleave, i
10181 Interleave fields. Reverse the effect of deinterleaving.
10182 @end table
10183 Default value is @code{none}.
10184
10185 @item luma_swap, ls
10186 @item chroma_swap, cs
10187 @item alpha_swap, as
10188 Swap luma/chroma/alpha fields. Exchange even & odd lines. Default value is @code{0}.
10189 @end table
10190
10191 @section inflate
10192
10193 Apply inflate effect to the video.
10194
10195 This filter replaces the pixel by the local(3x3) average by taking into account
10196 only values higher than the pixel.
10197
10198 It accepts the following options:
10199
10200 @table @option
10201 @item threshold0
10202 @item threshold1
10203 @item threshold2
10204 @item threshold3
10205 Limit the maximum change for each plane, default is 65535.
10206 If 0, plane will remain unchanged.
10207 @end table
10208
10209 @section interlace
10210
10211 Simple interlacing filter from progressive contents. This interleaves upper (or
10212 lower) lines from odd frames with lower (or upper) lines from even frames,
10213 halving the frame rate and preserving image height.
10214
10215 @example
10216    Original        Original             New Frame
10217    Frame 'j'      Frame 'j+1'             (tff)
10218   ==========      ===========       ==================
10219     Line 0  -------------------->    Frame 'j' Line 0
10220     Line 1          Line 1  ---->   Frame 'j+1' Line 1
10221     Line 2 --------------------->    Frame 'j' Line 2
10222     Line 3          Line 3  ---->   Frame 'j+1' Line 3
10223      ...             ...                   ...
10224 New Frame + 1 will be generated by Frame 'j+2' and Frame 'j+3' and so on
10225 @end example
10226
10227 It accepts the following optional parameters:
10228
10229 @table @option
10230 @item scan
10231 This determines whether the interlaced frame is taken from the even
10232 (tff - default) or odd (bff) lines of the progressive frame.
10233
10234 @item lowpass
10235 Vertical lowpass filter to avoid twitter interlacing and
10236 reduce moire patterns.
10237
10238 @table @samp
10239 @item 0, off
10240 Disable vertical lowpass filter
10241
10242 @item 1, linear
10243 Enable linear filter (default)
10244
10245 @item 2, complex
10246 Enable complex filter. This will slightly less reduce twitter and moire
10247 but better retain detail and subjective sharpness impression.
10248
10249 @end table
10250 @end table
10251
10252 @section kerndeint
10253
10254 Deinterlace input video by applying Donald Graft's adaptive kernel
10255 deinterling. Work on interlaced parts of a video to produce
10256 progressive frames.
10257
10258 The description of the accepted parameters follows.
10259
10260 @table @option
10261 @item thresh
10262 Set the threshold which affects the filter's tolerance when
10263 determining if a pixel line must be processed. It must be an integer
10264 in the range [0,255] and defaults to 10. A value of 0 will result in
10265 applying the process on every pixels.
10266
10267 @item map
10268 Paint pixels exceeding the threshold value to white if set to 1.
10269 Default is 0.
10270
10271 @item order
10272 Set the fields order. Swap fields if set to 1, leave fields alone if
10273 0. Default is 0.
10274
10275 @item sharp
10276 Enable additional sharpening if set to 1. Default is 0.
10277
10278 @item twoway
10279 Enable twoway sharpening if set to 1. Default is 0.
10280 @end table
10281
10282 @subsection Examples
10283
10284 @itemize
10285 @item
10286 Apply default values:
10287 @example
10288 kerndeint=thresh=10:map=0:order=0:sharp=0:twoway=0
10289 @end example
10290
10291 @item
10292 Enable additional sharpening:
10293 @example
10294 kerndeint=sharp=1
10295 @end example
10296
10297 @item
10298 Paint processed pixels in white:
10299 @example
10300 kerndeint=map=1
10301 @end example
10302 @end itemize
10303
10304 @section lenscorrection
10305
10306 Correct radial lens distortion
10307
10308 This filter can be used to correct for radial distortion as can result from the use
10309 of wide angle lenses, and thereby re-rectify the image. To find the right parameters
10310 one can use tools available for example as part of opencv or simply trial-and-error.
10311 To use opencv use the calibration sample (under samples/cpp) from the opencv sources
10312 and extract the k1 and k2 coefficients from the resulting matrix.
10313
10314 Note that effectively the same filter is available in the open-source tools Krita and
10315 Digikam from the KDE project.
10316
10317 In contrast to the @ref{vignette} filter, which can also be used to compensate lens errors,
10318 this filter corrects the distortion of the image, whereas @ref{vignette} corrects the
10319 brightness distribution, so you may want to use both filters together in certain
10320 cases, though you will have to take care of ordering, i.e. whether vignetting should
10321 be applied before or after lens correction.
10322
10323 @subsection Options
10324
10325 The filter accepts the following options:
10326
10327 @table @option
10328 @item cx
10329 Relative x-coordinate of the focal point of the image, and thereby the center of the
10330 distortion. This value has a range [0,1] and is expressed as fractions of the image
10331 width.
10332 @item cy
10333 Relative y-coordinate of the focal point of the image, and thereby the center of the
10334 distortion. This value has a range [0,1] and is expressed as fractions of the image
10335 height.
10336 @item k1
10337 Coefficient of the quadratic correction term. 0.5 means no correction.
10338 @item k2
10339 Coefficient of the double quadratic correction term. 0.5 means no correction.
10340 @end table
10341
10342 The formula that generates the correction is:
10343
10344 @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)
10345
10346 where @var{r_0} is halve of the image diagonal and @var{r_src} and @var{r_tgt} are the
10347 distances from the focal point in the source and target images, respectively.
10348
10349 @section libvmaf
10350
10351 Obtain the VMAF (Video Multi-Method Assessment Fusion)
10352 score between two input videos.
10353
10354 The obtained VMAF score is printed through the logging system.
10355
10356 It requires Netflix's vmaf library (libvmaf) as a pre-requisite.
10357 After installing the library it can be enabled using:
10358 @code{./configure --enable-libvmaf}.
10359 If no model path is specified it uses the default model: @code{vmaf_v0.6.1.pkl}.
10360
10361 The filter has following options:
10362
10363 @table @option
10364 @item model_path
10365 Set the model path which is to be used for SVM.
10366 Default value: @code{"vmaf_v0.6.1.pkl"}
10367
10368 @item log_path
10369 Set the file path to be used to store logs.
10370
10371 @item log_fmt
10372 Set the format of the log file (xml or json).
10373
10374 @item enable_transform
10375 Enables transform for computing vmaf.
10376
10377 @item phone_model
10378 Invokes the phone model which will generate VMAF scores higher than in the
10379 regular model, which is more suitable for laptop, TV, etc. viewing conditions.
10380
10381 @item psnr
10382 Enables computing psnr along with vmaf.
10383
10384 @item ssim
10385 Enables computing ssim along with vmaf.
10386
10387 @item ms_ssim
10388 Enables computing ms_ssim along with vmaf.
10389
10390 @item pool
10391 Set the pool method (mean, min or harmonic mean) to be used for computing vmaf.
10392 @end table
10393
10394 This filter also supports the @ref{framesync} options.
10395
10396 On the below examples the input file @file{main.mpg} being processed is
10397 compared with the reference file @file{ref.mpg}.
10398
10399 @example
10400 ffmpeg -i main.mpg -i ref.mpg -lavfi libvmaf -f null -
10401 @end example
10402
10403 Example with options:
10404 @example
10405 ffmpeg -i main.mpg -i ref.mpg -lavfi libvmaf="psnr=1:enable-transform=1" -f null -
10406 @end example
10407
10408 @section limiter
10409
10410 Limits the pixel components values to the specified range [min, max].
10411
10412 The filter accepts the following options:
10413
10414 @table @option
10415 @item min
10416 Lower bound. Defaults to the lowest allowed value for the input.
10417
10418 @item max
10419 Upper bound. Defaults to the highest allowed value for the input.
10420
10421 @item planes
10422 Specify which planes will be processed. Defaults to all available.
10423 @end table
10424
10425 @section loop
10426
10427 Loop video frames.
10428
10429 The filter accepts the following options:
10430
10431 @table @option
10432 @item loop
10433 Set the number of loops. Setting this value to -1 will result in infinite loops.
10434 Default is 0.
10435
10436 @item size
10437 Set maximal size in number of frames. Default is 0.
10438
10439 @item start
10440 Set first frame of loop. Default is 0.
10441 @end table
10442
10443 @anchor{lut3d}
10444 @section lut3d
10445
10446 Apply a 3D LUT to an input video.
10447
10448 The filter accepts the following options:
10449
10450 @table @option
10451 @item file
10452 Set the 3D LUT file name.
10453
10454 Currently supported formats:
10455 @table @samp
10456 @item 3dl
10457 AfterEffects
10458 @item cube
10459 Iridas
10460 @item dat
10461 DaVinci
10462 @item m3d
10463 Pandora
10464 @end table
10465 @item interp
10466 Select interpolation mode.
10467
10468 Available values are:
10469
10470 @table @samp
10471 @item nearest
10472 Use values from the nearest defined point.
10473 @item trilinear
10474 Interpolate values using the 8 points defining a cube.
10475 @item tetrahedral
10476 Interpolate values using a tetrahedron.
10477 @end table
10478 @end table
10479
10480 This filter also supports the @ref{framesync} options.
10481
10482 @section lumakey
10483
10484 Turn certain luma values into transparency.
10485
10486 The filter accepts the following options:
10487
10488 @table @option
10489 @item threshold
10490 Set the luma which will be used as base for transparency.
10491 Default value is @code{0}.
10492
10493 @item tolerance
10494 Set the range of luma values to be keyed out.
10495 Default value is @code{0}.
10496
10497 @item softness
10498 Set the range of softness. Default value is @code{0}.
10499 Use this to control gradual transition from zero to full transparency.
10500 @end table
10501
10502 @section lut, lutrgb, lutyuv
10503
10504 Compute a look-up table for binding each pixel component input value
10505 to an output value, and apply it to the input video.
10506
10507 @var{lutyuv} applies a lookup table to a YUV input video, @var{lutrgb}
10508 to an RGB input video.
10509
10510 These filters accept the following parameters:
10511 @table @option
10512 @item c0
10513 set first pixel component expression
10514 @item c1
10515 set second pixel component expression
10516 @item c2
10517 set third pixel component expression
10518 @item c3
10519 set fourth pixel component expression, corresponds to the alpha component
10520
10521 @item r
10522 set red component expression
10523 @item g
10524 set green component expression
10525 @item b
10526 set blue component expression
10527 @item a
10528 alpha component expression
10529
10530 @item y
10531 set Y/luminance component expression
10532 @item u
10533 set U/Cb component expression
10534 @item v
10535 set V/Cr component expression
10536 @end table
10537
10538 Each of them specifies the expression to use for computing the lookup table for
10539 the corresponding pixel component values.
10540
10541 The exact component associated to each of the @var{c*} options depends on the
10542 format in input.
10543
10544 The @var{lut} filter requires either YUV or RGB pixel formats in input,
10545 @var{lutrgb} requires RGB pixel formats in input, and @var{lutyuv} requires YUV.
10546
10547 The expressions can contain the following constants and functions:
10548
10549 @table @option
10550 @item w
10551 @item h
10552 The input width and height.
10553
10554 @item val
10555 The input value for the pixel component.
10556
10557 @item clipval
10558 The input value, clipped to the @var{minval}-@var{maxval} range.
10559
10560 @item maxval
10561 The maximum value for the pixel component.
10562
10563 @item minval
10564 The minimum value for the pixel component.
10565
10566 @item negval
10567 The negated value for the pixel component value, clipped to the
10568 @var{minval}-@var{maxval} range; it corresponds to the expression
10569 "maxval-clipval+minval".
10570
10571 @item clip(val)
10572 The computed value in @var{val}, clipped to the
10573 @var{minval}-@var{maxval} range.
10574
10575 @item gammaval(gamma)
10576 The computed gamma correction value of the pixel component value,
10577 clipped to the @var{minval}-@var{maxval} range. It corresponds to the
10578 expression
10579 "pow((clipval-minval)/(maxval-minval)\,@var{gamma})*(maxval-minval)+minval"
10580
10581 @end table
10582
10583 All expressions default to "val".
10584
10585 @subsection Examples
10586
10587 @itemize
10588 @item
10589 Negate input video:
10590 @example
10591 lutrgb="r=maxval+minval-val:g=maxval+minval-val:b=maxval+minval-val"
10592 lutyuv="y=maxval+minval-val:u=maxval+minval-val:v=maxval+minval-val"
10593 @end example
10594
10595 The above is the same as:
10596 @example
10597 lutrgb="r=negval:g=negval:b=negval"
10598 lutyuv="y=negval:u=negval:v=negval"
10599 @end example
10600
10601 @item
10602 Negate luminance:
10603 @example
10604 lutyuv=y=negval
10605 @end example
10606
10607 @item
10608 Remove chroma components, turning the video into a graytone image:
10609 @example
10610 lutyuv="u=128:v=128"
10611 @end example
10612
10613 @item
10614 Apply a luma burning effect:
10615 @example
10616 lutyuv="y=2*val"
10617 @end example
10618
10619 @item
10620 Remove green and blue components:
10621 @example
10622 lutrgb="g=0:b=0"
10623 @end example
10624
10625 @item
10626 Set a constant alpha channel value on input:
10627 @example
10628 format=rgba,lutrgb=a="maxval-minval/2"
10629 @end example
10630
10631 @item
10632 Correct luminance gamma by a factor of 0.5:
10633 @example
10634 lutyuv=y=gammaval(0.5)
10635 @end example
10636
10637 @item
10638 Discard least significant bits of luma:
10639 @example
10640 lutyuv=y='bitand(val, 128+64+32)'
10641 @end example
10642
10643 @item
10644 Technicolor like effect:
10645 @example
10646 lutyuv=u='(val-maxval/2)*2+maxval/2':v='(val-maxval/2)*2+maxval/2'
10647 @end example
10648 @end itemize
10649
10650 @section lut2, tlut2
10651
10652 The @code{lut2} filter takes two input streams and outputs one
10653 stream.
10654
10655 The @code{tlut2} (time lut2) filter takes two consecutive frames
10656 from one single stream.
10657
10658 This filter accepts the following parameters:
10659 @table @option
10660 @item c0
10661 set first pixel component expression
10662 @item c1
10663 set second pixel component expression
10664 @item c2
10665 set third pixel component expression
10666 @item c3
10667 set fourth pixel component expression, corresponds to the alpha component
10668 @end table
10669
10670 Each of them specifies the expression to use for computing the lookup table for
10671 the corresponding pixel component values.
10672
10673 The exact component associated to each of the @var{c*} options depends on the
10674 format in inputs.
10675
10676 The expressions can contain the following constants:
10677
10678 @table @option
10679 @item w
10680 @item h
10681 The input width and height.
10682
10683 @item x
10684 The first input value for the pixel component.
10685
10686 @item y
10687 The second input value for the pixel component.
10688
10689 @item bdx
10690 The first input video bit depth.
10691
10692 @item bdy
10693 The second input video bit depth.
10694 @end table
10695
10696 All expressions default to "x".
10697
10698 @subsection Examples
10699
10700 @itemize
10701 @item
10702 Highlight differences between two RGB video streams:
10703 @example
10704 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)'
10705 @end example
10706
10707 @item
10708 Highlight differences between two YUV video streams:
10709 @example
10710 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)'
10711 @end example
10712
10713 @item
10714 Show max difference between two video streams:
10715 @example
10716 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)))'
10717 @end example
10718 @end itemize
10719
10720 @section maskedclamp
10721
10722 Clamp the first input stream with the second input and third input stream.
10723
10724 Returns the value of first stream to be between second input
10725 stream - @code{undershoot} and third input stream + @code{overshoot}.
10726
10727 This filter accepts the following options:
10728 @table @option
10729 @item undershoot
10730 Default value is @code{0}.
10731
10732 @item overshoot
10733 Default value is @code{0}.
10734
10735 @item planes
10736 Set which planes will be processed as bitmap, unprocessed planes will be
10737 copied from first stream.
10738 By default value 0xf, all planes will be processed.
10739 @end table
10740
10741 @section maskedmerge
10742
10743 Merge the first input stream with the second input stream using per pixel
10744 weights in the third input stream.
10745
10746 A value of 0 in the third stream pixel component means that pixel component
10747 from first stream is returned unchanged, while maximum value (eg. 255 for
10748 8-bit videos) means that pixel component from second stream is returned
10749 unchanged. Intermediate values define the amount of merging between both
10750 input stream's pixel components.
10751
10752 This filter accepts the following options:
10753 @table @option
10754 @item planes
10755 Set which planes will be processed as bitmap, unprocessed planes will be
10756 copied from first stream.
10757 By default value 0xf, all planes will be processed.
10758 @end table
10759
10760 @section mcdeint
10761
10762 Apply motion-compensation deinterlacing.
10763
10764 It needs one field per frame as input and must thus be used together
10765 with yadif=1/3 or equivalent.
10766
10767 This filter accepts the following options:
10768 @table @option
10769 @item mode
10770 Set the deinterlacing mode.
10771
10772 It accepts one of the following values:
10773 @table @samp
10774 @item fast
10775 @item medium
10776 @item slow
10777 use iterative motion estimation
10778 @item extra_slow
10779 like @samp{slow}, but use multiple reference frames.
10780 @end table
10781 Default value is @samp{fast}.
10782
10783 @item parity
10784 Set the picture field parity assumed for the input video. It must be
10785 one of the following values:
10786
10787 @table @samp
10788 @item 0, tff
10789 assume top field first
10790 @item 1, bff
10791 assume bottom field first
10792 @end table
10793
10794 Default value is @samp{bff}.
10795
10796 @item qp
10797 Set per-block quantization parameter (QP) used by the internal
10798 encoder.
10799
10800 Higher values should result in a smoother motion vector field but less
10801 optimal individual vectors. Default value is 1.
10802 @end table
10803
10804 @section mergeplanes
10805
10806 Merge color channel components from several video streams.
10807
10808 The filter accepts up to 4 input streams, and merge selected input
10809 planes to the output video.
10810
10811 This filter accepts the following options:
10812 @table @option
10813 @item mapping
10814 Set input to output plane mapping. Default is @code{0}.
10815
10816 The mappings is specified as a bitmap. It should be specified as a
10817 hexadecimal number in the form 0xAa[Bb[Cc[Dd]]]. 'Aa' describes the
10818 mapping for the first plane of the output stream. 'A' sets the number of
10819 the input stream to use (from 0 to 3), and 'a' the plane number of the
10820 corresponding input to use (from 0 to 3). The rest of the mappings is
10821 similar, 'Bb' describes the mapping for the output stream second
10822 plane, 'Cc' describes the mapping for the output stream third plane and
10823 'Dd' describes the mapping for the output stream fourth plane.
10824
10825 @item format
10826 Set output pixel format. Default is @code{yuva444p}.
10827 @end table
10828
10829 @subsection Examples
10830
10831 @itemize
10832 @item
10833 Merge three gray video streams of same width and height into single video stream:
10834 @example
10835 [a0][a1][a2]mergeplanes=0x001020:yuv444p
10836 @end example
10837
10838 @item
10839 Merge 1st yuv444p stream and 2nd gray video stream into yuva444p video stream:
10840 @example
10841 [a0][a1]mergeplanes=0x00010210:yuva444p
10842 @end example
10843
10844 @item
10845 Swap Y and A plane in yuva444p stream:
10846 @example
10847 format=yuva444p,mergeplanes=0x03010200:yuva444p
10848 @end example
10849
10850 @item
10851 Swap U and V plane in yuv420p stream:
10852 @example
10853 format=yuv420p,mergeplanes=0x000201:yuv420p
10854 @end example
10855
10856 @item
10857 Cast a rgb24 clip to yuv444p:
10858 @example
10859 format=rgb24,mergeplanes=0x000102:yuv444p
10860 @end example
10861 @end itemize
10862
10863 @section mestimate
10864
10865 Estimate and export motion vectors using block matching algorithms.
10866 Motion vectors are stored in frame side data to be used by other filters.
10867
10868 This filter accepts the following options:
10869 @table @option
10870 @item method
10871 Specify the motion estimation method. Accepts one of the following values:
10872
10873 @table @samp
10874 @item esa
10875 Exhaustive search algorithm.
10876 @item tss
10877 Three step search algorithm.
10878 @item tdls
10879 Two dimensional logarithmic search algorithm.
10880 @item ntss
10881 New three step search algorithm.
10882 @item fss
10883 Four step search algorithm.
10884 @item ds
10885 Diamond search algorithm.
10886 @item hexbs
10887 Hexagon-based search algorithm.
10888 @item epzs
10889 Enhanced predictive zonal search algorithm.
10890 @item umh
10891 Uneven multi-hexagon search algorithm.
10892 @end table
10893 Default value is @samp{esa}.
10894
10895 @item mb_size
10896 Macroblock size. Default @code{16}.
10897
10898 @item search_param
10899 Search parameter. Default @code{7}.
10900 @end table
10901
10902 @section midequalizer
10903
10904 Apply Midway Image Equalization effect using two video streams.
10905
10906 Midway Image Equalization adjusts a pair of images to have the same
10907 histogram, while maintaining their dynamics as much as possible. It's
10908 useful for e.g. matching exposures from a pair of stereo cameras.
10909
10910 This filter has two inputs and one output, which must be of same pixel format, but
10911 may be of different sizes. The output of filter is first input adjusted with
10912 midway histogram of both inputs.
10913
10914 This filter accepts the following option:
10915
10916 @table @option
10917 @item planes
10918 Set which planes to process. Default is @code{15}, which is all available planes.
10919 @end table
10920
10921 @section minterpolate
10922
10923 Convert the video to specified frame rate using motion interpolation.
10924
10925 This filter accepts the following options:
10926 @table @option
10927 @item fps
10928 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}.
10929
10930 @item mi_mode
10931 Motion interpolation mode. Following values are accepted:
10932 @table @samp
10933 @item dup
10934 Duplicate previous or next frame for interpolating new ones.
10935 @item blend
10936 Blend source frames. Interpolated frame is mean of previous and next frames.
10937 @item mci
10938 Motion compensated interpolation. Following options are effective when this mode is selected:
10939
10940 @table @samp
10941 @item mc_mode
10942 Motion compensation mode. Following values are accepted:
10943 @table @samp
10944 @item obmc
10945 Overlapped block motion compensation.
10946 @item aobmc
10947 Adaptive overlapped block motion compensation. Window weighting coefficients are controlled adaptively according to the reliabilities of the neighboring motion vectors to reduce oversmoothing.
10948 @end table
10949 Default mode is @samp{obmc}.
10950
10951 @item me_mode
10952 Motion estimation mode. Following values are accepted:
10953 @table @samp
10954 @item bidir
10955 Bidirectional motion estimation. Motion vectors are estimated for each source frame in both forward and backward directions.
10956 @item bilat
10957 Bilateral motion estimation. Motion vectors are estimated directly for interpolated frame.
10958 @end table
10959 Default mode is @samp{bilat}.
10960
10961 @item me
10962 The algorithm to be used for motion estimation. Following values are accepted:
10963 @table @samp
10964 @item esa
10965 Exhaustive search algorithm.
10966 @item tss
10967 Three step search algorithm.
10968 @item tdls
10969 Two dimensional logarithmic search algorithm.
10970 @item ntss
10971 New three step search algorithm.
10972 @item fss
10973 Four step search algorithm.
10974 @item ds
10975 Diamond search algorithm.
10976 @item hexbs
10977 Hexagon-based search algorithm.
10978 @item epzs
10979 Enhanced predictive zonal search algorithm.
10980 @item umh
10981 Uneven multi-hexagon search algorithm.
10982 @end table
10983 Default algorithm is @samp{epzs}.
10984
10985 @item mb_size
10986 Macroblock size. Default @code{16}.
10987
10988 @item search_param
10989 Motion estimation search parameter. Default @code{32}.
10990
10991 @item vsbmc
10992 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).
10993 @end table
10994 @end table
10995
10996 @item scd
10997 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:
10998 @table @samp
10999 @item none
11000 Disable scene change detection.
11001 @item fdiff
11002 Frame difference. Corresponding pixel values are compared and if it satisfies @var{scd_threshold} scene change is detected.
11003 @end table
11004 Default method is @samp{fdiff}.
11005
11006 @item scd_threshold
11007 Scene change detection threshold. Default is @code{5.0}.
11008 @end table
11009
11010 @section mix
11011
11012 Mix several video input streams into one video stream.
11013
11014 A description of the accepted options follows.
11015
11016 @table @option
11017 @item nb_inputs
11018 The number of inputs. If unspecified, it defaults to 2.
11019
11020 @item weights
11021 Specify weight of each input video stream as sequence.
11022 Each weight is separated by space.
11023
11024 @item duration
11025 Specify how end of stream is determined.
11026 @table @samp
11027 @item longest
11028 The duration of the longest input. (default)
11029
11030 @item shortest
11031 The duration of the shortest input.
11032
11033 @item first
11034 The duration of the first input.
11035 @end table
11036 @end table
11037
11038 @section mpdecimate
11039
11040 Drop frames that do not differ greatly from the previous frame in
11041 order to reduce frame rate.
11042
11043 The main use of this filter is for very-low-bitrate encoding
11044 (e.g. streaming over dialup modem), but it could in theory be used for
11045 fixing movies that were inverse-telecined incorrectly.
11046
11047 A description of the accepted options follows.
11048
11049 @table @option
11050 @item max
11051 Set the maximum number of consecutive frames which can be dropped (if
11052 positive), or the minimum interval between dropped frames (if
11053 negative). If the value is 0, the frame is dropped disregarding the
11054 number of previous sequentially dropped frames.
11055
11056 Default value is 0.
11057
11058 @item hi
11059 @item lo
11060 @item frac
11061 Set the dropping threshold values.
11062
11063 Values for @option{hi} and @option{lo} are for 8x8 pixel blocks and
11064 represent actual pixel value differences, so a threshold of 64
11065 corresponds to 1 unit of difference for each pixel, or the same spread
11066 out differently over the block.
11067
11068 A frame is a candidate for dropping if no 8x8 blocks differ by more
11069 than a threshold of @option{hi}, and if no more than @option{frac} blocks (1
11070 meaning the whole image) differ by more than a threshold of @option{lo}.
11071
11072 Default value for @option{hi} is 64*12, default value for @option{lo} is
11073 64*5, and default value for @option{frac} is 0.33.
11074 @end table
11075
11076
11077 @section negate
11078
11079 Negate input video.
11080
11081 It accepts an integer in input; if non-zero it negates the
11082 alpha component (if available). The default value in input is 0.
11083
11084 @section nlmeans
11085
11086 Denoise frames using Non-Local Means algorithm.
11087
11088 Each pixel is adjusted by looking for other pixels with similar contexts. This
11089 context similarity is defined by comparing their surrounding patches of size
11090 @option{p}x@option{p}. Patches are searched in an area of @option{r}x@option{r}
11091 around the pixel.
11092
11093 Note that the research area defines centers for patches, which means some
11094 patches will be made of pixels outside that research area.
11095
11096 The filter accepts the following options.
11097
11098 @table @option
11099 @item s
11100 Set denoising strength.
11101
11102 @item p
11103 Set patch size.
11104
11105 @item pc
11106 Same as @option{p} but for chroma planes.
11107
11108 The default value is @var{0} and means automatic.
11109
11110 @item r
11111 Set research size.
11112
11113 @item rc
11114 Same as @option{r} but for chroma planes.
11115
11116 The default value is @var{0} and means automatic.
11117 @end table
11118
11119 @section nnedi
11120
11121 Deinterlace video using neural network edge directed interpolation.
11122
11123 This filter accepts the following options:
11124
11125 @table @option
11126 @item weights
11127 Mandatory option, without binary file filter can not work.
11128 Currently file can be found here:
11129 https://github.com/dubhater/vapoursynth-nnedi3/blob/master/src/nnedi3_weights.bin
11130
11131 @item deint
11132 Set which frames to deinterlace, by default it is @code{all}.
11133 Can be @code{all} or @code{interlaced}.
11134
11135 @item field
11136 Set mode of operation.
11137
11138 Can be one of the following:
11139
11140 @table @samp
11141 @item af
11142 Use frame flags, both fields.
11143 @item a
11144 Use frame flags, single field.
11145 @item t
11146 Use top field only.
11147 @item b
11148 Use bottom field only.
11149 @item tf
11150 Use both fields, top first.
11151 @item bf
11152 Use both fields, bottom first.
11153 @end table
11154
11155 @item planes
11156 Set which planes to process, by default filter process all frames.
11157
11158 @item nsize
11159 Set size of local neighborhood around each pixel, used by the predictor neural
11160 network.
11161
11162 Can be one of the following:
11163
11164 @table @samp
11165 @item s8x6
11166 @item s16x6
11167 @item s32x6
11168 @item s48x6
11169 @item s8x4
11170 @item s16x4
11171 @item s32x4
11172 @end table
11173
11174 @item nns
11175 Set the number of neurons in predictor neural network.
11176 Can be one of the following:
11177
11178 @table @samp
11179 @item n16
11180 @item n32
11181 @item n64
11182 @item n128
11183 @item n256
11184 @end table
11185
11186 @item qual
11187 Controls the number of different neural network predictions that are blended
11188 together to compute the final output value. Can be @code{fast}, default or
11189 @code{slow}.
11190
11191 @item etype
11192 Set which set of weights to use in the predictor.
11193 Can be one of the following:
11194
11195 @table @samp
11196 @item a
11197 weights trained to minimize absolute error
11198 @item s
11199 weights trained to minimize squared error
11200 @end table
11201
11202 @item pscrn
11203 Controls whether or not the prescreener neural network is used to decide
11204 which pixels should be processed by the predictor neural network and which
11205 can be handled by simple cubic interpolation.
11206 The prescreener is trained to know whether cubic interpolation will be
11207 sufficient for a pixel or whether it should be predicted by the predictor nn.
11208 The computational complexity of the prescreener nn is much less than that of
11209 the predictor nn. Since most pixels can be handled by cubic interpolation,
11210 using the prescreener generally results in much faster processing.
11211 The prescreener is pretty accurate, so the difference between using it and not
11212 using it is almost always unnoticeable.
11213
11214 Can be one of the following:
11215
11216 @table @samp
11217 @item none
11218 @item original
11219 @item new
11220 @end table
11221
11222 Default is @code{new}.
11223
11224 @item fapprox
11225 Set various debugging flags.
11226 @end table
11227
11228 @section noformat
11229
11230 Force libavfilter not to use any of the specified pixel formats for the
11231 input to the next filter.
11232
11233 It accepts the following parameters:
11234 @table @option
11235
11236 @item pix_fmts
11237 A '|'-separated list of pixel format names, such as
11238 pix_fmts=yuv420p|monow|rgb24".
11239
11240 @end table
11241
11242 @subsection Examples
11243
11244 @itemize
11245 @item
11246 Force libavfilter to use a format different from @var{yuv420p} for the
11247 input to the vflip filter:
11248 @example
11249 noformat=pix_fmts=yuv420p,vflip
11250 @end example
11251
11252 @item
11253 Convert the input video to any of the formats not contained in the list:
11254 @example
11255 noformat=yuv420p|yuv444p|yuv410p
11256 @end example
11257 @end itemize
11258
11259 @section noise
11260
11261 Add noise on video input frame.
11262
11263 The filter accepts the following options:
11264
11265 @table @option
11266 @item all_seed
11267 @item c0_seed
11268 @item c1_seed
11269 @item c2_seed
11270 @item c3_seed
11271 Set noise seed for specific pixel component or all pixel components in case
11272 of @var{all_seed}. Default value is @code{123457}.
11273
11274 @item all_strength, alls
11275 @item c0_strength, c0s
11276 @item c1_strength, c1s
11277 @item c2_strength, c2s
11278 @item c3_strength, c3s
11279 Set noise strength for specific pixel component or all pixel components in case
11280 @var{all_strength}. Default value is @code{0}. Allowed range is [0, 100].
11281
11282 @item all_flags, allf
11283 @item c0_flags, c0f
11284 @item c1_flags, c1f
11285 @item c2_flags, c2f
11286 @item c3_flags, c3f
11287 Set pixel component flags or set flags for all components if @var{all_flags}.
11288 Available values for component flags are:
11289 @table @samp
11290 @item a
11291 averaged temporal noise (smoother)
11292 @item p
11293 mix random noise with a (semi)regular pattern
11294 @item t
11295 temporal noise (noise pattern changes between frames)
11296 @item u
11297 uniform noise (gaussian otherwise)
11298 @end table
11299 @end table
11300
11301 @subsection Examples
11302
11303 Add temporal and uniform noise to input video:
11304 @example
11305 noise=alls=20:allf=t+u
11306 @end example
11307
11308 @section normalize
11309
11310 Normalize RGB video (aka histogram stretching, contrast stretching).
11311 See: https://en.wikipedia.org/wiki/Normalization_(image_processing)
11312
11313 For each channel of each frame, the filter computes the input range and maps
11314 it linearly to the user-specified output range. The output range defaults
11315 to the full dynamic range from pure black to pure white.
11316
11317 Temporal smoothing can be used on the input range to reduce flickering (rapid
11318 changes in brightness) caused when small dark or bright objects enter or leave
11319 the scene. This is similar to the auto-exposure (automatic gain control) on a
11320 video camera, and, like a video camera, it may cause a period of over- or
11321 under-exposure of the video.
11322
11323 The R,G,B channels can be normalized independently, which may cause some
11324 color shifting, or linked together as a single channel, which prevents
11325 color shifting. Linked normalization preserves hue. Independent normalization
11326 does not, so it can be used to remove some color casts. Independent and linked
11327 normalization can be combined in any ratio.
11328
11329 The normalize filter accepts the following options:
11330
11331 @table @option
11332 @item blackpt
11333 @item whitept
11334 Colors which define the output range. The minimum input value is mapped to
11335 the @var{blackpt}. The maximum input value is mapped to the @var{whitept}.
11336 The defaults are black and white respectively. Specifying white for
11337 @var{blackpt} and black for @var{whitept} will give color-inverted,
11338 normalized video. Shades of grey can be used to reduce the dynamic range
11339 (contrast). Specifying saturated colors here can create some interesting
11340 effects.
11341
11342 @item smoothing
11343 The number of previous frames to use for temporal smoothing. The input range
11344 of each channel is smoothed using a rolling average over the current frame
11345 and the @var{smoothing} previous frames. The default is 0 (no temporal
11346 smoothing).
11347
11348 @item independence
11349 Controls the ratio of independent (color shifting) channel normalization to
11350 linked (color preserving) normalization. 0.0 is fully linked, 1.0 is fully
11351 independent. Defaults to 1.0 (fully independent).
11352
11353 @item strength
11354 Overall strength of the filter. 1.0 is full strength. 0.0 is a rather
11355 expensive no-op. Defaults to 1.0 (full strength).
11356
11357 @end table
11358
11359 @subsection Examples
11360
11361 Stretch video contrast to use the full dynamic range, with no temporal
11362 smoothing; may flicker depending on the source content:
11363 @example
11364 normalize=blackpt=black:whitept=white:smoothing=0
11365 @end example
11366
11367 As above, but with 50 frames of temporal smoothing; flicker should be
11368 reduced, depending on the source content:
11369 @example
11370 normalize=blackpt=black:whitept=white:smoothing=50
11371 @end example
11372
11373 As above, but with hue-preserving linked channel normalization:
11374 @example
11375 normalize=blackpt=black:whitept=white:smoothing=50:independence=0
11376 @end example
11377
11378 As above, but with half strength:
11379 @example
11380 normalize=blackpt=black:whitept=white:smoothing=50:independence=0:strength=0.5
11381 @end example
11382
11383 Map the darkest input color to red, the brightest input color to cyan:
11384 @example
11385 normalize=blackpt=red:whitept=cyan
11386 @end example
11387
11388 @section null
11389
11390 Pass the video source unchanged to the output.
11391
11392 @section ocr
11393 Optical Character Recognition
11394
11395 This filter uses Tesseract for optical character recognition.
11396
11397 It accepts the following options:
11398
11399 @table @option
11400 @item datapath
11401 Set datapath to tesseract data. Default is to use whatever was
11402 set at installation.
11403
11404 @item language
11405 Set language, default is "eng".
11406
11407 @item whitelist
11408 Set character whitelist.
11409
11410 @item blacklist
11411 Set character blacklist.
11412 @end table
11413
11414 The filter exports recognized text as the frame metadata @code{lavfi.ocr.text}.
11415
11416 @section ocv
11417
11418 Apply a video transform using libopencv.
11419
11420 To enable this filter, install the libopencv library and headers and
11421 configure FFmpeg with @code{--enable-libopencv}.
11422
11423 It accepts the following parameters:
11424
11425 @table @option
11426
11427 @item filter_name
11428 The name of the libopencv filter to apply.
11429
11430 @item filter_params
11431 The parameters to pass to the libopencv filter. If not specified, the default
11432 values are assumed.
11433
11434 @end table
11435
11436 Refer to the official libopencv documentation for more precise
11437 information:
11438 @url{http://docs.opencv.org/master/modules/imgproc/doc/filtering.html}
11439
11440 Several libopencv filters are supported; see the following subsections.
11441
11442 @anchor{dilate}
11443 @subsection dilate
11444
11445 Dilate an image by using a specific structuring element.
11446 It corresponds to the libopencv function @code{cvDilate}.
11447
11448 It accepts the parameters: @var{struct_el}|@var{nb_iterations}.
11449
11450 @var{struct_el} represents a structuring element, and has the syntax:
11451 @var{cols}x@var{rows}+@var{anchor_x}x@var{anchor_y}/@var{shape}
11452
11453 @var{cols} and @var{rows} represent the number of columns and rows of
11454 the structuring element, @var{anchor_x} and @var{anchor_y} the anchor
11455 point, and @var{shape} the shape for the structuring element. @var{shape}
11456 must be "rect", "cross", "ellipse", or "custom".
11457
11458 If the value for @var{shape} is "custom", it must be followed by a
11459 string of the form "=@var{filename}". The file with name
11460 @var{filename} is assumed to represent a binary image, with each
11461 printable character corresponding to a bright pixel. When a custom
11462 @var{shape} is used, @var{cols} and @var{rows} are ignored, the number
11463 or columns and rows of the read file are assumed instead.
11464
11465 The default value for @var{struct_el} is "3x3+0x0/rect".
11466
11467 @var{nb_iterations} specifies the number of times the transform is
11468 applied to the image, and defaults to 1.
11469
11470 Some examples:
11471 @example
11472 # Use the default values
11473 ocv=dilate
11474
11475 # Dilate using a structuring element with a 5x5 cross, iterating two times
11476 ocv=filter_name=dilate:filter_params=5x5+2x2/cross|2
11477
11478 # Read the shape from the file diamond.shape, iterating two times.
11479 # The file diamond.shape may contain a pattern of characters like this
11480 #   *
11481 #  ***
11482 # *****
11483 #  ***
11484 #   *
11485 # The specified columns and rows are ignored
11486 # but the anchor point coordinates are not
11487 ocv=dilate:0x0+2x2/custom=diamond.shape|2
11488 @end example
11489
11490 @subsection erode
11491
11492 Erode an image by using a specific structuring element.
11493 It corresponds to the libopencv function @code{cvErode}.
11494
11495 It accepts the parameters: @var{struct_el}:@var{nb_iterations},
11496 with the same syntax and semantics as the @ref{dilate} filter.
11497
11498 @subsection smooth
11499
11500 Smooth the input video.
11501
11502 The filter takes the following parameters:
11503 @var{type}|@var{param1}|@var{param2}|@var{param3}|@var{param4}.
11504
11505 @var{type} is the type of smooth filter to apply, and must be one of
11506 the following values: "blur", "blur_no_scale", "median", "gaussian",
11507 or "bilateral". The default value is "gaussian".
11508
11509 The meaning of @var{param1}, @var{param2}, @var{param3}, and @var{param4}
11510 depend on the smooth type. @var{param1} and
11511 @var{param2} accept integer positive values or 0. @var{param3} and
11512 @var{param4} accept floating point values.
11513
11514 The default value for @var{param1} is 3. The default value for the
11515 other parameters is 0.
11516
11517 These parameters correspond to the parameters assigned to the
11518 libopencv function @code{cvSmooth}.
11519
11520 @section oscilloscope
11521
11522 2D Video Oscilloscope.
11523
11524 Useful to measure spatial impulse, step responses, chroma delays, etc.
11525
11526 It accepts the following parameters:
11527
11528 @table @option
11529 @item x
11530 Set scope center x position.
11531
11532 @item y
11533 Set scope center y position.
11534
11535 @item s
11536 Set scope size, relative to frame diagonal.
11537
11538 @item t
11539 Set scope tilt/rotation.
11540
11541 @item o
11542 Set trace opacity.
11543
11544 @item tx
11545 Set trace center x position.
11546
11547 @item ty
11548 Set trace center y position.
11549
11550 @item tw
11551 Set trace width, relative to width of frame.
11552
11553 @item th
11554 Set trace height, relative to height of frame.
11555
11556 @item c
11557 Set which components to trace. By default it traces first three components.
11558
11559 @item g
11560 Draw trace grid. By default is enabled.
11561
11562 @item st
11563 Draw some statistics. By default is enabled.
11564
11565 @item sc
11566 Draw scope. By default is enabled.
11567 @end table
11568
11569 @subsection Examples
11570
11571 @itemize
11572 @item
11573 Inspect full first row of video frame.
11574 @example
11575 oscilloscope=x=0.5:y=0:s=1
11576 @end example
11577
11578 @item
11579 Inspect full last row of video frame.
11580 @example
11581 oscilloscope=x=0.5:y=1:s=1
11582 @end example
11583
11584 @item
11585 Inspect full 5th line of video frame of height 1080.
11586 @example
11587 oscilloscope=x=0.5:y=5/1080:s=1
11588 @end example
11589
11590 @item
11591 Inspect full last column of video frame.
11592 @example
11593 oscilloscope=x=1:y=0.5:s=1:t=1
11594 @end example
11595
11596 @end itemize
11597
11598 @anchor{overlay}
11599 @section overlay
11600
11601 Overlay one video on top of another.
11602
11603 It takes two inputs and has one output. The first input is the "main"
11604 video on which the second input is overlaid.
11605
11606 It accepts the following parameters:
11607
11608 A description of the accepted options follows.
11609
11610 @table @option
11611 @item x
11612 @item y
11613 Set the expression for the x and y coordinates of the overlaid video
11614 on the main video. Default value is "0" for both expressions. In case
11615 the expression is invalid, it is set to a huge value (meaning that the
11616 overlay will not be displayed within the output visible area).
11617
11618 @item eof_action
11619 See @ref{framesync}.
11620
11621 @item eval
11622 Set when the expressions for @option{x}, and @option{y} are evaluated.
11623
11624 It accepts the following values:
11625 @table @samp
11626 @item init
11627 only evaluate expressions once during the filter initialization or
11628 when a command is processed
11629
11630 @item frame
11631 evaluate expressions for each incoming frame
11632 @end table
11633
11634 Default value is @samp{frame}.
11635
11636 @item shortest
11637 See @ref{framesync}.
11638
11639 @item format
11640 Set the format for the output video.
11641
11642 It accepts the following values:
11643 @table @samp
11644 @item yuv420
11645 force YUV420 output
11646
11647 @item yuv422
11648 force YUV422 output
11649
11650 @item yuv444
11651 force YUV444 output
11652
11653 @item rgb
11654 force packed RGB output
11655
11656 @item gbrp
11657 force planar RGB output
11658
11659 @item auto
11660 automatically pick format
11661 @end table
11662
11663 Default value is @samp{yuv420}.
11664
11665 @item repeatlast
11666 See @ref{framesync}.
11667
11668 @item alpha
11669 Set format of alpha of the overlaid video, it can be @var{straight} or
11670 @var{premultiplied}. Default is @var{straight}.
11671 @end table
11672
11673 The @option{x}, and @option{y} expressions can contain the following
11674 parameters.
11675
11676 @table @option
11677 @item main_w, W
11678 @item main_h, H
11679 The main input width and height.
11680
11681 @item overlay_w, w
11682 @item overlay_h, h
11683 The overlay input width and height.
11684
11685 @item x
11686 @item y
11687 The computed values for @var{x} and @var{y}. They are evaluated for
11688 each new frame.
11689
11690 @item hsub
11691 @item vsub
11692 horizontal and vertical chroma subsample values of the output
11693 format. For example for the pixel format "yuv422p" @var{hsub} is 2 and
11694 @var{vsub} is 1.
11695
11696 @item n
11697 the number of input frame, starting from 0
11698
11699 @item pos
11700 the position in the file of the input frame, NAN if unknown
11701
11702 @item t
11703 The timestamp, expressed in seconds. It's NAN if the input timestamp is unknown.
11704
11705 @end table
11706
11707 This filter also supports the @ref{framesync} options.
11708
11709 Note that the @var{n}, @var{pos}, @var{t} variables are available only
11710 when evaluation is done @emph{per frame}, and will evaluate to NAN
11711 when @option{eval} is set to @samp{init}.
11712
11713 Be aware that frames are taken from each input video in timestamp
11714 order, hence, if their initial timestamps differ, it is a good idea
11715 to pass the two inputs through a @var{setpts=PTS-STARTPTS} filter to
11716 have them begin in the same zero timestamp, as the example for
11717 the @var{movie} filter does.
11718
11719 You can chain together more overlays but you should test the
11720 efficiency of such approach.
11721
11722 @subsection Commands
11723
11724 This filter supports the following commands:
11725 @table @option
11726 @item x
11727 @item y
11728 Modify the x and y of the overlay input.
11729 The command accepts the same syntax of the corresponding option.
11730
11731 If the specified expression is not valid, it is kept at its current
11732 value.
11733 @end table
11734
11735 @subsection Examples
11736
11737 @itemize
11738 @item
11739 Draw the overlay at 10 pixels from the bottom right corner of the main
11740 video:
11741 @example
11742 overlay=main_w-overlay_w-10:main_h-overlay_h-10
11743 @end example
11744
11745 Using named options the example above becomes:
11746 @example
11747 overlay=x=main_w-overlay_w-10:y=main_h-overlay_h-10
11748 @end example
11749
11750 @item
11751 Insert a transparent PNG logo in the bottom left corner of the input,
11752 using the @command{ffmpeg} tool with the @code{-filter_complex} option:
11753 @example
11754 ffmpeg -i input -i logo -filter_complex 'overlay=10:main_h-overlay_h-10' output
11755 @end example
11756
11757 @item
11758 Insert 2 different transparent PNG logos (second logo on bottom
11759 right corner) using the @command{ffmpeg} tool:
11760 @example
11761 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
11762 @end example
11763
11764 @item
11765 Add a transparent color layer on top of the main video; @code{WxH}
11766 must specify the size of the main input to the overlay filter:
11767 @example
11768 color=color=red@@.3:size=WxH [over]; [in][over] overlay [out]
11769 @end example
11770
11771 @item
11772 Play an original video and a filtered version (here with the deshake
11773 filter) side by side using the @command{ffplay} tool:
11774 @example
11775 ffplay input.avi -vf 'split[a][b]; [a]pad=iw*2:ih[src]; [b]deshake[filt]; [src][filt]overlay=w'
11776 @end example
11777
11778 The above command is the same as:
11779 @example
11780 ffplay input.avi -vf 'split[b], pad=iw*2[src], [b]deshake, [src]overlay=w'
11781 @end example
11782
11783 @item
11784 Make a sliding overlay appearing from the left to the right top part of the
11785 screen starting since time 2:
11786 @example
11787 overlay=x='if(gte(t,2), -w+(t-2)*20, NAN)':y=0
11788 @end example
11789
11790 @item
11791 Compose output by putting two input videos side to side:
11792 @example
11793 ffmpeg -i left.avi -i right.avi -filter_complex "
11794 nullsrc=size=200x100 [background];
11795 [0:v] setpts=PTS-STARTPTS, scale=100x100 [left];
11796 [1:v] setpts=PTS-STARTPTS, scale=100x100 [right];
11797 [background][left]       overlay=shortest=1       [background+left];
11798 [background+left][right] overlay=shortest=1:x=100 [left+right]
11799 "
11800 @end example
11801
11802 @item
11803 Mask 10-20 seconds of a video by applying the delogo filter to a section
11804 @example
11805 ffmpeg -i test.avi -codec:v:0 wmv2 -ar 11025 -b:v 9000k
11806 -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]'
11807 masked.avi
11808 @end example
11809
11810 @item
11811 Chain several overlays in cascade:
11812 @example
11813 nullsrc=s=200x200 [bg];
11814 testsrc=s=100x100, split=4 [in0][in1][in2][in3];
11815 [in0] lutrgb=r=0, [bg]   overlay=0:0     [mid0];
11816 [in1] lutrgb=g=0, [mid0] overlay=100:0   [mid1];
11817 [in2] lutrgb=b=0, [mid1] overlay=0:100   [mid2];
11818 [in3] null,       [mid2] overlay=100:100 [out0]
11819 @end example
11820
11821 @end itemize
11822
11823 @section owdenoise
11824
11825 Apply Overcomplete Wavelet denoiser.
11826
11827 The filter accepts the following options:
11828
11829 @table @option
11830 @item depth
11831 Set depth.
11832
11833 Larger depth values will denoise lower frequency components more, but
11834 slow down filtering.
11835
11836 Must be an int in the range 8-16, default is @code{8}.
11837
11838 @item luma_strength, ls
11839 Set luma strength.
11840
11841 Must be a double value in the range 0-1000, default is @code{1.0}.
11842
11843 @item chroma_strength, cs
11844 Set chroma strength.
11845
11846 Must be a double value in the range 0-1000, default is @code{1.0}.
11847 @end table
11848
11849 @anchor{pad}
11850 @section pad
11851
11852 Add paddings to the input image, and place the original input at the
11853 provided @var{x}, @var{y} coordinates.
11854
11855 It accepts the following parameters:
11856
11857 @table @option
11858 @item width, w
11859 @item height, h
11860 Specify an expression for the size of the output image with the
11861 paddings added. If the value for @var{width} or @var{height} is 0, the
11862 corresponding input size is used for the output.
11863
11864 The @var{width} expression can reference the value set by the
11865 @var{height} expression, and vice versa.
11866
11867 The default value of @var{width} and @var{height} is 0.
11868
11869 @item x
11870 @item y
11871 Specify the offsets to place the input image at within the padded area,
11872 with respect to the top/left border of the output image.
11873
11874 The @var{x} expression can reference the value set by the @var{y}
11875 expression, and vice versa.
11876
11877 The default value of @var{x} and @var{y} is 0.
11878
11879 If @var{x} or @var{y} evaluate to a negative number, they'll be changed
11880 so the input image is centered on the padded area.
11881
11882 @item color
11883 Specify the color of the padded area. For the syntax of this option,
11884 check the "Color" section in the ffmpeg-utils manual.
11885
11886 The default value of @var{color} is "black".
11887
11888 @item eval
11889 Specify when to evaluate  @var{width}, @var{height}, @var{x} and @var{y} expression.
11890
11891 It accepts the following values:
11892
11893 @table @samp
11894 @item init
11895 Only evaluate expressions once during the filter initialization or when
11896 a command is processed.
11897
11898 @item frame
11899 Evaluate expressions for each incoming frame.
11900
11901 @end table
11902
11903 Default value is @samp{init}.
11904
11905 @item aspect
11906 Pad to aspect instead to a resolution.
11907
11908 @end table
11909
11910 The value for the @var{width}, @var{height}, @var{x}, and @var{y}
11911 options are expressions containing the following constants:
11912
11913 @table @option
11914 @item in_w
11915 @item in_h
11916 The input video width and height.
11917
11918 @item iw
11919 @item ih
11920 These are the same as @var{in_w} and @var{in_h}.
11921
11922 @item out_w
11923 @item out_h
11924 The output width and height (the size of the padded area), as
11925 specified by the @var{width} and @var{height} expressions.
11926
11927 @item ow
11928 @item oh
11929 These are the same as @var{out_w} and @var{out_h}.
11930
11931 @item x
11932 @item y
11933 The x and y offsets as specified by the @var{x} and @var{y}
11934 expressions, or NAN if not yet specified.
11935
11936 @item a
11937 same as @var{iw} / @var{ih}
11938
11939 @item sar
11940 input sample aspect ratio
11941
11942 @item dar
11943 input display aspect ratio, it is the same as (@var{iw} / @var{ih}) * @var{sar}
11944
11945 @item hsub
11946 @item vsub
11947 The horizontal and vertical chroma subsample values. For example for the
11948 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
11949 @end table
11950
11951 @subsection Examples
11952
11953 @itemize
11954 @item
11955 Add paddings with the color "violet" to the input video. The output video
11956 size is 640x480, and the top-left corner of the input video is placed at
11957 column 0, row 40
11958 @example
11959 pad=640:480:0:40:violet
11960 @end example
11961
11962 The example above is equivalent to the following command:
11963 @example
11964 pad=width=640:height=480:x=0:y=40:color=violet
11965 @end example
11966
11967 @item
11968 Pad the input to get an output with dimensions increased by 3/2,
11969 and put the input video at the center of the padded area:
11970 @example
11971 pad="3/2*iw:3/2*ih:(ow-iw)/2:(oh-ih)/2"
11972 @end example
11973
11974 @item
11975 Pad the input to get a squared output with size equal to the maximum
11976 value between the input width and height, and put the input video at
11977 the center of the padded area:
11978 @example
11979 pad="max(iw\,ih):ow:(ow-iw)/2:(oh-ih)/2"
11980 @end example
11981
11982 @item
11983 Pad the input to get a final w/h ratio of 16:9:
11984 @example
11985 pad="ih*16/9:ih:(ow-iw)/2:(oh-ih)/2"
11986 @end example
11987
11988 @item
11989 In case of anamorphic video, in order to set the output display aspect
11990 correctly, it is necessary to use @var{sar} in the expression,
11991 according to the relation:
11992 @example
11993 (ih * X / ih) * sar = output_dar
11994 X = output_dar / sar
11995 @end example
11996
11997 Thus the previous example needs to be modified to:
11998 @example
11999 pad="ih*16/9/sar:ih:(ow-iw)/2:(oh-ih)/2"
12000 @end example
12001
12002 @item
12003 Double the output size and put the input video in the bottom-right
12004 corner of the output padded area:
12005 @example
12006 pad="2*iw:2*ih:ow-iw:oh-ih"
12007 @end example
12008 @end itemize
12009
12010 @anchor{palettegen}
12011 @section palettegen
12012
12013 Generate one palette for a whole video stream.
12014
12015 It accepts the following options:
12016
12017 @table @option
12018 @item max_colors
12019 Set the maximum number of colors to quantize in the palette.
12020 Note: the palette will still contain 256 colors; the unused palette entries
12021 will be black.
12022
12023 @item reserve_transparent
12024 Create a palette of 255 colors maximum and reserve the last one for
12025 transparency. Reserving the transparency color is useful for GIF optimization.
12026 If not set, the maximum of colors in the palette will be 256. You probably want
12027 to disable this option for a standalone image.
12028 Set by default.
12029
12030 @item transparency_color
12031 Set the color that will be used as background for transparency.
12032
12033 @item stats_mode
12034 Set statistics mode.
12035
12036 It accepts the following values:
12037 @table @samp
12038 @item full
12039 Compute full frame histograms.
12040 @item diff
12041 Compute histograms only for the part that differs from previous frame. This
12042 might be relevant to give more importance to the moving part of your input if
12043 the background is static.
12044 @item single
12045 Compute new histogram for each frame.
12046 @end table
12047
12048 Default value is @var{full}.
12049 @end table
12050
12051 The filter also exports the frame metadata @code{lavfi.color_quant_ratio}
12052 (@code{nb_color_in / nb_color_out}) which you can use to evaluate the degree of
12053 color quantization of the palette. This information is also visible at
12054 @var{info} logging level.
12055
12056 @subsection Examples
12057
12058 @itemize
12059 @item
12060 Generate a representative palette of a given video using @command{ffmpeg}:
12061 @example
12062 ffmpeg -i input.mkv -vf palettegen palette.png
12063 @end example
12064 @end itemize
12065
12066 @section paletteuse
12067
12068 Use a palette to downsample an input video stream.
12069
12070 The filter takes two inputs: one video stream and a palette. The palette must
12071 be a 256 pixels image.
12072
12073 It accepts the following options:
12074
12075 @table @option
12076 @item dither
12077 Select dithering mode. Available algorithms are:
12078 @table @samp
12079 @item bayer
12080 Ordered 8x8 bayer dithering (deterministic)
12081 @item heckbert
12082 Dithering as defined by Paul Heckbert in 1982 (simple error diffusion).
12083 Note: this dithering is sometimes considered "wrong" and is included as a
12084 reference.
12085 @item floyd_steinberg
12086 Floyd and Steingberg dithering (error diffusion)
12087 @item sierra2
12088 Frankie Sierra dithering v2 (error diffusion)
12089 @item sierra2_4a
12090 Frankie Sierra dithering v2 "Lite" (error diffusion)
12091 @end table
12092
12093 Default is @var{sierra2_4a}.
12094
12095 @item bayer_scale
12096 When @var{bayer} dithering is selected, this option defines the scale of the
12097 pattern (how much the crosshatch pattern is visible). A low value means more
12098 visible pattern for less banding, and higher value means less visible pattern
12099 at the cost of more banding.
12100
12101 The option must be an integer value in the range [0,5]. Default is @var{2}.
12102
12103 @item diff_mode
12104 If set, define the zone to process
12105
12106 @table @samp
12107 @item rectangle
12108 Only the changing rectangle will be reprocessed. This is similar to GIF
12109 cropping/offsetting compression mechanism. This option can be useful for speed
12110 if only a part of the image is changing, and has use cases such as limiting the
12111 scope of the error diffusal @option{dither} to the rectangle that bounds the
12112 moving scene (it leads to more deterministic output if the scene doesn't change
12113 much, and as a result less moving noise and better GIF compression).
12114 @end table
12115
12116 Default is @var{none}.
12117
12118 @item new
12119 Take new palette for each output frame.
12120
12121 @item alpha_threshold
12122 Sets the alpha threshold for transparency. Alpha values above this threshold
12123 will be treated as completely opaque, and values below this threshold will be
12124 treated as completely transparent.
12125
12126 The option must be an integer value in the range [0,255]. Default is @var{128}.
12127 @end table
12128
12129 @subsection Examples
12130
12131 @itemize
12132 @item
12133 Use a palette (generated for example with @ref{palettegen}) to encode a GIF
12134 using @command{ffmpeg}:
12135 @example
12136 ffmpeg -i input.mkv -i palette.png -lavfi paletteuse output.gif
12137 @end example
12138 @end itemize
12139
12140 @section perspective
12141
12142 Correct perspective of video not recorded perpendicular to the screen.
12143
12144 A description of the accepted parameters follows.
12145
12146 @table @option
12147 @item x0
12148 @item y0
12149 @item x1
12150 @item y1
12151 @item x2
12152 @item y2
12153 @item x3
12154 @item y3
12155 Set coordinates expression for top left, top right, bottom left and bottom right corners.
12156 Default values are @code{0:0:W:0:0:H:W:H} with which perspective will remain unchanged.
12157 If the @code{sense} option is set to @code{source}, then the specified points will be sent
12158 to the corners of the destination. If the @code{sense} option is set to @code{destination},
12159 then the corners of the source will be sent to the specified coordinates.
12160
12161 The expressions can use the following variables:
12162
12163 @table @option
12164 @item W
12165 @item H
12166 the width and height of video frame.
12167 @item in
12168 Input frame count.
12169 @item on
12170 Output frame count.
12171 @end table
12172
12173 @item interpolation
12174 Set interpolation for perspective correction.
12175
12176 It accepts the following values:
12177 @table @samp
12178 @item linear
12179 @item cubic
12180 @end table
12181
12182 Default value is @samp{linear}.
12183
12184 @item sense
12185 Set interpretation of coordinate options.
12186
12187 It accepts the following values:
12188 @table @samp
12189 @item 0, source
12190
12191 Send point in the source specified by the given coordinates to
12192 the corners of the destination.
12193
12194 @item 1, destination
12195
12196 Send the corners of the source to the point in the destination specified
12197 by the given coordinates.
12198
12199 Default value is @samp{source}.
12200 @end table
12201
12202 @item eval
12203 Set when the expressions for coordinates @option{x0,y0,...x3,y3} are evaluated.
12204
12205 It accepts the following values:
12206 @table @samp
12207 @item init
12208 only evaluate expressions once during the filter initialization or
12209 when a command is processed
12210
12211 @item frame
12212 evaluate expressions for each incoming frame
12213 @end table
12214
12215 Default value is @samp{init}.
12216 @end table
12217
12218 @section phase
12219
12220 Delay interlaced video by one field time so that the field order changes.
12221
12222 The intended use is to fix PAL movies that have been captured with the
12223 opposite field order to the film-to-video transfer.
12224
12225 A description of the accepted parameters follows.
12226
12227 @table @option
12228 @item mode
12229 Set phase mode.
12230
12231 It accepts the following values:
12232 @table @samp
12233 @item t
12234 Capture field order top-first, transfer bottom-first.
12235 Filter will delay the bottom field.
12236
12237 @item b
12238 Capture field order bottom-first, transfer top-first.
12239 Filter will delay the top field.
12240
12241 @item p
12242 Capture and transfer with the same field order. This mode only exists
12243 for the documentation of the other options to refer to, but if you
12244 actually select it, the filter will faithfully do nothing.
12245
12246 @item a
12247 Capture field order determined automatically by field flags, transfer
12248 opposite.
12249 Filter selects among @samp{t} and @samp{b} modes on a frame by frame
12250 basis using field flags. If no field information is available,
12251 then this works just like @samp{u}.
12252
12253 @item u
12254 Capture unknown or varying, transfer opposite.
12255 Filter selects among @samp{t} and @samp{b} on a frame by frame basis by
12256 analyzing the images and selecting the alternative that produces best
12257 match between the fields.
12258
12259 @item T
12260 Capture top-first, transfer unknown or varying.
12261 Filter selects among @samp{t} and @samp{p} using image analysis.
12262
12263 @item B
12264 Capture bottom-first, transfer unknown or varying.
12265 Filter selects among @samp{b} and @samp{p} using image analysis.
12266
12267 @item A
12268 Capture determined by field flags, transfer unknown or varying.
12269 Filter selects among @samp{t}, @samp{b} and @samp{p} using field flags and
12270 image analysis. If no field information is available, then this works just
12271 like @samp{U}. This is the default mode.
12272
12273 @item U
12274 Both capture and transfer unknown or varying.
12275 Filter selects among @samp{t}, @samp{b} and @samp{p} using image analysis only.
12276 @end table
12277 @end table
12278
12279 @section pixdesctest
12280
12281 Pixel format descriptor test filter, mainly useful for internal
12282 testing. The output video should be equal to the input video.
12283
12284 For example:
12285 @example
12286 format=monow, pixdesctest
12287 @end example
12288
12289 can be used to test the monowhite pixel format descriptor definition.
12290
12291 @section pixscope
12292
12293 Display sample values of color channels. Mainly useful for checking color
12294 and levels. Minimum supported resolution is 640x480.
12295
12296 The filters accept the following options:
12297
12298 @table @option
12299 @item x
12300 Set scope X position, relative offset on X axis.
12301
12302 @item y
12303 Set scope Y position, relative offset on Y axis.
12304
12305 @item w
12306 Set scope width.
12307
12308 @item h
12309 Set scope height.
12310
12311 @item o
12312 Set window opacity. This window also holds statistics about pixel area.
12313
12314 @item wx
12315 Set window X position, relative offset on X axis.
12316
12317 @item wy
12318 Set window Y position, relative offset on Y axis.
12319 @end table
12320
12321 @section pp
12322
12323 Enable the specified chain of postprocessing subfilters using libpostproc. This
12324 library should be automatically selected with a GPL build (@code{--enable-gpl}).
12325 Subfilters must be separated by '/' and can be disabled by prepending a '-'.
12326 Each subfilter and some options have a short and a long name that can be used
12327 interchangeably, i.e. dr/dering are the same.
12328
12329 The filters accept the following options:
12330
12331 @table @option
12332 @item subfilters
12333 Set postprocessing subfilters string.
12334 @end table
12335
12336 All subfilters share common options to determine their scope:
12337
12338 @table @option
12339 @item a/autoq
12340 Honor the quality commands for this subfilter.
12341
12342 @item c/chrom
12343 Do chrominance filtering, too (default).
12344
12345 @item y/nochrom
12346 Do luminance filtering only (no chrominance).
12347
12348 @item n/noluma
12349 Do chrominance filtering only (no luminance).
12350 @end table
12351
12352 These options can be appended after the subfilter name, separated by a '|'.
12353
12354 Available subfilters are:
12355
12356 @table @option
12357 @item hb/hdeblock[|difference[|flatness]]
12358 Horizontal deblocking filter
12359 @table @option
12360 @item difference
12361 Difference factor where higher values mean more deblocking (default: @code{32}).
12362 @item flatness
12363 Flatness threshold where lower values mean more deblocking (default: @code{39}).
12364 @end table
12365
12366 @item vb/vdeblock[|difference[|flatness]]
12367 Vertical deblocking filter
12368 @table @option
12369 @item difference
12370 Difference factor where higher values mean more deblocking (default: @code{32}).
12371 @item flatness
12372 Flatness threshold where lower values mean more deblocking (default: @code{39}).
12373 @end table
12374
12375 @item ha/hadeblock[|difference[|flatness]]
12376 Accurate 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 va/vadeblock[|difference[|flatness]]
12385 Accurate 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 @end table
12393
12394 The horizontal and vertical deblocking filters share the difference and
12395 flatness values so you cannot set different horizontal and vertical
12396 thresholds.
12397
12398 @table @option
12399 @item h1/x1hdeblock
12400 Experimental horizontal deblocking filter
12401
12402 @item v1/x1vdeblock
12403 Experimental vertical deblocking filter
12404
12405 @item dr/dering
12406 Deringing filter
12407
12408 @item tn/tmpnoise[|threshold1[|threshold2[|threshold3]]], temporal noise reducer
12409 @table @option
12410 @item threshold1
12411 larger -> stronger filtering
12412 @item threshold2
12413 larger -> stronger filtering
12414 @item threshold3
12415 larger -> stronger filtering
12416 @end table
12417
12418 @item al/autolevels[:f/fullyrange], automatic brightness / contrast correction
12419 @table @option
12420 @item f/fullyrange
12421 Stretch luminance to @code{0-255}.
12422 @end table
12423
12424 @item lb/linblenddeint
12425 Linear blend deinterlacing filter that deinterlaces the given block by
12426 filtering all lines with a @code{(1 2 1)} filter.
12427
12428 @item li/linipoldeint
12429 Linear interpolating deinterlacing filter that deinterlaces the given block by
12430 linearly interpolating every second line.
12431
12432 @item ci/cubicipoldeint
12433 Cubic interpolating deinterlacing filter deinterlaces the given block by
12434 cubically interpolating every second line.
12435
12436 @item md/mediandeint
12437 Median deinterlacing filter that deinterlaces the given block by applying a
12438 median filter to every second line.
12439
12440 @item fd/ffmpegdeint
12441 FFmpeg deinterlacing filter that deinterlaces the given block by filtering every
12442 second line with a @code{(-1 4 2 4 -1)} filter.
12443
12444 @item l5/lowpass5
12445 Vertically applied FIR lowpass deinterlacing filter that deinterlaces the given
12446 block by filtering all lines with a @code{(-1 2 6 2 -1)} filter.
12447
12448 @item fq/forceQuant[|quantizer]
12449 Overrides the quantizer table from the input with the constant quantizer you
12450 specify.
12451 @table @option
12452 @item quantizer
12453 Quantizer to use
12454 @end table
12455
12456 @item de/default
12457 Default pp filter combination (@code{hb|a,vb|a,dr|a})
12458
12459 @item fa/fast
12460 Fast pp filter combination (@code{h1|a,v1|a,dr|a})
12461
12462 @item ac
12463 High quality pp filter combination (@code{ha|a|128|7,va|a,dr|a})
12464 @end table
12465
12466 @subsection Examples
12467
12468 @itemize
12469 @item
12470 Apply horizontal and vertical deblocking, deringing and automatic
12471 brightness/contrast:
12472 @example
12473 pp=hb/vb/dr/al
12474 @end example
12475
12476 @item
12477 Apply default filters without brightness/contrast correction:
12478 @example
12479 pp=de/-al
12480 @end example
12481
12482 @item
12483 Apply default filters and temporal denoiser:
12484 @example
12485 pp=default/tmpnoise|1|2|3
12486 @end example
12487
12488 @item
12489 Apply deblocking on luminance only, and switch vertical deblocking on or off
12490 automatically depending on available CPU time:
12491 @example
12492 pp=hb|y/vb|a
12493 @end example
12494 @end itemize
12495
12496 @section pp7
12497 Apply Postprocessing filter 7. It is variant of the @ref{spp} filter,
12498 similar to spp = 6 with 7 point DCT, where only the center sample is
12499 used after IDCT.
12500
12501 The filter accepts the following options:
12502
12503 @table @option
12504 @item qp
12505 Force a constant quantization parameter. It accepts an integer in range
12506 0 to 63. If not set, the filter will use the QP from the video stream
12507 (if available).
12508
12509 @item mode
12510 Set thresholding mode. Available modes are:
12511
12512 @table @samp
12513 @item hard
12514 Set hard thresholding.
12515 @item soft
12516 Set soft thresholding (better de-ringing effect, but likely blurrier).
12517 @item medium
12518 Set medium thresholding (good results, default).
12519 @end table
12520 @end table
12521
12522 @section premultiply
12523 Apply alpha premultiply effect to input video stream using first plane
12524 of second stream as alpha.
12525
12526 Both streams must have same dimensions and same pixel format.
12527
12528 The filter accepts the following option:
12529
12530 @table @option
12531 @item planes
12532 Set which planes will be processed, unprocessed planes will be copied.
12533 By default value 0xf, all planes will be processed.
12534
12535 @item inplace
12536 Do not require 2nd input for processing, instead use alpha plane from input stream.
12537 @end table
12538
12539 @section prewitt
12540 Apply prewitt operator to input video stream.
12541
12542 The filter accepts the following option:
12543
12544 @table @option
12545 @item planes
12546 Set which planes will be processed, unprocessed planes will be copied.
12547 By default value 0xf, all planes will be processed.
12548
12549 @item scale
12550 Set value which will be multiplied with filtered result.
12551
12552 @item delta
12553 Set value which will be added to filtered result.
12554 @end table
12555
12556 @anchor{program_opencl}
12557 @section program_opencl
12558
12559 Filter video using an OpenCL program.
12560
12561 @table @option
12562
12563 @item source
12564 OpenCL program source file.
12565
12566 @item kernel
12567 Kernel name in program.
12568
12569 @item inputs
12570 Number of inputs to the filter.  Defaults to 1.
12571
12572 @item size, s
12573 Size of output frames.  Defaults to the same as the first input.
12574
12575 @end table
12576
12577 The program source file must contain a kernel function with the given name,
12578 which will be run once for each plane of the output.  Each run on a plane
12579 gets enqueued as a separate 2D global NDRange with one work-item for each
12580 pixel to be generated.  The global ID offset for each work-item is therefore
12581 the coordinates of a pixel in the destination image.
12582
12583 The kernel function needs to take the following arguments:
12584 @itemize
12585 @item
12586 Destination image, @var{__write_only image2d_t}.
12587
12588 This image will become the output; the kernel should write all of it.
12589 @item
12590 Frame index, @var{unsigned int}.
12591
12592 This is a counter starting from zero and increasing by one for each frame.
12593 @item
12594 Source images, @var{__read_only image2d_t}.
12595
12596 These are the most recent images on each input.  The kernel may read from
12597 them to generate the output, but they can't be written to.
12598 @end itemize
12599
12600 Example programs:
12601
12602 @itemize
12603 @item
12604 Copy the input to the output (output must be the same size as the input).
12605 @verbatim
12606 __kernel void copy(__write_only image2d_t destination,
12607                    unsigned int index,
12608                    __read_only  image2d_t source)
12609 {
12610     const sampler_t sampler = CLK_NORMALIZED_COORDS_FALSE;
12611
12612     int2 location = (int2)(get_global_id(0), get_global_id(1));
12613
12614     float4 value = read_imagef(source, sampler, location);
12615
12616     write_imagef(destination, location, value);
12617 }
12618 @end verbatim
12619
12620 @item
12621 Apply a simple transformation, rotating the input by an amount increasing
12622 with the index counter.  Pixel values are linearly interpolated by the
12623 sampler, and the output need not have the same dimensions as the input.
12624 @verbatim
12625 __kernel void rotate_image(__write_only image2d_t dst,
12626                            unsigned int index,
12627                            __read_only  image2d_t src)
12628 {
12629     const sampler_t sampler = (CLK_NORMALIZED_COORDS_FALSE |
12630                                CLK_FILTER_LINEAR);
12631
12632     float angle = (float)index / 100.0f;
12633
12634     float2 dst_dim = convert_float2(get_image_dim(dst));
12635     float2 src_dim = convert_float2(get_image_dim(src));
12636
12637     float2 dst_cen = dst_dim / 2.0f;
12638     float2 src_cen = src_dim / 2.0f;
12639
12640     int2   dst_loc = (int2)(get_global_id(0), get_global_id(1));
12641
12642     float2 dst_pos = convert_float2(dst_loc) - dst_cen;
12643     float2 src_pos = {
12644         cos(angle) * dst_pos.x - sin(angle) * dst_pos.y,
12645         sin(angle) * dst_pos.x + cos(angle) * dst_pos.y
12646     };
12647     src_pos = src_pos * src_dim / dst_dim;
12648
12649     float2 src_loc = src_pos + src_cen;
12650
12651     if (src_loc.x < 0.0f      || src_loc.y < 0.0f ||
12652         src_loc.x > src_dim.x || src_loc.y > src_dim.y)
12653         write_imagef(dst, dst_loc, 0.5f);
12654     else
12655         write_imagef(dst, dst_loc, read_imagef(src, sampler, src_loc));
12656 }
12657 @end verbatim
12658
12659 @item
12660 Blend two inputs together, with the amount of each input used varying
12661 with the index counter.
12662 @verbatim
12663 __kernel void blend_images(__write_only image2d_t dst,
12664                            unsigned int index,
12665                            __read_only  image2d_t src1,
12666                            __read_only  image2d_t src2)
12667 {
12668     const sampler_t sampler = (CLK_NORMALIZED_COORDS_FALSE |
12669                                CLK_FILTER_LINEAR);
12670
12671     float blend = (cos((float)index / 50.0f) + 1.0f) / 2.0f;
12672
12673     int2  dst_loc = (int2)(get_global_id(0), get_global_id(1));
12674     int2 src1_loc = dst_loc * get_image_dim(src1) / get_image_dim(dst);
12675     int2 src2_loc = dst_loc * get_image_dim(src2) / get_image_dim(dst);
12676
12677     float4 val1 = read_imagef(src1, sampler, src1_loc);
12678     float4 val2 = read_imagef(src2, sampler, src2_loc);
12679
12680     write_imagef(dst, dst_loc, val1 * blend + val2 * (1.0f - blend));
12681 }
12682 @end verbatim
12683
12684 @end itemize
12685
12686 @section pseudocolor
12687
12688 Alter frame colors in video with pseudocolors.
12689
12690 This filter accept the following options:
12691
12692 @table @option
12693 @item c0
12694 set pixel first component expression
12695
12696 @item c1
12697 set pixel second component expression
12698
12699 @item c2
12700 set pixel third component expression
12701
12702 @item c3
12703 set pixel fourth component expression, corresponds to the alpha component
12704
12705 @item i
12706 set component to use as base for altering colors
12707 @end table
12708
12709 Each of them specifies the expression to use for computing the lookup table for
12710 the corresponding pixel component values.
12711
12712 The expressions can contain the following constants and functions:
12713
12714 @table @option
12715 @item w
12716 @item h
12717 The input width and height.
12718
12719 @item val
12720 The input value for the pixel component.
12721
12722 @item ymin, umin, vmin, amin
12723 The minimum allowed component value.
12724
12725 @item ymax, umax, vmax, amax
12726 The maximum allowed component value.
12727 @end table
12728
12729 All expressions default to "val".
12730
12731 @subsection Examples
12732
12733 @itemize
12734 @item
12735 Change too high luma values to gradient:
12736 @example
12737 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'"
12738 @end example
12739 @end itemize
12740
12741 @section psnr
12742
12743 Obtain the average, maximum and minimum PSNR (Peak Signal to Noise
12744 Ratio) between two input videos.
12745
12746 This filter takes in input two input videos, the first input is
12747 considered the "main" source and is passed unchanged to the
12748 output. The second input is used as a "reference" video for computing
12749 the PSNR.
12750
12751 Both video inputs must have the same resolution and pixel format for
12752 this filter to work correctly. Also it assumes that both inputs
12753 have the same number of frames, which are compared one by one.
12754
12755 The obtained average PSNR is printed through the logging system.
12756
12757 The filter stores the accumulated MSE (mean squared error) of each
12758 frame, and at the end of the processing it is averaged across all frames
12759 equally, and the following formula is applied to obtain the PSNR:
12760
12761 @example
12762 PSNR = 10*log10(MAX^2/MSE)
12763 @end example
12764
12765 Where MAX is the average of the maximum values of each component of the
12766 image.
12767
12768 The description of the accepted parameters follows.
12769
12770 @table @option
12771 @item stats_file, f
12772 If specified the filter will use the named file to save the PSNR of
12773 each individual frame. When filename equals "-" the data is sent to
12774 standard output.
12775
12776 @item stats_version
12777 Specifies which version of the stats file format to use. Details of
12778 each format are written below.
12779 Default value is 1.
12780
12781 @item stats_add_max
12782 Determines whether the max value is output to the stats log.
12783 Default value is 0.
12784 Requires stats_version >= 2. If this is set and stats_version < 2,
12785 the filter will return an error.
12786 @end table
12787
12788 This filter also supports the @ref{framesync} options.
12789
12790 The file printed if @var{stats_file} is selected, contains a sequence of
12791 key/value pairs of the form @var{key}:@var{value} for each compared
12792 couple of frames.
12793
12794 If a @var{stats_version} greater than 1 is specified, a header line precedes
12795 the list of per-frame-pair stats, with key value pairs following the frame
12796 format with the following parameters:
12797
12798 @table @option
12799 @item psnr_log_version
12800 The version of the log file format. Will match @var{stats_version}.
12801
12802 @item fields
12803 A comma separated list of the per-frame-pair parameters included in
12804 the log.
12805 @end table
12806
12807 A description of each shown per-frame-pair parameter follows:
12808
12809 @table @option
12810 @item n
12811 sequential number of the input frame, starting from 1
12812
12813 @item mse_avg
12814 Mean Square Error pixel-by-pixel average difference of the compared
12815 frames, averaged over all the image components.
12816
12817 @item mse_y, mse_u, mse_v, mse_r, mse_g, mse_b, mse_a
12818 Mean Square Error pixel-by-pixel average difference of the compared
12819 frames for the component specified by the suffix.
12820
12821 @item psnr_y, psnr_u, psnr_v, psnr_r, psnr_g, psnr_b, psnr_a
12822 Peak Signal to Noise ratio of the compared frames for the component
12823 specified by the suffix.
12824
12825 @item max_avg, max_y, max_u, max_v
12826 Maximum allowed value for each channel, and average over all
12827 channels.
12828 @end table
12829
12830 For example:
12831 @example
12832 movie=ref_movie.mpg, setpts=PTS-STARTPTS [main];
12833 [main][ref] psnr="stats_file=stats.log" [out]
12834 @end example
12835
12836 On this example the input file being processed is compared with the
12837 reference file @file{ref_movie.mpg}. The PSNR of each individual frame
12838 is stored in @file{stats.log}.
12839
12840 @anchor{pullup}
12841 @section pullup
12842
12843 Pulldown reversal (inverse telecine) filter, capable of handling mixed
12844 hard-telecine, 24000/1001 fps progressive, and 30000/1001 fps progressive
12845 content.
12846
12847 The pullup filter is designed to take advantage of future context in making
12848 its decisions. This filter is stateless in the sense that it does not lock
12849 onto a pattern to follow, but it instead looks forward to the following
12850 fields in order to identify matches and rebuild progressive frames.
12851
12852 To produce content with an even framerate, insert the fps filter after
12853 pullup, use @code{fps=24000/1001} if the input frame rate is 29.97fps,
12854 @code{fps=24} for 30fps and the (rare) telecined 25fps input.
12855
12856 The filter accepts the following options:
12857
12858 @table @option
12859 @item jl
12860 @item jr
12861 @item jt
12862 @item jb
12863 These options set the amount of "junk" to ignore at the left, right, top, and
12864 bottom of the image, respectively. Left and right are in units of 8 pixels,
12865 while top and bottom are in units of 2 lines.
12866 The default is 8 pixels on each side.
12867
12868 @item sb
12869 Set the strict breaks. Setting this option to 1 will reduce the chances of
12870 filter generating an occasional mismatched frame, but it may also cause an
12871 excessive number of frames to be dropped during high motion sequences.
12872 Conversely, setting it to -1 will make filter match fields more easily.
12873 This may help processing of video where there is slight blurring between
12874 the fields, but may also cause there to be interlaced frames in the output.
12875 Default value is @code{0}.
12876
12877 @item mp
12878 Set the metric plane to use. It accepts the following values:
12879 @table @samp
12880 @item l
12881 Use luma plane.
12882
12883 @item u
12884 Use chroma blue plane.
12885
12886 @item v
12887 Use chroma red plane.
12888 @end table
12889
12890 This option may be set to use chroma plane instead of the default luma plane
12891 for doing filter's computations. This may improve accuracy on very clean
12892 source material, but more likely will decrease accuracy, especially if there
12893 is chroma noise (rainbow effect) or any grayscale video.
12894 The main purpose of setting @option{mp} to a chroma plane is to reduce CPU
12895 load and make pullup usable in realtime on slow machines.
12896 @end table
12897
12898 For best results (without duplicated frames in the output file) it is
12899 necessary to change the output frame rate. For example, to inverse
12900 telecine NTSC input:
12901 @example
12902 ffmpeg -i input -vf pullup -r 24000/1001 ...
12903 @end example
12904
12905 @section qp
12906
12907 Change video quantization parameters (QP).
12908
12909 The filter accepts the following option:
12910
12911 @table @option
12912 @item qp
12913 Set expression for quantization parameter.
12914 @end table
12915
12916 The expression is evaluated through the eval API and can contain, among others,
12917 the following constants:
12918
12919 @table @var
12920 @item known
12921 1 if index is not 129, 0 otherwise.
12922
12923 @item qp
12924 Sequential index starting from -129 to 128.
12925 @end table
12926
12927 @subsection Examples
12928
12929 @itemize
12930 @item
12931 Some equation like:
12932 @example
12933 qp=2+2*sin(PI*qp)
12934 @end example
12935 @end itemize
12936
12937 @section random
12938
12939 Flush video frames from internal cache of frames into a random order.
12940 No frame is discarded.
12941 Inspired by @ref{frei0r} nervous filter.
12942
12943 @table @option
12944 @item frames
12945 Set size in number of frames of internal cache, in range from @code{2} to
12946 @code{512}. Default is @code{30}.
12947
12948 @item seed
12949 Set seed for random number generator, must be an integer included between
12950 @code{0} and @code{UINT32_MAX}. If not specified, or if explicitly set to
12951 less than @code{0}, the filter will try to use a good random seed on a
12952 best effort basis.
12953 @end table
12954
12955 @section readeia608
12956
12957 Read closed captioning (EIA-608) information from the top lines of a video frame.
12958
12959 This filter adds frame metadata for @code{lavfi.readeia608.X.cc} and
12960 @code{lavfi.readeia608.X.line}, where @code{X} is the number of the identified line
12961 with EIA-608 data (starting from 0). A description of each metadata value follows:
12962
12963 @table @option
12964 @item lavfi.readeia608.X.cc
12965 The two bytes stored as EIA-608 data (printed in hexadecimal).
12966
12967 @item lavfi.readeia608.X.line
12968 The number of the line on which the EIA-608 data was identified and read.
12969 @end table
12970
12971 This filter accepts the following options:
12972
12973 @table @option
12974 @item scan_min
12975 Set the line to start scanning for EIA-608 data. Default is @code{0}.
12976
12977 @item scan_max
12978 Set the line to end scanning for EIA-608 data. Default is @code{29}.
12979
12980 @item mac
12981 Set minimal acceptable amplitude change for sync codes detection.
12982 Default is @code{0.2}. Allowed range is @code{[0.001 - 1]}.
12983
12984 @item spw
12985 Set the ratio of width reserved for sync code detection.
12986 Default is @code{0.27}. Allowed range is @code{[0.01 - 0.7]}.
12987
12988 @item mhd
12989 Set the max peaks height difference for sync code detection.
12990 Default is @code{0.1}. Allowed range is @code{[0.0 - 0.5]}.
12991
12992 @item mpd
12993 Set max peaks period difference for sync code detection.
12994 Default is @code{0.1}. Allowed range is @code{[0.0 - 0.5]}.
12995
12996 @item msd
12997 Set the first two max start code bits differences.
12998 Default is @code{0.02}. Allowed range is @code{[0.0 - 0.5]}.
12999
13000 @item bhd
13001 Set the minimum ratio of bits height compared to 3rd start code bit.
13002 Default is @code{0.75}. Allowed range is @code{[0.01 - 1]}.
13003
13004 @item th_w
13005 Set the white color threshold. Default is @code{0.35}. Allowed range is @code{[0.1 - 1]}.
13006
13007 @item th_b
13008 Set the black color threshold. Default is @code{0.15}. Allowed range is @code{[0.0 - 0.5]}.
13009
13010 @item chp
13011 Enable checking the parity bit. In the event of a parity error, the filter will output
13012 @code{0x00} for that character. Default is false.
13013 @end table
13014
13015 @subsection Examples
13016
13017 @itemize
13018 @item
13019 Output a csv with presentation time and the first two lines of identified EIA-608 captioning data.
13020 @example
13021 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
13022 @end example
13023 @end itemize
13024
13025 @section readvitc
13026
13027 Read vertical interval timecode (VITC) information from the top lines of a
13028 video frame.
13029
13030 The filter adds frame metadata key @code{lavfi.readvitc.tc_str} with the
13031 timecode value, if a valid timecode has been detected. Further metadata key
13032 @code{lavfi.readvitc.found} is set to 0/1 depending on whether
13033 timecode data has been found or not.
13034
13035 This filter accepts the following options:
13036
13037 @table @option
13038 @item scan_max
13039 Set the maximum number of lines to scan for VITC data. If the value is set to
13040 @code{-1} the full video frame is scanned. Default is @code{45}.
13041
13042 @item thr_b
13043 Set the luma threshold for black. Accepts float numbers in the range [0.0,1.0],
13044 default value is @code{0.2}. The value must be equal or less than @code{thr_w}.
13045
13046 @item thr_w
13047 Set the luma threshold for white. Accepts float numbers in the range [0.0,1.0],
13048 default value is @code{0.6}. The value must be equal or greater than @code{thr_b}.
13049 @end table
13050
13051 @subsection Examples
13052
13053 @itemize
13054 @item
13055 Detect and draw VITC data onto the video frame; if no valid VITC is detected,
13056 draw @code{--:--:--:--} as a placeholder:
13057 @example
13058 ffmpeg -i input.avi -filter:v 'readvitc,drawtext=fontfile=FreeMono.ttf:text=%@{metadata\\:lavfi.readvitc.tc_str\\:--\\\\\\:--\\\\\\:--\\\\\\:--@}:x=(w-tw)/2:y=400-ascent'
13059 @end example
13060 @end itemize
13061
13062 @section remap
13063
13064 Remap pixels using 2nd: Xmap and 3rd: Ymap input video stream.
13065
13066 Destination pixel at position (X, Y) will be picked from source (x, y) position
13067 where x = Xmap(X, Y) and y = Ymap(X, Y). If mapping values are out of range, zero
13068 value for pixel will be used for destination pixel.
13069
13070 Xmap and Ymap input video streams must be of same dimensions. Output video stream
13071 will have Xmap/Ymap video stream dimensions.
13072 Xmap and Ymap input video streams are 16bit depth, single channel.
13073
13074 @section removegrain
13075
13076 The removegrain filter is a spatial denoiser for progressive video.
13077
13078 @table @option
13079 @item m0
13080 Set mode for the first plane.
13081
13082 @item m1
13083 Set mode for the second plane.
13084
13085 @item m2
13086 Set mode for the third plane.
13087
13088 @item m3
13089 Set mode for the fourth plane.
13090 @end table
13091
13092 Range of mode is from 0 to 24. Description of each mode follows:
13093
13094 @table @var
13095 @item 0
13096 Leave input plane unchanged. Default.
13097
13098 @item 1
13099 Clips the pixel with the minimum and maximum of the 8 neighbour pixels.
13100
13101 @item 2
13102 Clips the pixel with the second minimum and maximum of the 8 neighbour pixels.
13103
13104 @item 3
13105 Clips the pixel with the third minimum and maximum of the 8 neighbour pixels.
13106
13107 @item 4
13108 Clips the pixel with the fourth minimum and maximum of the 8 neighbour pixels.
13109 This is equivalent to a median filter.
13110
13111 @item 5
13112 Line-sensitive clipping giving the minimal change.
13113
13114 @item 6
13115 Line-sensitive clipping, intermediate.
13116
13117 @item 7
13118 Line-sensitive clipping, intermediate.
13119
13120 @item 8
13121 Line-sensitive clipping, intermediate.
13122
13123 @item 9
13124 Line-sensitive clipping on a line where the neighbours pixels are the closest.
13125
13126 @item 10
13127 Replaces the target pixel with the closest neighbour.
13128
13129 @item 11
13130 [1 2 1] horizontal and vertical kernel blur.
13131
13132 @item 12
13133 Same as mode 11.
13134
13135 @item 13
13136 Bob mode, interpolates top field from the line where the neighbours
13137 pixels are the closest.
13138
13139 @item 14
13140 Bob mode, interpolates bottom field from the line where the neighbours
13141 pixels are the closest.
13142
13143 @item 15
13144 Bob mode, interpolates top field. Same as 13 but with a more complicated
13145 interpolation formula.
13146
13147 @item 16
13148 Bob mode, interpolates bottom field. Same as 14 but with a more complicated
13149 interpolation formula.
13150
13151 @item 17
13152 Clips the pixel with the minimum and maximum of respectively the maximum and
13153 minimum of each pair of opposite neighbour pixels.
13154
13155 @item 18
13156 Line-sensitive clipping using opposite neighbours whose greatest distance from
13157 the current pixel is minimal.
13158
13159 @item 19
13160 Replaces the pixel with the average of its 8 neighbours.
13161
13162 @item 20
13163 Averages the 9 pixels ([1 1 1] horizontal and vertical blur).
13164
13165 @item 21
13166 Clips pixels using the averages of opposite neighbour.
13167
13168 @item 22
13169 Same as mode 21 but simpler and faster.
13170
13171 @item 23
13172 Small edge and halo removal, but reputed useless.
13173
13174 @item 24
13175 Similar as 23.
13176 @end table
13177
13178 @section removelogo
13179
13180 Suppress a TV station logo, using an image file to determine which
13181 pixels comprise the logo. It works by filling in the pixels that
13182 comprise the logo with neighboring pixels.
13183
13184 The filter accepts the following options:
13185
13186 @table @option
13187 @item filename, f
13188 Set the filter bitmap file, which can be any image format supported by
13189 libavformat. The width and height of the image file must match those of the
13190 video stream being processed.
13191 @end table
13192
13193 Pixels in the provided bitmap image with a value of zero are not
13194 considered part of the logo, non-zero pixels are considered part of
13195 the logo. If you use white (255) for the logo and black (0) for the
13196 rest, you will be safe. For making the filter bitmap, it is
13197 recommended to take a screen capture of a black frame with the logo
13198 visible, and then using a threshold filter followed by the erode
13199 filter once or twice.
13200
13201 If needed, little splotches can be fixed manually. Remember that if
13202 logo pixels are not covered, the filter quality will be much
13203 reduced. Marking too many pixels as part of the logo does not hurt as
13204 much, but it will increase the amount of blurring needed to cover over
13205 the image and will destroy more information than necessary, and extra
13206 pixels will slow things down on a large logo.
13207
13208 @section repeatfields
13209
13210 This filter uses the repeat_field flag from the Video ES headers and hard repeats
13211 fields based on its value.
13212
13213 @section reverse
13214
13215 Reverse a video clip.
13216
13217 Warning: This filter requires memory to buffer the entire clip, so trimming
13218 is suggested.
13219
13220 @subsection Examples
13221
13222 @itemize
13223 @item
13224 Take the first 5 seconds of a clip, and reverse it.
13225 @example
13226 trim=end=5,reverse
13227 @end example
13228 @end itemize
13229
13230 @section roberts
13231 Apply roberts cross operator to input video stream.
13232
13233 The filter accepts the following option:
13234
13235 @table @option
13236 @item planes
13237 Set which planes will be processed, unprocessed planes will be copied.
13238 By default value 0xf, all planes will be processed.
13239
13240 @item scale
13241 Set value which will be multiplied with filtered result.
13242
13243 @item delta
13244 Set value which will be added to filtered result.
13245 @end table
13246
13247 @section rotate
13248
13249 Rotate video by an arbitrary angle expressed in radians.
13250
13251 The filter accepts the following options:
13252
13253 A description of the optional parameters follows.
13254 @table @option
13255 @item angle, a
13256 Set an expression for the angle by which to rotate the input video
13257 clockwise, expressed as a number of radians. A negative value will
13258 result in a counter-clockwise rotation. By default it is set to "0".
13259
13260 This expression is evaluated for each frame.
13261
13262 @item out_w, ow
13263 Set the output width expression, default value is "iw".
13264 This expression is evaluated just once during configuration.
13265
13266 @item out_h, oh
13267 Set the output height expression, default value is "ih".
13268 This expression is evaluated just once during configuration.
13269
13270 @item bilinear
13271 Enable bilinear interpolation if set to 1, a value of 0 disables
13272 it. Default value is 1.
13273
13274 @item fillcolor, c
13275 Set the color used to fill the output area not covered by the rotated
13276 image. For the general syntax of this option, check the "Color" section in the
13277 ffmpeg-utils manual. If the special value "none" is selected then no
13278 background is printed (useful for example if the background is never shown).
13279
13280 Default value is "black".
13281 @end table
13282
13283 The expressions for the angle and the output size can contain the
13284 following constants and functions:
13285
13286 @table @option
13287 @item n
13288 sequential number of the input frame, starting from 0. It is always NAN
13289 before the first frame is filtered.
13290
13291 @item t
13292 time in seconds of the input frame, it is set to 0 when the filter is
13293 configured. It is always NAN before the first frame is filtered.
13294
13295 @item hsub
13296 @item vsub
13297 horizontal and vertical chroma subsample values. For example for the
13298 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
13299
13300 @item in_w, iw
13301 @item in_h, ih
13302 the input video width and height
13303
13304 @item out_w, ow
13305 @item out_h, oh
13306 the output width and height, that is the size of the padded area as
13307 specified by the @var{width} and @var{height} expressions
13308
13309 @item rotw(a)
13310 @item roth(a)
13311 the minimal width/height required for completely containing the input
13312 video rotated by @var{a} radians.
13313
13314 These are only available when computing the @option{out_w} and
13315 @option{out_h} expressions.
13316 @end table
13317
13318 @subsection Examples
13319
13320 @itemize
13321 @item
13322 Rotate the input by PI/6 radians clockwise:
13323 @example
13324 rotate=PI/6
13325 @end example
13326
13327 @item
13328 Rotate the input by PI/6 radians counter-clockwise:
13329 @example
13330 rotate=-PI/6
13331 @end example
13332
13333 @item
13334 Rotate the input by 45 degrees clockwise:
13335 @example
13336 rotate=45*PI/180
13337 @end example
13338
13339 @item
13340 Apply a constant rotation with period T, starting from an angle of PI/3:
13341 @example
13342 rotate=PI/3+2*PI*t/T
13343 @end example
13344
13345 @item
13346 Make the input video rotation oscillating with a period of T
13347 seconds and an amplitude of A radians:
13348 @example
13349 rotate=A*sin(2*PI/T*t)
13350 @end example
13351
13352 @item
13353 Rotate the video, output size is chosen so that the whole rotating
13354 input video is always completely contained in the output:
13355 @example
13356 rotate='2*PI*t:ow=hypot(iw,ih):oh=ow'
13357 @end example
13358
13359 @item
13360 Rotate the video, reduce the output size so that no background is ever
13361 shown:
13362 @example
13363 rotate=2*PI*t:ow='min(iw,ih)/sqrt(2)':oh=ow:c=none
13364 @end example
13365 @end itemize
13366
13367 @subsection Commands
13368
13369 The filter supports the following commands:
13370
13371 @table @option
13372 @item a, angle
13373 Set the angle expression.
13374 The command accepts the same syntax of the corresponding option.
13375
13376 If the specified expression is not valid, it is kept at its current
13377 value.
13378 @end table
13379
13380 @section sab
13381
13382 Apply Shape Adaptive Blur.
13383
13384 The filter accepts the following options:
13385
13386 @table @option
13387 @item luma_radius, lr
13388 Set luma blur filter strength, must be a value in range 0.1-4.0, default
13389 value is 1.0. A greater value will result in a more blurred image, and
13390 in slower processing.
13391
13392 @item luma_pre_filter_radius, lpfr
13393 Set luma pre-filter radius, must be a value in the 0.1-2.0 range, default
13394 value is 1.0.
13395
13396 @item luma_strength, ls
13397 Set luma maximum difference between pixels to still be considered, must
13398 be a value in the 0.1-100.0 range, default value is 1.0.
13399
13400 @item chroma_radius, cr
13401 Set chroma blur filter strength, must be a value in range -0.9-4.0. A
13402 greater value will result in a more blurred image, and in slower
13403 processing.
13404
13405 @item chroma_pre_filter_radius, cpfr
13406 Set chroma pre-filter radius, must be a value in the -0.9-2.0 range.
13407
13408 @item chroma_strength, cs
13409 Set chroma maximum difference between pixels to still be considered,
13410 must be a value in the -0.9-100.0 range.
13411 @end table
13412
13413 Each chroma option value, if not explicitly specified, is set to the
13414 corresponding luma option value.
13415
13416 @anchor{scale}
13417 @section scale
13418
13419 Scale (resize) the input video, using the libswscale library.
13420
13421 The scale filter forces the output display aspect ratio to be the same
13422 of the input, by changing the output sample aspect ratio.
13423
13424 If the input image format is different from the format requested by
13425 the next filter, the scale filter will convert the input to the
13426 requested format.
13427
13428 @subsection Options
13429 The filter accepts the following options, or any of the options
13430 supported by the libswscale scaler.
13431
13432 See @ref{scaler_options,,the ffmpeg-scaler manual,ffmpeg-scaler} for
13433 the complete list of scaler options.
13434
13435 @table @option
13436 @item width, w
13437 @item height, h
13438 Set the output video dimension expression. Default value is the input
13439 dimension.
13440
13441 If the @var{width} or @var{w} value is 0, the input width is used for
13442 the output. If the @var{height} or @var{h} value is 0, the input height
13443 is used for the output.
13444
13445 If one and only one of the values is -n with n >= 1, the scale filter
13446 will use a value that maintains the aspect ratio of the input image,
13447 calculated from the other specified dimension. After that it will,
13448 however, make sure that the calculated dimension is divisible by n and
13449 adjust the value if necessary.
13450
13451 If both values are -n with n >= 1, the behavior will be identical to
13452 both values being set to 0 as previously detailed.
13453
13454 See below for the list of accepted constants for use in the dimension
13455 expression.
13456
13457 @item eval
13458 Specify when to evaluate @var{width} and @var{height} expression. It accepts the following values:
13459
13460 @table @samp
13461 @item init
13462 Only evaluate expressions once during the filter initialization or when a command is processed.
13463
13464 @item frame
13465 Evaluate expressions for each incoming frame.
13466
13467 @end table
13468
13469 Default value is @samp{init}.
13470
13471
13472 @item interl
13473 Set the interlacing mode. It accepts the following values:
13474
13475 @table @samp
13476 @item 1
13477 Force interlaced aware scaling.
13478
13479 @item 0
13480 Do not apply interlaced scaling.
13481
13482 @item -1
13483 Select interlaced aware scaling depending on whether the source frames
13484 are flagged as interlaced or not.
13485 @end table
13486
13487 Default value is @samp{0}.
13488
13489 @item flags
13490 Set libswscale scaling flags. See
13491 @ref{sws_flags,,the ffmpeg-scaler manual,ffmpeg-scaler} for the
13492 complete list of values. If not explicitly specified the filter applies
13493 the default flags.
13494
13495
13496 @item param0, param1
13497 Set libswscale input parameters for scaling algorithms that need them. See
13498 @ref{sws_params,,the ffmpeg-scaler manual,ffmpeg-scaler} for the
13499 complete documentation. If not explicitly specified the filter applies
13500 empty parameters.
13501
13502
13503
13504 @item size, s
13505 Set the video size. For the syntax of this option, check the
13506 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
13507
13508 @item in_color_matrix
13509 @item out_color_matrix
13510 Set in/output YCbCr color space type.
13511
13512 This allows the autodetected value to be overridden as well as allows forcing
13513 a specific value used for the output and encoder.
13514
13515 If not specified, the color space type depends on the pixel format.
13516
13517 Possible values:
13518
13519 @table @samp
13520 @item auto
13521 Choose automatically.
13522
13523 @item bt709
13524 Format conforming to International Telecommunication Union (ITU)
13525 Recommendation BT.709.
13526
13527 @item fcc
13528 Set color space conforming to the United States Federal Communications
13529 Commission (FCC) Code of Federal Regulations (CFR) Title 47 (2003) 73.682 (a).
13530
13531 @item bt601
13532 Set color space conforming to:
13533
13534 @itemize
13535 @item
13536 ITU Radiocommunication Sector (ITU-R) Recommendation BT.601
13537
13538 @item
13539 ITU-R Rec. BT.470-6 (1998) Systems B, B1, and G
13540
13541 @item
13542 Society of Motion Picture and Television Engineers (SMPTE) ST 170:2004
13543
13544 @end itemize
13545
13546 @item smpte240m
13547 Set color space conforming to SMPTE ST 240:1999.
13548 @end table
13549
13550 @item in_range
13551 @item out_range
13552 Set in/output YCbCr sample range.
13553
13554 This allows the autodetected value to be overridden as well as allows forcing
13555 a specific value used for the output and encoder. If not specified, the
13556 range depends on the pixel format. Possible values:
13557
13558 @table @samp
13559 @item auto/unknown
13560 Choose automatically.
13561
13562 @item jpeg/full/pc
13563 Set full range (0-255 in case of 8-bit luma).
13564
13565 @item mpeg/limited/tv
13566 Set "MPEG" range (16-235 in case of 8-bit luma).
13567 @end table
13568
13569 @item force_original_aspect_ratio
13570 Enable decreasing or increasing output video width or height if necessary to
13571 keep the original aspect ratio. Possible values:
13572
13573 @table @samp
13574 @item disable
13575 Scale the video as specified and disable this feature.
13576
13577 @item decrease
13578 The output video dimensions will automatically be decreased if needed.
13579
13580 @item increase
13581 The output video dimensions will automatically be increased if needed.
13582
13583 @end table
13584
13585 One useful instance of this option is that when you know a specific device's
13586 maximum allowed resolution, you can use this to limit the output video to
13587 that, while retaining the aspect ratio. For example, device A allows
13588 1280x720 playback, and your video is 1920x800. Using this option (set it to
13589 decrease) and specifying 1280x720 to the command line makes the output
13590 1280x533.
13591
13592 Please note that this is a different thing than specifying -1 for @option{w}
13593 or @option{h}, you still need to specify the output resolution for this option
13594 to work.
13595
13596 @end table
13597
13598 The values of the @option{w} and @option{h} options are expressions
13599 containing the following constants:
13600
13601 @table @var
13602 @item in_w
13603 @item in_h
13604 The input width and height
13605
13606 @item iw
13607 @item ih
13608 These are the same as @var{in_w} and @var{in_h}.
13609
13610 @item out_w
13611 @item out_h
13612 The output (scaled) width and height
13613
13614 @item ow
13615 @item oh
13616 These are the same as @var{out_w} and @var{out_h}
13617
13618 @item a
13619 The same as @var{iw} / @var{ih}
13620
13621 @item sar
13622 input sample aspect ratio
13623
13624 @item dar
13625 The input display aspect ratio. Calculated from @code{(iw / ih) * sar}.
13626
13627 @item hsub
13628 @item vsub
13629 horizontal and vertical input chroma subsample values. For example for the
13630 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
13631
13632 @item ohsub
13633 @item ovsub
13634 horizontal and vertical output chroma subsample values. For example for the
13635 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
13636 @end table
13637
13638 @subsection Examples
13639
13640 @itemize
13641 @item
13642 Scale the input video to a size of 200x100
13643 @example
13644 scale=w=200:h=100
13645 @end example
13646
13647 This is equivalent to:
13648 @example
13649 scale=200:100
13650 @end example
13651
13652 or:
13653 @example
13654 scale=200x100
13655 @end example
13656
13657 @item
13658 Specify a size abbreviation for the output size:
13659 @example
13660 scale=qcif
13661 @end example
13662
13663 which can also be written as:
13664 @example
13665 scale=size=qcif
13666 @end example
13667
13668 @item
13669 Scale the input to 2x:
13670 @example
13671 scale=w=2*iw:h=2*ih
13672 @end example
13673
13674 @item
13675 The above is the same as:
13676 @example
13677 scale=2*in_w:2*in_h
13678 @end example
13679
13680 @item
13681 Scale the input to 2x with forced interlaced scaling:
13682 @example
13683 scale=2*iw:2*ih:interl=1
13684 @end example
13685
13686 @item
13687 Scale the input to half size:
13688 @example
13689 scale=w=iw/2:h=ih/2
13690 @end example
13691
13692 @item
13693 Increase the width, and set the height to the same size:
13694 @example
13695 scale=3/2*iw:ow
13696 @end example
13697
13698 @item
13699 Seek Greek harmony:
13700 @example
13701 scale=iw:1/PHI*iw
13702 scale=ih*PHI:ih
13703 @end example
13704
13705 @item
13706 Increase the height, and set the width to 3/2 of the height:
13707 @example
13708 scale=w=3/2*oh:h=3/5*ih
13709 @end example
13710
13711 @item
13712 Increase the size, making the size a multiple of the chroma
13713 subsample values:
13714 @example
13715 scale="trunc(3/2*iw/hsub)*hsub:trunc(3/2*ih/vsub)*vsub"
13716 @end example
13717
13718 @item
13719 Increase the width to a maximum of 500 pixels,
13720 keeping the same aspect ratio as the input:
13721 @example
13722 scale=w='min(500\, iw*3/2):h=-1'
13723 @end example
13724 @end itemize
13725
13726 @subsection Commands
13727
13728 This filter supports the following commands:
13729 @table @option
13730 @item width, w
13731 @item height, h
13732 Set the output video dimension expression.
13733 The command accepts the same syntax of the corresponding option.
13734
13735 If the specified expression is not valid, it is kept at its current
13736 value.
13737 @end table
13738
13739 @section scale_npp
13740
13741 Use the NVIDIA Performance Primitives (libnpp) to perform scaling and/or pixel
13742 format conversion on CUDA video frames. Setting the output width and height
13743 works in the same way as for the @var{scale} filter.
13744
13745 The following additional options are accepted:
13746 @table @option
13747 @item format
13748 The pixel format of the output CUDA frames. If set to the string "same" (the
13749 default), the input format will be kept. Note that automatic format negotiation
13750 and conversion is not yet supported for hardware frames
13751
13752 @item interp_algo
13753 The interpolation algorithm used for resizing. One of the following:
13754 @table @option
13755 @item nn
13756 Nearest neighbour.
13757
13758 @item linear
13759 @item cubic
13760 @item cubic2p_bspline
13761 2-parameter cubic (B=1, C=0)
13762
13763 @item cubic2p_catmullrom
13764 2-parameter cubic (B=0, C=1/2)
13765
13766 @item cubic2p_b05c03
13767 2-parameter cubic (B=1/2, C=3/10)
13768
13769 @item super
13770 Supersampling
13771
13772 @item lanczos
13773 @end table
13774
13775 @end table
13776
13777 @section scale2ref
13778
13779 Scale (resize) the input video, based on a reference video.
13780
13781 See the scale filter for available options, scale2ref supports the same but
13782 uses the reference video instead of the main input as basis. scale2ref also
13783 supports the following additional constants for the @option{w} and
13784 @option{h} options:
13785
13786 @table @var
13787 @item main_w
13788 @item main_h
13789 The main input video's width and height
13790
13791 @item main_a
13792 The same as @var{main_w} / @var{main_h}
13793
13794 @item main_sar
13795 The main input video's sample aspect ratio
13796
13797 @item main_dar, mdar
13798 The main input video's display aspect ratio. Calculated from
13799 @code{(main_w / main_h) * main_sar}.
13800
13801 @item main_hsub
13802 @item main_vsub
13803 The main input video's horizontal and vertical chroma subsample values.
13804 For example for the pixel format "yuv422p" @var{hsub} is 2 and @var{vsub}
13805 is 1.
13806 @end table
13807
13808 @subsection Examples
13809
13810 @itemize
13811 @item
13812 Scale a subtitle stream (b) to match the main video (a) in size before overlaying
13813 @example
13814 'scale2ref[b][a];[a][b]overlay'
13815 @end example
13816 @end itemize
13817
13818 @anchor{selectivecolor}
13819 @section selectivecolor
13820
13821 Adjust cyan, magenta, yellow and black (CMYK) to certain ranges of colors (such
13822 as "reds", "yellows", "greens", "cyans", ...). The adjustment range is defined
13823 by the "purity" of the color (that is, how saturated it already is).
13824
13825 This filter is similar to the Adobe Photoshop Selective Color tool.
13826
13827 The filter accepts the following options:
13828
13829 @table @option
13830 @item correction_method
13831 Select color correction method.
13832
13833 Available values are:
13834 @table @samp
13835 @item absolute
13836 Specified adjustments are applied "as-is" (added/subtracted to original pixel
13837 component value).
13838 @item relative
13839 Specified adjustments are relative to the original component value.
13840 @end table
13841 Default is @code{absolute}.
13842 @item reds
13843 Adjustments for red pixels (pixels where the red component is the maximum)
13844 @item yellows
13845 Adjustments for yellow pixels (pixels where the blue component is the minimum)
13846 @item greens
13847 Adjustments for green pixels (pixels where the green component is the maximum)
13848 @item cyans
13849 Adjustments for cyan pixels (pixels where the red component is the minimum)
13850 @item blues
13851 Adjustments for blue pixels (pixels where the blue component is the maximum)
13852 @item magentas
13853 Adjustments for magenta pixels (pixels where the green component is the minimum)
13854 @item whites
13855 Adjustments for white pixels (pixels where all components are greater than 128)
13856 @item neutrals
13857 Adjustments for all pixels except pure black and pure white
13858 @item blacks
13859 Adjustments for black pixels (pixels where all components are lesser than 128)
13860 @item psfile
13861 Specify a Photoshop selective color file (@code{.asv}) to import the settings from.
13862 @end table
13863
13864 All the adjustment settings (@option{reds}, @option{yellows}, ...) accept up to
13865 4 space separated floating point adjustment values in the [-1,1] range,
13866 respectively to adjust the amount of cyan, magenta, yellow and black for the
13867 pixels of its range.
13868
13869 @subsection Examples
13870
13871 @itemize
13872 @item
13873 Increase cyan by 50% and reduce yellow by 33% in every green areas, and
13874 increase magenta by 27% in blue areas:
13875 @example
13876 selectivecolor=greens=.5 0 -.33 0:blues=0 .27
13877 @end example
13878
13879 @item
13880 Use a Photoshop selective color preset:
13881 @example
13882 selectivecolor=psfile=MySelectiveColorPresets/Misty.asv
13883 @end example
13884 @end itemize
13885
13886 @anchor{separatefields}
13887 @section separatefields
13888
13889 The @code{separatefields} takes a frame-based video input and splits
13890 each frame into its components fields, producing a new half height clip
13891 with twice the frame rate and twice the frame count.
13892
13893 This filter use field-dominance information in frame to decide which
13894 of each pair of fields to place first in the output.
13895 If it gets it wrong use @ref{setfield} filter before @code{separatefields} filter.
13896
13897 @section setdar, setsar
13898
13899 The @code{setdar} filter sets the Display Aspect Ratio for the filter
13900 output video.
13901
13902 This is done by changing the specified Sample (aka Pixel) Aspect
13903 Ratio, according to the following equation:
13904 @example
13905 @var{DAR} = @var{HORIZONTAL_RESOLUTION} / @var{VERTICAL_RESOLUTION} * @var{SAR}
13906 @end example
13907
13908 Keep in mind that the @code{setdar} filter does not modify the pixel
13909 dimensions of the video frame. Also, the display aspect ratio set by
13910 this filter may be changed by later filters in the filterchain,
13911 e.g. in case of scaling or if another "setdar" or a "setsar" filter is
13912 applied.
13913
13914 The @code{setsar} filter sets the Sample (aka Pixel) Aspect Ratio for
13915 the filter output video.
13916
13917 Note that as a consequence of the application of this filter, the
13918 output display aspect ratio will change according to the equation
13919 above.
13920
13921 Keep in mind that the sample aspect ratio set by the @code{setsar}
13922 filter may be changed by later filters in the filterchain, e.g. if
13923 another "setsar" or a "setdar" filter is applied.
13924
13925 It accepts the following parameters:
13926
13927 @table @option
13928 @item r, ratio, dar (@code{setdar} only), sar (@code{setsar} only)
13929 Set the aspect ratio used by the filter.
13930
13931 The parameter can be a floating point number string, an expression, or
13932 a string of the form @var{num}:@var{den}, where @var{num} and
13933 @var{den} are the numerator and denominator of the aspect ratio. If
13934 the parameter is not specified, it is assumed the value "0".
13935 In case the form "@var{num}:@var{den}" is used, the @code{:} character
13936 should be escaped.
13937
13938 @item max
13939 Set the maximum integer value to use for expressing numerator and
13940 denominator when reducing the expressed aspect ratio to a rational.
13941 Default value is @code{100}.
13942
13943 @end table
13944
13945 The parameter @var{sar} is an expression containing
13946 the following constants:
13947
13948 @table @option
13949 @item E, PI, PHI
13950 These are approximated values for the mathematical constants e
13951 (Euler's number), pi (Greek pi), and phi (the golden ratio).
13952
13953 @item w, h
13954 The input width and height.
13955
13956 @item a
13957 These are the same as @var{w} / @var{h}.
13958
13959 @item sar
13960 The input sample aspect ratio.
13961
13962 @item dar
13963 The input display aspect ratio. It is the same as
13964 (@var{w} / @var{h}) * @var{sar}.
13965
13966 @item hsub, vsub
13967 Horizontal and vertical chroma subsample values. For example, for the
13968 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
13969 @end table
13970
13971 @subsection Examples
13972
13973 @itemize
13974
13975 @item
13976 To change the display aspect ratio to 16:9, specify one of the following:
13977 @example
13978 setdar=dar=1.77777
13979 setdar=dar=16/9
13980 @end example
13981
13982 @item
13983 To change the sample aspect ratio to 10:11, specify:
13984 @example
13985 setsar=sar=10/11
13986 @end example
13987
13988 @item
13989 To set a display aspect ratio of 16:9, and specify a maximum integer value of
13990 1000 in the aspect ratio reduction, use the command:
13991 @example
13992 setdar=ratio=16/9:max=1000
13993 @end example
13994
13995 @end itemize
13996
13997 @anchor{setfield}
13998 @section setfield
13999
14000 Force field for the output video frame.
14001
14002 The @code{setfield} filter marks the interlace type field for the
14003 output frames. It does not change the input frame, but only sets the
14004 corresponding property, which affects how the frame is treated by
14005 following filters (e.g. @code{fieldorder} or @code{yadif}).
14006
14007 The filter accepts the following options:
14008
14009 @table @option
14010
14011 @item mode
14012 Available values are:
14013
14014 @table @samp
14015 @item auto
14016 Keep the same field property.
14017
14018 @item bff
14019 Mark the frame as bottom-field-first.
14020
14021 @item tff
14022 Mark the frame as top-field-first.
14023
14024 @item prog
14025 Mark the frame as progressive.
14026 @end table
14027 @end table
14028
14029 @section showinfo
14030
14031 Show a line containing various information for each input video frame.
14032 The input video is not modified.
14033
14034 The shown line contains a sequence of key/value pairs of the form
14035 @var{key}:@var{value}.
14036
14037 The following values are shown in the output:
14038
14039 @table @option
14040 @item n
14041 The (sequential) number of the input frame, starting from 0.
14042
14043 @item pts
14044 The Presentation TimeStamp of the input frame, expressed as a number of
14045 time base units. The time base unit depends on the filter input pad.
14046
14047 @item pts_time
14048 The Presentation TimeStamp of the input frame, expressed as a number of
14049 seconds.
14050
14051 @item pos
14052 The position of the frame in the input stream, or -1 if this information is
14053 unavailable and/or meaningless (for example in case of synthetic video).
14054
14055 @item fmt
14056 The pixel format name.
14057
14058 @item sar
14059 The sample aspect ratio of the input frame, expressed in the form
14060 @var{num}/@var{den}.
14061
14062 @item s
14063 The size of the input frame. For the syntax of this option, check the
14064 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
14065
14066 @item i
14067 The type of interlaced mode ("P" for "progressive", "T" for top field first, "B"
14068 for bottom field first).
14069
14070 @item iskey
14071 This is 1 if the frame is a key frame, 0 otherwise.
14072
14073 @item type
14074 The picture type of the input frame ("I" for an I-frame, "P" for a
14075 P-frame, "B" for a B-frame, or "?" for an unknown type).
14076 Also refer to the documentation of the @code{AVPictureType} enum and of
14077 the @code{av_get_picture_type_char} function defined in
14078 @file{libavutil/avutil.h}.
14079
14080 @item checksum
14081 The Adler-32 checksum (printed in hexadecimal) of all the planes of the input frame.
14082
14083 @item plane_checksum
14084 The Adler-32 checksum (printed in hexadecimal) of each plane of the input frame,
14085 expressed in the form "[@var{c0} @var{c1} @var{c2} @var{c3}]".
14086 @end table
14087
14088 @section showpalette
14089
14090 Displays the 256 colors palette of each frame. This filter is only relevant for
14091 @var{pal8} pixel format frames.
14092
14093 It accepts the following option:
14094
14095 @table @option
14096 @item s
14097 Set the size of the box used to represent one palette color entry. Default is
14098 @code{30} (for a @code{30x30} pixel box).
14099 @end table
14100
14101 @section shuffleframes
14102
14103 Reorder and/or duplicate and/or drop video frames.
14104
14105 It accepts the following parameters:
14106
14107 @table @option
14108 @item mapping
14109 Set the destination indexes of input frames.
14110 This is space or '|' separated list of indexes that maps input frames to output
14111 frames. Number of indexes also sets maximal value that each index may have.
14112 '-1' index have special meaning and that is to drop frame.
14113 @end table
14114
14115 The first frame has the index 0. The default is to keep the input unchanged.
14116
14117 @subsection Examples
14118
14119 @itemize
14120 @item
14121 Swap second and third frame of every three frames of the input:
14122 @example
14123 ffmpeg -i INPUT -vf "shuffleframes=0 2 1" OUTPUT
14124 @end example
14125
14126 @item
14127 Swap 10th and 1st frame of every ten frames of the input:
14128 @example
14129 ffmpeg -i INPUT -vf "shuffleframes=9 1 2 3 4 5 6 7 8 0" OUTPUT
14130 @end example
14131 @end itemize
14132
14133 @section shuffleplanes
14134
14135 Reorder and/or duplicate video planes.
14136
14137 It accepts the following parameters:
14138
14139 @table @option
14140
14141 @item map0
14142 The index of the input plane to be used as the first output plane.
14143
14144 @item map1
14145 The index of the input plane to be used as the second output plane.
14146
14147 @item map2
14148 The index of the input plane to be used as the third output plane.
14149
14150 @item map3
14151 The index of the input plane to be used as the fourth output plane.
14152
14153 @end table
14154
14155 The first plane has the index 0. The default is to keep the input unchanged.
14156
14157 @subsection Examples
14158
14159 @itemize
14160 @item
14161 Swap the second and third planes of the input:
14162 @example
14163 ffmpeg -i INPUT -vf shuffleplanes=0:2:1:3 OUTPUT
14164 @end example
14165 @end itemize
14166
14167 @anchor{signalstats}
14168 @section signalstats
14169 Evaluate various visual metrics that assist in determining issues associated
14170 with the digitization of analog video media.
14171
14172 By default the filter will log these metadata values:
14173
14174 @table @option
14175 @item YMIN
14176 Display the minimal Y value contained within the input frame. Expressed in
14177 range of [0-255].
14178
14179 @item YLOW
14180 Display the Y value at the 10% percentile within the input frame. Expressed in
14181 range of [0-255].
14182
14183 @item YAVG
14184 Display the average Y value within the input frame. Expressed in range of
14185 [0-255].
14186
14187 @item YHIGH
14188 Display the Y value at the 90% percentile within the input frame. Expressed in
14189 range of [0-255].
14190
14191 @item YMAX
14192 Display the maximum Y value contained within the input frame. Expressed in
14193 range of [0-255].
14194
14195 @item UMIN
14196 Display the minimal U value contained within the input frame. Expressed in
14197 range of [0-255].
14198
14199 @item ULOW
14200 Display the U value at the 10% percentile within the input frame. Expressed in
14201 range of [0-255].
14202
14203 @item UAVG
14204 Display the average U value within the input frame. Expressed in range of
14205 [0-255].
14206
14207 @item UHIGH
14208 Display the U value at the 90% percentile within the input frame. Expressed in
14209 range of [0-255].
14210
14211 @item UMAX
14212 Display the maximum U value contained within the input frame. Expressed in
14213 range of [0-255].
14214
14215 @item VMIN
14216 Display the minimal V value contained within the input frame. Expressed in
14217 range of [0-255].
14218
14219 @item VLOW
14220 Display the V value at the 10% percentile within the input frame. Expressed in
14221 range of [0-255].
14222
14223 @item VAVG
14224 Display the average V value within the input frame. Expressed in range of
14225 [0-255].
14226
14227 @item VHIGH
14228 Display the V value at the 90% percentile within the input frame. Expressed in
14229 range of [0-255].
14230
14231 @item VMAX
14232 Display the maximum V value contained within the input frame. Expressed in
14233 range of [0-255].
14234
14235 @item SATMIN
14236 Display the minimal saturation value contained within the input frame.
14237 Expressed in range of [0-~181.02].
14238
14239 @item SATLOW
14240 Display the saturation value at the 10% percentile within the input frame.
14241 Expressed in range of [0-~181.02].
14242
14243 @item SATAVG
14244 Display the average saturation value within the input frame. Expressed in range
14245 of [0-~181.02].
14246
14247 @item SATHIGH
14248 Display the saturation value at the 90% percentile within the input frame.
14249 Expressed in range of [0-~181.02].
14250
14251 @item SATMAX
14252 Display the maximum saturation value contained within the input frame.
14253 Expressed in range of [0-~181.02].
14254
14255 @item HUEMED
14256 Display the median value for hue within the input frame. Expressed in range of
14257 [0-360].
14258
14259 @item HUEAVG
14260 Display the average value for hue within the input frame. Expressed in range of
14261 [0-360].
14262
14263 @item YDIF
14264 Display the average of sample value difference between all values of the Y
14265 plane in the current frame and corresponding values of the previous input frame.
14266 Expressed in range of [0-255].
14267
14268 @item UDIF
14269 Display the average of sample value difference between all values of the U
14270 plane in the current frame and corresponding values of the previous input frame.
14271 Expressed in range of [0-255].
14272
14273 @item VDIF
14274 Display the average of sample value difference between all values of the V
14275 plane in the current frame and corresponding values of the previous input frame.
14276 Expressed in range of [0-255].
14277
14278 @item YBITDEPTH
14279 Display bit depth of Y plane in current frame.
14280 Expressed in range of [0-16].
14281
14282 @item UBITDEPTH
14283 Display bit depth of U plane in current frame.
14284 Expressed in range of [0-16].
14285
14286 @item VBITDEPTH
14287 Display bit depth of V plane in current frame.
14288 Expressed in range of [0-16].
14289 @end table
14290
14291 The filter accepts the following options:
14292
14293 @table @option
14294 @item stat
14295 @item out
14296
14297 @option{stat} specify an additional form of image analysis.
14298 @option{out} output video with the specified type of pixel highlighted.
14299
14300 Both options accept the following values:
14301
14302 @table @samp
14303 @item tout
14304 Identify @var{temporal outliers} pixels. A @var{temporal outlier} is a pixel
14305 unlike the neighboring pixels of the same field. Examples of temporal outliers
14306 include the results of video dropouts, head clogs, or tape tracking issues.
14307
14308 @item vrep
14309 Identify @var{vertical line repetition}. Vertical line repetition includes
14310 similar rows of pixels within a frame. In born-digital video vertical line
14311 repetition is common, but this pattern is uncommon in video digitized from an
14312 analog source. When it occurs in video that results from the digitization of an
14313 analog source it can indicate concealment from a dropout compensator.
14314
14315 @item brng
14316 Identify pixels that fall outside of legal broadcast range.
14317 @end table
14318
14319 @item color, c
14320 Set the highlight color for the @option{out} option. The default color is
14321 yellow.
14322 @end table
14323
14324 @subsection Examples
14325
14326 @itemize
14327 @item
14328 Output data of various video metrics:
14329 @example
14330 ffprobe -f lavfi movie=example.mov,signalstats="stat=tout+vrep+brng" -show_frames
14331 @end example
14332
14333 @item
14334 Output specific data about the minimum and maximum values of the Y plane per frame:
14335 @example
14336 ffprobe -f lavfi movie=example.mov,signalstats -show_entries frame_tags=lavfi.signalstats.YMAX,lavfi.signalstats.YMIN
14337 @end example
14338
14339 @item
14340 Playback video while highlighting pixels that are outside of broadcast range in red.
14341 @example
14342 ffplay example.mov -vf signalstats="out=brng:color=red"
14343 @end example
14344
14345 @item
14346 Playback video with signalstats metadata drawn over the frame.
14347 @example
14348 ffplay example.mov -vf signalstats=stat=brng+vrep+tout,drawtext=fontfile=FreeSerif.ttf:textfile=signalstat_drawtext.txt
14349 @end example
14350
14351 The contents of signalstat_drawtext.txt used in the command are:
14352 @example
14353 time %@{pts:hms@}
14354 Y (%@{metadata:lavfi.signalstats.YMIN@}-%@{metadata:lavfi.signalstats.YMAX@})
14355 U (%@{metadata:lavfi.signalstats.UMIN@}-%@{metadata:lavfi.signalstats.UMAX@})
14356 V (%@{metadata:lavfi.signalstats.VMIN@}-%@{metadata:lavfi.signalstats.VMAX@})
14357 saturation maximum: %@{metadata:lavfi.signalstats.SATMAX@}
14358
14359 @end example
14360 @end itemize
14361
14362 @anchor{signature}
14363 @section signature
14364
14365 Calculates the MPEG-7 Video Signature. The filter can handle more than one
14366 input. In this case the matching between the inputs can be calculated additionally.
14367 The filter always passes through the first input. The signature of each stream can
14368 be written into a file.
14369
14370 It accepts the following options:
14371
14372 @table @option
14373 @item detectmode
14374 Enable or disable the matching process.
14375
14376 Available values are:
14377
14378 @table @samp
14379 @item off
14380 Disable the calculation of a matching (default).
14381 @item full
14382 Calculate the matching for the whole video and output whether the whole video
14383 matches or only parts.
14384 @item fast
14385 Calculate only until a matching is found or the video ends. Should be faster in
14386 some cases.
14387 @end table
14388
14389 @item nb_inputs
14390 Set the number of inputs. The option value must be a non negative integer.
14391 Default value is 1.
14392
14393 @item filename
14394 Set the path to which the output is written. If there is more than one input,
14395 the path must be a prototype, i.e. must contain %d or %0nd (where n is a positive
14396 integer), that will be replaced with the input number. If no filename is
14397 specified, no output will be written. This is the default.
14398
14399 @item format
14400 Choose the output format.
14401
14402 Available values are:
14403
14404 @table @samp
14405 @item binary
14406 Use the specified binary representation (default).
14407 @item xml
14408 Use the specified xml representation.
14409 @end table
14410
14411 @item th_d
14412 Set threshold to detect one word as similar. The option value must be an integer
14413 greater than zero. The default value is 9000.
14414
14415 @item th_dc
14416 Set threshold to detect all words as similar. The option value must be an integer
14417 greater than zero. The default value is 60000.
14418
14419 @item th_xh
14420 Set threshold to detect frames as similar. The option value must be an integer
14421 greater than zero. The default value is 116.
14422
14423 @item th_di
14424 Set the minimum length of a sequence in frames to recognize it as matching
14425 sequence. The option value must be a non negative integer value.
14426 The default value is 0.
14427
14428 @item th_it
14429 Set the minimum relation, that matching frames to all frames must have.
14430 The option value must be a double value between 0 and 1. The default value is 0.5.
14431 @end table
14432
14433 @subsection Examples
14434
14435 @itemize
14436 @item
14437 To calculate the signature of an input video and store it in signature.bin:
14438 @example
14439 ffmpeg -i input.mkv -vf signature=filename=signature.bin -map 0:v -f null -
14440 @end example
14441
14442 @item
14443 To detect whether two videos match and store the signatures in XML format in
14444 signature0.xml and signature1.xml:
14445 @example
14446 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 -
14447 @end example
14448
14449 @end itemize
14450
14451 @anchor{smartblur}
14452 @section smartblur
14453
14454 Blur the input video without impacting the outlines.
14455
14456 It accepts the following options:
14457
14458 @table @option
14459 @item luma_radius, lr
14460 Set the luma radius. The option value must be a float number in
14461 the range [0.1,5.0] that specifies the variance of the gaussian filter
14462 used to blur the image (slower if larger). Default value is 1.0.
14463
14464 @item luma_strength, ls
14465 Set the luma strength. The option value must be a float number
14466 in the range [-1.0,1.0] that configures the blurring. A value included
14467 in [0.0,1.0] will blur the image whereas a value included in
14468 [-1.0,0.0] will sharpen the image. Default value is 1.0.
14469
14470 @item luma_threshold, lt
14471 Set the luma threshold used as a coefficient to determine
14472 whether a pixel should be blurred or not. The option value must be an
14473 integer in the range [-30,30]. A value of 0 will filter all the image,
14474 a value included in [0,30] will filter flat areas and a value included
14475 in [-30,0] will filter edges. Default value is 0.
14476
14477 @item chroma_radius, cr
14478 Set the chroma radius. The option value must be a float number in
14479 the range [0.1,5.0] that specifies the variance of the gaussian filter
14480 used to blur the image (slower if larger). Default value is @option{luma_radius}.
14481
14482 @item chroma_strength, cs
14483 Set the chroma strength. The option value must be a float number
14484 in the range [-1.0,1.0] that configures the blurring. A value included
14485 in [0.0,1.0] will blur the image whereas a value included in
14486 [-1.0,0.0] will sharpen the image. Default value is @option{luma_strength}.
14487
14488 @item chroma_threshold, ct
14489 Set the chroma threshold used as a coefficient to determine
14490 whether a pixel should be blurred or not. The option value must be an
14491 integer in the range [-30,30]. A value of 0 will filter all the image,
14492 a value included in [0,30] will filter flat areas and a value included
14493 in [-30,0] will filter edges. Default value is @option{luma_threshold}.
14494 @end table
14495
14496 If a chroma option is not explicitly set, the corresponding luma value
14497 is set.
14498
14499 @section ssim
14500
14501 Obtain the SSIM (Structural SImilarity Metric) between two input videos.
14502
14503 This filter takes in input two input videos, the first input is
14504 considered the "main" source and is passed unchanged to the
14505 output. The second input is used as a "reference" video for computing
14506 the SSIM.
14507
14508 Both video inputs must have the same resolution and pixel format for
14509 this filter to work correctly. Also it assumes that both inputs
14510 have the same number of frames, which are compared one by one.
14511
14512 The filter stores the calculated SSIM of each frame.
14513
14514 The description of the accepted parameters follows.
14515
14516 @table @option
14517 @item stats_file, f
14518 If specified the filter will use the named file to save the SSIM of
14519 each individual frame. When filename equals "-" the data is sent to
14520 standard output.
14521 @end table
14522
14523 The file printed if @var{stats_file} is selected, contains a sequence of
14524 key/value pairs of the form @var{key}:@var{value} for each compared
14525 couple of frames.
14526
14527 A description of each shown parameter follows:
14528
14529 @table @option
14530 @item n
14531 sequential number of the input frame, starting from 1
14532
14533 @item Y, U, V, R, G, B
14534 SSIM of the compared frames for the component specified by the suffix.
14535
14536 @item All
14537 SSIM of the compared frames for the whole frame.
14538
14539 @item dB
14540 Same as above but in dB representation.
14541 @end table
14542
14543 This filter also supports the @ref{framesync} options.
14544
14545 For example:
14546 @example
14547 movie=ref_movie.mpg, setpts=PTS-STARTPTS [main];
14548 [main][ref] ssim="stats_file=stats.log" [out]
14549 @end example
14550
14551 On this example the input file being processed is compared with the
14552 reference file @file{ref_movie.mpg}. The SSIM of each individual frame
14553 is stored in @file{stats.log}.
14554
14555 Another example with both psnr and ssim at same time:
14556 @example
14557 ffmpeg -i main.mpg -i ref.mpg -lavfi  "ssim;[0:v][1:v]psnr" -f null -
14558 @end example
14559
14560 @section stereo3d
14561
14562 Convert between different stereoscopic image formats.
14563
14564 The filters accept the following options:
14565
14566 @table @option
14567 @item in
14568 Set stereoscopic image format of input.
14569
14570 Available values for input image formats are:
14571 @table @samp
14572 @item sbsl
14573 side by side parallel (left eye left, right eye right)
14574
14575 @item sbsr
14576 side by side crosseye (right eye left, left eye right)
14577
14578 @item sbs2l
14579 side by side parallel with half width resolution
14580 (left eye left, right eye right)
14581
14582 @item sbs2r
14583 side by side crosseye with half width resolution
14584 (right eye left, left eye right)
14585
14586 @item abl
14587 above-below (left eye above, right eye below)
14588
14589 @item abr
14590 above-below (right eye above, left eye below)
14591
14592 @item ab2l
14593 above-below with half height resolution
14594 (left eye above, right eye below)
14595
14596 @item ab2r
14597 above-below with half height resolution
14598 (right eye above, left eye below)
14599
14600 @item al
14601 alternating frames (left eye first, right eye second)
14602
14603 @item ar
14604 alternating frames (right eye first, left eye second)
14605
14606 @item irl
14607 interleaved rows (left eye has top row, right eye starts on next row)
14608
14609 @item irr
14610 interleaved rows (right eye has top row, left eye starts on next row)
14611
14612 @item icl
14613 interleaved columns, left eye first
14614
14615 @item icr
14616 interleaved columns, right eye first
14617
14618 Default value is @samp{sbsl}.
14619 @end table
14620
14621 @item out
14622 Set stereoscopic image format of output.
14623
14624 @table @samp
14625 @item sbsl
14626 side by side parallel (left eye left, right eye right)
14627
14628 @item sbsr
14629 side by side crosseye (right eye left, left eye right)
14630
14631 @item sbs2l
14632 side by side parallel with half width resolution
14633 (left eye left, right eye right)
14634
14635 @item sbs2r
14636 side by side crosseye with half width resolution
14637 (right eye left, left eye right)
14638
14639 @item abl
14640 above-below (left eye above, right eye below)
14641
14642 @item abr
14643 above-below (right eye above, left eye below)
14644
14645 @item ab2l
14646 above-below with half height resolution
14647 (left eye above, right eye below)
14648
14649 @item ab2r
14650 above-below with half height resolution
14651 (right eye above, left eye below)
14652
14653 @item al
14654 alternating frames (left eye first, right eye second)
14655
14656 @item ar
14657 alternating frames (right eye first, left eye second)
14658
14659 @item irl
14660 interleaved rows (left eye has top row, right eye starts on next row)
14661
14662 @item irr
14663 interleaved rows (right eye has top row, left eye starts on next row)
14664
14665 @item arbg
14666 anaglyph red/blue gray
14667 (red filter on left eye, blue filter on right eye)
14668
14669 @item argg
14670 anaglyph red/green gray
14671 (red filter on left eye, green filter on right eye)
14672
14673 @item arcg
14674 anaglyph red/cyan gray
14675 (red filter on left eye, cyan filter on right eye)
14676
14677 @item arch
14678 anaglyph red/cyan half colored
14679 (red filter on left eye, cyan filter on right eye)
14680
14681 @item arcc
14682 anaglyph red/cyan color
14683 (red filter on left eye, cyan filter on right eye)
14684
14685 @item arcd
14686 anaglyph red/cyan color optimized with the least squares projection of dubois
14687 (red filter on left eye, cyan filter on right eye)
14688
14689 @item agmg
14690 anaglyph green/magenta gray
14691 (green filter on left eye, magenta filter on right eye)
14692
14693 @item agmh
14694 anaglyph green/magenta half colored
14695 (green filter on left eye, magenta filter on right eye)
14696
14697 @item agmc
14698 anaglyph green/magenta colored
14699 (green filter on left eye, magenta filter on right eye)
14700
14701 @item agmd
14702 anaglyph green/magenta color optimized with the least squares projection of dubois
14703 (green filter on left eye, magenta filter on right eye)
14704
14705 @item aybg
14706 anaglyph yellow/blue gray
14707 (yellow filter on left eye, blue filter on right eye)
14708
14709 @item aybh
14710 anaglyph yellow/blue half colored
14711 (yellow filter on left eye, blue filter on right eye)
14712
14713 @item aybc
14714 anaglyph yellow/blue colored
14715 (yellow filter on left eye, blue filter on right eye)
14716
14717 @item aybd
14718 anaglyph yellow/blue color optimized with the least squares projection of dubois
14719 (yellow filter on left eye, blue filter on right eye)
14720
14721 @item ml
14722 mono output (left eye only)
14723
14724 @item mr
14725 mono output (right eye only)
14726
14727 @item chl
14728 checkerboard, left eye first
14729
14730 @item chr
14731 checkerboard, right eye first
14732
14733 @item icl
14734 interleaved columns, left eye first
14735
14736 @item icr
14737 interleaved columns, right eye first
14738
14739 @item hdmi
14740 HDMI frame pack
14741 @end table
14742
14743 Default value is @samp{arcd}.
14744 @end table
14745
14746 @subsection Examples
14747
14748 @itemize
14749 @item
14750 Convert input video from side by side parallel to anaglyph yellow/blue dubois:
14751 @example
14752 stereo3d=sbsl:aybd
14753 @end example
14754
14755 @item
14756 Convert input video from above below (left eye above, right eye below) to side by side crosseye.
14757 @example
14758 stereo3d=abl:sbsr
14759 @end example
14760 @end itemize
14761
14762 @section streamselect, astreamselect
14763 Select video or audio streams.
14764
14765 The filter accepts the following options:
14766
14767 @table @option
14768 @item inputs
14769 Set number of inputs. Default is 2.
14770
14771 @item map
14772 Set input indexes to remap to outputs.
14773 @end table
14774
14775 @subsection Commands
14776
14777 The @code{streamselect} and @code{astreamselect} filter supports the following
14778 commands:
14779
14780 @table @option
14781 @item map
14782 Set input indexes to remap to outputs.
14783 @end table
14784
14785 @subsection Examples
14786
14787 @itemize
14788 @item
14789 Select first 5 seconds 1st stream and rest of time 2nd stream:
14790 @example
14791 sendcmd='5.0 streamselect map 1',streamselect=inputs=2:map=0
14792 @end example
14793
14794 @item
14795 Same as above, but for audio:
14796 @example
14797 asendcmd='5.0 astreamselect map 1',astreamselect=inputs=2:map=0
14798 @end example
14799 @end itemize
14800
14801 @section sobel
14802 Apply sobel operator to input video stream.
14803
14804 The filter accepts the following option:
14805
14806 @table @option
14807 @item planes
14808 Set which planes will be processed, unprocessed planes will be copied.
14809 By default value 0xf, all planes will be processed.
14810
14811 @item scale
14812 Set value which will be multiplied with filtered result.
14813
14814 @item delta
14815 Set value which will be added to filtered result.
14816 @end table
14817
14818 @anchor{spp}
14819 @section spp
14820
14821 Apply a simple postprocessing filter that compresses and decompresses the image
14822 at several (or - in the case of @option{quality} level @code{6} - all) shifts
14823 and average the results.
14824
14825 The filter accepts the following options:
14826
14827 @table @option
14828 @item quality
14829 Set quality. This option defines the number of levels for averaging. It accepts
14830 an integer in the range 0-6. If set to @code{0}, the filter will have no
14831 effect. A value of @code{6} means the higher quality. For each increment of
14832 that value the speed drops by a factor of approximately 2.  Default value is
14833 @code{3}.
14834
14835 @item qp
14836 Force a constant quantization parameter. If not set, the filter will use the QP
14837 from the video stream (if available).
14838
14839 @item mode
14840 Set thresholding mode. Available modes are:
14841
14842 @table @samp
14843 @item hard
14844 Set hard thresholding (default).
14845 @item soft
14846 Set soft thresholding (better de-ringing effect, but likely blurrier).
14847 @end table
14848
14849 @item use_bframe_qp
14850 Enable the use of the QP from the B-Frames if set to @code{1}. Using this
14851 option may cause flicker since the B-Frames have often larger QP. Default is
14852 @code{0} (not enabled).
14853 @end table
14854
14855 @anchor{subtitles}
14856 @section subtitles
14857
14858 Draw subtitles on top of input video using the libass library.
14859
14860 To enable compilation of this filter you need to configure FFmpeg with
14861 @code{--enable-libass}. This filter also requires a build with libavcodec and
14862 libavformat to convert the passed subtitles file to ASS (Advanced Substation
14863 Alpha) subtitles format.
14864
14865 The filter accepts the following options:
14866
14867 @table @option
14868 @item filename, f
14869 Set the filename of the subtitle file to read. It must be specified.
14870
14871 @item original_size
14872 Specify the size of the original video, the video for which the ASS file
14873 was composed. For the syntax of this option, check the
14874 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
14875 Due to a misdesign in ASS aspect ratio arithmetic, this is necessary to
14876 correctly scale the fonts if the aspect ratio has been changed.
14877
14878 @item fontsdir
14879 Set a directory path containing fonts that can be used by the filter.
14880 These fonts will be used in addition to whatever the font provider uses.
14881
14882 @item alpha
14883 Process alpha channel, by default alpha channel is untouched.
14884
14885 @item charenc
14886 Set subtitles input character encoding. @code{subtitles} filter only. Only
14887 useful if not UTF-8.
14888
14889 @item stream_index, si
14890 Set subtitles stream index. @code{subtitles} filter only.
14891
14892 @item force_style
14893 Override default style or script info parameters of the subtitles. It accepts a
14894 string containing ASS style format @code{KEY=VALUE} couples separated by ",".
14895 @end table
14896
14897 If the first key is not specified, it is assumed that the first value
14898 specifies the @option{filename}.
14899
14900 For example, to render the file @file{sub.srt} on top of the input
14901 video, use the command:
14902 @example
14903 subtitles=sub.srt
14904 @end example
14905
14906 which is equivalent to:
14907 @example
14908 subtitles=filename=sub.srt
14909 @end example
14910
14911 To render the default subtitles stream from file @file{video.mkv}, use:
14912 @example
14913 subtitles=video.mkv
14914 @end example
14915
14916 To render the second subtitles stream from that file, use:
14917 @example
14918 subtitles=video.mkv:si=1
14919 @end example
14920
14921 To make the subtitles stream from @file{sub.srt} appear in transparent green
14922 @code{DejaVu Serif}, use:
14923 @example
14924 subtitles=sub.srt:force_style='FontName=DejaVu Serif,PrimaryColour=&HAA00FF00'
14925 @end example
14926
14927 @section super2xsai
14928
14929 Scale the input by 2x and smooth using the Super2xSaI (Scale and
14930 Interpolate) pixel art scaling algorithm.
14931
14932 Useful for enlarging pixel art images without reducing sharpness.
14933
14934 @section swaprect
14935
14936 Swap two rectangular objects in video.
14937
14938 This filter accepts the following options:
14939
14940 @table @option
14941 @item w
14942 Set object width.
14943
14944 @item h
14945 Set object height.
14946
14947 @item x1
14948 Set 1st rect x coordinate.
14949
14950 @item y1
14951 Set 1st rect y coordinate.
14952
14953 @item x2
14954 Set 2nd rect x coordinate.
14955
14956 @item y2
14957 Set 2nd rect y coordinate.
14958
14959 All expressions are evaluated once for each frame.
14960 @end table
14961
14962 The all options are expressions containing the following constants:
14963
14964 @table @option
14965 @item w
14966 @item h
14967 The input width and height.
14968
14969 @item a
14970 same as @var{w} / @var{h}
14971
14972 @item sar
14973 input sample aspect ratio
14974
14975 @item dar
14976 input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}
14977
14978 @item n
14979 The number of the input frame, starting from 0.
14980
14981 @item t
14982 The timestamp expressed in seconds. It's NAN if the input timestamp is unknown.
14983
14984 @item pos
14985 the position in the file of the input frame, NAN if unknown
14986 @end table
14987
14988 @section swapuv
14989 Swap U & V plane.
14990
14991 @section telecine
14992
14993 Apply telecine process to the video.
14994
14995 This filter accepts the following options:
14996
14997 @table @option
14998 @item first_field
14999 @table @samp
15000 @item top, t
15001 top field first
15002 @item bottom, b
15003 bottom field first
15004 The default value is @code{top}.
15005 @end table
15006
15007 @item pattern
15008 A string of numbers representing the pulldown pattern you wish to apply.
15009 The default value is @code{23}.
15010 @end table
15011
15012 @example
15013 Some typical patterns:
15014
15015 NTSC output (30i):
15016 27.5p: 32222
15017 24p: 23 (classic)
15018 24p: 2332 (preferred)
15019 20p: 33
15020 18p: 334
15021 16p: 3444
15022
15023 PAL output (25i):
15024 27.5p: 12222
15025 24p: 222222222223 ("Euro pulldown")
15026 16.67p: 33
15027 16p: 33333334
15028 @end example
15029
15030 @section threshold
15031
15032 Apply threshold effect to video stream.
15033
15034 This filter needs four video streams to perform thresholding.
15035 First stream is stream we are filtering.
15036 Second stream is holding threshold values, third stream is holding min values,
15037 and last, fourth stream is holding max values.
15038
15039 The filter accepts the following option:
15040
15041 @table @option
15042 @item planes
15043 Set which planes will be processed, unprocessed planes will be copied.
15044 By default value 0xf, all planes will be processed.
15045 @end table
15046
15047 For example if first stream pixel's component value is less then threshold value
15048 of pixel component from 2nd threshold stream, third stream value will picked,
15049 otherwise fourth stream pixel component value will be picked.
15050
15051 Using color source filter one can perform various types of thresholding:
15052
15053 @subsection Examples
15054
15055 @itemize
15056 @item
15057 Binary threshold, using gray color as threshold:
15058 @example
15059 ffmpeg -i 320x240.avi -f lavfi -i color=gray -f lavfi -i color=black -f lavfi -i color=white -lavfi threshold output.avi
15060 @end example
15061
15062 @item
15063 Inverted binary threshold, using gray color as threshold:
15064 @example
15065 ffmpeg -i 320x240.avi -f lavfi -i color=gray -f lavfi -i color=white -f lavfi -i color=black -lavfi threshold output.avi
15066 @end example
15067
15068 @item
15069 Truncate binary threshold, using gray color as threshold:
15070 @example
15071 ffmpeg -i 320x240.avi -f lavfi -i color=gray -i 320x240.avi -f lavfi -i color=gray -lavfi threshold output.avi
15072 @end example
15073
15074 @item
15075 Threshold to zero, using gray color as threshold:
15076 @example
15077 ffmpeg -i 320x240.avi -f lavfi -i color=gray -f lavfi -i color=white -i 320x240.avi -lavfi threshold output.avi
15078 @end example
15079
15080 @item
15081 Inverted threshold to zero, using gray color as threshold:
15082 @example
15083 ffmpeg -i 320x240.avi -f lavfi -i color=gray -i 320x240.avi -f lavfi -i color=white -lavfi threshold output.avi
15084 @end example
15085 @end itemize
15086
15087 @section thumbnail
15088 Select the most representative frame in a given sequence of consecutive frames.
15089
15090 The filter accepts the following options:
15091
15092 @table @option
15093 @item n
15094 Set the frames batch size to analyze; in a set of @var{n} frames, the filter
15095 will pick one of them, and then handle the next batch of @var{n} frames until
15096 the end. Default is @code{100}.
15097 @end table
15098
15099 Since the filter keeps track of the whole frames sequence, a bigger @var{n}
15100 value will result in a higher memory usage, so a high value is not recommended.
15101
15102 @subsection Examples
15103
15104 @itemize
15105 @item
15106 Extract one picture each 50 frames:
15107 @example
15108 thumbnail=50
15109 @end example
15110
15111 @item
15112 Complete example of a thumbnail creation with @command{ffmpeg}:
15113 @example
15114 ffmpeg -i in.avi -vf thumbnail,scale=300:200 -frames:v 1 out.png
15115 @end example
15116 @end itemize
15117
15118 @section tile
15119
15120 Tile several successive frames together.
15121
15122 The filter accepts the following options:
15123
15124 @table @option
15125
15126 @item layout
15127 Set the grid size (i.e. the number of lines and columns). For the syntax of
15128 this option, check the
15129 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
15130
15131 @item nb_frames
15132 Set the maximum number of frames to render in the given area. It must be less
15133 than or equal to @var{w}x@var{h}. The default value is @code{0}, meaning all
15134 the area will be used.
15135
15136 @item margin
15137 Set the outer border margin in pixels.
15138
15139 @item padding
15140 Set the inner border thickness (i.e. the number of pixels between frames). For
15141 more advanced padding options (such as having different values for the edges),
15142 refer to the pad video filter.
15143
15144 @item color
15145 Specify the color of the unused area. For the syntax of this option, check the
15146 "Color" section in the ffmpeg-utils manual. The default value of @var{color}
15147 is "black".
15148
15149 @item overlap
15150 Set the number of frames to overlap when tiling several successive frames together.
15151 The value must be between @code{0} and @var{nb_frames - 1}.
15152
15153 @item init_padding
15154 Set the number of frames to initially be empty before displaying first output frame.
15155 This controls how soon will one get first output frame.
15156 The value must be between @code{0} and @var{nb_frames - 1}.
15157 @end table
15158
15159 @subsection Examples
15160
15161 @itemize
15162 @item
15163 Produce 8x8 PNG tiles of all keyframes (@option{-skip_frame nokey}) in a movie:
15164 @example
15165 ffmpeg -skip_frame nokey -i file.avi -vf 'scale=128:72,tile=8x8' -an -vsync 0 keyframes%03d.png
15166 @end example
15167 The @option{-vsync 0} is necessary to prevent @command{ffmpeg} from
15168 duplicating each output frame to accommodate the originally detected frame
15169 rate.
15170
15171 @item
15172 Display @code{5} pictures in an area of @code{3x2} frames,
15173 with @code{7} pixels between them, and @code{2} pixels of initial margin, using
15174 mixed flat and named options:
15175 @example
15176 tile=3x2:nb_frames=5:padding=7:margin=2
15177 @end example
15178 @end itemize
15179
15180 @section tinterlace
15181
15182 Perform various types of temporal field interlacing.
15183
15184 Frames are counted starting from 1, so the first input frame is
15185 considered odd.
15186
15187 The filter accepts the following options:
15188
15189 @table @option
15190
15191 @item mode
15192 Specify the mode of the interlacing. This option can also be specified
15193 as a value alone. See below for a list of values for this option.
15194
15195 Available values are:
15196
15197 @table @samp
15198 @item merge, 0
15199 Move odd frames into the upper field, even into the lower field,
15200 generating a double height frame at half frame rate.
15201 @example
15202  ------> time
15203 Input:
15204 Frame 1         Frame 2         Frame 3         Frame 4
15205
15206 11111           22222           33333           44444
15207 11111           22222           33333           44444
15208 11111           22222           33333           44444
15209 11111           22222           33333           44444
15210
15211 Output:
15212 11111                           33333
15213 22222                           44444
15214 11111                           33333
15215 22222                           44444
15216 11111                           33333
15217 22222                           44444
15218 11111                           33333
15219 22222                           44444
15220 @end example
15221
15222 @item drop_even, 1
15223 Only output odd frames, even frames are dropped, generating a frame with
15224 unchanged height at half frame rate.
15225
15226 @example
15227  ------> time
15228 Input:
15229 Frame 1         Frame 2         Frame 3         Frame 4
15230
15231 11111           22222           33333           44444
15232 11111           22222           33333           44444
15233 11111           22222           33333           44444
15234 11111           22222           33333           44444
15235
15236 Output:
15237 11111                           33333
15238 11111                           33333
15239 11111                           33333
15240 11111                           33333
15241 @end example
15242
15243 @item drop_odd, 2
15244 Only output even frames, odd frames are dropped, generating a frame with
15245 unchanged height at half frame rate.
15246
15247 @example
15248  ------> time
15249 Input:
15250 Frame 1         Frame 2         Frame 3         Frame 4
15251
15252 11111           22222           33333           44444
15253 11111           22222           33333           44444
15254 11111           22222           33333           44444
15255 11111           22222           33333           44444
15256
15257 Output:
15258                 22222                           44444
15259                 22222                           44444
15260                 22222                           44444
15261                 22222                           44444
15262 @end example
15263
15264 @item pad, 3
15265 Expand each frame to full height, but pad alternate lines with black,
15266 generating a frame with double height at the same input frame rate.
15267
15268 @example
15269  ------> time
15270 Input:
15271 Frame 1         Frame 2         Frame 3         Frame 4
15272
15273 11111           22222           33333           44444
15274 11111           22222           33333           44444
15275 11111           22222           33333           44444
15276 11111           22222           33333           44444
15277
15278 Output:
15279 11111           .....           33333           .....
15280 .....           22222           .....           44444
15281 11111           .....           33333           .....
15282 .....           22222           .....           44444
15283 11111           .....           33333           .....
15284 .....           22222           .....           44444
15285 11111           .....           33333           .....
15286 .....           22222           .....           44444
15287 @end example
15288
15289
15290 @item interleave_top, 4
15291 Interleave the upper field from odd frames with the lower field from
15292 even frames, generating a frame with unchanged height at half frame rate.
15293
15294 @example
15295  ------> time
15296 Input:
15297 Frame 1         Frame 2         Frame 3         Frame 4
15298
15299 11111<-         22222           33333<-         44444
15300 11111           22222<-         33333           44444<-
15301 11111<-         22222           33333<-         44444
15302 11111           22222<-         33333           44444<-
15303
15304 Output:
15305 11111                           33333
15306 22222                           44444
15307 11111                           33333
15308 22222                           44444
15309 @end example
15310
15311
15312 @item interleave_bottom, 5
15313 Interleave the lower field from odd frames with the upper field from
15314 even frames, generating a frame with unchanged height at half frame rate.
15315
15316 @example
15317  ------> time
15318 Input:
15319 Frame 1         Frame 2         Frame 3         Frame 4
15320
15321 11111           22222<-         33333           44444<-
15322 11111<-         22222           33333<-         44444
15323 11111           22222<-         33333           44444<-
15324 11111<-         22222           33333<-         44444
15325
15326 Output:
15327 22222                           44444
15328 11111                           33333
15329 22222                           44444
15330 11111                           33333
15331 @end example
15332
15333
15334 @item interlacex2, 6
15335 Double frame rate with unchanged height. Frames are inserted each
15336 containing the second temporal field from the previous input frame and
15337 the first temporal field from the next input frame. This mode relies on
15338 the top_field_first flag. Useful for interlaced video displays with no
15339 field synchronisation.
15340
15341 @example
15342  ------> time
15343 Input:
15344 Frame 1         Frame 2         Frame 3         Frame 4
15345
15346 11111           22222           33333           44444
15347  11111           22222           33333           44444
15348 11111           22222           33333           44444
15349  11111           22222           33333           44444
15350
15351 Output:
15352 11111   22222   22222   33333   33333   44444   44444
15353  11111   11111   22222   22222   33333   33333   44444
15354 11111   22222   22222   33333   33333   44444   44444
15355  11111   11111   22222   22222   33333   33333   44444
15356 @end example
15357
15358
15359 @item mergex2, 7
15360 Move odd frames into the upper field, even into the lower field,
15361 generating a double height frame at same frame rate.
15362
15363 @example
15364  ------> time
15365 Input:
15366 Frame 1         Frame 2         Frame 3         Frame 4
15367
15368 11111           22222           33333           44444
15369 11111           22222           33333           44444
15370 11111           22222           33333           44444
15371 11111           22222           33333           44444
15372
15373 Output:
15374 11111           33333           33333           55555
15375 22222           22222           44444           44444
15376 11111           33333           33333           55555
15377 22222           22222           44444           44444
15378 11111           33333           33333           55555
15379 22222           22222           44444           44444
15380 11111           33333           33333           55555
15381 22222           22222           44444           44444
15382 @end example
15383
15384 @end table
15385
15386 Numeric values are deprecated but are accepted for backward
15387 compatibility reasons.
15388
15389 Default mode is @code{merge}.
15390
15391 @item flags
15392 Specify flags influencing the filter process.
15393
15394 Available value for @var{flags} is:
15395
15396 @table @option
15397 @item low_pass_filter, vlfp
15398 Enable linear vertical low-pass filtering in the filter.
15399 Vertical low-pass filtering is required when creating an interlaced
15400 destination from a progressive source which contains high-frequency
15401 vertical detail. Filtering will reduce interlace 'twitter' and Moire
15402 patterning.
15403
15404 @item complex_filter, cvlfp
15405 Enable complex vertical low-pass filtering.
15406 This will slightly less reduce interlace 'twitter' and Moire
15407 patterning but better retain detail and subjective sharpness impression.
15408
15409 @end table
15410
15411 Vertical low-pass filtering can only be enabled for @option{mode}
15412 @var{interleave_top} and @var{interleave_bottom}.
15413
15414 @end table
15415
15416 @section tonemap
15417 Tone map colors from different dynamic ranges.
15418
15419 This filter expects data in single precision floating point, as it needs to
15420 operate on (and can output) out-of-range values. Another filter, such as
15421 @ref{zscale}, is needed to convert the resulting frame to a usable format.
15422
15423 The tonemapping algorithms implemented only work on linear light, so input
15424 data should be linearized beforehand (and possibly correctly tagged).
15425
15426 @example
15427 ffmpeg -i INPUT -vf zscale=transfer=linear,tonemap=clip,zscale=transfer=bt709,format=yuv420p OUTPUT
15428 @end example
15429
15430 @subsection Options
15431 The filter accepts the following options.
15432
15433 @table @option
15434 @item tonemap
15435 Set the tone map algorithm to use.
15436
15437 Possible values are:
15438 @table @var
15439 @item none
15440 Do not apply any tone map, only desaturate overbright pixels.
15441
15442 @item clip
15443 Hard-clip any out-of-range values. Use it for perfect color accuracy for
15444 in-range values, while distorting out-of-range values.
15445
15446 @item linear
15447 Stretch the entire reference gamut to a linear multiple of the display.
15448
15449 @item gamma
15450 Fit a logarithmic transfer between the tone curves.
15451
15452 @item reinhard
15453 Preserve overall image brightness with a simple curve, using nonlinear
15454 contrast, which results in flattening details and degrading color accuracy.
15455
15456 @item hable
15457 Preserve both dark and bright details better than @var{reinhard}, at the cost
15458 of slightly darkening everything. Use it when detail preservation is more
15459 important than color and brightness accuracy.
15460
15461 @item mobius
15462 Smoothly map out-of-range values, while retaining contrast and colors for
15463 in-range material as much as possible. Use it when color accuracy is more
15464 important than detail preservation.
15465 @end table
15466
15467 Default is none.
15468
15469 @item param
15470 Tune the tone mapping algorithm.
15471
15472 This affects the following algorithms:
15473 @table @var
15474 @item none
15475 Ignored.
15476
15477 @item linear
15478 Specifies the scale factor to use while stretching.
15479 Default to 1.0.
15480
15481 @item gamma
15482 Specifies the exponent of the function.
15483 Default to 1.8.
15484
15485 @item clip
15486 Specify an extra linear coefficient to multiply into the signal before clipping.
15487 Default to 1.0.
15488
15489 @item reinhard
15490 Specify the local contrast coefficient at the display peak.
15491 Default to 0.5, which means that in-gamut values will be about half as bright
15492 as when clipping.
15493
15494 @item hable
15495 Ignored.
15496
15497 @item mobius
15498 Specify the transition point from linear to mobius transform. Every value
15499 below this point is guaranteed to be mapped 1:1. The higher the value, the
15500 more accurate the result will be, at the cost of losing bright details.
15501 Default to 0.3, which due to the steep initial slope still preserves in-range
15502 colors fairly accurately.
15503 @end table
15504
15505 @item desat
15506 Apply desaturation for highlights that exceed this level of brightness. The
15507 higher the parameter, the more color information will be preserved. This
15508 setting helps prevent unnaturally blown-out colors for super-highlights, by
15509 (smoothly) turning into white instead. This makes images feel more natural,
15510 at the cost of reducing information about out-of-range colors.
15511
15512 The default of 2.0 is somewhat conservative and will mostly just apply to
15513 skies or directly sunlit surfaces. A setting of 0.0 disables this option.
15514
15515 This option works only if the input frame has a supported color tag.
15516
15517 @item peak
15518 Override signal/nominal/reference peak with this value. Useful when the
15519 embedded peak information in display metadata is not reliable or when tone
15520 mapping from a lower range to a higher range.
15521 @end table
15522
15523 @section transpose
15524
15525 Transpose rows with columns in the input video and optionally flip it.
15526
15527 It accepts the following parameters:
15528
15529 @table @option
15530
15531 @item dir
15532 Specify the transposition direction.
15533
15534 Can assume the following values:
15535 @table @samp
15536 @item 0, 4, cclock_flip
15537 Rotate by 90 degrees counterclockwise and vertically flip (default), that is:
15538 @example
15539 L.R     L.l
15540 . . ->  . .
15541 l.r     R.r
15542 @end example
15543
15544 @item 1, 5, clock
15545 Rotate by 90 degrees clockwise, that is:
15546 @example
15547 L.R     l.L
15548 . . ->  . .
15549 l.r     r.R
15550 @end example
15551
15552 @item 2, 6, cclock
15553 Rotate by 90 degrees counterclockwise, that is:
15554 @example
15555 L.R     R.r
15556 . . ->  . .
15557 l.r     L.l
15558 @end example
15559
15560 @item 3, 7, clock_flip
15561 Rotate by 90 degrees clockwise and vertically flip, that is:
15562 @example
15563 L.R     r.R
15564 . . ->  . .
15565 l.r     l.L
15566 @end example
15567 @end table
15568
15569 For values between 4-7, the transposition is only done if the input
15570 video geometry is portrait and not landscape. These values are
15571 deprecated, the @code{passthrough} option should be used instead.
15572
15573 Numerical values are deprecated, and should be dropped in favor of
15574 symbolic constants.
15575
15576 @item passthrough
15577 Do not apply the transposition if the input geometry matches the one
15578 specified by the specified value. It accepts the following values:
15579 @table @samp
15580 @item none
15581 Always apply transposition.
15582 @item portrait
15583 Preserve portrait geometry (when @var{height} >= @var{width}).
15584 @item landscape
15585 Preserve landscape geometry (when @var{width} >= @var{height}).
15586 @end table
15587
15588 Default value is @code{none}.
15589 @end table
15590
15591 For example to rotate by 90 degrees clockwise and preserve portrait
15592 layout:
15593 @example
15594 transpose=dir=1:passthrough=portrait
15595 @end example
15596
15597 The command above can also be specified as:
15598 @example
15599 transpose=1:portrait
15600 @end example
15601
15602 @section trim
15603 Trim the input so that the output contains one continuous subpart of the input.
15604
15605 It accepts the following parameters:
15606 @table @option
15607 @item start
15608 Specify the time of the start of the kept section, i.e. the frame with the
15609 timestamp @var{start} will be the first frame in the output.
15610
15611 @item end
15612 Specify the time of the first frame that will be dropped, i.e. the frame
15613 immediately preceding the one with the timestamp @var{end} will be the last
15614 frame in the output.
15615
15616 @item start_pts
15617 This is the same as @var{start}, except this option sets the start timestamp
15618 in timebase units instead of seconds.
15619
15620 @item end_pts
15621 This is the same as @var{end}, except this option sets the end timestamp
15622 in timebase units instead of seconds.
15623
15624 @item duration
15625 The maximum duration of the output in seconds.
15626
15627 @item start_frame
15628 The number of the first frame that should be passed to the output.
15629
15630 @item end_frame
15631 The number of the first frame that should be dropped.
15632 @end table
15633
15634 @option{start}, @option{end}, and @option{duration} are expressed as time
15635 duration specifications; see
15636 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
15637 for the accepted syntax.
15638
15639 Note that the first two sets of the start/end options and the @option{duration}
15640 option look at the frame timestamp, while the _frame variants simply count the
15641 frames that pass through the filter. Also note that this filter does not modify
15642 the timestamps. If you wish for the output timestamps to start at zero, insert a
15643 setpts filter after the trim filter.
15644
15645 If multiple start or end options are set, this filter tries to be greedy and
15646 keep all the frames that match at least one of the specified constraints. To keep
15647 only the part that matches all the constraints at once, chain multiple trim
15648 filters.
15649
15650 The defaults are such that all the input is kept. So it is possible to set e.g.
15651 just the end values to keep everything before the specified time.
15652
15653 Examples:
15654 @itemize
15655 @item
15656 Drop everything except the second minute of input:
15657 @example
15658 ffmpeg -i INPUT -vf trim=60:120
15659 @end example
15660
15661 @item
15662 Keep only the first second:
15663 @example
15664 ffmpeg -i INPUT -vf trim=duration=1
15665 @end example
15666
15667 @end itemize
15668
15669 @section unpremultiply
15670 Apply alpha unpremultiply effect to input video stream using first plane
15671 of second stream as alpha.
15672
15673 Both streams must have same dimensions and same pixel format.
15674
15675 The filter accepts the following option:
15676
15677 @table @option
15678 @item planes
15679 Set which planes will be processed, unprocessed planes will be copied.
15680 By default value 0xf, all planes will be processed.
15681
15682 If the format has 1 or 2 components, then luma is bit 0.
15683 If the format has 3 or 4 components:
15684 for RGB formats bit 0 is green, bit 1 is blue and bit 2 is red;
15685 for YUV formats bit 0 is luma, bit 1 is chroma-U and bit 2 is chroma-V.
15686 If present, the alpha channel is always the last bit.
15687
15688 @item inplace
15689 Do not require 2nd input for processing, instead use alpha plane from input stream.
15690 @end table
15691
15692 @anchor{unsharp}
15693 @section unsharp
15694
15695 Sharpen or blur the input video.
15696
15697 It accepts the following parameters:
15698
15699 @table @option
15700 @item luma_msize_x, lx
15701 Set the luma matrix horizontal size. It must be an odd integer between
15702 3 and 23. The default value is 5.
15703
15704 @item luma_msize_y, ly
15705 Set the luma matrix vertical size. It must be an odd integer between 3
15706 and 23. The default value is 5.
15707
15708 @item luma_amount, la
15709 Set the luma effect strength. It must be a floating point number, reasonable
15710 values lay between -1.5 and 1.5.
15711
15712 Negative values will blur the input video, while positive values will
15713 sharpen it, a value of zero will disable the effect.
15714
15715 Default value is 1.0.
15716
15717 @item chroma_msize_x, cx
15718 Set the chroma matrix horizontal size. It must be an odd integer
15719 between 3 and 23. The default value is 5.
15720
15721 @item chroma_msize_y, cy
15722 Set the chroma matrix vertical size. It must be an odd integer
15723 between 3 and 23. The default value is 5.
15724
15725 @item chroma_amount, ca
15726 Set the chroma effect strength. It must be a floating point number, reasonable
15727 values lay between -1.5 and 1.5.
15728
15729 Negative values will blur the input video, while positive values will
15730 sharpen it, a value of zero will disable the effect.
15731
15732 Default value is 0.0.
15733
15734 @end table
15735
15736 All parameters are optional and default to the equivalent of the
15737 string '5:5:1.0:5:5:0.0'.
15738
15739 @subsection Examples
15740
15741 @itemize
15742 @item
15743 Apply strong luma sharpen effect:
15744 @example
15745 unsharp=luma_msize_x=7:luma_msize_y=7:luma_amount=2.5
15746 @end example
15747
15748 @item
15749 Apply a strong blur of both luma and chroma parameters:
15750 @example
15751 unsharp=7:7:-2:7:7:-2
15752 @end example
15753 @end itemize
15754
15755 @section uspp
15756
15757 Apply ultra slow/simple postprocessing filter that compresses and decompresses
15758 the image at several (or - in the case of @option{quality} level @code{8} - all)
15759 shifts and average the results.
15760
15761 The way this differs from the behavior of spp is that uspp actually encodes &
15762 decodes each case with libavcodec Snow, whereas spp uses a simplified intra only 8x8
15763 DCT similar to MJPEG.
15764
15765 The filter accepts the following options:
15766
15767 @table @option
15768 @item quality
15769 Set quality. This option defines the number of levels for averaging. It accepts
15770 an integer in the range 0-8. If set to @code{0}, the filter will have no
15771 effect. A value of @code{8} means the higher quality. For each increment of
15772 that value the speed drops by a factor of approximately 2.  Default value is
15773 @code{3}.
15774
15775 @item qp
15776 Force a constant quantization parameter. If not set, the filter will use the QP
15777 from the video stream (if available).
15778 @end table
15779
15780 @section vaguedenoiser
15781
15782 Apply a wavelet based denoiser.
15783
15784 It transforms each frame from the video input into the wavelet domain,
15785 using Cohen-Daubechies-Feauveau 9/7. Then it applies some filtering to
15786 the obtained coefficients. It does an inverse wavelet transform after.
15787 Due to wavelet properties, it should give a nice smoothed result, and
15788 reduced noise, without blurring picture features.
15789
15790 This filter accepts the following options:
15791
15792 @table @option
15793 @item threshold
15794 The filtering strength. The higher, the more filtered the video will be.
15795 Hard thresholding can use a higher threshold than soft thresholding
15796 before the video looks overfiltered. Default value is 2.
15797
15798 @item method
15799 The filtering method the filter will use.
15800
15801 It accepts the following values:
15802 @table @samp
15803 @item hard
15804 All values under the threshold will be zeroed.
15805
15806 @item soft
15807 All values under the threshold will be zeroed. All values above will be
15808 reduced by the threshold.
15809
15810 @item garrote
15811 Scales or nullifies coefficients - intermediary between (more) soft and
15812 (less) hard thresholding.
15813 @end table
15814
15815 Default is garrote.
15816
15817 @item nsteps
15818 Number of times, the wavelet will decompose the picture. Picture can't
15819 be decomposed beyond a particular point (typically, 8 for a 640x480
15820 frame - as 2^9 = 512 > 480). Valid values are integers between 1 and 32. Default value is 6.
15821
15822 @item percent
15823 Partial of full denoising (limited coefficients shrinking), from 0 to 100. Default value is 85.
15824
15825 @item planes
15826 A list of the planes to process. By default all planes are processed.
15827 @end table
15828
15829 @section vectorscope
15830
15831 Display 2 color component values in the two dimensional graph (which is called
15832 a vectorscope).
15833
15834 This filter accepts the following options:
15835
15836 @table @option
15837 @item mode, m
15838 Set vectorscope mode.
15839
15840 It accepts the following values:
15841 @table @samp
15842 @item gray
15843 Gray values are displayed on graph, higher brightness means more pixels have
15844 same component color value on location in graph. This is the default mode.
15845
15846 @item color
15847 Gray values are displayed on graph. Surrounding pixels values which are not
15848 present in video frame are drawn in gradient of 2 color components which are
15849 set by option @code{x} and @code{y}. The 3rd color component is static.
15850
15851 @item color2
15852 Actual color components values present in video frame are displayed on graph.
15853
15854 @item color3
15855 Similar as color2 but higher frequency of same values @code{x} and @code{y}
15856 on graph increases value of another color component, which is luminance by
15857 default values of @code{x} and @code{y}.
15858
15859 @item color4
15860 Actual colors present in video frame are displayed on graph. If two different
15861 colors map to same position on graph then color with higher value of component
15862 not present in graph is picked.
15863
15864 @item color5
15865 Gray values are displayed on graph. Similar to @code{color} but with 3rd color
15866 component picked from radial gradient.
15867 @end table
15868
15869 @item x
15870 Set which color component will be represented on X-axis. Default is @code{1}.
15871
15872 @item y
15873 Set which color component will be represented on Y-axis. Default is @code{2}.
15874
15875 @item intensity, i
15876 Set intensity, used by modes: gray, color, color3 and color5 for increasing brightness
15877 of color component which represents frequency of (X, Y) location in graph.
15878
15879 @item envelope, e
15880 @table @samp
15881 @item none
15882 No envelope, this is default.
15883
15884 @item instant
15885 Instant envelope, even darkest single pixel will be clearly highlighted.
15886
15887 @item peak
15888 Hold maximum and minimum values presented in graph over time. This way you
15889 can still spot out of range values without constantly looking at vectorscope.
15890
15891 @item peak+instant
15892 Peak and instant envelope combined together.
15893 @end table
15894
15895 @item graticule, g
15896 Set what kind of graticule to draw.
15897 @table @samp
15898 @item none
15899 @item green
15900 @item color
15901 @end table
15902
15903 @item opacity, o
15904 Set graticule opacity.
15905
15906 @item flags, f
15907 Set graticule flags.
15908
15909 @table @samp
15910 @item white
15911 Draw graticule for white point.
15912
15913 @item black
15914 Draw graticule for black point.
15915
15916 @item name
15917 Draw color points short names.
15918 @end table
15919
15920 @item bgopacity, b
15921 Set background opacity.
15922
15923 @item lthreshold, l
15924 Set low threshold for color component not represented on X or Y axis.
15925 Values lower than this value will be ignored. Default is 0.
15926 Note this value is multiplied with actual max possible value one pixel component
15927 can have. So for 8-bit input and low threshold value of 0.1 actual threshold
15928 is 0.1 * 255 = 25.
15929
15930 @item hthreshold, h
15931 Set high threshold for color component not represented on X or Y axis.
15932 Values higher than this value will be ignored. Default is 1.
15933 Note this value is multiplied with actual max possible value one pixel component
15934 can have. So for 8-bit input and high threshold value of 0.9 actual threshold
15935 is 0.9 * 255 = 230.
15936
15937 @item colorspace, c
15938 Set what kind of colorspace to use when drawing graticule.
15939 @table @samp
15940 @item auto
15941 @item 601
15942 @item 709
15943 @end table
15944 Default is auto.
15945 @end table
15946
15947 @anchor{vidstabdetect}
15948 @section vidstabdetect
15949
15950 Analyze video stabilization/deshaking. Perform pass 1 of 2, see
15951 @ref{vidstabtransform} for pass 2.
15952
15953 This filter generates a file with relative translation and rotation
15954 transform information about subsequent frames, which is then used by
15955 the @ref{vidstabtransform} filter.
15956
15957 To enable compilation of this filter you need to configure FFmpeg with
15958 @code{--enable-libvidstab}.
15959
15960 This filter accepts the following options:
15961
15962 @table @option
15963 @item result
15964 Set the path to the file used to write the transforms information.
15965 Default value is @file{transforms.trf}.
15966
15967 @item shakiness
15968 Set how shaky the video is and how quick the camera is. It accepts an
15969 integer in the range 1-10, a value of 1 means little shakiness, a
15970 value of 10 means strong shakiness. Default value is 5.
15971
15972 @item accuracy
15973 Set the accuracy of the detection process. It must be a value in the
15974 range 1-15. A value of 1 means low accuracy, a value of 15 means high
15975 accuracy. Default value is 15.
15976
15977 @item stepsize
15978 Set stepsize of the search process. The region around minimum is
15979 scanned with 1 pixel resolution. Default value is 6.
15980
15981 @item mincontrast
15982 Set minimum contrast. Below this value a local measurement field is
15983 discarded. Must be a floating point value in the range 0-1. Default
15984 value is 0.3.
15985
15986 @item tripod
15987 Set reference frame number for tripod mode.
15988
15989 If enabled, the motion of the frames is compared to a reference frame
15990 in the filtered stream, identified by the specified number. The idea
15991 is to compensate all movements in a more-or-less static scene and keep
15992 the camera view absolutely still.
15993
15994 If set to 0, it is disabled. The frames are counted starting from 1.
15995
15996 @item show
15997 Show fields and transforms in the resulting frames. It accepts an
15998 integer in the range 0-2. Default value is 0, which disables any
15999 visualization.
16000 @end table
16001
16002 @subsection Examples
16003
16004 @itemize
16005 @item
16006 Use default values:
16007 @example
16008 vidstabdetect
16009 @end example
16010
16011 @item
16012 Analyze strongly shaky movie and put the results in file
16013 @file{mytransforms.trf}:
16014 @example
16015 vidstabdetect=shakiness=10:accuracy=15:result="mytransforms.trf"
16016 @end example
16017
16018 @item
16019 Visualize the result of internal transformations in the resulting
16020 video:
16021 @example
16022 vidstabdetect=show=1
16023 @end example
16024
16025 @item
16026 Analyze a video with medium shakiness using @command{ffmpeg}:
16027 @example
16028 ffmpeg -i input -vf vidstabdetect=shakiness=5:show=1 dummy.avi
16029 @end example
16030 @end itemize
16031
16032 @anchor{vidstabtransform}
16033 @section vidstabtransform
16034
16035 Video stabilization/deshaking: pass 2 of 2,
16036 see @ref{vidstabdetect} for pass 1.
16037
16038 Read a file with transform information for each frame and
16039 apply/compensate them. Together with the @ref{vidstabdetect}
16040 filter this can be used to deshake videos. See also
16041 @url{http://public.hronopik.de/vid.stab}. It is important to also use
16042 the @ref{unsharp} filter, see below.
16043
16044 To enable compilation of this filter you need to configure FFmpeg with
16045 @code{--enable-libvidstab}.
16046
16047 @subsection Options
16048
16049 @table @option
16050 @item input
16051 Set path to the file used to read the transforms. Default value is
16052 @file{transforms.trf}.
16053
16054 @item smoothing
16055 Set the number of frames (value*2 + 1) used for lowpass filtering the
16056 camera movements. Default value is 10.
16057
16058 For example a number of 10 means that 21 frames are used (10 in the
16059 past and 10 in the future) to smoothen the motion in the video. A
16060 larger value leads to a smoother video, but limits the acceleration of
16061 the camera (pan/tilt movements). 0 is a special case where a static
16062 camera is simulated.
16063
16064 @item optalgo
16065 Set the camera path optimization algorithm.
16066
16067 Accepted values are:
16068 @table @samp
16069 @item gauss
16070 gaussian kernel low-pass filter on camera motion (default)
16071 @item avg
16072 averaging on transformations
16073 @end table
16074
16075 @item maxshift
16076 Set maximal number of pixels to translate frames. Default value is -1,
16077 meaning no limit.
16078
16079 @item maxangle
16080 Set maximal angle in radians (degree*PI/180) to rotate frames. Default
16081 value is -1, meaning no limit.
16082
16083 @item crop
16084 Specify how to deal with borders that may be visible due to movement
16085 compensation.
16086
16087 Available values are:
16088 @table @samp
16089 @item keep
16090 keep image information from previous frame (default)
16091 @item black
16092 fill the border black
16093 @end table
16094
16095 @item invert
16096 Invert transforms if set to 1. Default value is 0.
16097
16098 @item relative
16099 Consider transforms as relative to previous frame if set to 1,
16100 absolute if set to 0. Default value is 0.
16101
16102 @item zoom
16103 Set percentage to zoom. A positive value will result in a zoom-in
16104 effect, a negative value in a zoom-out effect. Default value is 0 (no
16105 zoom).
16106
16107 @item optzoom
16108 Set optimal zooming to avoid borders.
16109
16110 Accepted values are:
16111 @table @samp
16112 @item 0
16113 disabled
16114 @item 1
16115 optimal static zoom value is determined (only very strong movements
16116 will lead to visible borders) (default)
16117 @item 2
16118 optimal adaptive zoom value is determined (no borders will be
16119 visible), see @option{zoomspeed}
16120 @end table
16121
16122 Note that the value given at zoom is added to the one calculated here.
16123
16124 @item zoomspeed
16125 Set percent to zoom maximally each frame (enabled when
16126 @option{optzoom} is set to 2). Range is from 0 to 5, default value is
16127 0.25.
16128
16129 @item interpol
16130 Specify type of interpolation.
16131
16132 Available values are:
16133 @table @samp
16134 @item no
16135 no interpolation
16136 @item linear
16137 linear only horizontal
16138 @item bilinear
16139 linear in both directions (default)
16140 @item bicubic
16141 cubic in both directions (slow)
16142 @end table
16143
16144 @item tripod
16145 Enable virtual tripod mode if set to 1, which is equivalent to
16146 @code{relative=0:smoothing=0}. Default value is 0.
16147
16148 Use also @code{tripod} option of @ref{vidstabdetect}.
16149
16150 @item debug
16151 Increase log verbosity if set to 1. Also the detected global motions
16152 are written to the temporary file @file{global_motions.trf}. Default
16153 value is 0.
16154 @end table
16155
16156 @subsection Examples
16157
16158 @itemize
16159 @item
16160 Use @command{ffmpeg} for a typical stabilization with default values:
16161 @example
16162 ffmpeg -i inp.mpeg -vf vidstabtransform,unsharp=5:5:0.8:3:3:0.4 inp_stabilized.mpeg
16163 @end example
16164
16165 Note the use of the @ref{unsharp} filter which is always recommended.
16166
16167 @item
16168 Zoom in a bit more and load transform data from a given file:
16169 @example
16170 vidstabtransform=zoom=5:input="mytransforms.trf"
16171 @end example
16172
16173 @item
16174 Smoothen the video even more:
16175 @example
16176 vidstabtransform=smoothing=30
16177 @end example
16178 @end itemize
16179
16180 @section vflip
16181
16182 Flip the input video vertically.
16183
16184 For example, to vertically flip a video with @command{ffmpeg}:
16185 @example
16186 ffmpeg -i in.avi -vf "vflip" out.avi
16187 @end example
16188
16189 @anchor{vignette}
16190 @section vignette
16191
16192 Make or reverse a natural vignetting effect.
16193
16194 The filter accepts the following options:
16195
16196 @table @option
16197 @item angle, a
16198 Set lens angle expression as a number of radians.
16199
16200 The value is clipped in the @code{[0,PI/2]} range.
16201
16202 Default value: @code{"PI/5"}
16203
16204 @item x0
16205 @item y0
16206 Set center coordinates expressions. Respectively @code{"w/2"} and @code{"h/2"}
16207 by default.
16208
16209 @item mode
16210 Set forward/backward mode.
16211
16212 Available modes are:
16213 @table @samp
16214 @item forward
16215 The larger the distance from the central point, the darker the image becomes.
16216
16217 @item backward
16218 The larger the distance from the central point, the brighter the image becomes.
16219 This can be used to reverse a vignette effect, though there is no automatic
16220 detection to extract the lens @option{angle} and other settings (yet). It can
16221 also be used to create a burning effect.
16222 @end table
16223
16224 Default value is @samp{forward}.
16225
16226 @item eval
16227 Set evaluation mode for the expressions (@option{angle}, @option{x0}, @option{y0}).
16228
16229 It accepts the following values:
16230 @table @samp
16231 @item init
16232 Evaluate expressions only once during the filter initialization.
16233
16234 @item frame
16235 Evaluate expressions for each incoming frame. This is way slower than the
16236 @samp{init} mode since it requires all the scalers to be re-computed, but it
16237 allows advanced dynamic expressions.
16238 @end table
16239
16240 Default value is @samp{init}.
16241
16242 @item dither
16243 Set dithering to reduce the circular banding effects. Default is @code{1}
16244 (enabled).
16245
16246 @item aspect
16247 Set vignette aspect. This setting allows one to adjust the shape of the vignette.
16248 Setting this value to the SAR of the input will make a rectangular vignetting
16249 following the dimensions of the video.
16250
16251 Default is @code{1/1}.
16252 @end table
16253
16254 @subsection Expressions
16255
16256 The @option{alpha}, @option{x0} and @option{y0} expressions can contain the
16257 following parameters.
16258
16259 @table @option
16260 @item w
16261 @item h
16262 input width and height
16263
16264 @item n
16265 the number of input frame, starting from 0
16266
16267 @item pts
16268 the PTS (Presentation TimeStamp) time of the filtered video frame, expressed in
16269 @var{TB} units, NAN if undefined
16270
16271 @item r
16272 frame rate of the input video, NAN if the input frame rate is unknown
16273
16274 @item t
16275 the PTS (Presentation TimeStamp) of the filtered video frame,
16276 expressed in seconds, NAN if undefined
16277
16278 @item tb
16279 time base of the input video
16280 @end table
16281
16282
16283 @subsection Examples
16284
16285 @itemize
16286 @item
16287 Apply simple strong vignetting effect:
16288 @example
16289 vignette=PI/4
16290 @end example
16291
16292 @item
16293 Make a flickering vignetting:
16294 @example
16295 vignette='PI/4+random(1)*PI/50':eval=frame
16296 @end example
16297
16298 @end itemize
16299
16300 @section vmafmotion
16301
16302 Obtain the average vmaf motion score of a video.
16303 It is one of the component filters of VMAF.
16304
16305 The obtained average motion score is printed through the logging system.
16306
16307 In the below example the input file @file{ref.mpg} is being processed and score
16308 is computed.
16309
16310 @example
16311 ffmpeg -i ref.mpg -lavfi vmafmotion -f null -
16312 @end example
16313
16314 @section vstack
16315 Stack input videos vertically.
16316
16317 All streams must be of same pixel format and of same width.
16318
16319 Note that this filter is faster than using @ref{overlay} and @ref{pad} filter
16320 to create same output.
16321
16322 The filter accept the following option:
16323
16324 @table @option
16325 @item inputs
16326 Set number of input streams. Default is 2.
16327
16328 @item shortest
16329 If set to 1, force the output to terminate when the shortest input
16330 terminates. Default value is 0.
16331 @end table
16332
16333 @section w3fdif
16334
16335 Deinterlace the input video ("w3fdif" stands for "Weston 3 Field
16336 Deinterlacing Filter").
16337
16338 Based on the process described by Martin Weston for BBC R&D, and
16339 implemented based on the de-interlace algorithm written by Jim
16340 Easterbrook for BBC R&D, the Weston 3 field deinterlacing filter
16341 uses filter coefficients calculated by BBC R&D.
16342
16343 There are two sets of filter coefficients, so called "simple":
16344 and "complex". Which set of filter coefficients is used can
16345 be set by passing an optional parameter:
16346
16347 @table @option
16348 @item filter
16349 Set the interlacing filter coefficients. Accepts one of the following values:
16350
16351 @table @samp
16352 @item simple
16353 Simple filter coefficient set.
16354 @item complex
16355 More-complex filter coefficient set.
16356 @end table
16357 Default value is @samp{complex}.
16358
16359 @item deint
16360 Specify which frames to deinterlace. Accept one of the following values:
16361
16362 @table @samp
16363 @item all
16364 Deinterlace all frames,
16365 @item interlaced
16366 Only deinterlace frames marked as interlaced.
16367 @end table
16368
16369 Default value is @samp{all}.
16370 @end table
16371
16372 @section waveform
16373 Video waveform monitor.
16374
16375 The waveform monitor plots color component intensity. By default luminance
16376 only. Each column of the waveform corresponds to a column of pixels in the
16377 source video.
16378
16379 It accepts the following options:
16380
16381 @table @option
16382 @item mode, m
16383 Can be either @code{row}, or @code{column}. Default is @code{column}.
16384 In row mode, the graph on the left side represents color component value 0 and
16385 the right side represents value = 255. In column mode, the top side represents
16386 color component value = 0 and bottom side represents value = 255.
16387
16388 @item intensity, i
16389 Set intensity. Smaller values are useful to find out how many values of the same
16390 luminance are distributed across input rows/columns.
16391 Default value is @code{0.04}. Allowed range is [0, 1].
16392
16393 @item mirror, r
16394 Set mirroring mode. @code{0} means unmirrored, @code{1} means mirrored.
16395 In mirrored mode, higher values will be represented on the left
16396 side for @code{row} mode and at the top for @code{column} mode. Default is
16397 @code{1} (mirrored).
16398
16399 @item display, d
16400 Set display mode.
16401 It accepts the following values:
16402 @table @samp
16403 @item overlay
16404 Presents information identical to that in the @code{parade}, except
16405 that the graphs representing color components are superimposed directly
16406 over one another.
16407
16408 This display mode makes it easier to spot relative differences or similarities
16409 in overlapping areas of the color components that are supposed to be identical,
16410 such as neutral whites, grays, or blacks.
16411
16412 @item stack
16413 Display separate graph for the color components side by side in
16414 @code{row} mode or one below the other in @code{column} mode.
16415
16416 @item parade
16417 Display separate graph for the color components side by side in
16418 @code{column} mode or one below the other in @code{row} mode.
16419
16420 Using this display mode makes it easy to spot color casts in the highlights
16421 and shadows of an image, by comparing the contours of the top and the bottom
16422 graphs of each waveform. Since whites, grays, and blacks are characterized
16423 by exactly equal amounts of red, green, and blue, neutral areas of the picture
16424 should display three waveforms of roughly equal width/height. If not, the
16425 correction is easy to perform by making level adjustments the three waveforms.
16426 @end table
16427 Default is @code{stack}.
16428
16429 @item components, c
16430 Set which color components to display. Default is 1, which means only luminance
16431 or red color component if input is in RGB colorspace. If is set for example to
16432 7 it will display all 3 (if) available color components.
16433
16434 @item envelope, e
16435 @table @samp
16436 @item none
16437 No envelope, this is default.
16438
16439 @item instant
16440 Instant envelope, minimum and maximum values presented in graph will be easily
16441 visible even with small @code{step} value.
16442
16443 @item peak
16444 Hold minimum and maximum values presented in graph across time. This way you
16445 can still spot out of range values without constantly looking at waveforms.
16446
16447 @item peak+instant
16448 Peak and instant envelope combined together.
16449 @end table
16450
16451 @item filter, f
16452 @table @samp
16453 @item lowpass
16454 No filtering, this is default.
16455
16456 @item flat
16457 Luma and chroma combined together.
16458
16459 @item aflat
16460 Similar as above, but shows difference between blue and red chroma.
16461
16462 @item chroma
16463 Displays only chroma.
16464
16465 @item color
16466 Displays actual color value on waveform.
16467
16468 @item acolor
16469 Similar as above, but with luma showing frequency of chroma values.
16470 @end table
16471
16472 @item graticule, g
16473 Set which graticule to display.
16474
16475 @table @samp
16476 @item none
16477 Do not display graticule.
16478
16479 @item green
16480 Display green graticule showing legal broadcast ranges.
16481 @end table
16482
16483 @item opacity, o
16484 Set graticule opacity.
16485
16486 @item flags, fl
16487 Set graticule flags.
16488
16489 @table @samp
16490 @item numbers
16491 Draw numbers above lines. By default enabled.
16492
16493 @item dots
16494 Draw dots instead of lines.
16495 @end table
16496
16497 @item scale, s
16498 Set scale used for displaying graticule.
16499
16500 @table @samp
16501 @item digital
16502 @item millivolts
16503 @item ire
16504 @end table
16505 Default is digital.
16506
16507 @item bgopacity, b
16508 Set background opacity.
16509 @end table
16510
16511 @section weave, doubleweave
16512
16513 The @code{weave} takes a field-based video input and join
16514 each two sequential fields into single frame, producing a new double
16515 height clip with half the frame rate and half the frame count.
16516
16517 The @code{doubleweave} works same as @code{weave} but without
16518 halving frame rate and frame count.
16519
16520 It accepts the following option:
16521
16522 @table @option
16523 @item first_field
16524 Set first field. Available values are:
16525
16526 @table @samp
16527 @item top, t
16528 Set the frame as top-field-first.
16529
16530 @item bottom, b
16531 Set the frame as bottom-field-first.
16532 @end table
16533 @end table
16534
16535 @subsection Examples
16536
16537 @itemize
16538 @item
16539 Interlace video using @ref{select} and @ref{separatefields} filter:
16540 @example
16541 separatefields,select=eq(mod(n,4),0)+eq(mod(n,4),3),weave
16542 @end example
16543 @end itemize
16544
16545 @section xbr
16546 Apply the xBR high-quality magnification filter which is designed for pixel
16547 art. It follows a set of edge-detection rules, see
16548 @url{http://www.libretro.com/forums/viewtopic.php?f=6&t=134}.
16549
16550 It accepts the following option:
16551
16552 @table @option
16553 @item n
16554 Set the scaling dimension: @code{2} for @code{2xBR}, @code{3} for
16555 @code{3xBR} and @code{4} for @code{4xBR}.
16556 Default is @code{3}.
16557 @end table
16558
16559 @anchor{yadif}
16560 @section yadif
16561
16562 Deinterlace the input video ("yadif" means "yet another deinterlacing
16563 filter").
16564
16565 It accepts the following parameters:
16566
16567
16568 @table @option
16569
16570 @item mode
16571 The interlacing mode to adopt. It accepts one of the following values:
16572
16573 @table @option
16574 @item 0, send_frame
16575 Output one frame for each frame.
16576 @item 1, send_field
16577 Output one frame for each field.
16578 @item 2, send_frame_nospatial
16579 Like @code{send_frame}, but it skips the spatial interlacing check.
16580 @item 3, send_field_nospatial
16581 Like @code{send_field}, but it skips the spatial interlacing check.
16582 @end table
16583
16584 The default value is @code{send_frame}.
16585
16586 @item parity
16587 The picture field parity assumed for the input interlaced video. It accepts one
16588 of the following values:
16589
16590 @table @option
16591 @item 0, tff
16592 Assume the top field is first.
16593 @item 1, bff
16594 Assume the bottom field is first.
16595 @item -1, auto
16596 Enable automatic detection of field parity.
16597 @end table
16598
16599 The default value is @code{auto}.
16600 If the interlacing is unknown or the decoder does not export this information,
16601 top field first will be assumed.
16602
16603 @item deint
16604 Specify which frames to deinterlace. Accept one of the following
16605 values:
16606
16607 @table @option
16608 @item 0, all
16609 Deinterlace all frames.
16610 @item 1, interlaced
16611 Only deinterlace frames marked as interlaced.
16612 @end table
16613
16614 The default value is @code{all}.
16615 @end table
16616
16617 @section zoompan
16618
16619 Apply Zoom & Pan effect.
16620
16621 This filter accepts the following options:
16622
16623 @table @option
16624 @item zoom, z
16625 Set the zoom expression. Default is 1.
16626
16627 @item x
16628 @item y
16629 Set the x and y expression. Default is 0.
16630
16631 @item d
16632 Set the duration expression in number of frames.
16633 This sets for how many number of frames effect will last for
16634 single input image.
16635
16636 @item s
16637 Set the output image size, default is 'hd720'.
16638
16639 @item fps
16640 Set the output frame rate, default is '25'.
16641 @end table
16642
16643 Each expression can contain the following constants:
16644
16645 @table @option
16646 @item in_w, iw
16647 Input width.
16648
16649 @item in_h, ih
16650 Input height.
16651
16652 @item out_w, ow
16653 Output width.
16654
16655 @item out_h, oh
16656 Output height.
16657
16658 @item in
16659 Input frame count.
16660
16661 @item on
16662 Output frame count.
16663
16664 @item x
16665 @item y
16666 Last calculated 'x' and 'y' position from 'x' and 'y' expression
16667 for current input frame.
16668
16669 @item px
16670 @item py
16671 'x' and 'y' of last output frame of previous input frame or 0 when there was
16672 not yet such frame (first input frame).
16673
16674 @item zoom
16675 Last calculated zoom from 'z' expression for current input frame.
16676
16677 @item pzoom
16678 Last calculated zoom of last output frame of previous input frame.
16679
16680 @item duration
16681 Number of output frames for current input frame. Calculated from 'd' expression
16682 for each input frame.
16683
16684 @item pduration
16685 number of output frames created for previous input frame
16686
16687 @item a
16688 Rational number: input width / input height
16689
16690 @item sar
16691 sample aspect ratio
16692
16693 @item dar
16694 display aspect ratio
16695
16696 @end table
16697
16698 @subsection Examples
16699
16700 @itemize
16701 @item
16702 Zoom-in up to 1.5 and pan at same time to some spot near center of picture:
16703 @example
16704 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
16705 @end example
16706
16707 @item
16708 Zoom-in up to 1.5 and pan always at center of picture:
16709 @example
16710 zoompan=z='min(zoom+0.0015,1.5)':d=700:x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)'
16711 @end example
16712
16713 @item
16714 Same as above but without pausing:
16715 @example
16716 zoompan=z='min(max(zoom,pzoom)+0.0015,1.5)':d=1:x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)'
16717 @end example
16718 @end itemize
16719
16720 @anchor{zscale}
16721 @section zscale
16722 Scale (resize) the input video, using the z.lib library:
16723 https://github.com/sekrit-twc/zimg.
16724
16725 The zscale filter forces the output display aspect ratio to be the same
16726 as the input, by changing the output sample aspect ratio.
16727
16728 If the input image format is different from the format requested by
16729 the next filter, the zscale filter will convert the input to the
16730 requested format.
16731
16732 @subsection Options
16733 The filter accepts the following options.
16734
16735 @table @option
16736 @item width, w
16737 @item height, h
16738 Set the output video dimension expression. Default value is the input
16739 dimension.
16740
16741 If the @var{width} or @var{w} value is 0, the input width is used for
16742 the output. If the @var{height} or @var{h} value is 0, the input height
16743 is used for the output.
16744
16745 If one and only one of the values is -n with n >= 1, the zscale filter
16746 will use a value that maintains the aspect ratio of the input image,
16747 calculated from the other specified dimension. After that it will,
16748 however, make sure that the calculated dimension is divisible by n and
16749 adjust the value if necessary.
16750
16751 If both values are -n with n >= 1, the behavior will be identical to
16752 both values being set to 0 as previously detailed.
16753
16754 See below for the list of accepted constants for use in the dimension
16755 expression.
16756
16757 @item size, s
16758 Set the video size. For the syntax of this option, check the
16759 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
16760
16761 @item dither, d
16762 Set the dither type.
16763
16764 Possible values are:
16765 @table @var
16766 @item none
16767 @item ordered
16768 @item random
16769 @item error_diffusion
16770 @end table
16771
16772 Default is none.
16773
16774 @item filter, f
16775 Set the resize filter type.
16776
16777 Possible values are:
16778 @table @var
16779 @item point
16780 @item bilinear
16781 @item bicubic
16782 @item spline16
16783 @item spline36
16784 @item lanczos
16785 @end table
16786
16787 Default is bilinear.
16788
16789 @item range, r
16790 Set the color range.
16791
16792 Possible values are:
16793 @table @var
16794 @item input
16795 @item limited
16796 @item full
16797 @end table
16798
16799 Default is same as input.
16800
16801 @item primaries, p
16802 Set the color primaries.
16803
16804 Possible values are:
16805 @table @var
16806 @item input
16807 @item 709
16808 @item unspecified
16809 @item 170m
16810 @item 240m
16811 @item 2020
16812 @end table
16813
16814 Default is same as input.
16815
16816 @item transfer, t
16817 Set the transfer characteristics.
16818
16819 Possible values are:
16820 @table @var
16821 @item input
16822 @item 709
16823 @item unspecified
16824 @item 601
16825 @item linear
16826 @item 2020_10
16827 @item 2020_12
16828 @item smpte2084
16829 @item iec61966-2-1
16830 @item arib-std-b67
16831 @end table
16832
16833 Default is same as input.
16834
16835 @item matrix, m
16836 Set the colorspace matrix.
16837
16838 Possible value are:
16839 @table @var
16840 @item input
16841 @item 709
16842 @item unspecified
16843 @item 470bg
16844 @item 170m
16845 @item 2020_ncl
16846 @item 2020_cl
16847 @end table
16848
16849 Default is same as input.
16850
16851 @item rangein, rin
16852 Set the input color range.
16853
16854 Possible values are:
16855 @table @var
16856 @item input
16857 @item limited
16858 @item full
16859 @end table
16860
16861 Default is same as input.
16862
16863 @item primariesin, pin
16864 Set the input color primaries.
16865
16866 Possible values are:
16867 @table @var
16868 @item input
16869 @item 709
16870 @item unspecified
16871 @item 170m
16872 @item 240m
16873 @item 2020
16874 @end table
16875
16876 Default is same as input.
16877
16878 @item transferin, tin
16879 Set the input transfer characteristics.
16880
16881 Possible values are:
16882 @table @var
16883 @item input
16884 @item 709
16885 @item unspecified
16886 @item 601
16887 @item linear
16888 @item 2020_10
16889 @item 2020_12
16890 @end table
16891
16892 Default is same as input.
16893
16894 @item matrixin, min
16895 Set the input colorspace matrix.
16896
16897 Possible value are:
16898 @table @var
16899 @item input
16900 @item 709
16901 @item unspecified
16902 @item 470bg
16903 @item 170m
16904 @item 2020_ncl
16905 @item 2020_cl
16906 @end table
16907
16908 @item chromal, c
16909 Set the output chroma location.
16910
16911 Possible values are:
16912 @table @var
16913 @item input
16914 @item left
16915 @item center
16916 @item topleft
16917 @item top
16918 @item bottomleft
16919 @item bottom
16920 @end table
16921
16922 @item chromalin, cin
16923 Set the input chroma location.
16924
16925 Possible values are:
16926 @table @var
16927 @item input
16928 @item left
16929 @item center
16930 @item topleft
16931 @item top
16932 @item bottomleft
16933 @item bottom
16934 @end table
16935
16936 @item npl
16937 Set the nominal peak luminance.
16938 @end table
16939
16940 The values of the @option{w} and @option{h} options are expressions
16941 containing the following constants:
16942
16943 @table @var
16944 @item in_w
16945 @item in_h
16946 The input width and height
16947
16948 @item iw
16949 @item ih
16950 These are the same as @var{in_w} and @var{in_h}.
16951
16952 @item out_w
16953 @item out_h
16954 The output (scaled) width and height
16955
16956 @item ow
16957 @item oh
16958 These are the same as @var{out_w} and @var{out_h}
16959
16960 @item a
16961 The same as @var{iw} / @var{ih}
16962
16963 @item sar
16964 input sample aspect ratio
16965
16966 @item dar
16967 The input display aspect ratio. Calculated from @code{(iw / ih) * sar}.
16968
16969 @item hsub
16970 @item vsub
16971 horizontal and vertical input chroma subsample values. For example for the
16972 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
16973
16974 @item ohsub
16975 @item ovsub
16976 horizontal and vertical output chroma subsample values. For example for the
16977 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
16978 @end table
16979
16980 @table @option
16981 @end table
16982
16983 @c man end VIDEO FILTERS
16984
16985 @chapter Video Sources
16986 @c man begin VIDEO SOURCES
16987
16988 Below is a description of the currently available video sources.
16989
16990 @section buffer
16991
16992 Buffer video frames, and make them available to the filter chain.
16993
16994 This source is mainly intended for a programmatic use, in particular
16995 through the interface defined in @file{libavfilter/vsrc_buffer.h}.
16996
16997 It accepts the following parameters:
16998
16999 @table @option
17000
17001 @item video_size
17002 Specify the size (width and height) of the buffered video frames. For the
17003 syntax of this option, check the
17004 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
17005
17006 @item width
17007 The input video width.
17008
17009 @item height
17010 The input video height.
17011
17012 @item pix_fmt
17013 A string representing the pixel format of the buffered video frames.
17014 It may be a number corresponding to a pixel format, or a pixel format
17015 name.
17016
17017 @item time_base
17018 Specify the timebase assumed by the timestamps of the buffered frames.
17019
17020 @item frame_rate
17021 Specify the frame rate expected for the video stream.
17022
17023 @item pixel_aspect, sar
17024 The sample (pixel) aspect ratio of the input video.
17025
17026 @item sws_param
17027 Specify the optional parameters to be used for the scale filter which
17028 is automatically inserted when an input change is detected in the
17029 input size or format.
17030
17031 @item hw_frames_ctx
17032 When using a hardware pixel format, this should be a reference to an
17033 AVHWFramesContext describing input frames.
17034 @end table
17035
17036 For example:
17037 @example
17038 buffer=width=320:height=240:pix_fmt=yuv410p:time_base=1/24:sar=1
17039 @end example
17040
17041 will instruct the source to accept video frames with size 320x240 and
17042 with format "yuv410p", assuming 1/24 as the timestamps timebase and
17043 square pixels (1:1 sample aspect ratio).
17044 Since the pixel format with name "yuv410p" corresponds to the number 6
17045 (check the enum AVPixelFormat definition in @file{libavutil/pixfmt.h}),
17046 this example corresponds to:
17047 @example
17048 buffer=size=320x240:pixfmt=6:time_base=1/24:pixel_aspect=1/1
17049 @end example
17050
17051 Alternatively, the options can be specified as a flat string, but this
17052 syntax is deprecated:
17053
17054 @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}]
17055
17056 @section cellauto
17057
17058 Create a pattern generated by an elementary cellular automaton.
17059
17060 The initial state of the cellular automaton can be defined through the
17061 @option{filename} and @option{pattern} options. If such options are
17062 not specified an initial state is created randomly.
17063
17064 At each new frame a new row in the video is filled with the result of
17065 the cellular automaton next generation. The behavior when the whole
17066 frame is filled is defined by the @option{scroll} option.
17067
17068 This source accepts the following options:
17069
17070 @table @option
17071 @item filename, f
17072 Read the initial cellular automaton state, i.e. the starting row, from
17073 the specified file.
17074 In the file, each non-whitespace character is considered an alive
17075 cell, a newline will terminate the row, and further characters in the
17076 file will be ignored.
17077
17078 @item pattern, p
17079 Read the initial cellular automaton state, i.e. the starting row, from
17080 the specified string.
17081
17082 Each non-whitespace character in the string is considered an alive
17083 cell, a newline will terminate the row, and further characters in the
17084 string will be ignored.
17085
17086 @item rate, r
17087 Set the video rate, that is the number of frames generated per second.
17088 Default is 25.
17089
17090 @item random_fill_ratio, ratio
17091 Set the random fill ratio for the initial cellular automaton row. It
17092 is a floating point number value ranging from 0 to 1, defaults to
17093 1/PHI.
17094
17095 This option is ignored when a file or a pattern is specified.
17096
17097 @item random_seed, seed
17098 Set the seed for filling randomly the initial row, must be an integer
17099 included between 0 and UINT32_MAX. If not specified, or if explicitly
17100 set to -1, the filter will try to use a good random seed on a best
17101 effort basis.
17102
17103 @item rule
17104 Set the cellular automaton rule, it is a number ranging from 0 to 255.
17105 Default value is 110.
17106
17107 @item size, s
17108 Set the size of the output video. For the syntax of this option, check the
17109 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
17110
17111 If @option{filename} or @option{pattern} is specified, the size is set
17112 by default to the width of the specified initial state row, and the
17113 height is set to @var{width} * PHI.
17114
17115 If @option{size} is set, it must contain the width of the specified
17116 pattern string, and the specified pattern will be centered in the
17117 larger row.
17118
17119 If a filename or a pattern string is not specified, the size value
17120 defaults to "320x518" (used for a randomly generated initial state).
17121
17122 @item scroll
17123 If set to 1, scroll the output upward when all the rows in the output
17124 have been already filled. If set to 0, the new generated row will be
17125 written over the top row just after the bottom row is filled.
17126 Defaults to 1.
17127
17128 @item start_full, full
17129 If set to 1, completely fill the output with generated rows before
17130 outputting the first frame.
17131 This is the default behavior, for disabling set the value to 0.
17132
17133 @item stitch
17134 If set to 1, stitch the left and right row edges together.
17135 This is the default behavior, for disabling set the value to 0.
17136 @end table
17137
17138 @subsection Examples
17139
17140 @itemize
17141 @item
17142 Read the initial state from @file{pattern}, and specify an output of
17143 size 200x400.
17144 @example
17145 cellauto=f=pattern:s=200x400
17146 @end example
17147
17148 @item
17149 Generate a random initial row with a width of 200 cells, with a fill
17150 ratio of 2/3:
17151 @example
17152 cellauto=ratio=2/3:s=200x200
17153 @end example
17154
17155 @item
17156 Create a pattern generated by rule 18 starting by a single alive cell
17157 centered on an initial row with width 100:
17158 @example
17159 cellauto=p=@@:s=100x400:full=0:rule=18
17160 @end example
17161
17162 @item
17163 Specify a more elaborated initial pattern:
17164 @example
17165 cellauto=p='@@@@ @@ @@@@':s=100x400:full=0:rule=18
17166 @end example
17167
17168 @end itemize
17169
17170 @anchor{coreimagesrc}
17171 @section coreimagesrc
17172 Video source generated on GPU using Apple's CoreImage API on OSX.
17173
17174 This video source is a specialized version of the @ref{coreimage} video filter.
17175 Use a core image generator at the beginning of the applied filterchain to
17176 generate the content.
17177
17178 The coreimagesrc video source accepts the following options:
17179 @table @option
17180 @item list_generators
17181 List all available generators along with all their respective options as well as
17182 possible minimum and maximum values along with the default values.
17183 @example
17184 list_generators=true
17185 @end example
17186
17187 @item size, s
17188 Specify the size of the sourced video. For the syntax of this option, check the
17189 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
17190 The default value is @code{320x240}.
17191
17192 @item rate, r
17193 Specify the frame rate of the sourced video, as the number of frames
17194 generated per second. It has to be a string in the format
17195 @var{frame_rate_num}/@var{frame_rate_den}, an integer number, a floating point
17196 number or a valid video frame rate abbreviation. The default value is
17197 "25".
17198
17199 @item sar
17200 Set the sample aspect ratio of the sourced video.
17201
17202 @item duration, d
17203 Set the duration of the sourced video. See
17204 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
17205 for the accepted syntax.
17206
17207 If not specified, or the expressed duration is negative, the video is
17208 supposed to be generated forever.
17209 @end table
17210
17211 Additionally, all options of the @ref{coreimage} video filter are accepted.
17212 A complete filterchain can be used for further processing of the
17213 generated input without CPU-HOST transfer. See @ref{coreimage} documentation
17214 and examples for details.
17215
17216 @subsection Examples
17217
17218 @itemize
17219
17220 @item
17221 Use CIQRCodeGenerator to create a QR code for the FFmpeg homepage,
17222 given as complete and escaped command-line for Apple's standard bash shell:
17223 @example
17224 ffmpeg -f lavfi -i coreimagesrc=s=100x100:filter=CIQRCodeGenerator@@inputMessage=https\\\\\://FFmpeg.org/@@inputCorrectionLevel=H -frames:v 1 QRCode.png
17225 @end example
17226 This example is equivalent to the QRCode example of @ref{coreimage} without the
17227 need for a nullsrc video source.
17228 @end itemize
17229
17230
17231 @section mandelbrot
17232
17233 Generate a Mandelbrot set fractal, and progressively zoom towards the
17234 point specified with @var{start_x} and @var{start_y}.
17235
17236 This source accepts the following options:
17237
17238 @table @option
17239
17240 @item end_pts
17241 Set the terminal pts value. Default value is 400.
17242
17243 @item end_scale
17244 Set the terminal scale value.
17245 Must be a floating point value. Default value is 0.3.
17246
17247 @item inner
17248 Set the inner coloring mode, that is the algorithm used to draw the
17249 Mandelbrot fractal internal region.
17250
17251 It shall assume one of the following values:
17252 @table @option
17253 @item black
17254 Set black mode.
17255 @item convergence
17256 Show time until convergence.
17257 @item mincol
17258 Set color based on point closest to the origin of the iterations.
17259 @item period
17260 Set period mode.
17261 @end table
17262
17263 Default value is @var{mincol}.
17264
17265 @item bailout
17266 Set the bailout value. Default value is 10.0.
17267
17268 @item maxiter
17269 Set the maximum of iterations performed by the rendering
17270 algorithm. Default value is 7189.
17271
17272 @item outer
17273 Set outer coloring mode.
17274 It shall assume one of following values:
17275 @table @option
17276 @item iteration_count
17277 Set iteration cound mode.
17278 @item normalized_iteration_count
17279 set normalized iteration count mode.
17280 @end table
17281 Default value is @var{normalized_iteration_count}.
17282
17283 @item rate, r
17284 Set frame rate, expressed as number of frames per second. Default
17285 value is "25".
17286
17287 @item size, s
17288 Set frame size. For the syntax of this option, check the "Video
17289 size" section in the ffmpeg-utils manual. Default value is "640x480".
17290
17291 @item start_scale
17292 Set the initial scale value. Default value is 3.0.
17293
17294 @item start_x
17295 Set the initial x position. Must be a floating point value between
17296 -100 and 100. Default value is -0.743643887037158704752191506114774.
17297
17298 @item start_y
17299 Set the initial y position. Must be a floating point value between
17300 -100 and 100. Default value is -0.131825904205311970493132056385139.
17301 @end table
17302
17303 @section mptestsrc
17304
17305 Generate various test patterns, as generated by the MPlayer test filter.
17306
17307 The size of the generated video is fixed, and is 256x256.
17308 This source is useful in particular for testing encoding features.
17309
17310 This source accepts the following options:
17311
17312 @table @option
17313
17314 @item rate, r
17315 Specify the frame rate of the sourced video, as the number of frames
17316 generated per second. It has to be a string in the format
17317 @var{frame_rate_num}/@var{frame_rate_den}, an integer number, a floating point
17318 number or a valid video frame rate abbreviation. The default value is
17319 "25".
17320
17321 @item duration, d
17322 Set the duration of the sourced video. See
17323 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
17324 for the accepted syntax.
17325
17326 If not specified, or the expressed duration is negative, the video is
17327 supposed to be generated forever.
17328
17329 @item test, t
17330
17331 Set the number or the name of the test to perform. Supported tests are:
17332 @table @option
17333 @item dc_luma
17334 @item dc_chroma
17335 @item freq_luma
17336 @item freq_chroma
17337 @item amp_luma
17338 @item amp_chroma
17339 @item cbp
17340 @item mv
17341 @item ring1
17342 @item ring2
17343 @item all
17344
17345 @end table
17346
17347 Default value is "all", which will cycle through the list of all tests.
17348 @end table
17349
17350 Some examples:
17351 @example
17352 mptestsrc=t=dc_luma
17353 @end example
17354
17355 will generate a "dc_luma" test pattern.
17356
17357 @section frei0r_src
17358
17359 Provide a frei0r source.
17360
17361 To enable compilation of this filter you need to install the frei0r
17362 header and configure FFmpeg with @code{--enable-frei0r}.
17363
17364 This source accepts the following parameters:
17365
17366 @table @option
17367
17368 @item size
17369 The size of the video to generate. For the syntax of this option, check the
17370 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
17371
17372 @item framerate
17373 The framerate of the generated video. It may be a string of the form
17374 @var{num}/@var{den} or a frame rate abbreviation.
17375
17376 @item filter_name
17377 The name to the frei0r source to load. For more information regarding frei0r and
17378 how to set the parameters, read the @ref{frei0r} section in the video filters
17379 documentation.
17380
17381 @item filter_params
17382 A '|'-separated list of parameters to pass to the frei0r source.
17383
17384 @end table
17385
17386 For example, to generate a frei0r partik0l source with size 200x200
17387 and frame rate 10 which is overlaid on the overlay filter main input:
17388 @example
17389 frei0r_src=size=200x200:framerate=10:filter_name=partik0l:filter_params=1234 [overlay]; [in][overlay] overlay
17390 @end example
17391
17392 @section life
17393
17394 Generate a life pattern.
17395
17396 This source is based on a generalization of John Conway's life game.
17397
17398 The sourced input represents a life grid, each pixel represents a cell
17399 which can be in one of two possible states, alive or dead. Every cell
17400 interacts with its eight neighbours, which are the cells that are
17401 horizontally, vertically, or diagonally adjacent.
17402
17403 At each interaction the grid evolves according to the adopted rule,
17404 which specifies the number of neighbor alive cells which will make a
17405 cell stay alive or born. The @option{rule} option allows one to specify
17406 the rule to adopt.
17407
17408 This source accepts the following options:
17409
17410 @table @option
17411 @item filename, f
17412 Set the file from which to read the initial grid state. In the file,
17413 each non-whitespace character is considered an alive cell, and newline
17414 is used to delimit the end of each row.
17415
17416 If this option is not specified, the initial grid is generated
17417 randomly.
17418
17419 @item rate, r
17420 Set the video rate, that is the number of frames generated per second.
17421 Default is 25.
17422
17423 @item random_fill_ratio, ratio
17424 Set the random fill ratio for the initial random grid. It is a
17425 floating point number value ranging from 0 to 1, defaults to 1/PHI.
17426 It is ignored when a file is specified.
17427
17428 @item random_seed, seed
17429 Set the seed for filling the initial random grid, must be an integer
17430 included between 0 and UINT32_MAX. If not specified, or if explicitly
17431 set to -1, the filter will try to use a good random seed on a best
17432 effort basis.
17433
17434 @item rule
17435 Set the life rule.
17436
17437 A rule can be specified with a code of the kind "S@var{NS}/B@var{NB}",
17438 where @var{NS} and @var{NB} are sequences of numbers in the range 0-8,
17439 @var{NS} specifies the number of alive neighbor cells which make a
17440 live cell stay alive, and @var{NB} the number of alive neighbor cells
17441 which make a dead cell to become alive (i.e. to "born").
17442 "s" and "b" can be used in place of "S" and "B", respectively.
17443
17444 Alternatively a rule can be specified by an 18-bits integer. The 9
17445 high order bits are used to encode the next cell state if it is alive
17446 for each number of neighbor alive cells, the low order bits specify
17447 the rule for "borning" new cells. Higher order bits encode for an
17448 higher number of neighbor cells.
17449 For example the number 6153 = @code{(12<<9)+9} specifies a stay alive
17450 rule of 12 and a born rule of 9, which corresponds to "S23/B03".
17451
17452 Default value is "S23/B3", which is the original Conway's game of life
17453 rule, and will keep a cell alive if it has 2 or 3 neighbor alive
17454 cells, and will born a new cell if there are three alive cells around
17455 a dead cell.
17456
17457 @item size, s
17458 Set the size of the output video. For the syntax of this option, check the
17459 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
17460
17461 If @option{filename} is specified, the size is set by default to the
17462 same size of the input file. If @option{size} is set, it must contain
17463 the size specified in the input file, and the initial grid defined in
17464 that file is centered in the larger resulting area.
17465
17466 If a filename is not specified, the size value defaults to "320x240"
17467 (used for a randomly generated initial grid).
17468
17469 @item stitch
17470 If set to 1, stitch the left and right grid edges together, and the
17471 top and bottom edges also. Defaults to 1.
17472
17473 @item mold
17474 Set cell mold speed. If set, a dead cell will go from @option{death_color} to
17475 @option{mold_color} with a step of @option{mold}. @option{mold} can have a
17476 value from 0 to 255.
17477
17478 @item life_color
17479 Set the color of living (or new born) cells.
17480
17481 @item death_color
17482 Set the color of dead cells. If @option{mold} is set, this is the first color
17483 used to represent a dead cell.
17484
17485 @item mold_color
17486 Set mold color, for definitely dead and moldy cells.
17487
17488 For the syntax of these 3 color options, check the "Color" section in the
17489 ffmpeg-utils manual.
17490 @end table
17491
17492 @subsection Examples
17493
17494 @itemize
17495 @item
17496 Read a grid from @file{pattern}, and center it on a grid of size
17497 300x300 pixels:
17498 @example
17499 life=f=pattern:s=300x300
17500 @end example
17501
17502 @item
17503 Generate a random grid of size 200x200, with a fill ratio of 2/3:
17504 @example
17505 life=ratio=2/3:s=200x200
17506 @end example
17507
17508 @item
17509 Specify a custom rule for evolving a randomly generated grid:
17510 @example
17511 life=rule=S14/B34
17512 @end example
17513
17514 @item
17515 Full example with slow death effect (mold) using @command{ffplay}:
17516 @example
17517 ffplay -f lavfi life=s=300x200:mold=10:r=60:ratio=0.1:death_color=#C83232:life_color=#00ff00,scale=1200:800:flags=16
17518 @end example
17519 @end itemize
17520
17521 @anchor{allrgb}
17522 @anchor{allyuv}
17523 @anchor{color}
17524 @anchor{haldclutsrc}
17525 @anchor{nullsrc}
17526 @anchor{rgbtestsrc}
17527 @anchor{smptebars}
17528 @anchor{smptehdbars}
17529 @anchor{testsrc}
17530 @anchor{testsrc2}
17531 @anchor{yuvtestsrc}
17532 @section allrgb, allyuv, color, haldclutsrc, nullsrc, rgbtestsrc, smptebars, smptehdbars, testsrc, testsrc2, yuvtestsrc
17533
17534 The @code{allrgb} source returns frames of size 4096x4096 of all rgb colors.
17535
17536 The @code{allyuv} source returns frames of size 4096x4096 of all yuv colors.
17537
17538 The @code{color} source provides an uniformly colored input.
17539
17540 The @code{haldclutsrc} source provides an identity Hald CLUT. See also
17541 @ref{haldclut} filter.
17542
17543 The @code{nullsrc} source returns unprocessed video frames. It is
17544 mainly useful to be employed in analysis / debugging tools, or as the
17545 source for filters which ignore the input data.
17546
17547 The @code{rgbtestsrc} source generates an RGB test pattern useful for
17548 detecting RGB vs BGR issues. You should see a red, green and blue
17549 stripe from top to bottom.
17550
17551 The @code{smptebars} source generates a color bars pattern, based on
17552 the SMPTE Engineering Guideline EG 1-1990.
17553
17554 The @code{smptehdbars} source generates a color bars pattern, based on
17555 the SMPTE RP 219-2002.
17556
17557 The @code{testsrc} source generates a test video pattern, showing a
17558 color pattern, a scrolling gradient and a timestamp. This is mainly
17559 intended for testing purposes.
17560
17561 The @code{testsrc2} source is similar to testsrc, but supports more
17562 pixel formats instead of just @code{rgb24}. This allows using it as an
17563 input for other tests without requiring a format conversion.
17564
17565 The @code{yuvtestsrc} source generates an YUV test pattern. You should
17566 see a y, cb and cr stripe from top to bottom.
17567
17568 The sources accept the following parameters:
17569
17570 @table @option
17571
17572 @item level
17573 Specify the level of the Hald CLUT, only available in the @code{haldclutsrc}
17574 source. A level of @code{N} generates a picture of @code{N*N*N} by @code{N*N*N}
17575 pixels to be used as identity matrix for 3D lookup tables. Each component is
17576 coded on a @code{1/(N*N)} scale.
17577
17578 @item color, c
17579 Specify the color of the source, only available in the @code{color}
17580 source. For the syntax of this option, check the "Color" section in the
17581 ffmpeg-utils manual.
17582
17583 @item size, s
17584 Specify the size of the sourced video. For the syntax of this option, check the
17585 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
17586 The default value is @code{320x240}.
17587
17588 This option is not available with the @code{allrgb}, @code{allyuv}, and
17589 @code{haldclutsrc} filters.
17590
17591 @item rate, r
17592 Specify the frame rate of the sourced video, as the number of frames
17593 generated per second. It has to be a string in the format
17594 @var{frame_rate_num}/@var{frame_rate_den}, an integer number, a floating point
17595 number or a valid video frame rate abbreviation. The default value is
17596 "25".
17597
17598 @item duration, d
17599 Set the duration of the sourced video. See
17600 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
17601 for the accepted syntax.
17602
17603 If not specified, or the expressed duration is negative, the video is
17604 supposed to be generated forever.
17605
17606 @item sar
17607 Set the sample aspect ratio of the sourced video.
17608
17609 @item alpha
17610 Specify the alpha (opacity) of the background, only available in the
17611 @code{testsrc2} source. The value must be between 0 (fully transparent) and
17612 255 (fully opaque, the default).
17613
17614 @item decimals, n
17615 Set the number of decimals to show in the timestamp, only available in the
17616 @code{testsrc} source.
17617
17618 The displayed timestamp value will correspond to the original
17619 timestamp value multiplied by the power of 10 of the specified
17620 value. Default value is 0.
17621 @end table
17622
17623 @subsection Examples
17624
17625 @itemize
17626 @item
17627 Generate a video with a duration of 5.3 seconds, with size
17628 176x144 and a frame rate of 10 frames per second:
17629 @example
17630 testsrc=duration=5.3:size=qcif:rate=10
17631 @end example
17632
17633 @item
17634 The following graph description will generate a red source
17635 with an opacity of 0.2, with size "qcif" and a frame rate of 10
17636 frames per second:
17637 @example
17638 color=c=red@@0.2:s=qcif:r=10
17639 @end example
17640
17641 @item
17642 If the input content is to be ignored, @code{nullsrc} can be used. The
17643 following command generates noise in the luminance plane by employing
17644 the @code{geq} filter:
17645 @example
17646 nullsrc=s=256x256, geq=random(1)*255:128:128
17647 @end example
17648 @end itemize
17649
17650 @subsection Commands
17651
17652 The @code{color} source supports the following commands:
17653
17654 @table @option
17655 @item c, color
17656 Set the color of the created image. Accepts the same syntax of the
17657 corresponding @option{color} option.
17658 @end table
17659
17660 @section openclsrc
17661
17662 Generate video using an OpenCL program.
17663
17664 @table @option
17665
17666 @item source
17667 OpenCL program source file.
17668
17669 @item kernel
17670 Kernel name in program.
17671
17672 @item size, s
17673 Size of frames to generate.  This must be set.
17674
17675 @item format
17676 Pixel format to use for the generated frames.  This must be set.
17677
17678 @item rate, r
17679 Number of frames generated every second.  Default value is '25'.
17680
17681 @end table
17682
17683 For details of how the program loading works, see the @ref{program_opencl}
17684 filter.
17685
17686 Example programs:
17687
17688 @itemize
17689 @item
17690 Generate a colour ramp by setting pixel values from the position of the pixel
17691 in the output image.  (Note that this will work with all pixel formats, but
17692 the generated output will not be the same.)
17693 @verbatim
17694 __kernel void ramp(__write_only image2d_t dst,
17695                    unsigned int index)
17696 {
17697     int2 loc = (int2)(get_global_id(0), get_global_id(1));
17698
17699     float4 val;
17700     val.xy = val.zw = convert_float2(loc) / convert_float2(get_image_dim(dst));
17701
17702     write_imagef(dst, loc, val);
17703 }
17704 @end verbatim
17705
17706 @item
17707 Generate a Sierpinski carpet pattern, panning by a single pixel each frame.
17708 @verbatim
17709 __kernel void sierpinski_carpet(__write_only image2d_t dst,
17710                                 unsigned int index)
17711 {
17712     int2 loc = (int2)(get_global_id(0), get_global_id(1));
17713
17714     float4 value = 0.0f;
17715     int x = loc.x + index;
17716     int y = loc.y + index;
17717     while (x > 0 || y > 0) {
17718         if (x % 3 == 1 && y % 3 == 1) {
17719             value = 1.0f;
17720             break;
17721         }
17722         x /= 3;
17723         y /= 3;
17724     }
17725
17726     write_imagef(dst, loc, value);
17727 }
17728 @end verbatim
17729
17730 @end itemize
17731
17732 @c man end VIDEO SOURCES
17733
17734 @chapter Video Sinks
17735 @c man begin VIDEO SINKS
17736
17737 Below is a description of the currently available video sinks.
17738
17739 @section buffersink
17740
17741 Buffer video frames, and make them available to the end of the filter
17742 graph.
17743
17744 This sink is mainly intended for programmatic use, in particular
17745 through the interface defined in @file{libavfilter/buffersink.h}
17746 or the options system.
17747
17748 It accepts a pointer to an AVBufferSinkContext structure, which
17749 defines the incoming buffers' formats, to be passed as the opaque
17750 parameter to @code{avfilter_init_filter} for initialization.
17751
17752 @section nullsink
17753
17754 Null video sink: do absolutely nothing with the input video. It is
17755 mainly useful as a template and for use in analysis / debugging
17756 tools.
17757
17758 @c man end VIDEO SINKS
17759
17760 @chapter Multimedia Filters
17761 @c man begin MULTIMEDIA FILTERS
17762
17763 Below is a description of the currently available multimedia filters.
17764
17765 @section abitscope
17766
17767 Convert input audio to a video output, displaying the audio bit scope.
17768
17769 The filter accepts the following options:
17770
17771 @table @option
17772 @item rate, r
17773 Set frame rate, expressed as number of frames per second. Default
17774 value is "25".
17775
17776 @item size, s
17777 Specify the video size for the output. For the syntax of this option, check the
17778 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
17779 Default value is @code{1024x256}.
17780
17781 @item colors
17782 Specify list of colors separated by space or by '|' which will be used to
17783 draw channels. Unrecognized or missing colors will be replaced
17784 by white color.
17785 @end table
17786
17787 @section ahistogram
17788
17789 Convert input audio to a video output, displaying the volume histogram.
17790
17791 The filter accepts the following options:
17792
17793 @table @option
17794 @item dmode
17795 Specify how histogram is calculated.
17796
17797 It accepts the following values:
17798 @table @samp
17799 @item single
17800 Use single histogram for all channels.
17801 @item separate
17802 Use separate histogram for each channel.
17803 @end table
17804 Default is @code{single}.
17805
17806 @item rate, r
17807 Set frame rate, expressed as number of frames per second. Default
17808 value is "25".
17809
17810 @item size, s
17811 Specify the video size for the output. For the syntax of this option, check the
17812 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
17813 Default value is @code{hd720}.
17814
17815 @item scale
17816 Set display scale.
17817
17818 It accepts the following values:
17819 @table @samp
17820 @item log
17821 logarithmic
17822 @item sqrt
17823 square root
17824 @item cbrt
17825 cubic root
17826 @item lin
17827 linear
17828 @item rlog
17829 reverse logarithmic
17830 @end table
17831 Default is @code{log}.
17832
17833 @item ascale
17834 Set amplitude scale.
17835
17836 It accepts the following values:
17837 @table @samp
17838 @item log
17839 logarithmic
17840 @item lin
17841 linear
17842 @end table
17843 Default is @code{log}.
17844
17845 @item acount
17846 Set how much frames to accumulate in histogram.
17847 Defauls is 1. Setting this to -1 accumulates all frames.
17848
17849 @item rheight
17850 Set histogram ratio of window height.
17851
17852 @item slide
17853 Set sonogram sliding.
17854
17855 It accepts the following values:
17856 @table @samp
17857 @item replace
17858 replace old rows with new ones.
17859 @item scroll
17860 scroll from top to bottom.
17861 @end table
17862 Default is @code{replace}.
17863 @end table
17864
17865 @section aphasemeter
17866
17867 Convert input audio to a video output, displaying the audio phase.
17868
17869 The filter accepts the following options:
17870
17871 @table @option
17872 @item rate, r
17873 Set the output frame rate. Default value is @code{25}.
17874
17875 @item size, s
17876 Set the video size for the output. For the syntax of this option, check the
17877 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
17878 Default value is @code{800x400}.
17879
17880 @item rc
17881 @item gc
17882 @item bc
17883 Specify the red, green, blue contrast. Default values are @code{2},
17884 @code{7} and @code{1}.
17885 Allowed range is @code{[0, 255]}.
17886
17887 @item mpc
17888 Set color which will be used for drawing median phase. If color is
17889 @code{none} which is default, no median phase value will be drawn.
17890
17891 @item video
17892 Enable video output. Default is enabled.
17893 @end table
17894
17895 The filter also exports the frame metadata @code{lavfi.aphasemeter.phase} which
17896 represents mean phase of current audio frame. Value is in range @code{[-1, 1]}.
17897 The @code{-1} means left and right channels are completely out of phase and
17898 @code{1} means channels are in phase.
17899
17900 @section avectorscope
17901
17902 Convert input audio to a video output, representing the audio vector
17903 scope.
17904
17905 The filter is used to measure the difference between channels of stereo
17906 audio stream. A monoaural signal, consisting of identical left and right
17907 signal, results in straight vertical line. Any stereo separation is visible
17908 as a deviation from this line, creating a Lissajous figure.
17909 If the straight (or deviation from it) but horizontal line appears this
17910 indicates that the left and right channels are out of phase.
17911
17912 The filter accepts the following options:
17913
17914 @table @option
17915 @item mode, m
17916 Set the vectorscope mode.
17917
17918 Available values are:
17919 @table @samp
17920 @item lissajous
17921 Lissajous rotated by 45 degrees.
17922
17923 @item lissajous_xy
17924 Same as above but not rotated.
17925
17926 @item polar
17927 Shape resembling half of circle.
17928 @end table
17929
17930 Default value is @samp{lissajous}.
17931
17932 @item size, s
17933 Set the video size for the output. For the syntax of this option, check the
17934 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
17935 Default value is @code{400x400}.
17936
17937 @item rate, r
17938 Set the output frame rate. Default value is @code{25}.
17939
17940 @item rc
17941 @item gc
17942 @item bc
17943 @item ac
17944 Specify the red, green, blue and alpha contrast. Default values are @code{40},
17945 @code{160}, @code{80} and @code{255}.
17946 Allowed range is @code{[0, 255]}.
17947
17948 @item rf
17949 @item gf
17950 @item bf
17951 @item af
17952 Specify the red, green, blue and alpha fade. Default values are @code{15},
17953 @code{10}, @code{5} and @code{5}.
17954 Allowed range is @code{[0, 255]}.
17955
17956 @item zoom
17957 Set the zoom factor. Default value is @code{1}. Allowed range is @code{[0, 10]}.
17958 Values lower than @var{1} will auto adjust zoom factor to maximal possible value.
17959
17960 @item draw
17961 Set the vectorscope drawing mode.
17962
17963 Available values are:
17964 @table @samp
17965 @item dot
17966 Draw dot for each sample.
17967
17968 @item line
17969 Draw line between previous and current sample.
17970 @end table
17971
17972 Default value is @samp{dot}.
17973
17974 @item scale
17975 Specify amplitude scale of audio samples.
17976
17977 Available values are:
17978 @table @samp
17979 @item lin
17980 Linear.
17981
17982 @item sqrt
17983 Square root.
17984
17985 @item cbrt
17986 Cubic root.
17987
17988 @item log
17989 Logarithmic.
17990 @end table
17991
17992 @item swap
17993 Swap left channel axis with right channel axis.
17994
17995 @item mirror
17996 Mirror axis.
17997
17998 @table @samp
17999 @item none
18000 No mirror.
18001
18002 @item x
18003 Mirror only x axis.
18004
18005 @item y
18006 Mirror only y axis.
18007
18008 @item xy
18009 Mirror both axis.
18010 @end table
18011
18012 @end table
18013
18014 @subsection Examples
18015
18016 @itemize
18017 @item
18018 Complete example using @command{ffplay}:
18019 @example
18020 ffplay -f lavfi 'amovie=input.mp3, asplit [a][out1];
18021              [a] avectorscope=zoom=1.3:rc=2:gc=200:bc=10:rf=1:gf=8:bf=7 [out0]'
18022 @end example
18023 @end itemize
18024
18025 @section bench, abench
18026
18027 Benchmark part of a filtergraph.
18028
18029 The filter accepts the following options:
18030
18031 @table @option
18032 @item action
18033 Start or stop a timer.
18034
18035 Available values are:
18036 @table @samp
18037 @item start
18038 Get the current time, set it as frame metadata (using the key
18039 @code{lavfi.bench.start_time}), and forward the frame to the next filter.
18040
18041 @item stop
18042 Get the current time and fetch the @code{lavfi.bench.start_time} metadata from
18043 the input frame metadata to get the time difference. Time difference, average,
18044 maximum and minimum time (respectively @code{t}, @code{avg}, @code{max} and
18045 @code{min}) are then printed. The timestamps are expressed in seconds.
18046 @end table
18047 @end table
18048
18049 @subsection Examples
18050
18051 @itemize
18052 @item
18053 Benchmark @ref{selectivecolor} filter:
18054 @example
18055 bench=start,selectivecolor=reds=-.2 .12 -.49,bench=stop
18056 @end example
18057 @end itemize
18058
18059 @section concat
18060
18061 Concatenate audio and video streams, joining them together one after the
18062 other.
18063
18064 The filter works on segments of synchronized video and audio streams. All
18065 segments must have the same number of streams of each type, and that will
18066 also be the number of streams at output.
18067
18068 The filter accepts the following options:
18069
18070 @table @option
18071
18072 @item n
18073 Set the number of segments. Default is 2.
18074
18075 @item v
18076 Set the number of output video streams, that is also the number of video
18077 streams in each segment. Default is 1.
18078
18079 @item a
18080 Set the number of output audio streams, that is also the number of audio
18081 streams in each segment. Default is 0.
18082
18083 @item unsafe
18084 Activate unsafe mode: do not fail if segments have a different format.
18085
18086 @end table
18087
18088 The filter has @var{v}+@var{a} outputs: first @var{v} video outputs, then
18089 @var{a} audio outputs.
18090
18091 There are @var{n}x(@var{v}+@var{a}) inputs: first the inputs for the first
18092 segment, in the same order as the outputs, then the inputs for the second
18093 segment, etc.
18094
18095 Related streams do not always have exactly the same duration, for various
18096 reasons including codec frame size or sloppy authoring. For that reason,
18097 related synchronized streams (e.g. a video and its audio track) should be
18098 concatenated at once. The concat filter will use the duration of the longest
18099 stream in each segment (except the last one), and if necessary pad shorter
18100 audio streams with silence.
18101
18102 For this filter to work correctly, all segments must start at timestamp 0.
18103
18104 All corresponding streams must have the same parameters in all segments; the
18105 filtering system will automatically select a common pixel format for video
18106 streams, and a common sample format, sample rate and channel layout for
18107 audio streams, but other settings, such as resolution, must be converted
18108 explicitly by the user.
18109
18110 Different frame rates are acceptable but will result in variable frame rate
18111 at output; be sure to configure the output file to handle it.
18112
18113 @subsection Examples
18114
18115 @itemize
18116 @item
18117 Concatenate an opening, an episode and an ending, all in bilingual version
18118 (video in stream 0, audio in streams 1 and 2):
18119 @example
18120 ffmpeg -i opening.mkv -i episode.mkv -i ending.mkv -filter_complex \
18121   '[0:0] [0:1] [0:2] [1:0] [1:1] [1:2] [2:0] [2:1] [2:2]
18122    concat=n=3:v=1:a=2 [v] [a1] [a2]' \
18123   -map '[v]' -map '[a1]' -map '[a2]' output.mkv
18124 @end example
18125
18126 @item
18127 Concatenate two parts, handling audio and video separately, using the
18128 (a)movie sources, and adjusting the resolution:
18129 @example
18130 movie=part1.mp4, scale=512:288 [v1] ; amovie=part1.mp4 [a1] ;
18131 movie=part2.mp4, scale=512:288 [v2] ; amovie=part2.mp4 [a2] ;
18132 [v1] [v2] concat [outv] ; [a1] [a2] concat=v=0:a=1 [outa]
18133 @end example
18134 Note that a desync will happen at the stitch if the audio and video streams
18135 do not have exactly the same duration in the first file.
18136
18137 @end itemize
18138
18139 @section drawgraph, adrawgraph
18140
18141 Draw a graph using input video or audio metadata.
18142
18143 It accepts the following parameters:
18144
18145 @table @option
18146 @item m1
18147 Set 1st frame metadata key from which metadata values will be used to draw a graph.
18148
18149 @item fg1
18150 Set 1st foreground color expression.
18151
18152 @item m2
18153 Set 2nd frame metadata key from which metadata values will be used to draw a graph.
18154
18155 @item fg2
18156 Set 2nd foreground color expression.
18157
18158 @item m3
18159 Set 3rd frame metadata key from which metadata values will be used to draw a graph.
18160
18161 @item fg3
18162 Set 3rd foreground color expression.
18163
18164 @item m4
18165 Set 4th frame metadata key from which metadata values will be used to draw a graph.
18166
18167 @item fg4
18168 Set 4th foreground color expression.
18169
18170 @item min
18171 Set minimal value of metadata value.
18172
18173 @item max
18174 Set maximal value of metadata value.
18175
18176 @item bg
18177 Set graph background color. Default is white.
18178
18179 @item mode
18180 Set graph mode.
18181
18182 Available values for mode is:
18183 @table @samp
18184 @item bar
18185 @item dot
18186 @item line
18187 @end table
18188
18189 Default is @code{line}.
18190
18191 @item slide
18192 Set slide mode.
18193
18194 Available values for slide is:
18195 @table @samp
18196 @item frame
18197 Draw new frame when right border is reached.
18198
18199 @item replace
18200 Replace old columns with new ones.
18201
18202 @item scroll
18203 Scroll from right to left.
18204
18205 @item rscroll
18206 Scroll from left to right.
18207
18208 @item picture
18209 Draw single picture.
18210 @end table
18211
18212 Default is @code{frame}.
18213
18214 @item size
18215 Set size of graph video. For the syntax of this option, check the
18216 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
18217 The default value is @code{900x256}.
18218
18219 The foreground color expressions can use the following variables:
18220 @table @option
18221 @item MIN
18222 Minimal value of metadata value.
18223
18224 @item MAX
18225 Maximal value of metadata value.
18226
18227 @item VAL
18228 Current metadata key value.
18229 @end table
18230
18231 The color is defined as 0xAABBGGRR.
18232 @end table
18233
18234 Example using metadata from @ref{signalstats} filter:
18235 @example
18236 signalstats,drawgraph=lavfi.signalstats.YAVG:min=0:max=255
18237 @end example
18238
18239 Example using metadata from @ref{ebur128} filter:
18240 @example
18241 ebur128=metadata=1,adrawgraph=lavfi.r128.M:min=-120:max=5
18242 @end example
18243
18244 @anchor{ebur128}
18245 @section ebur128
18246
18247 EBU R128 scanner filter. This filter takes an audio stream as input and outputs
18248 it unchanged. By default, it logs a message at a frequency of 10Hz with the
18249 Momentary loudness (identified by @code{M}), Short-term loudness (@code{S}),
18250 Integrated loudness (@code{I}) and Loudness Range (@code{LRA}).
18251
18252 The filter also has a video output (see the @var{video} option) with a real
18253 time graph to observe the loudness evolution. The graphic contains the logged
18254 message mentioned above, so it is not printed anymore when this option is set,
18255 unless the verbose logging is set. The main graphing area contains the
18256 short-term loudness (3 seconds of analysis), and the gauge on the right is for
18257 the momentary loudness (400 milliseconds).
18258
18259 More information about the Loudness Recommendation EBU R128 on
18260 @url{http://tech.ebu.ch/loudness}.
18261
18262 The filter accepts the following options:
18263
18264 @table @option
18265
18266 @item video
18267 Activate the video output. The audio stream is passed unchanged whether this
18268 option is set or no. The video stream will be the first output stream if
18269 activated. Default is @code{0}.
18270
18271 @item size
18272 Set the video size. This option is for video only. For the syntax of this
18273 option, check the
18274 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
18275 Default and minimum resolution is @code{640x480}.
18276
18277 @item meter
18278 Set the EBU scale meter. Default is @code{9}. Common values are @code{9} and
18279 @code{18}, respectively for EBU scale meter +9 and EBU scale meter +18. Any
18280 other integer value between this range is allowed.
18281
18282 @item metadata
18283 Set metadata injection. If set to @code{1}, the audio input will be segmented
18284 into 100ms output frames, each of them containing various loudness information
18285 in metadata.  All the metadata keys are prefixed with @code{lavfi.r128.}.
18286
18287 Default is @code{0}.
18288
18289 @item framelog
18290 Force the frame logging level.
18291
18292 Available values are:
18293 @table @samp
18294 @item info
18295 information logging level
18296 @item verbose
18297 verbose logging level
18298 @end table
18299
18300 By default, the logging level is set to @var{info}. If the @option{video} or
18301 the @option{metadata} options are set, it switches to @var{verbose}.
18302
18303 @item peak
18304 Set peak mode(s).
18305
18306 Available modes can be cumulated (the option is a @code{flag} type). Possible
18307 values are:
18308 @table @samp
18309 @item none
18310 Disable any peak mode (default).
18311 @item sample
18312 Enable sample-peak mode.
18313
18314 Simple peak mode looking for the higher sample value. It logs a message
18315 for sample-peak (identified by @code{SPK}).
18316 @item true
18317 Enable true-peak mode.
18318
18319 If enabled, the peak lookup is done on an over-sampled version of the input
18320 stream for better peak accuracy. It logs a message for true-peak.
18321 (identified by @code{TPK}) and true-peak per frame (identified by @code{FTPK}).
18322 This mode requires a build with @code{libswresample}.
18323 @end table
18324
18325 @item dualmono
18326 Treat mono input files as "dual mono". If a mono file is intended for playback
18327 on a stereo system, its EBU R128 measurement will be perceptually incorrect.
18328 If set to @code{true}, this option will compensate for this effect.
18329 Multi-channel input files are not affected by this option.
18330
18331 @item panlaw
18332 Set a specific pan law to be used for the measurement of dual mono files.
18333 This parameter is optional, and has a default value of -3.01dB.
18334 @end table
18335
18336 @subsection Examples
18337
18338 @itemize
18339 @item
18340 Real-time graph using @command{ffplay}, with a EBU scale meter +18:
18341 @example
18342 ffplay -f lavfi -i "amovie=input.mp3,ebur128=video=1:meter=18 [out0][out1]"
18343 @end example
18344
18345 @item
18346 Run an analysis with @command{ffmpeg}:
18347 @example
18348 ffmpeg -nostats -i input.mp3 -filter_complex ebur128 -f null -
18349 @end example
18350 @end itemize
18351
18352 @section interleave, ainterleave
18353
18354 Temporally interleave frames from several inputs.
18355
18356 @code{interleave} works with video inputs, @code{ainterleave} with audio.
18357
18358 These filters read frames from several inputs and send the oldest
18359 queued frame to the output.
18360
18361 Input streams must have well defined, monotonically increasing frame
18362 timestamp values.
18363
18364 In order to submit one frame to output, these filters need to enqueue
18365 at least one frame for each input, so they cannot work in case one
18366 input is not yet terminated and will not receive incoming frames.
18367
18368 For example consider the case when one input is a @code{select} filter
18369 which always drops input frames. The @code{interleave} filter will keep
18370 reading from that input, but it will never be able to send new frames
18371 to output until the input sends an end-of-stream signal.
18372
18373 Also, depending on inputs synchronization, the filters will drop
18374 frames in case one input receives more frames than the other ones, and
18375 the queue is already filled.
18376
18377 These filters accept the following options:
18378
18379 @table @option
18380 @item nb_inputs, n
18381 Set the number of different inputs, it is 2 by default.
18382 @end table
18383
18384 @subsection Examples
18385
18386 @itemize
18387 @item
18388 Interleave frames belonging to different streams using @command{ffmpeg}:
18389 @example
18390 ffmpeg -i bambi.avi -i pr0n.mkv -filter_complex "[0:v][1:v] interleave" out.avi
18391 @end example
18392
18393 @item
18394 Add flickering blur effect:
18395 @example
18396 select='if(gt(random(0), 0.2), 1, 2)':n=2 [tmp], boxblur=2:2, [tmp] interleave
18397 @end example
18398 @end itemize
18399
18400 @section metadata, ametadata
18401
18402 Manipulate frame metadata.
18403
18404 This filter accepts the following options:
18405
18406 @table @option
18407 @item mode
18408 Set mode of operation of the filter.
18409
18410 Can be one of the following:
18411
18412 @table @samp
18413 @item select
18414 If both @code{value} and @code{key} is set, select frames
18415 which have such metadata. If only @code{key} is set, select
18416 every frame that has such key in metadata.
18417
18418 @item add
18419 Add new metadata @code{key} and @code{value}. If key is already available
18420 do nothing.
18421
18422 @item modify
18423 Modify value of already present key.
18424
18425 @item delete
18426 If @code{value} is set, delete only keys that have such value.
18427 Otherwise, delete key. If @code{key} is not set, delete all metadata values in
18428 the frame.
18429
18430 @item print
18431 Print key and its value if metadata was found. If @code{key} is not set print all
18432 metadata values available in frame.
18433 @end table
18434
18435 @item key
18436 Set key used with all modes. Must be set for all modes except @code{print} and @code{delete}.
18437
18438 @item value
18439 Set metadata value which will be used. This option is mandatory for
18440 @code{modify} and @code{add} mode.
18441
18442 @item function
18443 Which function to use when comparing metadata value and @code{value}.
18444
18445 Can be one of following:
18446
18447 @table @samp
18448 @item same_str
18449 Values are interpreted as strings, returns true if metadata value is same as @code{value}.
18450
18451 @item starts_with
18452 Values are interpreted as strings, returns true if metadata value starts with
18453 the @code{value} option string.
18454
18455 @item less
18456 Values are interpreted as floats, returns true if metadata value is less than @code{value}.
18457
18458 @item equal
18459 Values are interpreted as floats, returns true if @code{value} is equal with metadata value.
18460
18461 @item greater
18462 Values are interpreted as floats, returns true if metadata value is greater than @code{value}.
18463
18464 @item expr
18465 Values are interpreted as floats, returns true if expression from option @code{expr}
18466 evaluates to true.
18467 @end table
18468
18469 @item expr
18470 Set expression which is used when @code{function} is set to @code{expr}.
18471 The expression is evaluated through the eval API and can contain the following
18472 constants:
18473
18474 @table @option
18475 @item VALUE1
18476 Float representation of @code{value} from metadata key.
18477
18478 @item VALUE2
18479 Float representation of @code{value} as supplied by user in @code{value} option.
18480 @end table
18481
18482 @item file
18483 If specified in @code{print} mode, output is written to the named file. Instead of
18484 plain filename any writable url can be specified. Filename ``-'' is a shorthand
18485 for standard output. If @code{file} option is not set, output is written to the log
18486 with AV_LOG_INFO loglevel.
18487
18488 @end table
18489
18490 @subsection Examples
18491
18492 @itemize
18493 @item
18494 Print all metadata values for frames with key @code{lavfi.signalstats.YDIF} with values
18495 between 0 and 1.
18496 @example
18497 signalstats,metadata=print:key=lavfi.signalstats.YDIF:value=0:function=expr:expr='between(VALUE1,0,1)'
18498 @end example
18499 @item
18500 Print silencedetect output to file @file{metadata.txt}.
18501 @example
18502 silencedetect,ametadata=mode=print:file=metadata.txt
18503 @end example
18504 @item
18505 Direct all metadata to a pipe with file descriptor 4.
18506 @example
18507 metadata=mode=print:file='pipe\:4'
18508 @end example
18509 @end itemize
18510
18511 @section perms, aperms
18512
18513 Set read/write permissions for the output frames.
18514
18515 These filters are mainly aimed at developers to test direct path in the
18516 following filter in the filtergraph.
18517
18518 The filters accept the following options:
18519
18520 @table @option
18521 @item mode
18522 Select the permissions mode.
18523
18524 It accepts the following values:
18525 @table @samp
18526 @item none
18527 Do nothing. This is the default.
18528 @item ro
18529 Set all the output frames read-only.
18530 @item rw
18531 Set all the output frames directly writable.
18532 @item toggle
18533 Make the frame read-only if writable, and writable if read-only.
18534 @item random
18535 Set each output frame read-only or writable randomly.
18536 @end table
18537
18538 @item seed
18539 Set the seed for the @var{random} mode, must be an integer included between
18540 @code{0} and @code{UINT32_MAX}. If not specified, or if explicitly set to
18541 @code{-1}, the filter will try to use a good random seed on a best effort
18542 basis.
18543 @end table
18544
18545 Note: in case of auto-inserted filter between the permission filter and the
18546 following one, the permission might not be received as expected in that
18547 following filter. Inserting a @ref{format} or @ref{aformat} filter before the
18548 perms/aperms filter can avoid this problem.
18549
18550 @section realtime, arealtime
18551
18552 Slow down filtering to match real time approximately.
18553
18554 These filters will pause the filtering for a variable amount of time to
18555 match the output rate with the input timestamps.
18556 They are similar to the @option{re} option to @code{ffmpeg}.
18557
18558 They accept the following options:
18559
18560 @table @option
18561 @item limit
18562 Time limit for the pauses. Any pause longer than that will be considered
18563 a timestamp discontinuity and reset the timer. Default is 2 seconds.
18564 @end table
18565
18566 @anchor{select}
18567 @section select, aselect
18568
18569 Select frames to pass in output.
18570
18571 This filter accepts the following options:
18572
18573 @table @option
18574
18575 @item expr, e
18576 Set expression, which is evaluated for each input frame.
18577
18578 If the expression is evaluated to zero, the frame is discarded.
18579
18580 If the evaluation result is negative or NaN, the frame is sent to the
18581 first output; otherwise it is sent to the output with index
18582 @code{ceil(val)-1}, assuming that the input index starts from 0.
18583
18584 For example a value of @code{1.2} corresponds to the output with index
18585 @code{ceil(1.2)-1 = 2-1 = 1}, that is the second output.
18586
18587 @item outputs, n
18588 Set the number of outputs. The output to which to send the selected
18589 frame is based on the result of the evaluation. Default value is 1.
18590 @end table
18591
18592 The expression can contain the following constants:
18593
18594 @table @option
18595 @item n
18596 The (sequential) number of the filtered frame, starting from 0.
18597
18598 @item selected_n
18599 The (sequential) number of the selected frame, starting from 0.
18600
18601 @item prev_selected_n
18602 The sequential number of the last selected frame. It's NAN if undefined.
18603
18604 @item TB
18605 The timebase of the input timestamps.
18606
18607 @item pts
18608 The PTS (Presentation TimeStamp) of the filtered video frame,
18609 expressed in @var{TB} units. It's NAN if undefined.
18610
18611 @item t
18612 The PTS of the filtered video frame,
18613 expressed in seconds. It's NAN if undefined.
18614
18615 @item prev_pts
18616 The PTS of the previously filtered video frame. It's NAN if undefined.
18617
18618 @item prev_selected_pts
18619 The PTS of the last previously filtered video frame. It's NAN if undefined.
18620
18621 @item prev_selected_t
18622 The PTS of the last previously selected video frame, expressed in seconds. It's NAN if undefined.
18623
18624 @item start_pts
18625 The PTS of the first video frame in the video. It's NAN if undefined.
18626
18627 @item start_t
18628 The time of the first video frame in the video. It's NAN if undefined.
18629
18630 @item pict_type @emph{(video only)}
18631 The type of the filtered frame. It can assume one of the following
18632 values:
18633 @table @option
18634 @item I
18635 @item P
18636 @item B
18637 @item S
18638 @item SI
18639 @item SP
18640 @item BI
18641 @end table
18642
18643 @item interlace_type @emph{(video only)}
18644 The frame interlace type. It can assume one of the following values:
18645 @table @option
18646 @item PROGRESSIVE
18647 The frame is progressive (not interlaced).
18648 @item TOPFIRST
18649 The frame is top-field-first.
18650 @item BOTTOMFIRST
18651 The frame is bottom-field-first.
18652 @end table
18653
18654 @item consumed_sample_n @emph{(audio only)}
18655 the number of selected samples before the current frame
18656
18657 @item samples_n @emph{(audio only)}
18658 the number of samples in the current frame
18659
18660 @item sample_rate @emph{(audio only)}
18661 the input sample rate
18662
18663 @item key
18664 This is 1 if the filtered frame is a key-frame, 0 otherwise.
18665
18666 @item pos
18667 the position in the file of the filtered frame, -1 if the information
18668 is not available (e.g. for synthetic video)
18669
18670 @item scene @emph{(video only)}
18671 value between 0 and 1 to indicate a new scene; a low value reflects a low
18672 probability for the current frame to introduce a new scene, while a higher
18673 value means the current frame is more likely to be one (see the example below)
18674
18675 @item concatdec_select
18676 The concat demuxer can select only part of a concat input file by setting an
18677 inpoint and an outpoint, but the output packets may not be entirely contained
18678 in the selected interval. By using this variable, it is possible to skip frames
18679 generated by the concat demuxer which are not exactly contained in the selected
18680 interval.
18681
18682 This works by comparing the frame pts against the @var{lavf.concat.start_time}
18683 and the @var{lavf.concat.duration} packet metadata values which are also
18684 present in the decoded frames.
18685
18686 The @var{concatdec_select} variable is -1 if the frame pts is at least
18687 start_time and either the duration metadata is missing or the frame pts is less
18688 than start_time + duration, 0 otherwise, and NaN if the start_time metadata is
18689 missing.
18690
18691 That basically means that an input frame is selected if its pts is within the
18692 interval set by the concat demuxer.
18693
18694 @end table
18695
18696 The default value of the select expression is "1".
18697
18698 @subsection Examples
18699
18700 @itemize
18701 @item
18702 Select all frames in input:
18703 @example
18704 select
18705 @end example
18706
18707 The example above is the same as:
18708 @example
18709 select=1
18710 @end example
18711
18712 @item
18713 Skip all frames:
18714 @example
18715 select=0
18716 @end example
18717
18718 @item
18719 Select only I-frames:
18720 @example
18721 select='eq(pict_type\,I)'
18722 @end example
18723
18724 @item
18725 Select one frame every 100:
18726 @example
18727 select='not(mod(n\,100))'
18728 @end example
18729
18730 @item
18731 Select only frames contained in the 10-20 time interval:
18732 @example
18733 select=between(t\,10\,20)
18734 @end example
18735
18736 @item
18737 Select only I-frames contained in the 10-20 time interval:
18738 @example
18739 select=between(t\,10\,20)*eq(pict_type\,I)
18740 @end example
18741
18742 @item
18743 Select frames with a minimum distance of 10 seconds:
18744 @example
18745 select='isnan(prev_selected_t)+gte(t-prev_selected_t\,10)'
18746 @end example
18747
18748 @item
18749 Use aselect to select only audio frames with samples number > 100:
18750 @example
18751 aselect='gt(samples_n\,100)'
18752 @end example
18753
18754 @item
18755 Create a mosaic of the first scenes:
18756 @example
18757 ffmpeg -i video.avi -vf select='gt(scene\,0.4)',scale=160:120,tile -frames:v 1 preview.png
18758 @end example
18759
18760 Comparing @var{scene} against a value between 0.3 and 0.5 is generally a sane
18761 choice.
18762
18763 @item
18764 Send even and odd frames to separate outputs, and compose them:
18765 @example
18766 select=n=2:e='mod(n, 2)+1' [odd][even]; [odd] pad=h=2*ih [tmp]; [tmp][even] overlay=y=h
18767 @end example
18768
18769 @item
18770 Select useful frames from an ffconcat file which is using inpoints and
18771 outpoints but where the source files are not intra frame only.
18772 @example
18773 ffmpeg -copyts -vsync 0 -segment_time_metadata 1 -i input.ffconcat -vf select=concatdec_select -af aselect=concatdec_select output.avi
18774 @end example
18775 @end itemize
18776
18777 @section sendcmd, asendcmd
18778
18779 Send commands to filters in the filtergraph.
18780
18781 These filters read commands to be sent to other filters in the
18782 filtergraph.
18783
18784 @code{sendcmd} must be inserted between two video filters,
18785 @code{asendcmd} must be inserted between two audio filters, but apart
18786 from that they act the same way.
18787
18788 The specification of commands can be provided in the filter arguments
18789 with the @var{commands} option, or in a file specified by the
18790 @var{filename} option.
18791
18792 These filters accept the following options:
18793 @table @option
18794 @item commands, c
18795 Set the commands to be read and sent to the other filters.
18796 @item filename, f
18797 Set the filename of the commands to be read and sent to the other
18798 filters.
18799 @end table
18800
18801 @subsection Commands syntax
18802
18803 A commands description consists of a sequence of interval
18804 specifications, comprising a list of commands to be executed when a
18805 particular event related to that interval occurs. The occurring event
18806 is typically the current frame time entering or leaving a given time
18807 interval.
18808
18809 An interval is specified by the following syntax:
18810 @example
18811 @var{START}[-@var{END}] @var{COMMANDS};
18812 @end example
18813
18814 The time interval is specified by the @var{START} and @var{END} times.
18815 @var{END} is optional and defaults to the maximum time.
18816
18817 The current frame time is considered within the specified interval if
18818 it is included in the interval [@var{START}, @var{END}), that is when
18819 the time is greater or equal to @var{START} and is lesser than
18820 @var{END}.
18821
18822 @var{COMMANDS} consists of a sequence of one or more command
18823 specifications, separated by ",", relating to that interval.  The
18824 syntax of a command specification is given by:
18825 @example
18826 [@var{FLAGS}] @var{TARGET} @var{COMMAND} @var{ARG}
18827 @end example
18828
18829 @var{FLAGS} is optional and specifies the type of events relating to
18830 the time interval which enable sending the specified command, and must
18831 be a non-null sequence of identifier flags separated by "+" or "|" and
18832 enclosed between "[" and "]".
18833
18834 The following flags are recognized:
18835 @table @option
18836 @item enter
18837 The command is sent when the current frame timestamp enters the
18838 specified interval. In other words, the command is sent when the
18839 previous frame timestamp was not in the given interval, and the
18840 current is.
18841
18842 @item leave
18843 The command is sent when the current frame timestamp leaves the
18844 specified interval. In other words, the command is sent when the
18845 previous frame timestamp was in the given interval, and the
18846 current is not.
18847 @end table
18848
18849 If @var{FLAGS} is not specified, a default value of @code{[enter]} is
18850 assumed.
18851
18852 @var{TARGET} specifies the target of the command, usually the name of
18853 the filter class or a specific filter instance name.
18854
18855 @var{COMMAND} specifies the name of the command for the target filter.
18856
18857 @var{ARG} is optional and specifies the optional list of argument for
18858 the given @var{COMMAND}.
18859
18860 Between one interval specification and another, whitespaces, or
18861 sequences of characters starting with @code{#} until the end of line,
18862 are ignored and can be used to annotate comments.
18863
18864 A simplified BNF description of the commands specification syntax
18865 follows:
18866 @example
18867 @var{COMMAND_FLAG}  ::= "enter" | "leave"
18868 @var{COMMAND_FLAGS} ::= @var{COMMAND_FLAG} [(+|"|")@var{COMMAND_FLAG}]
18869 @var{COMMAND}       ::= ["[" @var{COMMAND_FLAGS} "]"] @var{TARGET} @var{COMMAND} [@var{ARG}]
18870 @var{COMMANDS}      ::= @var{COMMAND} [,@var{COMMANDS}]
18871 @var{INTERVAL}      ::= @var{START}[-@var{END}] @var{COMMANDS}
18872 @var{INTERVALS}     ::= @var{INTERVAL}[;@var{INTERVALS}]
18873 @end example
18874
18875 @subsection Examples
18876
18877 @itemize
18878 @item
18879 Specify audio tempo change at second 4:
18880 @example
18881 asendcmd=c='4.0 atempo tempo 1.5',atempo
18882 @end example
18883
18884 @item
18885 Target a specific filter instance:
18886 @example
18887 asendcmd=c='4.0 atempo@@my tempo 1.5',atempo@@my
18888 @end example
18889
18890 @item
18891 Specify a list of drawtext and hue commands in a file.
18892 @example
18893 # show text in the interval 5-10
18894 5.0-10.0 [enter] drawtext reinit 'fontfile=FreeSerif.ttf:text=hello world',
18895          [leave] drawtext reinit 'fontfile=FreeSerif.ttf:text=';
18896
18897 # desaturate the image in the interval 15-20
18898 15.0-20.0 [enter] hue s 0,
18899           [enter] drawtext reinit 'fontfile=FreeSerif.ttf:text=nocolor',
18900           [leave] hue s 1,
18901           [leave] drawtext reinit 'fontfile=FreeSerif.ttf:text=color';
18902
18903 # apply an exponential saturation fade-out effect, starting from time 25
18904 25 [enter] hue s exp(25-t)
18905 @end example
18906
18907 A filtergraph allowing to read and process the above command list
18908 stored in a file @file{test.cmd}, can be specified with:
18909 @example
18910 sendcmd=f=test.cmd,drawtext=fontfile=FreeSerif.ttf:text='',hue
18911 @end example
18912 @end itemize
18913
18914 @anchor{setpts}
18915 @section setpts, asetpts
18916
18917 Change the PTS (presentation timestamp) of the input frames.
18918
18919 @code{setpts} works on video frames, @code{asetpts} on audio frames.
18920
18921 This filter accepts the following options:
18922
18923 @table @option
18924
18925 @item expr
18926 The expression which is evaluated for each frame to construct its timestamp.
18927
18928 @end table
18929
18930 The expression is evaluated through the eval API and can contain the following
18931 constants:
18932
18933 @table @option
18934 @item FRAME_RATE
18935 frame rate, only defined for constant frame-rate video
18936
18937 @item PTS
18938 The presentation timestamp in input
18939
18940 @item N
18941 The count of the input frame for video or the number of consumed samples,
18942 not including the current frame for audio, starting from 0.
18943
18944 @item NB_CONSUMED_SAMPLES
18945 The number of consumed samples, not including the current frame (only
18946 audio)
18947
18948 @item NB_SAMPLES, S
18949 The number of samples in the current frame (only audio)
18950
18951 @item SAMPLE_RATE, SR
18952 The audio sample rate.
18953
18954 @item STARTPTS
18955 The PTS of the first frame.
18956
18957 @item STARTT
18958 the time in seconds of the first frame
18959
18960 @item INTERLACED
18961 State whether the current frame is interlaced.
18962
18963 @item T
18964 the time in seconds of the current frame
18965
18966 @item POS
18967 original position in the file of the frame, or undefined if undefined
18968 for the current frame
18969
18970 @item PREV_INPTS
18971 The previous input PTS.
18972
18973 @item PREV_INT
18974 previous input time in seconds
18975
18976 @item PREV_OUTPTS
18977 The previous output PTS.
18978
18979 @item PREV_OUTT
18980 previous output time in seconds
18981
18982 @item RTCTIME
18983 The wallclock (RTC) time in microseconds. This is deprecated, use time(0)
18984 instead.
18985
18986 @item RTCSTART
18987 The wallclock (RTC) time at the start of the movie in microseconds.
18988
18989 @item TB
18990 The timebase of the input timestamps.
18991
18992 @end table
18993
18994 @subsection Examples
18995
18996 @itemize
18997 @item
18998 Start counting PTS from zero
18999 @example
19000 setpts=PTS-STARTPTS
19001 @end example
19002
19003 @item
19004 Apply fast motion effect:
19005 @example
19006 setpts=0.5*PTS
19007 @end example
19008
19009 @item
19010 Apply slow motion effect:
19011 @example
19012 setpts=2.0*PTS
19013 @end example
19014
19015 @item
19016 Set fixed rate of 25 frames per second:
19017 @example
19018 setpts=N/(25*TB)
19019 @end example
19020
19021 @item
19022 Set fixed rate 25 fps with some jitter:
19023 @example
19024 setpts='1/(25*TB) * (N + 0.05 * sin(N*2*PI/25))'
19025 @end example
19026
19027 @item
19028 Apply an offset of 10 seconds to the input PTS:
19029 @example
19030 setpts=PTS+10/TB
19031 @end example
19032
19033 @item
19034 Generate timestamps from a "live source" and rebase onto the current timebase:
19035 @example
19036 setpts='(RTCTIME - RTCSTART) / (TB * 1000000)'
19037 @end example
19038
19039 @item
19040 Generate timestamps by counting samples:
19041 @example
19042 asetpts=N/SR/TB
19043 @end example
19044
19045 @end itemize
19046
19047 @section setrange
19048
19049 Force color range for the output video frame.
19050
19051 The @code{setrange} filter marks the color range property for the
19052 output frames. It does not change the input frame, but only sets the
19053 corresponding property, which affects how the frame is treated by
19054 following filters.
19055
19056 The filter accepts the following options:
19057
19058 @table @option
19059
19060 @item range
19061 Available values are:
19062
19063 @table @samp
19064 @item auto
19065 Keep the same color range property.
19066
19067 @item unspecified, unknown
19068 Set the color range as unspecified.
19069
19070 @item limited, tv, mpeg
19071 Set the color range as limited.
19072
19073 @item full, pc, jpeg
19074 Set the color range as full.
19075 @end table
19076 @end table
19077
19078 @section settb, asettb
19079
19080 Set the timebase to use for the output frames timestamps.
19081 It is mainly useful for testing timebase configuration.
19082
19083 It accepts the following parameters:
19084
19085 @table @option
19086
19087 @item expr, tb
19088 The expression which is evaluated into the output timebase.
19089
19090 @end table
19091
19092 The value for @option{tb} is an arithmetic expression representing a
19093 rational. The expression can contain the constants "AVTB" (the default
19094 timebase), "intb" (the input timebase) and "sr" (the sample rate,
19095 audio only). Default value is "intb".
19096
19097 @subsection Examples
19098
19099 @itemize
19100 @item
19101 Set the timebase to 1/25:
19102 @example
19103 settb=expr=1/25
19104 @end example
19105
19106 @item
19107 Set the timebase to 1/10:
19108 @example
19109 settb=expr=0.1
19110 @end example
19111
19112 @item
19113 Set the timebase to 1001/1000:
19114 @example
19115 settb=1+0.001
19116 @end example
19117
19118 @item
19119 Set the timebase to 2*intb:
19120 @example
19121 settb=2*intb
19122 @end example
19123
19124 @item
19125 Set the default timebase value:
19126 @example
19127 settb=AVTB
19128 @end example
19129 @end itemize
19130
19131 @section showcqt
19132 Convert input audio to a video output representing frequency spectrum
19133 logarithmically using Brown-Puckette constant Q transform algorithm with
19134 direct frequency domain coefficient calculation (but the transform itself
19135 is not really constant Q, instead the Q factor is actually variable/clamped),
19136 with musical tone scale, from E0 to D#10.
19137
19138 The filter accepts the following options:
19139
19140 @table @option
19141 @item size, s
19142 Specify the video size for the output. It must be even. For the syntax of this option,
19143 check the @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
19144 Default value is @code{1920x1080}.
19145
19146 @item fps, rate, r
19147 Set the output frame rate. Default value is @code{25}.
19148
19149 @item bar_h
19150 Set the bargraph height. It must be even. Default value is @code{-1} which
19151 computes the bargraph height automatically.
19152
19153 @item axis_h
19154 Set the axis height. It must be even. Default value is @code{-1} which computes
19155 the axis height automatically.
19156
19157 @item sono_h
19158 Set the sonogram height. It must be even. Default value is @code{-1} which
19159 computes the sonogram height automatically.
19160
19161 @item fullhd
19162 Set the fullhd resolution. This option is deprecated, use @var{size}, @var{s}
19163 instead. Default value is @code{1}.
19164
19165 @item sono_v, volume
19166 Specify the sonogram volume expression. It can contain variables:
19167 @table @option
19168 @item bar_v
19169 the @var{bar_v} evaluated expression
19170 @item frequency, freq, f
19171 the frequency where it is evaluated
19172 @item timeclamp, tc
19173 the value of @var{timeclamp} option
19174 @end table
19175 and functions:
19176 @table @option
19177 @item a_weighting(f)
19178 A-weighting of equal loudness
19179 @item b_weighting(f)
19180 B-weighting of equal loudness
19181 @item c_weighting(f)
19182 C-weighting of equal loudness.
19183 @end table
19184 Default value is @code{16}.
19185
19186 @item bar_v, volume2
19187 Specify the bargraph volume expression. It can contain variables:
19188 @table @option
19189 @item sono_v
19190 the @var{sono_v} evaluated expression
19191 @item frequency, freq, f
19192 the frequency where it is evaluated
19193 @item timeclamp, tc
19194 the value of @var{timeclamp} option
19195 @end table
19196 and functions:
19197 @table @option
19198 @item a_weighting(f)
19199 A-weighting of equal loudness
19200 @item b_weighting(f)
19201 B-weighting of equal loudness
19202 @item c_weighting(f)
19203 C-weighting of equal loudness.
19204 @end table
19205 Default value is @code{sono_v}.
19206
19207 @item sono_g, gamma
19208 Specify the sonogram gamma. Lower gamma makes the spectrum more contrast,
19209 higher gamma makes the spectrum having more range. Default value is @code{3}.
19210 Acceptable range is @code{[1, 7]}.
19211
19212 @item bar_g, gamma2
19213 Specify the bargraph gamma. Default value is @code{1}. Acceptable range is
19214 @code{[1, 7]}.
19215
19216 @item bar_t
19217 Specify the bargraph transparency level. Lower value makes the bargraph sharper.
19218 Default value is @code{1}. Acceptable range is @code{[0, 1]}.
19219
19220 @item timeclamp, tc
19221 Specify the transform timeclamp. At low frequency, there is trade-off between
19222 accuracy in time domain and frequency domain. If timeclamp is lower,
19223 event in time domain is represented more accurately (such as fast bass drum),
19224 otherwise event in frequency domain is represented more accurately
19225 (such as bass guitar). Acceptable range is @code{[0.002, 1]}. Default value is @code{0.17}.
19226
19227 @item attack
19228 Set attack time in seconds. The default is @code{0} (disabled). Otherwise, it
19229 limits future samples by applying asymmetric windowing in time domain, useful
19230 when low latency is required. Accepted range is @code{[0, 1]}.
19231
19232 @item basefreq
19233 Specify the transform base frequency. Default value is @code{20.01523126408007475},
19234 which is frequency 50 cents below E0. Acceptable range is @code{[10, 100000]}.
19235
19236 @item endfreq
19237 Specify the transform end frequency. Default value is @code{20495.59681441799654},
19238 which is frequency 50 cents above D#10. Acceptable range is @code{[10, 100000]}.
19239
19240 @item coeffclamp
19241 This option is deprecated and ignored.
19242
19243 @item tlength
19244 Specify the transform length in time domain. Use this option to control accuracy
19245 trade-off between time domain and frequency domain at every frequency sample.
19246 It can contain variables:
19247 @table @option
19248 @item frequency, freq, f
19249 the frequency where it is evaluated
19250 @item timeclamp, tc
19251 the value of @var{timeclamp} option.
19252 @end table
19253 Default value is @code{384*tc/(384+tc*f)}.
19254
19255 @item count
19256 Specify the transform count for every video frame. Default value is @code{6}.
19257 Acceptable range is @code{[1, 30]}.
19258
19259 @item fcount
19260 Specify the transform count for every single pixel. Default value is @code{0},
19261 which makes it computed automatically. Acceptable range is @code{[0, 10]}.
19262
19263 @item fontfile
19264 Specify font file for use with freetype to draw the axis. If not specified,
19265 use embedded font. Note that drawing with font file or embedded font is not
19266 implemented with custom @var{basefreq} and @var{endfreq}, use @var{axisfile}
19267 option instead.
19268
19269 @item font
19270 Specify fontconfig pattern. This has lower priority than @var{fontfile}.
19271 The : in the pattern may be replaced by | to avoid unnecessary escaping.
19272
19273 @item fontcolor
19274 Specify font color expression. This is arithmetic expression that should return
19275 integer value 0xRRGGBB. It can contain variables:
19276 @table @option
19277 @item frequency, freq, f
19278 the frequency where it is evaluated
19279 @item timeclamp, tc
19280 the value of @var{timeclamp} option
19281 @end table
19282 and functions:
19283 @table @option
19284 @item midi(f)
19285 midi number of frequency f, some midi numbers: E0(16), C1(24), C2(36), A4(69)
19286 @item r(x), g(x), b(x)
19287 red, green, and blue value of intensity x.
19288 @end table
19289 Default value is @code{st(0, (midi(f)-59.5)/12);
19290 st(1, if(between(ld(0),0,1), 0.5-0.5*cos(2*PI*ld(0)), 0));
19291 r(1-ld(1)) + b(ld(1))}.
19292
19293 @item axisfile
19294 Specify image file to draw the axis. This option override @var{fontfile} and
19295 @var{fontcolor} option.
19296
19297 @item axis, text
19298 Enable/disable drawing text to the axis. If it is set to @code{0}, drawing to
19299 the axis is disabled, ignoring @var{fontfile} and @var{axisfile} option.
19300 Default value is @code{1}.
19301
19302 @item csp
19303 Set colorspace. The accepted values are:
19304 @table @samp
19305 @item unspecified
19306 Unspecified (default)
19307
19308 @item bt709
19309 BT.709
19310
19311 @item fcc
19312 FCC
19313
19314 @item bt470bg
19315 BT.470BG or BT.601-6 625
19316
19317 @item smpte170m
19318 SMPTE-170M or BT.601-6 525
19319
19320 @item smpte240m
19321 SMPTE-240M
19322
19323 @item bt2020ncl
19324 BT.2020 with non-constant luminance
19325
19326 @end table
19327
19328 @item cscheme
19329 Set spectrogram color scheme. This is list of floating point values with format
19330 @code{left_r|left_g|left_b|right_r|right_g|right_b}.
19331 The default is @code{1|0.5|0|0|0.5|1}.
19332
19333 @end table
19334
19335 @subsection Examples
19336
19337 @itemize
19338 @item
19339 Playing audio while showing the spectrum:
19340 @example
19341 ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt [out0]'
19342 @end example
19343
19344 @item
19345 Same as above, but with frame rate 30 fps:
19346 @example
19347 ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt=fps=30:count=5 [out0]'
19348 @end example
19349
19350 @item
19351 Playing at 1280x720:
19352 @example
19353 ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt=s=1280x720:count=4 [out0]'
19354 @end example
19355
19356 @item
19357 Disable sonogram display:
19358 @example
19359 sono_h=0
19360 @end example
19361
19362 @item
19363 A1 and its harmonics: A1, A2, (near)E3, A3:
19364 @example
19365 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),
19366                  asplit[a][out1]; [a] showcqt [out0]'
19367 @end example
19368
19369 @item
19370 Same as above, but with more accuracy in frequency domain:
19371 @example
19372 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),
19373                  asplit[a][out1]; [a] showcqt=timeclamp=0.5 [out0]'
19374 @end example
19375
19376 @item
19377 Custom volume:
19378 @example
19379 bar_v=10:sono_v=bar_v*a_weighting(f)
19380 @end example
19381
19382 @item
19383 Custom gamma, now spectrum is linear to the amplitude.
19384 @example
19385 bar_g=2:sono_g=2
19386 @end example
19387
19388 @item
19389 Custom tlength equation:
19390 @example
19391 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)))'
19392 @end example
19393
19394 @item
19395 Custom fontcolor and fontfile, C-note is colored green, others are colored blue:
19396 @example
19397 fontcolor='if(mod(floor(midi(f)+0.5),12), 0x0000FF, g(1))':fontfile=myfont.ttf
19398 @end example
19399
19400 @item
19401 Custom font using fontconfig:
19402 @example
19403 font='Courier New,Monospace,mono|bold'
19404 @end example
19405
19406 @item
19407 Custom frequency range with custom axis using image file:
19408 @example
19409 axisfile=myaxis.png:basefreq=40:endfreq=10000
19410 @end example
19411 @end itemize
19412
19413 @section showfreqs
19414
19415 Convert input audio to video output representing the audio power spectrum.
19416 Audio amplitude is on Y-axis while frequency is on X-axis.
19417
19418 The filter accepts the following options:
19419
19420 @table @option
19421 @item size, s
19422 Specify size of video. For the syntax of this option, check the
19423 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
19424 Default is @code{1024x512}.
19425
19426 @item mode
19427 Set display mode.
19428 This set how each frequency bin will be represented.
19429
19430 It accepts the following values:
19431 @table @samp
19432 @item line
19433 @item bar
19434 @item dot
19435 @end table
19436 Default is @code{bar}.
19437
19438 @item ascale
19439 Set amplitude scale.
19440
19441 It accepts the following values:
19442 @table @samp
19443 @item lin
19444 Linear scale.
19445
19446 @item sqrt
19447 Square root scale.
19448
19449 @item cbrt
19450 Cubic root scale.
19451
19452 @item log
19453 Logarithmic scale.
19454 @end table
19455 Default is @code{log}.
19456
19457 @item fscale
19458 Set frequency scale.
19459
19460 It accepts the following values:
19461 @table @samp
19462 @item lin
19463 Linear scale.
19464
19465 @item log
19466 Logarithmic scale.
19467
19468 @item rlog
19469 Reverse logarithmic scale.
19470 @end table
19471 Default is @code{lin}.
19472
19473 @item win_size
19474 Set window size.
19475
19476 It accepts the following values:
19477 @table @samp
19478 @item w16
19479 @item w32
19480 @item w64
19481 @item w128
19482 @item w256
19483 @item w512
19484 @item w1024
19485 @item w2048
19486 @item w4096
19487 @item w8192
19488 @item w16384
19489 @item w32768
19490 @item w65536
19491 @end table
19492 Default is @code{w2048}
19493
19494 @item win_func
19495 Set windowing function.
19496
19497 It accepts the following values:
19498 @table @samp
19499 @item rect
19500 @item bartlett
19501 @item hanning
19502 @item hamming
19503 @item blackman
19504 @item welch
19505 @item flattop
19506 @item bharris
19507 @item bnuttall
19508 @item bhann
19509 @item sine
19510 @item nuttall
19511 @item lanczos
19512 @item gauss
19513 @item tukey
19514 @item dolph
19515 @item cauchy
19516 @item parzen
19517 @item poisson
19518 @end table
19519 Default is @code{hanning}.
19520
19521 @item overlap
19522 Set window overlap. In range @code{[0, 1]}. Default is @code{1},
19523 which means optimal overlap for selected window function will be picked.
19524
19525 @item averaging
19526 Set time averaging. Setting this to 0 will display current maximal peaks.
19527 Default is @code{1}, which means time averaging is disabled.
19528
19529 @item colors
19530 Specify list of colors separated by space or by '|' which will be used to
19531 draw channel frequencies. Unrecognized or missing colors will be replaced
19532 by white color.
19533
19534 @item cmode
19535 Set channel display mode.
19536
19537 It accepts the following values:
19538 @table @samp
19539 @item combined
19540 @item separate
19541 @end table
19542 Default is @code{combined}.
19543
19544 @item minamp
19545 Set minimum amplitude used in @code{log} amplitude scaler.
19546
19547 @end table
19548
19549 @anchor{showspectrum}
19550 @section showspectrum
19551
19552 Convert input audio to a video output, representing the audio frequency
19553 spectrum.
19554
19555 The filter accepts the following options:
19556
19557 @table @option
19558 @item size, s
19559 Specify the video size for the output. For the syntax of this option, check the
19560 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
19561 Default value is @code{640x512}.
19562
19563 @item slide
19564 Specify how the spectrum should slide along the window.
19565
19566 It accepts the following values:
19567 @table @samp
19568 @item replace
19569 the samples start again on the left when they reach the right
19570 @item scroll
19571 the samples scroll from right to left
19572 @item fullframe
19573 frames are only produced when the samples reach the right
19574 @item rscroll
19575 the samples scroll from left to right
19576 @end table
19577
19578 Default value is @code{replace}.
19579
19580 @item mode
19581 Specify display mode.
19582
19583 It accepts the following values:
19584 @table @samp
19585 @item combined
19586 all channels are displayed in the same row
19587 @item separate
19588 all channels are displayed in separate rows
19589 @end table
19590
19591 Default value is @samp{combined}.
19592
19593 @item color
19594 Specify display color mode.
19595
19596 It accepts the following values:
19597 @table @samp
19598 @item channel
19599 each channel is displayed in a separate color
19600 @item intensity
19601 each channel is displayed using the same color scheme
19602 @item rainbow
19603 each channel is displayed using the rainbow color scheme
19604 @item moreland
19605 each channel is displayed using the moreland color scheme
19606 @item nebulae
19607 each channel is displayed using the nebulae color scheme
19608 @item fire
19609 each channel is displayed using the fire color scheme
19610 @item fiery
19611 each channel is displayed using the fiery color scheme
19612 @item fruit
19613 each channel is displayed using the fruit color scheme
19614 @item cool
19615 each channel is displayed using the cool color scheme
19616 @end table
19617
19618 Default value is @samp{channel}.
19619
19620 @item scale
19621 Specify scale used for calculating intensity color values.
19622
19623 It accepts the following values:
19624 @table @samp
19625 @item lin
19626 linear
19627 @item sqrt
19628 square root, default
19629 @item cbrt
19630 cubic root
19631 @item log
19632 logarithmic
19633 @item 4thrt
19634 4th root
19635 @item 5thrt
19636 5th root
19637 @end table
19638
19639 Default value is @samp{sqrt}.
19640
19641 @item saturation
19642 Set saturation modifier for displayed colors. Negative values provide
19643 alternative color scheme. @code{0} is no saturation at all.
19644 Saturation must be in [-10.0, 10.0] range.
19645 Default value is @code{1}.
19646
19647 @item win_func
19648 Set window function.
19649
19650 It accepts the following values:
19651 @table @samp
19652 @item rect
19653 @item bartlett
19654 @item hann
19655 @item hanning
19656 @item hamming
19657 @item blackman
19658 @item welch
19659 @item flattop
19660 @item bharris
19661 @item bnuttall
19662 @item bhann
19663 @item sine
19664 @item nuttall
19665 @item lanczos
19666 @item gauss
19667 @item tukey
19668 @item dolph
19669 @item cauchy
19670 @item parzen
19671 @item poisson
19672 @end table
19673
19674 Default value is @code{hann}.
19675
19676 @item orientation
19677 Set orientation of time vs frequency axis. Can be @code{vertical} or
19678 @code{horizontal}. Default is @code{vertical}.
19679
19680 @item overlap
19681 Set ratio of overlap window. Default value is @code{0}.
19682 When value is @code{1} overlap is set to recommended size for specific
19683 window function currently used.
19684
19685 @item gain
19686 Set scale gain for calculating intensity color values.
19687 Default value is @code{1}.
19688
19689 @item data
19690 Set which data to display. Can be @code{magnitude}, default or @code{phase}.
19691
19692 @item rotation
19693 Set color rotation, must be in [-1.0, 1.0] range.
19694 Default value is @code{0}.
19695 @end table
19696
19697 The usage is very similar to the showwaves filter; see the examples in that
19698 section.
19699
19700 @subsection Examples
19701
19702 @itemize
19703 @item
19704 Large window with logarithmic color scaling:
19705 @example
19706 showspectrum=s=1280x480:scale=log
19707 @end example
19708
19709 @item
19710 Complete example for a colored and sliding spectrum per channel using @command{ffplay}:
19711 @example
19712 ffplay -f lavfi 'amovie=input.mp3, asplit [a][out1];
19713              [a] showspectrum=mode=separate:color=intensity:slide=1:scale=cbrt [out0]'
19714 @end example
19715 @end itemize
19716
19717 @section showspectrumpic
19718
19719 Convert input audio to a single video frame, representing the audio frequency
19720 spectrum.
19721
19722 The filter accepts the following options:
19723
19724 @table @option
19725 @item size, s
19726 Specify the video size for the output. For the syntax of this option, check the
19727 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
19728 Default value is @code{4096x2048}.
19729
19730 @item mode
19731 Specify display mode.
19732
19733 It accepts the following values:
19734 @table @samp
19735 @item combined
19736 all channels are displayed in the same row
19737 @item separate
19738 all channels are displayed in separate rows
19739 @end table
19740 Default value is @samp{combined}.
19741
19742 @item color
19743 Specify display color mode.
19744
19745 It accepts the following values:
19746 @table @samp
19747 @item channel
19748 each channel is displayed in a separate color
19749 @item intensity
19750 each channel is displayed using the same color scheme
19751 @item rainbow
19752 each channel is displayed using the rainbow color scheme
19753 @item moreland
19754 each channel is displayed using the moreland color scheme
19755 @item nebulae
19756 each channel is displayed using the nebulae color scheme
19757 @item fire
19758 each channel is displayed using the fire color scheme
19759 @item fiery
19760 each channel is displayed using the fiery color scheme
19761 @item fruit
19762 each channel is displayed using the fruit color scheme
19763 @item cool
19764 each channel is displayed using the cool color scheme
19765 @end table
19766 Default value is @samp{intensity}.
19767
19768 @item scale
19769 Specify scale used for calculating intensity color values.
19770
19771 It accepts the following values:
19772 @table @samp
19773 @item lin
19774 linear
19775 @item sqrt
19776 square root, default
19777 @item cbrt
19778 cubic root
19779 @item log
19780 logarithmic
19781 @item 4thrt
19782 4th root
19783 @item 5thrt
19784 5th root
19785 @end table
19786 Default value is @samp{log}.
19787
19788 @item saturation
19789 Set saturation modifier for displayed colors. Negative values provide
19790 alternative color scheme. @code{0} is no saturation at all.
19791 Saturation must be in [-10.0, 10.0] range.
19792 Default value is @code{1}.
19793
19794 @item win_func
19795 Set window function.
19796
19797 It accepts the following values:
19798 @table @samp
19799 @item rect
19800 @item bartlett
19801 @item hann
19802 @item hanning
19803 @item hamming
19804 @item blackman
19805 @item welch
19806 @item flattop
19807 @item bharris
19808 @item bnuttall
19809 @item bhann
19810 @item sine
19811 @item nuttall
19812 @item lanczos
19813 @item gauss
19814 @item tukey
19815 @item dolph
19816 @item cauchy
19817 @item parzen
19818 @item poisson
19819 @end table
19820 Default value is @code{hann}.
19821
19822 @item orientation
19823 Set orientation of time vs frequency axis. Can be @code{vertical} or
19824 @code{horizontal}. Default is @code{vertical}.
19825
19826 @item gain
19827 Set scale gain for calculating intensity color values.
19828 Default value is @code{1}.
19829
19830 @item legend
19831 Draw time and frequency axes and legends. Default is enabled.
19832
19833 @item rotation
19834 Set color rotation, must be in [-1.0, 1.0] range.
19835 Default value is @code{0}.
19836 @end table
19837
19838 @subsection Examples
19839
19840 @itemize
19841 @item
19842 Extract an audio spectrogram of a whole audio track
19843 in a 1024x1024 picture using @command{ffmpeg}:
19844 @example
19845 ffmpeg -i audio.flac -lavfi showspectrumpic=s=1024x1024 spectrogram.png
19846 @end example
19847 @end itemize
19848
19849 @section showvolume
19850
19851 Convert input audio volume to a video output.
19852
19853 The filter accepts the following options:
19854
19855 @table @option
19856 @item rate, r
19857 Set video rate.
19858
19859 @item b
19860 Set border width, allowed range is [0, 5]. Default is 1.
19861
19862 @item w
19863 Set channel width, allowed range is [80, 8192]. Default is 400.
19864
19865 @item h
19866 Set channel height, allowed range is [1, 900]. Default is 20.
19867
19868 @item f
19869 Set fade, allowed range is [0.001, 1]. Default is 0.95.
19870
19871 @item c
19872 Set volume color expression.
19873
19874 The expression can use the following variables:
19875
19876 @table @option
19877 @item VOLUME
19878 Current max volume of channel in dB.
19879
19880 @item PEAK
19881 Current peak.
19882
19883 @item CHANNEL
19884 Current channel number, starting from 0.
19885 @end table
19886
19887 @item t
19888 If set, displays channel names. Default is enabled.
19889
19890 @item v
19891 If set, displays volume values. Default is enabled.
19892
19893 @item o
19894 Set orientation, can be @code{horizontal} or @code{vertical},
19895 default is @code{horizontal}.
19896
19897 @item s
19898 Set step size, allowed range s [0, 5]. Default is 0, which means
19899 step is disabled.
19900 @end table
19901
19902 @section showwaves
19903
19904 Convert input audio to a video output, representing the samples waves.
19905
19906 The filter accepts the following options:
19907
19908 @table @option
19909 @item size, s
19910 Specify the video size for the output. For the syntax of this option, check the
19911 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
19912 Default value is @code{600x240}.
19913
19914 @item mode
19915 Set display mode.
19916
19917 Available values are:
19918 @table @samp
19919 @item point
19920 Draw a point for each sample.
19921
19922 @item line
19923 Draw a vertical line for each sample.
19924
19925 @item p2p
19926 Draw a point for each sample and a line between them.
19927
19928 @item cline
19929 Draw a centered vertical line for each sample.
19930 @end table
19931
19932 Default value is @code{point}.
19933
19934 @item n
19935 Set the number of samples which are printed on the same column. A
19936 larger value will decrease the frame rate. Must be a positive
19937 integer. This option can be set only if the value for @var{rate}
19938 is not explicitly specified.
19939
19940 @item rate, r
19941 Set the (approximate) output frame rate. This is done by setting the
19942 option @var{n}. Default value is "25".
19943
19944 @item split_channels
19945 Set if channels should be drawn separately or overlap. Default value is 0.
19946
19947 @item colors
19948 Set colors separated by '|' which are going to be used for drawing of each channel.
19949
19950 @item scale
19951 Set amplitude scale.
19952
19953 Available values are:
19954 @table @samp
19955 @item lin
19956 Linear.
19957
19958 @item log
19959 Logarithmic.
19960
19961 @item sqrt
19962 Square root.
19963
19964 @item cbrt
19965 Cubic root.
19966 @end table
19967
19968 Default is linear.
19969 @end table
19970
19971 @subsection Examples
19972
19973 @itemize
19974 @item
19975 Output the input file audio and the corresponding video representation
19976 at the same time:
19977 @example
19978 amovie=a.mp3,asplit[out0],showwaves[out1]
19979 @end example
19980
19981 @item
19982 Create a synthetic signal and show it with showwaves, forcing a
19983 frame rate of 30 frames per second:
19984 @example
19985 aevalsrc=sin(1*2*PI*t)*sin(880*2*PI*t):cos(2*PI*200*t),asplit[out0],showwaves=r=30[out1]
19986 @end example
19987 @end itemize
19988
19989 @section showwavespic
19990
19991 Convert input audio to a single video frame, representing the samples waves.
19992
19993 The filter accepts the following options:
19994
19995 @table @option
19996 @item size, s
19997 Specify the video size for the output. For the syntax of this option, check the
19998 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
19999 Default value is @code{600x240}.
20000
20001 @item split_channels
20002 Set if channels should be drawn separately or overlap. Default value is 0.
20003
20004 @item colors
20005 Set colors separated by '|' which are going to be used for drawing of each channel.
20006
20007 @item scale
20008 Set amplitude scale.
20009
20010 Available values are:
20011 @table @samp
20012 @item lin
20013 Linear.
20014
20015 @item log
20016 Logarithmic.
20017
20018 @item sqrt
20019 Square root.
20020
20021 @item cbrt
20022 Cubic root.
20023 @end table
20024
20025 Default is linear.
20026 @end table
20027
20028 @subsection Examples
20029
20030 @itemize
20031 @item
20032 Extract a channel split representation of the wave form of a whole audio track
20033 in a 1024x800 picture using @command{ffmpeg}:
20034 @example
20035 ffmpeg -i audio.flac -lavfi showwavespic=split_channels=1:s=1024x800 waveform.png
20036 @end example
20037 @end itemize
20038
20039 @section sidedata, asidedata
20040
20041 Delete frame side data, or select frames based on it.
20042
20043 This filter accepts the following options:
20044
20045 @table @option
20046 @item mode
20047 Set mode of operation of the filter.
20048
20049 Can be one of the following:
20050
20051 @table @samp
20052 @item select
20053 Select every frame with side data of @code{type}.
20054
20055 @item delete
20056 Delete side data of @code{type}. If @code{type} is not set, delete all side
20057 data in the frame.
20058
20059 @end table
20060
20061 @item type
20062 Set side data type used with all modes. Must be set for @code{select} mode. For
20063 the list of frame side data types, refer to the @code{AVFrameSideDataType} enum
20064 in @file{libavutil/frame.h}. For example, to choose
20065 @code{AV_FRAME_DATA_PANSCAN} side data, you must specify @code{PANSCAN}.
20066
20067 @end table
20068
20069 @section spectrumsynth
20070
20071 Sythesize audio from 2 input video spectrums, first input stream represents
20072 magnitude across time and second represents phase across time.
20073 The filter will transform from frequency domain as displayed in videos back
20074 to time domain as presented in audio output.
20075
20076 This filter is primarily created for reversing processed @ref{showspectrum}
20077 filter outputs, but can synthesize sound from other spectrograms too.
20078 But in such case results are going to be poor if the phase data is not
20079 available, because in such cases phase data need to be recreated, usually
20080 its just recreated from random noise.
20081 For best results use gray only output (@code{channel} color mode in
20082 @ref{showspectrum} filter) and @code{log} scale for magnitude video and
20083 @code{lin} scale for phase video. To produce phase, for 2nd video, use
20084 @code{data} option. Inputs videos should generally use @code{fullframe}
20085 slide mode as that saves resources needed for decoding video.
20086
20087 The filter accepts the following options:
20088
20089 @table @option
20090 @item sample_rate
20091 Specify sample rate of output audio, the sample rate of audio from which
20092 spectrum was generated may differ.
20093
20094 @item channels
20095 Set number of channels represented in input video spectrums.
20096
20097 @item scale
20098 Set scale which was used when generating magnitude input spectrum.
20099 Can be @code{lin} or @code{log}. Default is @code{log}.
20100
20101 @item slide
20102 Set slide which was used when generating inputs spectrums.
20103 Can be @code{replace}, @code{scroll}, @code{fullframe} or @code{rscroll}.
20104 Default is @code{fullframe}.
20105
20106 @item win_func
20107 Set window function used for resynthesis.
20108
20109 @item overlap
20110 Set window overlap. In range @code{[0, 1]}. Default is @code{1},
20111 which means optimal overlap for selected window function will be picked.
20112
20113 @item orientation
20114 Set orientation of input videos. Can be @code{vertical} or @code{horizontal}.
20115 Default is @code{vertical}.
20116 @end table
20117
20118 @subsection Examples
20119
20120 @itemize
20121 @item
20122 First create magnitude and phase videos from audio, assuming audio is stereo with 44100 sample rate,
20123 then resynthesize videos back to audio with spectrumsynth:
20124 @example
20125 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
20126 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
20127 ffmpeg -i magnitude.nut -i phase.nut -lavfi spectrumsynth=channels=2:sample_rate=44100:win_func=hann:overlap=0.875:slide=fullframe output.flac
20128 @end example
20129 @end itemize
20130
20131 @section split, asplit
20132
20133 Split input into several identical outputs.
20134
20135 @code{asplit} works with audio input, @code{split} with video.
20136
20137 The filter accepts a single parameter which specifies the number of outputs. If
20138 unspecified, it defaults to 2.
20139
20140 @subsection Examples
20141
20142 @itemize
20143 @item
20144 Create two separate outputs from the same input:
20145 @example
20146 [in] split [out0][out1]
20147 @end example
20148
20149 @item
20150 To create 3 or more outputs, you need to specify the number of
20151 outputs, like in:
20152 @example
20153 [in] asplit=3 [out0][out1][out2]
20154 @end example
20155
20156 @item
20157 Create two separate outputs from the same input, one cropped and
20158 one padded:
20159 @example
20160 [in] split [splitout1][splitout2];
20161 [splitout1] crop=100:100:0:0    [cropout];
20162 [splitout2] pad=200:200:100:100 [padout];
20163 @end example
20164
20165 @item
20166 Create 5 copies of the input audio with @command{ffmpeg}:
20167 @example
20168 ffmpeg -i INPUT -filter_complex asplit=5 OUTPUT
20169 @end example
20170 @end itemize
20171
20172 @section zmq, azmq
20173
20174 Receive commands sent through a libzmq client, and forward them to
20175 filters in the filtergraph.
20176
20177 @code{zmq} and @code{azmq} work as a pass-through filters. @code{zmq}
20178 must be inserted between two video filters, @code{azmq} between two
20179 audio filters.
20180
20181 To enable these filters you need to install the libzmq library and
20182 headers and configure FFmpeg with @code{--enable-libzmq}.
20183
20184 For more information about libzmq see:
20185 @url{http://www.zeromq.org/}
20186
20187 The @code{zmq} and @code{azmq} filters work as a libzmq server, which
20188 receives messages sent through a network interface defined by the
20189 @option{bind_address} option.
20190
20191 The received message must be in the form:
20192 @example
20193 @var{TARGET} @var{COMMAND} [@var{ARG}]
20194 @end example
20195
20196 @var{TARGET} specifies the target of the command, usually the name of
20197 the filter class or a specific filter instance name.
20198
20199 @var{COMMAND} specifies the name of the command for the target filter.
20200
20201 @var{ARG} is optional and specifies the optional argument list for the
20202 given @var{COMMAND}.
20203
20204 Upon reception, the message is processed and the corresponding command
20205 is injected into the filtergraph. Depending on the result, the filter
20206 will send a reply to the client, adopting the format:
20207 @example
20208 @var{ERROR_CODE} @var{ERROR_REASON}
20209 @var{MESSAGE}
20210 @end example
20211
20212 @var{MESSAGE} is optional.
20213
20214 @subsection Examples
20215
20216 Look at @file{tools/zmqsend} for an example of a zmq client which can
20217 be used to send commands processed by these filters.
20218
20219 Consider the following filtergraph generated by @command{ffplay}
20220 @example
20221 ffplay -dumpgraph 1 -f lavfi "
20222 color=s=100x100:c=red  [l];
20223 color=s=100x100:c=blue [r];
20224 nullsrc=s=200x100, zmq [bg];
20225 [bg][l]   overlay      [bg+l];
20226 [bg+l][r] overlay=x=100 "
20227 @end example
20228
20229 To change the color of the left side of the video, the following
20230 command can be used:
20231 @example
20232 echo Parsed_color_0 c yellow | tools/zmqsend
20233 @end example
20234
20235 To change the right side:
20236 @example
20237 echo Parsed_color_1 c pink | tools/zmqsend
20238 @end example
20239
20240 @c man end MULTIMEDIA FILTERS
20241
20242 @chapter Multimedia Sources
20243 @c man begin MULTIMEDIA SOURCES
20244
20245 Below is a description of the currently available multimedia sources.
20246
20247 @section amovie
20248
20249 This is the same as @ref{movie} source, except it selects an audio
20250 stream by default.
20251
20252 @anchor{movie}
20253 @section movie
20254
20255 Read audio and/or video stream(s) from a movie container.
20256
20257 It accepts the following parameters:
20258
20259 @table @option
20260 @item filename
20261 The name of the resource to read (not necessarily a file; it can also be a
20262 device or a stream accessed through some protocol).
20263
20264 @item format_name, f
20265 Specifies the format assumed for the movie to read, and can be either
20266 the name of a container or an input device. If not specified, the
20267 format is guessed from @var{movie_name} or by probing.
20268
20269 @item seek_point, sp
20270 Specifies the seek point in seconds. The frames will be output
20271 starting from this seek point. The parameter is evaluated with
20272 @code{av_strtod}, so the numerical value may be suffixed by an IS
20273 postfix. The default value is "0".
20274
20275 @item streams, s
20276 Specifies the streams to read. Several streams can be specified,
20277 separated by "+". The source will then have as many outputs, in the
20278 same order. The syntax is explained in the ``Stream specifiers''
20279 section in the ffmpeg manual. Two special names, "dv" and "da" specify
20280 respectively the default (best suited) video and audio stream. Default
20281 is "dv", or "da" if the filter is called as "amovie".
20282
20283 @item stream_index, si
20284 Specifies the index of the video stream to read. If the value is -1,
20285 the most suitable video stream will be automatically selected. The default
20286 value is "-1". Deprecated. If the filter is called "amovie", it will select
20287 audio instead of video.
20288
20289 @item loop
20290 Specifies how many times to read the stream in sequence.
20291 If the value is 0, the stream will be looped infinitely.
20292 Default value is "1".
20293
20294 Note that when the movie is looped the source timestamps are not
20295 changed, so it will generate non monotonically increasing timestamps.
20296
20297 @item discontinuity
20298 Specifies the time difference between frames above which the point is
20299 considered a timestamp discontinuity which is removed by adjusting the later
20300 timestamps.
20301 @end table
20302
20303 It allows overlaying a second video on top of the main input of
20304 a filtergraph, as shown in this graph:
20305 @example
20306 input -----------> deltapts0 --> overlay --> output
20307                                     ^
20308                                     |
20309 movie --> scale--> deltapts1 -------+
20310 @end example
20311 @subsection Examples
20312
20313 @itemize
20314 @item
20315 Skip 3.2 seconds from the start of the AVI file in.avi, and overlay it
20316 on top of the input labelled "in":
20317 @example
20318 movie=in.avi:seek_point=3.2, scale=180:-1, setpts=PTS-STARTPTS [over];
20319 [in] setpts=PTS-STARTPTS [main];
20320 [main][over] overlay=16:16 [out]
20321 @end example
20322
20323 @item
20324 Read from a video4linux2 device, and overlay it on top of the input
20325 labelled "in":
20326 @example
20327 movie=/dev/video0:f=video4linux2, scale=180:-1, setpts=PTS-STARTPTS [over];
20328 [in] setpts=PTS-STARTPTS [main];
20329 [main][over] overlay=16:16 [out]
20330 @end example
20331
20332 @item
20333 Read the first video stream and the audio stream with id 0x81 from
20334 dvd.vob; the video is connected to the pad named "video" and the audio is
20335 connected to the pad named "audio":
20336 @example
20337 movie=dvd.vob:s=v:0+#0x81 [video] [audio]
20338 @end example
20339 @end itemize
20340
20341 @subsection Commands
20342
20343 Both movie and amovie support the following commands:
20344 @table @option
20345 @item seek
20346 Perform seek using "av_seek_frame".
20347 The syntax is: seek @var{stream_index}|@var{timestamp}|@var{flags}
20348 @itemize
20349 @item
20350 @var{stream_index}: If stream_index is -1, a default
20351 stream is selected, and @var{timestamp} is automatically converted
20352 from AV_TIME_BASE units to the stream specific time_base.
20353 @item
20354 @var{timestamp}: Timestamp in AVStream.time_base units
20355 or, if no stream is specified, in AV_TIME_BASE units.
20356 @item
20357 @var{flags}: Flags which select direction and seeking mode.
20358 @end itemize
20359
20360 @item get_duration
20361 Get movie duration in AV_TIME_BASE units.
20362
20363 @end table
20364
20365 @c man end MULTIMEDIA SOURCES