]> git.sesse.net Git - ffmpeg/blob - doc/filters.texi
avfilter/af_afade: add logistic sigmoid curve
[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 @anchor{filtergraph escaping}
225 @section Notes on filtergraph escaping
226
227 Filtergraph description composition entails several levels of
228 escaping. See @ref{quoting_and_escaping,,the "Quoting and escaping"
229 section in the ffmpeg-utils(1) manual,ffmpeg-utils} for more
230 information about the employed escaping procedure.
231
232 A first level escaping affects the content of each filter option
233 value, which may contain the special character @code{:} used to
234 separate values, or one of the escaping characters @code{\'}.
235
236 A second level escaping affects the whole filter description, which
237 may contain the escaping characters @code{\'} or the special
238 characters @code{[],;} used by the filtergraph description.
239
240 Finally, when you specify a filtergraph on a shell commandline, you
241 need to perform a third level escaping for the shell special
242 characters contained within it.
243
244 For example, consider the following string to be embedded in
245 the @ref{drawtext} filter description @option{text} value:
246 @example
247 this is a 'string': may contain one, or more, special characters
248 @end example
249
250 This string contains the @code{'} special escaping character, and the
251 @code{:} special character, so it needs to be escaped in this way:
252 @example
253 text=this is a \'string\'\: may contain one, or more, special characters
254 @end example
255
256 A second level of escaping is required when embedding the filter
257 description in a filtergraph description, in order to escape all the
258 filtergraph special characters. Thus the example above becomes:
259 @example
260 drawtext=text=this is a \\\'string\\\'\\: may contain one\, or more\, special characters
261 @end example
262 (note that in addition to the @code{\'} escaping special characters,
263 also @code{,} needs to be escaped).
264
265 Finally an additional level of escaping is needed when writing the
266 filtergraph description in a shell command, which depends on the
267 escaping rules of the adopted shell. For example, assuming that
268 @code{\} is special and needs to be escaped with another @code{\}, the
269 previous string will finally result in:
270 @example
271 -vf "drawtext=text=this is a \\\\\\'string\\\\\\'\\\\: may contain one\\, or more\\, special characters"
272 @end example
273
274 @chapter Timeline editing
275
276 Some filters support a generic @option{enable} option. For the filters
277 supporting timeline editing, this option can be set to an expression which is
278 evaluated before sending a frame to the filter. If the evaluation is non-zero,
279 the filter will be enabled, otherwise the frame will be sent unchanged to the
280 next filter in the filtergraph.
281
282 The expression accepts the following values:
283 @table @samp
284 @item t
285 timestamp expressed in seconds, NAN if the input timestamp is unknown
286
287 @item n
288 sequential number of the input frame, starting from 0
289
290 @item pos
291 the position in the file of the input frame, NAN if unknown
292
293 @item w
294 @item h
295 width and height of the input frame if video
296 @end table
297
298 Additionally, these filters support an @option{enable} command that can be used
299 to re-define the expression.
300
301 Like any other filtering option, the @option{enable} option follows the same
302 rules.
303
304 For example, to enable a blur filter (@ref{smartblur}) from 10 seconds to 3
305 minutes, and a @ref{curves} filter starting at 3 seconds:
306 @example
307 smartblur = enable='between(t,10,3*60)',
308 curves    = enable='gte(t,3)' : preset=cross_process
309 @end example
310
311 See @code{ffmpeg -filters} to view which filters have timeline support.
312
313 @c man end FILTERGRAPH DESCRIPTION
314
315 @anchor{framesync}
316 @chapter Options for filters with several inputs (framesync)
317 @c man begin OPTIONS FOR FILTERS WITH SEVERAL INPUTS
318
319 Some filters with several inputs support a common set of options.
320 These options can only be set by name, not with the short notation.
321
322 @table @option
323 @item eof_action
324 The action to take when EOF is encountered on the secondary input; it accepts
325 one of the following values:
326
327 @table @option
328 @item repeat
329 Repeat the last frame (the default).
330 @item endall
331 End both streams.
332 @item pass
333 Pass the main input through.
334 @end table
335
336 @item shortest
337 If set to 1, force the output to terminate when the shortest input
338 terminates. Default value is 0.
339
340 @item repeatlast
341 If set to 1, force the filter to extend the last frame of secondary streams
342 until the end of the primary stream. A value of 0 disables this behavior.
343 Default value is 1.
344 @end table
345
346 @c man end OPTIONS FOR FILTERS WITH SEVERAL INPUTS
347
348 @chapter Audio Filters
349 @c man begin AUDIO FILTERS
350
351 When you configure your FFmpeg build, you can disable any of the
352 existing filters using @code{--disable-filters}.
353 The configure output will show the audio filters included in your
354 build.
355
356 Below is a description of the currently available audio filters.
357
358 @section acompressor
359
360 A compressor is mainly used to reduce the dynamic range of a signal.
361 Especially modern music is mostly compressed at a high ratio to
362 improve the overall loudness. It's done to get the highest attention
363 of a listener, "fatten" the sound and bring more "power" to the track.
364 If a signal is compressed too much it may sound dull or "dead"
365 afterwards or it may start to "pump" (which could be a powerful effect
366 but can also destroy a track completely).
367 The right compression is the key to reach a professional sound and is
368 the high art of mixing and mastering. Because of its complex settings
369 it may take a long time to get the right feeling for this kind of effect.
370
371 Compression is done by detecting the volume above a chosen level
372 @code{threshold} and dividing it by the factor set with @code{ratio}.
373 So if you set the threshold to -12dB and your signal reaches -6dB a ratio
374 of 2:1 will result in a signal at -9dB. Because an exact manipulation of
375 the signal would cause distortion of the waveform the reduction can be
376 levelled over the time. This is done by setting "Attack" and "Release".
377 @code{attack} determines how long the signal has to rise above the threshold
378 before any reduction will occur and @code{release} sets the time the signal
379 has to fall below the threshold to reduce the reduction again. Shorter signals
380 than the chosen attack time will be left untouched.
381 The overall reduction of the signal can be made up afterwards with the
382 @code{makeup} setting. So compressing the peaks of a signal about 6dB and
383 raising the makeup to this level results in a signal twice as loud than the
384 source. To gain a softer entry in the compression the @code{knee} flattens the
385 hard edge at the threshold in the range of the chosen decibels.
386
387 The filter accepts the following options:
388
389 @table @option
390 @item level_in
391 Set input gain. Default is 1. Range is between 0.015625 and 64.
392
393 @item threshold
394 If a signal of stream rises above this level it will affect the gain
395 reduction.
396 By default it is 0.125. Range is between 0.00097563 and 1.
397
398 @item ratio
399 Set a ratio by which the signal is reduced. 1:2 means that if the level
400 rose 4dB above the threshold, it will be only 2dB above after the reduction.
401 Default is 2. Range is between 1 and 20.
402
403 @item attack
404 Amount of milliseconds the signal has to rise above the threshold before gain
405 reduction starts. Default is 20. Range is between 0.01 and 2000.
406
407 @item release
408 Amount of milliseconds the signal has to fall below the threshold before
409 reduction is decreased again. Default is 250. Range is between 0.01 and 9000.
410
411 @item makeup
412 Set the amount by how much signal will be amplified after processing.
413 Default is 1. Range is from 1 to 64.
414
415 @item knee
416 Curve the sharp knee around the threshold to enter gain reduction more softly.
417 Default is 2.82843. Range is between 1 and 8.
418
419 @item link
420 Choose if the @code{average} level between all channels of input stream
421 or the louder(@code{maximum}) channel of input stream affects the
422 reduction. Default is @code{average}.
423
424 @item detection
425 Should the exact signal be taken in case of @code{peak} or an RMS one in case
426 of @code{rms}. Default is @code{rms} which is mostly smoother.
427
428 @item mix
429 How much to use compressed signal in output. Default is 1.
430 Range is between 0 and 1.
431 @end table
432
433 @section acontrast
434 Simple audio dynamic range commpression/expansion filter.
435
436 The filter accepts the following options:
437
438 @table @option
439 @item contrast
440 Set contrast. Default is 33. Allowed range is between 0 and 100.
441 @end table
442
443 @section acopy
444
445 Copy the input audio source unchanged to the output. This is mainly useful for
446 testing purposes.
447
448 @section acrossfade
449
450 Apply cross fade from one input audio stream to another input audio stream.
451 The cross fade is applied for specified duration near the end of first stream.
452
453 The filter accepts the following options:
454
455 @table @option
456 @item nb_samples, ns
457 Specify the number of samples for which the cross fade effect has to last.
458 At the end of the cross fade effect the first input audio will be completely
459 silent. Default is 44100.
460
461 @item duration, d
462 Specify the duration of the cross fade effect. See
463 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
464 for the accepted syntax.
465 By default the duration is determined by @var{nb_samples}.
466 If set this option is used instead of @var{nb_samples}.
467
468 @item overlap, o
469 Should first stream end overlap with second stream start. Default is enabled.
470
471 @item curve1
472 Set curve for cross fade transition for first stream.
473
474 @item curve2
475 Set curve for cross fade transition for second stream.
476
477 For description of available curve types see @ref{afade} filter description.
478 @end table
479
480 @subsection Examples
481
482 @itemize
483 @item
484 Cross fade from one input to another:
485 @example
486 ffmpeg -i first.flac -i second.flac -filter_complex acrossfade=d=10:c1=exp:c2=exp output.flac
487 @end example
488
489 @item
490 Cross fade from one input to another but without overlapping:
491 @example
492 ffmpeg -i first.flac -i second.flac -filter_complex acrossfade=d=10:o=0:c1=exp:c2=exp output.flac
493 @end example
494 @end itemize
495
496 @section acrossover
497 Split audio stream into several bands.
498
499 This filter splits audio stream into two or more frequency ranges.
500 Summing all streams back will give flat output.
501
502 The filter accepts the following options:
503
504 @table @option
505 @item split
506 Set split frequencies. Those must be positive and increasing.
507
508 @item order
509 Set filter order, can be @var{2nd}, @var{4th} or @var{8th}.
510 Default is @var{4th}.
511 @end table
512
513 @section acrusher
514
515 Reduce audio bit resolution.
516
517 This filter is bit crusher with enhanced functionality. A bit crusher
518 is used to audibly reduce number of bits an audio signal is sampled
519 with. This doesn't change the bit depth at all, it just produces the
520 effect. Material reduced in bit depth sounds more harsh and "digital".
521 This filter is able to even round to continuous values instead of discrete
522 bit depths.
523 Additionally it has a D/C offset which results in different crushing of
524 the lower and the upper half of the signal.
525 An Anti-Aliasing setting is able to produce "softer" crushing sounds.
526
527 Another feature of this filter is the logarithmic mode.
528 This setting switches from linear distances between bits to logarithmic ones.
529 The result is a much more "natural" sounding crusher which doesn't gate low
530 signals for example. The human ear has a logarithmic perception,
531 so this kind of crushing is much more pleasant.
532 Logarithmic crushing is also able to get anti-aliased.
533
534 The filter accepts the following options:
535
536 @table @option
537 @item level_in
538 Set level in.
539
540 @item level_out
541 Set level out.
542
543 @item bits
544 Set bit reduction.
545
546 @item mix
547 Set mixing amount.
548
549 @item mode
550 Can be linear: @code{lin} or logarithmic: @code{log}.
551
552 @item dc
553 Set DC.
554
555 @item aa
556 Set anti-aliasing.
557
558 @item samples
559 Set sample reduction.
560
561 @item lfo
562 Enable LFO. By default disabled.
563
564 @item lforange
565 Set LFO range.
566
567 @item lforate
568 Set LFO rate.
569 @end table
570
571 @section acue
572
573 Delay audio filtering until a given wallclock timestamp. See the @ref{cue}
574 filter.
575
576 @section adeclick
577 Remove impulsive noise from input audio.
578
579 Samples detected as impulsive noise are replaced by interpolated samples using
580 autoregressive modelling.
581
582 @table @option
583 @item w
584 Set window size, in milliseconds. Allowed range is from @code{10} to
585 @code{100}. Default value is @code{55} milliseconds.
586 This sets size of window which will be processed at once.
587
588 @item o
589 Set window overlap, in percentage of window size. Allowed range is from
590 @code{50} to @code{95}. Default value is @code{75} percent.
591 Setting this to a very high value increases impulsive noise removal but makes
592 whole process much slower.
593
594 @item a
595 Set autoregression order, in percentage of window size. Allowed range is from
596 @code{0} to @code{25}. Default value is @code{2} percent. This option also
597 controls quality of interpolated samples using neighbour good samples.
598
599 @item t
600 Set threshold value. Allowed range is from @code{1} to @code{100}.
601 Default value is @code{2}.
602 This controls the strength of impulsive noise which is going to be removed.
603 The lower value, the more samples will be detected as impulsive noise.
604
605 @item b
606 Set burst fusion, in percentage of window size. Allowed range is @code{0} to
607 @code{10}. Default value is @code{2}.
608 If any two samples deteced as noise are spaced less than this value then any
609 sample inbetween those two samples will be also detected as noise.
610
611 @item m
612 Set overlap method.
613
614 It accepts the following values:
615 @table @option
616 @item a
617 Select overlap-add method. Even not interpolated samples are slightly
618 changed with this method.
619
620 @item s
621 Select overlap-save method. Not interpolated samples remain unchanged.
622 @end table
623
624 Default value is @code{a}.
625 @end table
626
627 @section adeclip
628 Remove clipped samples from input audio.
629
630 Samples detected as clipped are replaced by interpolated samples using
631 autoregressive modelling.
632
633 @table @option
634 @item w
635 Set window size, in milliseconds. Allowed range is from @code{10} to @code{100}.
636 Default value is @code{55} milliseconds.
637 This sets size of window which will be processed at once.
638
639 @item o
640 Set window overlap, in percentage of window size. Allowed range is from @code{50}
641 to @code{95}. Default value is @code{75} percent.
642
643 @item a
644 Set autoregression order, in percentage of window size. Allowed range is from
645 @code{0} to @code{25}. Default value is @code{8} percent. This option also controls
646 quality of interpolated samples using neighbour good samples.
647
648 @item t
649 Set threshold value. Allowed range is from @code{1} to @code{100}.
650 Default value is @code{10}. Higher values make clip detection less aggressive.
651
652 @item n
653 Set size of histogram used to detect clips. Allowed range is from @code{100} to @code{9999}.
654 Default value is @code{1000}. Higher values make clip detection less aggressive.
655
656 @item m
657 Set overlap method.
658
659 It accepts the following values:
660 @table @option
661 @item a
662 Select overlap-add method. Even not interpolated samples are slightly changed
663 with this method.
664
665 @item s
666 Select overlap-save method. Not interpolated samples remain unchanged.
667 @end table
668
669 Default value is @code{a}.
670 @end table
671
672 @section adelay
673
674 Delay one or more audio channels.
675
676 Samples in delayed channel are filled with silence.
677
678 The filter accepts the following option:
679
680 @table @option
681 @item delays
682 Set list of delays in milliseconds for each channel separated by '|'.
683 Unused delays will be silently ignored. If number of given delays is
684 smaller than number of channels all remaining channels will not be delayed.
685 If you want to delay exact number of samples, append 'S' to number.
686 @end table
687
688 @subsection Examples
689
690 @itemize
691 @item
692 Delay first channel by 1.5 seconds, the third channel by 0.5 seconds and leave
693 the second channel (and any other channels that may be present) unchanged.
694 @example
695 adelay=1500|0|500
696 @end example
697
698 @item
699 Delay second channel by 500 samples, the third channel by 700 samples and leave
700 the first channel (and any other channels that may be present) unchanged.
701 @example
702 adelay=0|500S|700S
703 @end example
704 @end itemize
705
706 @section aderivative, aintegral
707
708 Compute derivative/integral of audio stream.
709
710 Applying both filters one after another produces original audio.
711
712 @section aecho
713
714 Apply echoing to the input audio.
715
716 Echoes are reflected sound and can occur naturally amongst mountains
717 (and sometimes large buildings) when talking or shouting; digital echo
718 effects emulate this behaviour and are often used to help fill out the
719 sound of a single instrument or vocal. The time difference between the
720 original signal and the reflection is the @code{delay}, and the
721 loudness of the reflected signal is the @code{decay}.
722 Multiple echoes can have different delays and decays.
723
724 A description of the accepted parameters follows.
725
726 @table @option
727 @item in_gain
728 Set input gain of reflected signal. Default is @code{0.6}.
729
730 @item out_gain
731 Set output gain of reflected signal. Default is @code{0.3}.
732
733 @item delays
734 Set list of time intervals in milliseconds between original signal and reflections
735 separated by '|'. Allowed range for each @code{delay} is @code{(0 - 90000.0]}.
736 Default is @code{1000}.
737
738 @item decays
739 Set list of loudness of reflected signals separated by '|'.
740 Allowed range for each @code{decay} is @code{(0 - 1.0]}.
741 Default is @code{0.5}.
742 @end table
743
744 @subsection Examples
745
746 @itemize
747 @item
748 Make it sound as if there are twice as many instruments as are actually playing:
749 @example
750 aecho=0.8:0.88:60:0.4
751 @end example
752
753 @item
754 If delay is very short, then it sound like a (metallic) robot playing music:
755 @example
756 aecho=0.8:0.88:6:0.4
757 @end example
758
759 @item
760 A longer delay will sound like an open air concert in the mountains:
761 @example
762 aecho=0.8:0.9:1000:0.3
763 @end example
764
765 @item
766 Same as above but with one more mountain:
767 @example
768 aecho=0.8:0.9:1000|1800:0.3|0.25
769 @end example
770 @end itemize
771
772 @section aemphasis
773 Audio emphasis filter creates or restores material directly taken from LPs or
774 emphased CDs with different filter curves. E.g. to store music on vinyl the
775 signal has to be altered by a filter first to even out the disadvantages of
776 this recording medium.
777 Once the material is played back the inverse filter has to be applied to
778 restore the distortion of the frequency response.
779
780 The filter accepts the following options:
781
782 @table @option
783 @item level_in
784 Set input gain.
785
786 @item level_out
787 Set output gain.
788
789 @item mode
790 Set filter mode. For restoring material use @code{reproduction} mode, otherwise
791 use @code{production} mode. Default is @code{reproduction} mode.
792
793 @item type
794 Set filter type. Selects medium. Can be one of the following:
795
796 @table @option
797 @item col
798 select Columbia.
799 @item emi
800 select EMI.
801 @item bsi
802 select BSI (78RPM).
803 @item riaa
804 select RIAA.
805 @item cd
806 select Compact Disc (CD).
807 @item 50fm
808 select 50µs (FM).
809 @item 75fm
810 select 75µs (FM).
811 @item 50kf
812 select 50µs (FM-KF).
813 @item 75kf
814 select 75µs (FM-KF).
815 @end table
816 @end table
817
818 @section aeval
819
820 Modify an audio signal according to the specified expressions.
821
822 This filter accepts one or more expressions (one for each channel),
823 which are evaluated and used to modify a corresponding audio signal.
824
825 It accepts the following parameters:
826
827 @table @option
828 @item exprs
829 Set the '|'-separated expressions list for each separate channel. If
830 the number of input channels is greater than the number of
831 expressions, the last specified expression is used for the remaining
832 output channels.
833
834 @item channel_layout, c
835 Set output channel layout. If not specified, the channel layout is
836 specified by the number of expressions. If set to @samp{same}, it will
837 use by default the same input channel layout.
838 @end table
839
840 Each expression in @var{exprs} can contain the following constants and functions:
841
842 @table @option
843 @item ch
844 channel number of the current expression
845
846 @item n
847 number of the evaluated sample, starting from 0
848
849 @item s
850 sample rate
851
852 @item t
853 time of the evaluated sample expressed in seconds
854
855 @item nb_in_channels
856 @item nb_out_channels
857 input and output number of channels
858
859 @item val(CH)
860 the value of input channel with number @var{CH}
861 @end table
862
863 Note: this filter is slow. For faster processing you should use a
864 dedicated filter.
865
866 @subsection Examples
867
868 @itemize
869 @item
870 Half volume:
871 @example
872 aeval=val(ch)/2:c=same
873 @end example
874
875 @item
876 Invert phase of the second channel:
877 @example
878 aeval=val(0)|-val(1)
879 @end example
880 @end itemize
881
882 @anchor{afade}
883 @section afade
884
885 Apply fade-in/out effect to input audio.
886
887 A description of the accepted parameters follows.
888
889 @table @option
890 @item type, t
891 Specify the effect type, can be either @code{in} for fade-in, or
892 @code{out} for a fade-out effect. Default is @code{in}.
893
894 @item start_sample, ss
895 Specify the number of the start sample for starting to apply the fade
896 effect. Default is 0.
897
898 @item nb_samples, ns
899 Specify the number of samples for which the fade effect has to last. At
900 the end of the fade-in effect the output audio will have the same
901 volume as the input audio, at the end of the fade-out transition
902 the output audio will be silence. Default is 44100.
903
904 @item start_time, st
905 Specify the start time of the fade effect. Default is 0.
906 The value must be specified as a time duration; see
907 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
908 for the accepted syntax.
909 If set this option is used instead of @var{start_sample}.
910
911 @item duration, d
912 Specify the duration of the fade effect. See
913 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
914 for the accepted syntax.
915 At the end of the fade-in effect the output audio will have the same
916 volume as the input audio, at the end of the fade-out transition
917 the output audio will be silence.
918 By default the duration is determined by @var{nb_samples}.
919 If set this option is used instead of @var{nb_samples}.
920
921 @item curve
922 Set curve for fade transition.
923
924 It accepts the following values:
925 @table @option
926 @item tri
927 select triangular, linear slope (default)
928 @item qsin
929 select quarter of sine wave
930 @item hsin
931 select half of sine wave
932 @item esin
933 select exponential sine wave
934 @item log
935 select logarithmic
936 @item ipar
937 select inverted parabola
938 @item qua
939 select quadratic
940 @item cub
941 select cubic
942 @item squ
943 select square root
944 @item cbr
945 select cubic root
946 @item par
947 select parabola
948 @item exp
949 select exponential
950 @item iqsin
951 select inverted quarter of sine wave
952 @item ihsin
953 select inverted half of sine wave
954 @item dese
955 select double-exponential seat
956 @item desi
957 select double-exponential sigmoid
958 @item losi
959 select logistic sigmoid
960 @end table
961 @end table
962
963 @subsection Examples
964
965 @itemize
966 @item
967 Fade in first 15 seconds of audio:
968 @example
969 afade=t=in:ss=0:d=15
970 @end example
971
972 @item
973 Fade out last 25 seconds of a 900 seconds audio:
974 @example
975 afade=t=out:st=875:d=25
976 @end example
977 @end itemize
978
979 @section afftdn
980 Denoise audio samples with FFT.
981
982 A description of the accepted parameters follows.
983
984 @table @option
985 @item nr
986 Set the noise reduction in dB, allowed range is 0.01 to 97.
987 Default value is 12 dB.
988
989 @item nf
990 Set the noise floor in dB, allowed range is -80 to -20.
991 Default value is -50 dB.
992
993 @item nt
994 Set the noise type.
995
996 It accepts the following values:
997 @table @option
998 @item w
999 Select white noise.
1000
1001 @item v
1002 Select vinyl noise.
1003
1004 @item s
1005 Select shellac noise.
1006
1007 @item c
1008 Select custom noise, defined in @code{bn} option.
1009
1010 Default value is white noise.
1011 @end table
1012
1013 @item bn
1014 Set custom band noise for every one of 15 bands.
1015 Bands are separated by ' ' or '|'.
1016
1017 @item rf
1018 Set the residual floor in dB, allowed range is -80 to -20.
1019 Default value is -38 dB.
1020
1021 @item tn
1022 Enable noise tracking. By default is disabled.
1023 With this enabled, noise floor is automatically adjusted.
1024
1025 @item tr
1026 Enable residual tracking. By default is disabled.
1027
1028 @item om
1029 Set the output mode.
1030
1031 It accepts the following values:
1032 @table @option
1033 @item i
1034 Pass input unchanged.
1035
1036 @item o
1037 Pass noise filtered out.
1038
1039 @item n
1040 Pass only noise.
1041
1042 Default value is @var{o}.
1043 @end table
1044 @end table
1045
1046 @subsection Commands
1047
1048 This filter supports the following commands:
1049 @table @option
1050 @item sample_noise, sn
1051 Start or stop measuring noise profile.
1052 Syntax for the command is : "start" or "stop" string.
1053 After measuring noise profile is stopped it will be
1054 automatically applied in filtering.
1055
1056 @item noise_reduction, nr
1057 Change noise reduction. Argument is single float number.
1058 Syntax for the command is : "@var{noise_reduction}"
1059
1060 @item noise_floor, nf
1061 Change noise floor. Argument is single float number.
1062 Syntax for the command is : "@var{noise_floor}"
1063
1064 @item output_mode, om
1065 Change output mode operation.
1066 Syntax for the command is : "i", "o" or "n" string.
1067 @end table
1068
1069 @section afftfilt
1070 Apply arbitrary expressions to samples in frequency domain.
1071
1072 @table @option
1073 @item real
1074 Set frequency domain real expression for each separate channel separated
1075 by '|'. Default is "1".
1076 If the number of input channels is greater than the number of
1077 expressions, the last specified expression is used for the remaining
1078 output channels.
1079
1080 @item imag
1081 Set frequency domain imaginary expression for each separate channel
1082 separated by '|'. If not set, @var{real} option is used.
1083
1084 Each expression in @var{real} and @var{imag} can contain the following
1085 constants:
1086
1087 @table @option
1088 @item sr
1089 sample rate
1090
1091 @item b
1092 current frequency bin number
1093
1094 @item nb
1095 number of available bins
1096
1097 @item ch
1098 channel number of the current expression
1099
1100 @item chs
1101 number of channels
1102
1103 @item pts
1104 current frame pts
1105 @end table
1106
1107 @item win_size
1108 Set window size.
1109
1110 It accepts the following values:
1111 @table @samp
1112 @item w16
1113 @item w32
1114 @item w64
1115 @item w128
1116 @item w256
1117 @item w512
1118 @item w1024
1119 @item w2048
1120 @item w4096
1121 @item w8192
1122 @item w16384
1123 @item w32768
1124 @item w65536
1125 @end table
1126 Default is @code{w4096}
1127
1128 @item win_func
1129 Set window function. Default is @code{hann}.
1130
1131 @item overlap
1132 Set window overlap. If set to 1, the recommended overlap for selected
1133 window function will be picked. Default is @code{0.75}.
1134 @end table
1135
1136 @subsection Examples
1137
1138 @itemize
1139 @item
1140 Leave almost only low frequencies in audio:
1141 @example
1142 afftfilt="1-clip((b/nb)*b,0,1)"
1143 @end example
1144 @end itemize
1145
1146 @anchor{afir}
1147 @section afir
1148
1149 Apply an arbitrary Frequency Impulse Response filter.
1150
1151 This filter is designed for applying long FIR filters,
1152 up to 60 seconds long.
1153
1154 It can be used as component for digital crossover filters,
1155 room equalization, cross talk cancellation, wavefield synthesis,
1156 auralization, ambiophonics and ambisonics.
1157
1158 This filter uses second stream as FIR coefficients.
1159 If second stream holds single channel, it will be used
1160 for all input channels in first stream, otherwise
1161 number of channels in second stream must be same as
1162 number of channels in first stream.
1163
1164 It accepts the following parameters:
1165
1166 @table @option
1167 @item dry
1168 Set dry gain. This sets input gain.
1169
1170 @item wet
1171 Set wet gain. This sets final output gain.
1172
1173 @item length
1174 Set Impulse Response filter length. Default is 1, which means whole IR is processed.
1175
1176 @item again
1177 Enable applying gain measured from power of IR. For approach to use for measuring power
1178 of IR see next option.
1179
1180 @item gtype
1181 Set which approach to use for auto gain measurement.
1182
1183 @table @option
1184 @item peak
1185 select peak gain, very conservative approach. This is default value.
1186
1187 @item dc
1188 select DC gain, limited application.
1189
1190 @item gn
1191 select gain to noise approach, this is most popular one.
1192 @end table
1193
1194 @item irgain
1195 Set gain to be applied to IR coefficients before filtering.
1196 Allowed range is 0 to 1. This can be set even with @var{again} used.
1197
1198 @item irfmt
1199 Set format of IR stream. Can be @code{mono} or @code{input}.
1200 Default is @code{input}.
1201
1202 @item maxir
1203 Set max allowed Impulse Response filter duration in seconds. Default is 30 seconds.
1204 Allowed range is 0.1 to 60 seconds.
1205
1206 @item response
1207 Show IR frequency reponse, magnitude and phase in additional video stream.
1208 By default it is disabled.
1209
1210 @item channel
1211 Set for which IR channel to display frequency response. By default is first channel
1212 displayed. This option is used only when @var{response} is enabled.
1213
1214 @item size
1215 Set video stream size. This option is used only when @var{response} is enabled.
1216 @end table
1217
1218 @subsection Examples
1219
1220 @itemize
1221 @item
1222 Apply reverb to stream using mono IR file as second input, complete command using ffmpeg:
1223 @example
1224 ffmpeg -i input.wav -i middle_tunnel_1way_mono.wav -lavfi afir output.wav
1225 @end example
1226 @end itemize
1227
1228 @anchor{aformat}
1229 @section aformat
1230
1231 Set output format constraints for the input audio. The framework will
1232 negotiate the most appropriate format to minimize conversions.
1233
1234 It accepts the following parameters:
1235 @table @option
1236
1237 @item sample_fmts
1238 A '|'-separated list of requested sample formats.
1239
1240 @item sample_rates
1241 A '|'-separated list of requested sample rates.
1242
1243 @item channel_layouts
1244 A '|'-separated list of requested channel layouts.
1245
1246 See @ref{channel layout syntax,,the Channel Layout section in the ffmpeg-utils(1) manual,ffmpeg-utils}
1247 for the required syntax.
1248 @end table
1249
1250 If a parameter is omitted, all values are allowed.
1251
1252 Force the output to either unsigned 8-bit or signed 16-bit stereo
1253 @example
1254 aformat=sample_fmts=u8|s16:channel_layouts=stereo
1255 @end example
1256
1257 @section agate
1258
1259 A gate is mainly used to reduce lower parts of a signal. This kind of signal
1260 processing reduces disturbing noise between useful signals.
1261
1262 Gating is done by detecting the volume below a chosen level @var{threshold}
1263 and dividing it by the factor set with @var{ratio}. The bottom of the noise
1264 floor is set via @var{range}. Because an exact manipulation of the signal
1265 would cause distortion of the waveform the reduction can be levelled over
1266 time. This is done by setting @var{attack} and @var{release}.
1267
1268 @var{attack} determines how long the signal has to fall below the threshold
1269 before any reduction will occur and @var{release} sets the time the signal
1270 has to rise above the threshold to reduce the reduction again.
1271 Shorter signals than the chosen attack time will be left untouched.
1272
1273 @table @option
1274 @item level_in
1275 Set input level before filtering.
1276 Default is 1. Allowed range is from 0.015625 to 64.
1277
1278 @item range
1279 Set the level of gain reduction when the signal is below the threshold.
1280 Default is 0.06125. Allowed range is from 0 to 1.
1281
1282 @item threshold
1283 If a signal rises above this level the gain reduction is released.
1284 Default is 0.125. Allowed range is from 0 to 1.
1285
1286 @item ratio
1287 Set a ratio by which the signal is reduced.
1288 Default is 2. Allowed range is from 1 to 9000.
1289
1290 @item attack
1291 Amount of milliseconds the signal has to rise above the threshold before gain
1292 reduction stops.
1293 Default is 20 milliseconds. Allowed range is from 0.01 to 9000.
1294
1295 @item release
1296 Amount of milliseconds the signal has to fall below the threshold before the
1297 reduction is increased again. Default is 250 milliseconds.
1298 Allowed range is from 0.01 to 9000.
1299
1300 @item makeup
1301 Set amount of amplification of signal after processing.
1302 Default is 1. Allowed range is from 1 to 64.
1303
1304 @item knee
1305 Curve the sharp knee around the threshold to enter gain reduction more softly.
1306 Default is 2.828427125. Allowed range is from 1 to 8.
1307
1308 @item detection
1309 Choose if exact signal should be taken for detection or an RMS like one.
1310 Default is @code{rms}. Can be @code{peak} or @code{rms}.
1311
1312 @item link
1313 Choose if the average level between all channels or the louder channel affects
1314 the reduction.
1315 Default is @code{average}. Can be @code{average} or @code{maximum}.
1316 @end table
1317
1318 @section aiir
1319
1320 Apply an arbitrary Infinite Impulse Response filter.
1321
1322 It accepts the following parameters:
1323
1324 @table @option
1325 @item z
1326 Set numerator/zeros coefficients.
1327
1328 @item p
1329 Set denominator/poles coefficients.
1330
1331 @item k
1332 Set channels gains.
1333
1334 @item dry_gain
1335 Set input gain.
1336
1337 @item wet_gain
1338 Set output gain.
1339
1340 @item f
1341 Set coefficients format.
1342
1343 @table @samp
1344 @item tf
1345 transfer function
1346 @item zp
1347 Z-plane zeros/poles, cartesian (default)
1348 @item pr
1349 Z-plane zeros/poles, polar radians
1350 @item pd
1351 Z-plane zeros/poles, polar degrees
1352 @end table
1353
1354 @item r
1355 Set kind of processing.
1356 Can be @code{d} - direct or @code{s} - serial cascading. Defauls is @code{s}.
1357
1358 @item e
1359 Set filtering precision.
1360
1361 @table @samp
1362 @item dbl
1363 double-precision floating-point (default)
1364 @item flt
1365 single-precision floating-point
1366 @item i32
1367 32-bit integers
1368 @item i16
1369 16-bit integers
1370 @end table
1371
1372 @item response
1373 Show IR frequency reponse, magnitude and phase in additional video stream.
1374 By default it is disabled.
1375
1376 @item channel
1377 Set for which IR channel to display frequency response. By default is first channel
1378 displayed. This option is used only when @var{response} is enabled.
1379
1380 @item size
1381 Set video stream size. This option is used only when @var{response} is enabled.
1382 @end table
1383
1384 Coefficients in @code{tf} format are separated by spaces and are in ascending
1385 order.
1386
1387 Coefficients in @code{zp} format are separated by spaces and order of coefficients
1388 doesn't matter. Coefficients in @code{zp} format are complex numbers with @var{i}
1389 imaginary unit.
1390
1391 Different coefficients and gains can be provided for every channel, in such case
1392 use '|' to separate coefficients or gains. Last provided coefficients will be
1393 used for all remaining channels.
1394
1395 @subsection Examples
1396
1397 @itemize
1398 @item
1399 Apply 2 pole elliptic notch at arround 5000Hz for 48000 Hz sample rate:
1400 @example
1401 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
1402 @end example
1403
1404 @item
1405 Same as above but in @code{zp} format:
1406 @example
1407 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
1408 @end example
1409 @end itemize
1410
1411 @section alimiter
1412
1413 The limiter prevents an input signal from rising over a desired threshold.
1414 This limiter uses lookahead technology to prevent your signal from distorting.
1415 It means that there is a small delay after the signal is processed. Keep in mind
1416 that the delay it produces is the attack time you set.
1417
1418 The filter accepts the following options:
1419
1420 @table @option
1421 @item level_in
1422 Set input gain. Default is 1.
1423
1424 @item level_out
1425 Set output gain. Default is 1.
1426
1427 @item limit
1428 Don't let signals above this level pass the limiter. Default is 1.
1429
1430 @item attack
1431 The limiter will reach its attenuation level in this amount of time in
1432 milliseconds. Default is 5 milliseconds.
1433
1434 @item release
1435 Come back from limiting to attenuation 1.0 in this amount of milliseconds.
1436 Default is 50 milliseconds.
1437
1438 @item asc
1439 When gain reduction is always needed ASC takes care of releasing to an
1440 average reduction level rather than reaching a reduction of 0 in the release
1441 time.
1442
1443 @item asc_level
1444 Select how much the release time is affected by ASC, 0 means nearly no changes
1445 in release time while 1 produces higher release times.
1446
1447 @item level
1448 Auto level output signal. Default is enabled.
1449 This normalizes audio back to 0dB if enabled.
1450 @end table
1451
1452 Depending on picked setting it is recommended to upsample input 2x or 4x times
1453 with @ref{aresample} before applying this filter.
1454
1455 @section allpass
1456
1457 Apply a two-pole all-pass filter with central frequency (in Hz)
1458 @var{frequency}, and filter-width @var{width}.
1459 An all-pass filter changes the audio's frequency to phase relationship
1460 without changing its frequency to amplitude relationship.
1461
1462 The filter accepts the following options:
1463
1464 @table @option
1465 @item frequency, f
1466 Set frequency in Hz.
1467
1468 @item width_type, t
1469 Set method to specify band-width of filter.
1470 @table @option
1471 @item h
1472 Hz
1473 @item q
1474 Q-Factor
1475 @item o
1476 octave
1477 @item s
1478 slope
1479 @item k
1480 kHz
1481 @end table
1482
1483 @item width, w
1484 Specify the band-width of a filter in width_type units.
1485
1486 @item channels, c
1487 Specify which channels to filter, by default all available are filtered.
1488 @end table
1489
1490 @subsection Commands
1491
1492 This filter supports the following commands:
1493 @table @option
1494 @item frequency, f
1495 Change allpass frequency.
1496 Syntax for the command is : "@var{frequency}"
1497
1498 @item width_type, t
1499 Change allpass width_type.
1500 Syntax for the command is : "@var{width_type}"
1501
1502 @item width, w
1503 Change allpass width.
1504 Syntax for the command is : "@var{width}"
1505 @end table
1506
1507 @section aloop
1508
1509 Loop audio samples.
1510
1511 The filter accepts the following options:
1512
1513 @table @option
1514 @item loop
1515 Set the number of loops. Setting this value to -1 will result in infinite loops.
1516 Default is 0.
1517
1518 @item size
1519 Set maximal number of samples. Default is 0.
1520
1521 @item start
1522 Set first sample of loop. Default is 0.
1523 @end table
1524
1525 @anchor{amerge}
1526 @section amerge
1527
1528 Merge two or more audio streams into a single multi-channel stream.
1529
1530 The filter accepts the following options:
1531
1532 @table @option
1533
1534 @item inputs
1535 Set the number of inputs. Default is 2.
1536
1537 @end table
1538
1539 If the channel layouts of the inputs are disjoint, and therefore compatible,
1540 the channel layout of the output will be set accordingly and the channels
1541 will be reordered as necessary. If the channel layouts of the inputs are not
1542 disjoint, the output will have all the channels of the first input then all
1543 the channels of the second input, in that order, and the channel layout of
1544 the output will be the default value corresponding to the total number of
1545 channels.
1546
1547 For example, if the first input is in 2.1 (FL+FR+LF) and the second input
1548 is FC+BL+BR, then the output will be in 5.1, with the channels in the
1549 following order: a1, a2, b1, a3, b2, b3 (a1 is the first channel of the
1550 first input, b1 is the first channel of the second input).
1551
1552 On the other hand, if both input are in stereo, the output channels will be
1553 in the default order: a1, a2, b1, b2, and the channel layout will be
1554 arbitrarily set to 4.0, which may or may not be the expected value.
1555
1556 All inputs must have the same sample rate, and format.
1557
1558 If inputs do not have the same duration, the output will stop with the
1559 shortest.
1560
1561 @subsection Examples
1562
1563 @itemize
1564 @item
1565 Merge two mono files into a stereo stream:
1566 @example
1567 amovie=left.wav [l] ; amovie=right.mp3 [r] ; [l] [r] amerge
1568 @end example
1569
1570 @item
1571 Multiple merges assuming 1 video stream and 6 audio streams in @file{input.mkv}:
1572 @example
1573 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
1574 @end example
1575 @end itemize
1576
1577 @section amix
1578
1579 Mixes multiple audio inputs into a single output.
1580
1581 Note that this filter only supports float samples (the @var{amerge}
1582 and @var{pan} audio filters support many formats). If the @var{amix}
1583 input has integer samples then @ref{aresample} will be automatically
1584 inserted to perform the conversion to float samples.
1585
1586 For example
1587 @example
1588 ffmpeg -i INPUT1 -i INPUT2 -i INPUT3 -filter_complex amix=inputs=3:duration=first:dropout_transition=3 OUTPUT
1589 @end example
1590 will mix 3 input audio streams to a single output with the same duration as the
1591 first input and a dropout transition time of 3 seconds.
1592
1593 It accepts the following parameters:
1594 @table @option
1595
1596 @item inputs
1597 The number of inputs. If unspecified, it defaults to 2.
1598
1599 @item duration
1600 How to determine the end-of-stream.
1601 @table @option
1602
1603 @item longest
1604 The duration of the longest input. (default)
1605
1606 @item shortest
1607 The duration of the shortest input.
1608
1609 @item first
1610 The duration of the first input.
1611
1612 @end table
1613
1614 @item dropout_transition
1615 The transition time, in seconds, for volume renormalization when an input
1616 stream ends. The default value is 2 seconds.
1617
1618 @item weights
1619 Specify weight of each input audio stream as sequence.
1620 Each weight is separated by space. By default all inputs have same weight.
1621 @end table
1622
1623 @section amultiply
1624
1625 Multiply first audio stream with second audio stream and store result
1626 in output audio stream. Multiplication is done by multiplying each
1627 sample from first stream with sample at same position from second stream.
1628
1629 With this element-wise multiplication one can create amplitude fades and
1630 amplitude modulations.
1631
1632 @section anequalizer
1633
1634 High-order parametric multiband equalizer for each channel.
1635
1636 It accepts the following parameters:
1637 @table @option
1638 @item params
1639
1640 This option string is in format:
1641 "c@var{chn} f=@var{cf} w=@var{w} g=@var{g} t=@var{f} | ..."
1642 Each equalizer band is separated by '|'.
1643
1644 @table @option
1645 @item chn
1646 Set channel number to which equalization will be applied.
1647 If input doesn't have that channel the entry is ignored.
1648
1649 @item f
1650 Set central frequency for band.
1651 If input doesn't have that frequency the entry is ignored.
1652
1653 @item w
1654 Set band width in hertz.
1655
1656 @item g
1657 Set band gain in dB.
1658
1659 @item t
1660 Set filter type for band, optional, can be:
1661
1662 @table @samp
1663 @item 0
1664 Butterworth, this is default.
1665
1666 @item 1
1667 Chebyshev type 1.
1668
1669 @item 2
1670 Chebyshev type 2.
1671 @end table
1672 @end table
1673
1674 @item curves
1675 With this option activated frequency response of anequalizer is displayed
1676 in video stream.
1677
1678 @item size
1679 Set video stream size. Only useful if curves option is activated.
1680
1681 @item mgain
1682 Set max gain that will be displayed. Only useful if curves option is activated.
1683 Setting this to a reasonable value makes it possible to display gain which is derived from
1684 neighbour bands which are too close to each other and thus produce higher gain
1685 when both are activated.
1686
1687 @item fscale
1688 Set frequency scale used to draw frequency response in video output.
1689 Can be linear or logarithmic. Default is logarithmic.
1690
1691 @item colors
1692 Set color for each channel curve which is going to be displayed in video stream.
1693 This is list of color names separated by space or by '|'.
1694 Unrecognised or missing colors will be replaced by white color.
1695 @end table
1696
1697 @subsection Examples
1698
1699 @itemize
1700 @item
1701 Lower gain by 10 of central frequency 200Hz and width 100 Hz
1702 for first 2 channels using Chebyshev type 1 filter:
1703 @example
1704 anequalizer=c0 f=200 w=100 g=-10 t=1|c1 f=200 w=100 g=-10 t=1
1705 @end example
1706 @end itemize
1707
1708 @subsection Commands
1709
1710 This filter supports the following commands:
1711 @table @option
1712 @item change
1713 Alter existing filter parameters.
1714 Syntax for the commands is : "@var{fN}|f=@var{freq}|w=@var{width}|g=@var{gain}"
1715
1716 @var{fN} is existing filter number, starting from 0, if no such filter is available
1717 error is returned.
1718 @var{freq} set new frequency parameter.
1719 @var{width} set new width parameter in herz.
1720 @var{gain} set new gain parameter in dB.
1721
1722 Full filter invocation with asendcmd may look like this:
1723 asendcmd=c='4.0 anequalizer change 0|f=200|w=50|g=1',anequalizer=...
1724 @end table
1725
1726 @section anull
1727
1728 Pass the audio source unchanged to the output.
1729
1730 @section apad
1731
1732 Pad the end of an audio stream with silence.
1733
1734 This can be used together with @command{ffmpeg} @option{-shortest} to
1735 extend audio streams to the same length as the video stream.
1736
1737 A description of the accepted options follows.
1738
1739 @table @option
1740 @item packet_size
1741 Set silence packet size. Default value is 4096.
1742
1743 @item pad_len
1744 Set the number of samples of silence to add to the end. After the
1745 value is reached, the stream is terminated. This option is mutually
1746 exclusive with @option{whole_len}.
1747
1748 @item whole_len
1749 Set the minimum total number of samples in the output audio stream. If
1750 the value is longer than the input audio length, silence is added to
1751 the end, until the value is reached. This option is mutually exclusive
1752 with @option{pad_len}.
1753 @end table
1754
1755 If neither the @option{pad_len} nor the @option{whole_len} option is
1756 set, the filter will add silence to the end of the input stream
1757 indefinitely.
1758
1759 @subsection Examples
1760
1761 @itemize
1762 @item
1763 Add 1024 samples of silence to the end of the input:
1764 @example
1765 apad=pad_len=1024
1766 @end example
1767
1768 @item
1769 Make sure the audio output will contain at least 10000 samples, pad
1770 the input with silence if required:
1771 @example
1772 apad=whole_len=10000
1773 @end example
1774
1775 @item
1776 Use @command{ffmpeg} to pad the audio input with silence, so that the
1777 video stream will always result the shortest and will be converted
1778 until the end in the output file when using the @option{shortest}
1779 option:
1780 @example
1781 ffmpeg -i VIDEO -i AUDIO -filter_complex "[1:0]apad" -shortest OUTPUT
1782 @end example
1783 @end itemize
1784
1785 @section aphaser
1786 Add a phasing effect to the input audio.
1787
1788 A phaser filter creates series of peaks and troughs in the frequency spectrum.
1789 The position of the peaks and troughs are modulated so that they vary over time, creating a sweeping effect.
1790
1791 A description of the accepted parameters follows.
1792
1793 @table @option
1794 @item in_gain
1795 Set input gain. Default is 0.4.
1796
1797 @item out_gain
1798 Set output gain. Default is 0.74
1799
1800 @item delay
1801 Set delay in milliseconds. Default is 3.0.
1802
1803 @item decay
1804 Set decay. Default is 0.4.
1805
1806 @item speed
1807 Set modulation speed in Hz. Default is 0.5.
1808
1809 @item type
1810 Set modulation type. Default is triangular.
1811
1812 It accepts the following values:
1813 @table @samp
1814 @item triangular, t
1815 @item sinusoidal, s
1816 @end table
1817 @end table
1818
1819 @section apulsator
1820
1821 Audio pulsator is something between an autopanner and a tremolo.
1822 But it can produce funny stereo effects as well. Pulsator changes the volume
1823 of the left and right channel based on a LFO (low frequency oscillator) with
1824 different waveforms and shifted phases.
1825 This filter have the ability to define an offset between left and right
1826 channel. An offset of 0 means that both LFO shapes match each other.
1827 The left and right channel are altered equally - a conventional tremolo.
1828 An offset of 50% means that the shape of the right channel is exactly shifted
1829 in phase (or moved backwards about half of the frequency) - pulsator acts as
1830 an autopanner. At 1 both curves match again. Every setting in between moves the
1831 phase shift gapless between all stages and produces some "bypassing" sounds with
1832 sine and triangle waveforms. The more you set the offset near 1 (starting from
1833 the 0.5) the faster the signal passes from the left to the right speaker.
1834
1835 The filter accepts the following options:
1836
1837 @table @option
1838 @item level_in
1839 Set input gain. By default it is 1. Range is [0.015625 - 64].
1840
1841 @item level_out
1842 Set output gain. By default it is 1. Range is [0.015625 - 64].
1843
1844 @item mode
1845 Set waveform shape the LFO will use. Can be one of: sine, triangle, square,
1846 sawup or sawdown. Default is sine.
1847
1848 @item amount
1849 Set modulation. Define how much of original signal is affected by the LFO.
1850
1851 @item offset_l
1852 Set left channel offset. Default is 0. Allowed range is [0 - 1].
1853
1854 @item offset_r
1855 Set right channel offset. Default is 0.5. Allowed range is [0 - 1].
1856
1857 @item width
1858 Set pulse width. Default is 1. Allowed range is [0 - 2].
1859
1860 @item timing
1861 Set possible timing mode. Can be one of: bpm, ms or hz. Default is hz.
1862
1863 @item bpm
1864 Set bpm. Default is 120. Allowed range is [30 - 300]. Only used if timing
1865 is set to bpm.
1866
1867 @item ms
1868 Set ms. Default is 500. Allowed range is [10 - 2000]. Only used if timing
1869 is set to ms.
1870
1871 @item hz
1872 Set frequency in Hz. Default is 2. Allowed range is [0.01 - 100]. Only used
1873 if timing is set to hz.
1874 @end table
1875
1876 @anchor{aresample}
1877 @section aresample
1878
1879 Resample the input audio to the specified parameters, using the
1880 libswresample library. If none are specified then the filter will
1881 automatically convert between its input and output.
1882
1883 This filter is also able to stretch/squeeze the audio data to make it match
1884 the timestamps or to inject silence / cut out audio to make it match the
1885 timestamps, do a combination of both or do neither.
1886
1887 The filter accepts the syntax
1888 [@var{sample_rate}:]@var{resampler_options}, where @var{sample_rate}
1889 expresses a sample rate and @var{resampler_options} is a list of
1890 @var{key}=@var{value} pairs, separated by ":". See the
1891 @ref{Resampler Options,,"Resampler Options" section in the
1892 ffmpeg-resampler(1) manual,ffmpeg-resampler}
1893 for the complete list of supported options.
1894
1895 @subsection Examples
1896
1897 @itemize
1898 @item
1899 Resample the input audio to 44100Hz:
1900 @example
1901 aresample=44100
1902 @end example
1903
1904 @item
1905 Stretch/squeeze samples to the given timestamps, with a maximum of 1000
1906 samples per second compensation:
1907 @example
1908 aresample=async=1000
1909 @end example
1910 @end itemize
1911
1912 @section areverse
1913
1914 Reverse an audio clip.
1915
1916 Warning: This filter requires memory to buffer the entire clip, so trimming
1917 is suggested.
1918
1919 @subsection Examples
1920
1921 @itemize
1922 @item
1923 Take the first 5 seconds of a clip, and reverse it.
1924 @example
1925 atrim=end=5,areverse
1926 @end example
1927 @end itemize
1928
1929 @section asetnsamples
1930
1931 Set the number of samples per each output audio frame.
1932
1933 The last output packet may contain a different number of samples, as
1934 the filter will flush all the remaining samples when the input audio
1935 signals its end.
1936
1937 The filter accepts the following options:
1938
1939 @table @option
1940
1941 @item nb_out_samples, n
1942 Set the number of frames per each output audio frame. The number is
1943 intended as the number of samples @emph{per each channel}.
1944 Default value is 1024.
1945
1946 @item pad, p
1947 If set to 1, the filter will pad the last audio frame with zeroes, so
1948 that the last frame will contain the same number of samples as the
1949 previous ones. Default value is 1.
1950 @end table
1951
1952 For example, to set the number of per-frame samples to 1234 and
1953 disable padding for the last frame, use:
1954 @example
1955 asetnsamples=n=1234:p=0
1956 @end example
1957
1958 @section asetrate
1959
1960 Set the sample rate without altering the PCM data.
1961 This will result in a change of speed and pitch.
1962
1963 The filter accepts the following options:
1964
1965 @table @option
1966 @item sample_rate, r
1967 Set the output sample rate. Default is 44100 Hz.
1968 @end table
1969
1970 @section ashowinfo
1971
1972 Show a line containing various information for each input audio frame.
1973 The input audio is not modified.
1974
1975 The shown line contains a sequence of key/value pairs of the form
1976 @var{key}:@var{value}.
1977
1978 The following values are shown in the output:
1979
1980 @table @option
1981 @item n
1982 The (sequential) number of the input frame, starting from 0.
1983
1984 @item pts
1985 The presentation timestamp of the input frame, in time base units; the time base
1986 depends on the filter input pad, and is usually 1/@var{sample_rate}.
1987
1988 @item pts_time
1989 The presentation timestamp of the input frame in seconds.
1990
1991 @item pos
1992 position of the frame in the input stream, -1 if this information in
1993 unavailable and/or meaningless (for example in case of synthetic audio)
1994
1995 @item fmt
1996 The sample format.
1997
1998 @item chlayout
1999 The channel layout.
2000
2001 @item rate
2002 The sample rate for the audio frame.
2003
2004 @item nb_samples
2005 The number of samples (per channel) in the frame.
2006
2007 @item checksum
2008 The Adler-32 checksum (printed in hexadecimal) of the audio data. For planar
2009 audio, the data is treated as if all the planes were concatenated.
2010
2011 @item plane_checksums
2012 A list of Adler-32 checksums for each data plane.
2013 @end table
2014
2015 @anchor{astats}
2016 @section astats
2017
2018 Display time domain statistical information about the audio channels.
2019 Statistics are calculated and displayed for each audio channel and,
2020 where applicable, an overall figure is also given.
2021
2022 It accepts the following option:
2023 @table @option
2024 @item length
2025 Short window length in seconds, used for peak and trough RMS measurement.
2026 Default is @code{0.05} (50 milliseconds). Allowed range is @code{[0.01 - 10]}.
2027
2028 @item metadata
2029
2030 Set metadata injection. All the metadata keys are prefixed with @code{lavfi.astats.X},
2031 where @code{X} is channel number starting from 1 or string @code{Overall}. Default is
2032 disabled.
2033
2034 Available keys for each channel are:
2035 DC_offset
2036 Min_level
2037 Max_level
2038 Min_difference
2039 Max_difference
2040 Mean_difference
2041 RMS_difference
2042 Peak_level
2043 RMS_peak
2044 RMS_trough
2045 Crest_factor
2046 Flat_factor
2047 Peak_count
2048 Bit_depth
2049 Dynamic_range
2050 Zero_crossings
2051 Zero_crossings_rate
2052
2053 and for Overall:
2054 DC_offset
2055 Min_level
2056 Max_level
2057 Min_difference
2058 Max_difference
2059 Mean_difference
2060 RMS_difference
2061 Peak_level
2062 RMS_level
2063 RMS_peak
2064 RMS_trough
2065 Flat_factor
2066 Peak_count
2067 Bit_depth
2068 Number_of_samples
2069
2070 For example full key look like this @code{lavfi.astats.1.DC_offset} or
2071 this @code{lavfi.astats.Overall.Peak_count}.
2072
2073 For description what each key means read below.
2074
2075 @item reset
2076 Set number of frame after which stats are going to be recalculated.
2077 Default is disabled.
2078 @end table
2079
2080 A description of each shown parameter follows:
2081
2082 @table @option
2083 @item DC offset
2084 Mean amplitude displacement from zero.
2085
2086 @item Min level
2087 Minimal sample level.
2088
2089 @item Max level
2090 Maximal sample level.
2091
2092 @item Min difference
2093 Minimal difference between two consecutive samples.
2094
2095 @item Max difference
2096 Maximal difference between two consecutive samples.
2097
2098 @item Mean difference
2099 Mean difference between two consecutive samples.
2100 The average of each difference between two consecutive samples.
2101
2102 @item RMS difference
2103 Root Mean Square difference between two consecutive samples.
2104
2105 @item Peak level dB
2106 @item RMS level dB
2107 Standard peak and RMS level measured in dBFS.
2108
2109 @item RMS peak dB
2110 @item RMS trough dB
2111 Peak and trough values for RMS level measured over a short window.
2112
2113 @item Crest factor
2114 Standard ratio of peak to RMS level (note: not in dB).
2115
2116 @item Flat factor
2117 Flatness (i.e. consecutive samples with the same value) of the signal at its peak levels
2118 (i.e. either @var{Min level} or @var{Max level}).
2119
2120 @item Peak count
2121 Number of occasions (not the number of samples) that the signal attained either
2122 @var{Min level} or @var{Max level}.
2123
2124 @item Bit depth
2125 Overall bit depth of audio. Number of bits used for each sample.
2126
2127 @item Dynamic range
2128 Measured dynamic range of audio in dB.
2129
2130 @item Zero crossings
2131 Number of points where the waveform crosses the zero level axis.
2132
2133 @item Zero crossings rate
2134 Rate of Zero crossings and number of audio samples.
2135 @end table
2136
2137 @section atempo
2138
2139 Adjust audio tempo.
2140
2141 The filter accepts exactly one parameter, the audio tempo. If not
2142 specified then the filter will assume nominal 1.0 tempo. Tempo must
2143 be in the [0.5, 100.0] range.
2144
2145 Note that tempo greater than 2 will skip some samples rather than
2146 blend them in.  If for any reason this is a concern it is always
2147 possible to daisy-chain several instances of atempo to achieve the
2148 desired product tempo.
2149
2150 @subsection Examples
2151
2152 @itemize
2153 @item
2154 Slow down audio to 80% tempo:
2155 @example
2156 atempo=0.8
2157 @end example
2158
2159 @item
2160 To speed up audio to 300% tempo:
2161 @example
2162 atempo=3
2163 @end example
2164
2165 @item
2166 To speed up audio to 300% tempo by daisy-chaining two atempo instances:
2167 @example
2168 atempo=sqrt(3),atempo=sqrt(3)
2169 @end example
2170 @end itemize
2171
2172 @section atrim
2173
2174 Trim the input so that the output contains one continuous subpart of the input.
2175
2176 It accepts the following parameters:
2177 @table @option
2178 @item start
2179 Timestamp (in seconds) of the start of the section to keep. I.e. the audio
2180 sample with the timestamp @var{start} will be the first sample in the output.
2181
2182 @item end
2183 Specify time of the first audio sample that will be dropped, i.e. the
2184 audio sample immediately preceding the one with the timestamp @var{end} will be
2185 the last sample in the output.
2186
2187 @item start_pts
2188 Same as @var{start}, except this option sets the start timestamp in samples
2189 instead of seconds.
2190
2191 @item end_pts
2192 Same as @var{end}, except this option sets the end timestamp in samples instead
2193 of seconds.
2194
2195 @item duration
2196 The maximum duration of the output in seconds.
2197
2198 @item start_sample
2199 The number of the first sample that should be output.
2200
2201 @item end_sample
2202 The number of the first sample that should be dropped.
2203 @end table
2204
2205 @option{start}, @option{end}, and @option{duration} are expressed as time
2206 duration specifications; see
2207 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}.
2208
2209 Note that the first two sets of the start/end options and the @option{duration}
2210 option look at the frame timestamp, while the _sample options simply count the
2211 samples that pass through the filter. So start/end_pts and start/end_sample will
2212 give different results when the timestamps are wrong, inexact or do not start at
2213 zero. Also note that this filter does not modify the timestamps. If you wish
2214 to have the output timestamps start at zero, insert the asetpts filter after the
2215 atrim filter.
2216
2217 If multiple start or end options are set, this filter tries to be greedy and
2218 keep all samples that match at least one of the specified constraints. To keep
2219 only the part that matches all the constraints at once, chain multiple atrim
2220 filters.
2221
2222 The defaults are such that all the input is kept. So it is possible to set e.g.
2223 just the end values to keep everything before the specified time.
2224
2225 Examples:
2226 @itemize
2227 @item
2228 Drop everything except the second minute of input:
2229 @example
2230 ffmpeg -i INPUT -af atrim=60:120
2231 @end example
2232
2233 @item
2234 Keep only the first 1000 samples:
2235 @example
2236 ffmpeg -i INPUT -af atrim=end_sample=1000
2237 @end example
2238
2239 @end itemize
2240
2241 @section bandpass
2242
2243 Apply a two-pole Butterworth band-pass filter with central
2244 frequency @var{frequency}, and (3dB-point) band-width width.
2245 The @var{csg} option selects a constant skirt gain (peak gain = Q)
2246 instead of the default: constant 0dB peak gain.
2247 The filter roll off at 6dB per octave (20dB per decade).
2248
2249 The filter accepts the following options:
2250
2251 @table @option
2252 @item frequency, f
2253 Set the filter's central frequency. Default is @code{3000}.
2254
2255 @item csg
2256 Constant skirt gain if set to 1. Defaults to 0.
2257
2258 @item width_type, t
2259 Set method to specify band-width of filter.
2260 @table @option
2261 @item h
2262 Hz
2263 @item q
2264 Q-Factor
2265 @item o
2266 octave
2267 @item s
2268 slope
2269 @item k
2270 kHz
2271 @end table
2272
2273 @item width, w
2274 Specify the band-width of a filter in width_type units.
2275
2276 @item channels, c
2277 Specify which channels to filter, by default all available are filtered.
2278 @end table
2279
2280 @subsection Commands
2281
2282 This filter supports the following commands:
2283 @table @option
2284 @item frequency, f
2285 Change bandpass frequency.
2286 Syntax for the command is : "@var{frequency}"
2287
2288 @item width_type, t
2289 Change bandpass width_type.
2290 Syntax for the command is : "@var{width_type}"
2291
2292 @item width, w
2293 Change bandpass width.
2294 Syntax for the command is : "@var{width}"
2295 @end table
2296
2297 @section bandreject
2298
2299 Apply a two-pole Butterworth band-reject filter with central
2300 frequency @var{frequency}, and (3dB-point) band-width @var{width}.
2301 The filter roll off at 6dB per octave (20dB per decade).
2302
2303 The filter accepts the following options:
2304
2305 @table @option
2306 @item frequency, f
2307 Set the filter's central frequency. Default is @code{3000}.
2308
2309 @item width_type, t
2310 Set method to specify band-width of filter.
2311 @table @option
2312 @item h
2313 Hz
2314 @item q
2315 Q-Factor
2316 @item o
2317 octave
2318 @item s
2319 slope
2320 @item k
2321 kHz
2322 @end table
2323
2324 @item width, w
2325 Specify the band-width of a filter in width_type units.
2326
2327 @item channels, c
2328 Specify which channels to filter, by default all available are filtered.
2329 @end table
2330
2331 @subsection Commands
2332
2333 This filter supports the following commands:
2334 @table @option
2335 @item frequency, f
2336 Change bandreject frequency.
2337 Syntax for the command is : "@var{frequency}"
2338
2339 @item width_type, t
2340 Change bandreject width_type.
2341 Syntax for the command is : "@var{width_type}"
2342
2343 @item width, w
2344 Change bandreject width.
2345 Syntax for the command is : "@var{width}"
2346 @end table
2347
2348 @section bass, lowshelf
2349
2350 Boost or cut the bass (lower) frequencies of the audio using a two-pole
2351 shelving filter with a response similar to that of a standard
2352 hi-fi's tone-controls. This is also known as shelving equalisation (EQ).
2353
2354 The filter accepts the following options:
2355
2356 @table @option
2357 @item gain, g
2358 Give the gain at 0 Hz. Its useful range is about -20
2359 (for a large cut) to +20 (for a large boost).
2360 Beware of clipping when using a positive gain.
2361
2362 @item frequency, f
2363 Set the filter's central frequency and so can be used
2364 to extend or reduce the frequency range to be boosted or cut.
2365 The default value is @code{100} Hz.
2366
2367 @item width_type, t
2368 Set method to specify band-width of filter.
2369 @table @option
2370 @item h
2371 Hz
2372 @item q
2373 Q-Factor
2374 @item o
2375 octave
2376 @item s
2377 slope
2378 @item k
2379 kHz
2380 @end table
2381
2382 @item width, w
2383 Determine how steep is the filter's shelf transition.
2384
2385 @item channels, c
2386 Specify which channels to filter, by default all available are filtered.
2387 @end table
2388
2389 @subsection Commands
2390
2391 This filter supports the following commands:
2392 @table @option
2393 @item frequency, f
2394 Change bass frequency.
2395 Syntax for the command is : "@var{frequency}"
2396
2397 @item width_type, t
2398 Change bass width_type.
2399 Syntax for the command is : "@var{width_type}"
2400
2401 @item width, w
2402 Change bass width.
2403 Syntax for the command is : "@var{width}"
2404
2405 @item gain, g
2406 Change bass gain.
2407 Syntax for the command is : "@var{gain}"
2408 @end table
2409
2410 @section biquad
2411
2412 Apply a biquad IIR filter with the given coefficients.
2413 Where @var{b0}, @var{b1}, @var{b2} and @var{a0}, @var{a1}, @var{a2}
2414 are the numerator and denominator coefficients respectively.
2415 and @var{channels}, @var{c} specify which channels to filter, by default all
2416 available are filtered.
2417
2418 @subsection Commands
2419
2420 This filter supports the following commands:
2421 @table @option
2422 @item a0
2423 @item a1
2424 @item a2
2425 @item b0
2426 @item b1
2427 @item b2
2428 Change biquad parameter.
2429 Syntax for the command is : "@var{value}"
2430 @end table
2431
2432 @section bs2b
2433 Bauer stereo to binaural transformation, which improves headphone listening of
2434 stereo audio records.
2435
2436 To enable compilation of this filter you need to configure FFmpeg with
2437 @code{--enable-libbs2b}.
2438
2439 It accepts the following parameters:
2440 @table @option
2441
2442 @item profile
2443 Pre-defined crossfeed level.
2444 @table @option
2445
2446 @item default
2447 Default level (fcut=700, feed=50).
2448
2449 @item cmoy
2450 Chu Moy circuit (fcut=700, feed=60).
2451
2452 @item jmeier
2453 Jan Meier circuit (fcut=650, feed=95).
2454
2455 @end table
2456
2457 @item fcut
2458 Cut frequency (in Hz).
2459
2460 @item feed
2461 Feed level (in Hz).
2462
2463 @end table
2464
2465 @section channelmap
2466
2467 Remap input channels to new locations.
2468
2469 It accepts the following parameters:
2470 @table @option
2471 @item map
2472 Map channels from input to output. The argument is a '|'-separated list of
2473 mappings, each in the @code{@var{in_channel}-@var{out_channel}} or
2474 @var{in_channel} form. @var{in_channel} can be either the name of the input
2475 channel (e.g. FL for front left) or its index in the input channel layout.
2476 @var{out_channel} is the name of the output channel or its index in the output
2477 channel layout. If @var{out_channel} is not given then it is implicitly an
2478 index, starting with zero and increasing by one for each mapping.
2479
2480 @item channel_layout
2481 The channel layout of the output stream.
2482 @end table
2483
2484 If no mapping is present, the filter will implicitly map input channels to
2485 output channels, preserving indices.
2486
2487 @subsection Examples
2488
2489 @itemize
2490 @item
2491 For example, assuming a 5.1+downmix input MOV file,
2492 @example
2493 ffmpeg -i in.mov -filter 'channelmap=map=DL-FL|DR-FR' out.wav
2494 @end example
2495 will create an output WAV file tagged as stereo from the downmix channels of
2496 the input.
2497
2498 @item
2499 To fix a 5.1 WAV improperly encoded in AAC's native channel order
2500 @example
2501 ffmpeg -i in.wav -filter 'channelmap=1|2|0|5|3|4:5.1' out.wav
2502 @end example
2503 @end itemize
2504
2505 @section channelsplit
2506
2507 Split each channel from an input audio stream into a separate output stream.
2508
2509 It accepts the following parameters:
2510 @table @option
2511 @item channel_layout
2512 The channel layout of the input stream. The default is "stereo".
2513 @item channels
2514 A channel layout describing the channels to be extracted as separate output streams
2515 or "all" to extract each input channel as a separate stream. The default is "all".
2516
2517 Choosing channels not present in channel layout in the input will result in an error.
2518 @end table
2519
2520 @subsection Examples
2521
2522 @itemize
2523 @item
2524 For example, assuming a stereo input MP3 file,
2525 @example
2526 ffmpeg -i in.mp3 -filter_complex channelsplit out.mkv
2527 @end example
2528 will create an output Matroska file with two audio streams, one containing only
2529 the left channel and the other the right channel.
2530
2531 @item
2532 Split a 5.1 WAV file into per-channel files:
2533 @example
2534 ffmpeg -i in.wav -filter_complex
2535 'channelsplit=channel_layout=5.1[FL][FR][FC][LFE][SL][SR]'
2536 -map '[FL]' front_left.wav -map '[FR]' front_right.wav -map '[FC]'
2537 front_center.wav -map '[LFE]' lfe.wav -map '[SL]' side_left.wav -map '[SR]'
2538 side_right.wav
2539 @end example
2540
2541 @item
2542 Extract only LFE from a 5.1 WAV file:
2543 @example
2544 ffmpeg -i in.wav -filter_complex 'channelsplit=channel_layout=5.1:channels=LFE[LFE]'
2545 -map '[LFE]' lfe.wav
2546 @end example
2547 @end itemize
2548
2549 @section chorus
2550 Add a chorus effect to the audio.
2551
2552 Can make a single vocal sound like a chorus, but can also be applied to instrumentation.
2553
2554 Chorus resembles an echo effect with a short delay, but whereas with echo the delay is
2555 constant, with chorus, it is varied using using sinusoidal or triangular modulation.
2556 The modulation depth defines the range the modulated delay is played before or after
2557 the delay. Hence the delayed sound will sound slower or faster, that is the delayed
2558 sound tuned around the original one, like in a chorus where some vocals are slightly
2559 off key.
2560
2561 It accepts the following parameters:
2562 @table @option
2563 @item in_gain
2564 Set input gain. Default is 0.4.
2565
2566 @item out_gain
2567 Set output gain. Default is 0.4.
2568
2569 @item delays
2570 Set delays. A typical delay is around 40ms to 60ms.
2571
2572 @item decays
2573 Set decays.
2574
2575 @item speeds
2576 Set speeds.
2577
2578 @item depths
2579 Set depths.
2580 @end table
2581
2582 @subsection Examples
2583
2584 @itemize
2585 @item
2586 A single delay:
2587 @example
2588 chorus=0.7:0.9:55:0.4:0.25:2
2589 @end example
2590
2591 @item
2592 Two delays:
2593 @example
2594 chorus=0.6:0.9:50|60:0.4|0.32:0.25|0.4:2|1.3
2595 @end example
2596
2597 @item
2598 Fuller sounding chorus with three delays:
2599 @example
2600 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
2601 @end example
2602 @end itemize
2603
2604 @section compand
2605 Compress or expand the audio's dynamic range.
2606
2607 It accepts the following parameters:
2608
2609 @table @option
2610
2611 @item attacks
2612 @item decays
2613 A list of times in seconds for each channel over which the instantaneous level
2614 of the input signal is averaged to determine its volume. @var{attacks} refers to
2615 increase of volume and @var{decays} refers to decrease of volume. For most
2616 situations, the attack time (response to the audio getting louder) should be
2617 shorter than the decay time, because the human ear is more sensitive to sudden
2618 loud audio than sudden soft audio. A typical value for attack is 0.3 seconds and
2619 a typical value for decay is 0.8 seconds.
2620 If specified number of attacks & decays is lower than number of channels, the last
2621 set attack/decay will be used for all remaining channels.
2622
2623 @item points
2624 A list of points for the transfer function, specified in dB relative to the
2625 maximum possible signal amplitude. Each key points list must be defined using
2626 the following syntax: @code{x0/y0|x1/y1|x2/y2|....} or
2627 @code{x0/y0 x1/y1 x2/y2 ....}
2628
2629 The input values must be in strictly increasing order but the transfer function
2630 does not have to be monotonically rising. The point @code{0/0} is assumed but
2631 may be overridden (by @code{0/out-dBn}). Typical values for the transfer
2632 function are @code{-70/-70|-60/-20|1/0}.
2633
2634 @item soft-knee
2635 Set the curve radius in dB for all joints. It defaults to 0.01.
2636
2637 @item gain
2638 Set the additional gain in dB to be applied at all points on the transfer
2639 function. This allows for easy adjustment of the overall gain.
2640 It defaults to 0.
2641
2642 @item volume
2643 Set an initial volume, in dB, to be assumed for each channel when filtering
2644 starts. This permits the user to supply a nominal level initially, so that, for
2645 example, a very large gain is not applied to initial signal levels before the
2646 companding has begun to operate. A typical value for audio which is initially
2647 quiet is -90 dB. It defaults to 0.
2648
2649 @item delay
2650 Set a delay, in seconds. The input audio is analyzed immediately, but audio is
2651 delayed before being fed to the volume adjuster. Specifying a delay
2652 approximately equal to the attack/decay times allows the filter to effectively
2653 operate in predictive rather than reactive mode. It defaults to 0.
2654
2655 @end table
2656
2657 @subsection Examples
2658
2659 @itemize
2660 @item
2661 Make music with both quiet and loud passages suitable for listening to in a
2662 noisy environment:
2663 @example
2664 compand=.3|.3:1|1:-90/-60|-60/-40|-40/-30|-20/-20:6:0:-90:0.2
2665 @end example
2666
2667 Another example for audio with whisper and explosion parts:
2668 @example
2669 compand=0|0:1|1:-90/-900|-70/-70|-30/-9|0/-3:6:0:0:0
2670 @end example
2671
2672 @item
2673 A noise gate for when the noise is at a lower level than the signal:
2674 @example
2675 compand=.1|.1:.2|.2:-900/-900|-50.1/-900|-50/-50:.01:0:-90:.1
2676 @end example
2677
2678 @item
2679 Here is another noise gate, this time for when the noise is at a higher level
2680 than the signal (making it, in some ways, similar to squelch):
2681 @example
2682 compand=.1|.1:.1|.1:-45.1/-45.1|-45/-900|0/-900:.01:45:-90:.1
2683 @end example
2684
2685 @item
2686 2:1 compression starting at -6dB:
2687 @example
2688 compand=points=-80/-80|-6/-6|0/-3.8|20/3.5
2689 @end example
2690
2691 @item
2692 2:1 compression starting at -9dB:
2693 @example
2694 compand=points=-80/-80|-9/-9|0/-5.3|20/2.9
2695 @end example
2696
2697 @item
2698 2:1 compression starting at -12dB:
2699 @example
2700 compand=points=-80/-80|-12/-12|0/-6.8|20/1.9
2701 @end example
2702
2703 @item
2704 2:1 compression starting at -18dB:
2705 @example
2706 compand=points=-80/-80|-18/-18|0/-9.8|20/0.7
2707 @end example
2708
2709 @item
2710 3:1 compression starting at -15dB:
2711 @example
2712 compand=points=-80/-80|-15/-15|0/-10.8|20/-5.2
2713 @end example
2714
2715 @item
2716 Compressor/Gate:
2717 @example
2718 compand=points=-80/-105|-62/-80|-15.4/-15.4|0/-12|20/-7.6
2719 @end example
2720
2721 @item
2722 Expander:
2723 @example
2724 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
2725 @end example
2726
2727 @item
2728 Hard limiter at -6dB:
2729 @example
2730 compand=attacks=0:points=-80/-80|-6/-6|20/-6
2731 @end example
2732
2733 @item
2734 Hard limiter at -12dB:
2735 @example
2736 compand=attacks=0:points=-80/-80|-12/-12|20/-12
2737 @end example
2738
2739 @item
2740 Hard noise gate at -35 dB:
2741 @example
2742 compand=attacks=0:points=-80/-115|-35.1/-80|-35/-35|20/20
2743 @end example
2744
2745 @item
2746 Soft limiter:
2747 @example
2748 compand=attacks=0:points=-80/-80|-12.4/-12.4|-6/-8|0/-6.8|20/-2.8
2749 @end example
2750 @end itemize
2751
2752 @section compensationdelay
2753
2754 Compensation Delay Line is a metric based delay to compensate differing
2755 positions of microphones or speakers.
2756
2757 For example, you have recorded guitar with two microphones placed in
2758 different location. Because the front of sound wave has fixed speed in
2759 normal conditions, the phasing of microphones can vary and depends on
2760 their location and interposition. The best sound mix can be achieved when
2761 these microphones are in phase (synchronized). Note that distance of
2762 ~30 cm between microphones makes one microphone to capture signal in
2763 antiphase to another microphone. That makes the final mix sounding moody.
2764 This filter helps to solve phasing problems by adding different delays
2765 to each microphone track and make them synchronized.
2766
2767 The best result can be reached when you take one track as base and
2768 synchronize other tracks one by one with it.
2769 Remember that synchronization/delay tolerance depends on sample rate, too.
2770 Higher sample rates will give more tolerance.
2771
2772 It accepts the following parameters:
2773
2774 @table @option
2775 @item mm
2776 Set millimeters distance. This is compensation distance for fine tuning.
2777 Default is 0.
2778
2779 @item cm
2780 Set cm distance. This is compensation distance for tightening distance setup.
2781 Default is 0.
2782
2783 @item m
2784 Set meters distance. This is compensation distance for hard distance setup.
2785 Default is 0.
2786
2787 @item dry
2788 Set dry amount. Amount of unprocessed (dry) signal.
2789 Default is 0.
2790
2791 @item wet
2792 Set wet amount. Amount of processed (wet) signal.
2793 Default is 1.
2794
2795 @item temp
2796 Set temperature degree in Celsius. This is the temperature of the environment.
2797 Default is 20.
2798 @end table
2799
2800 @section crossfeed
2801 Apply headphone crossfeed filter.
2802
2803 Crossfeed is the process of blending the left and right channels of stereo
2804 audio recording.
2805 It is mainly used to reduce extreme stereo separation of low frequencies.
2806
2807 The intent is to produce more speaker like sound to the listener.
2808
2809 The filter accepts the following options:
2810
2811 @table @option
2812 @item strength
2813 Set strength of crossfeed. Default is 0.2. Allowed range is from 0 to 1.
2814 This sets gain of low shelf filter for side part of stereo image.
2815 Default is -6dB. Max allowed is -30db when strength is set to 1.
2816
2817 @item range
2818 Set soundstage wideness. Default is 0.5. Allowed range is from 0 to 1.
2819 This sets cut off frequency of low shelf filter. Default is cut off near
2820 1550 Hz. With range set to 1 cut off frequency is set to 2100 Hz.
2821
2822 @item level_in
2823 Set input gain. Default is 0.9.
2824
2825 @item level_out
2826 Set output gain. Default is 1.
2827 @end table
2828
2829 @section crystalizer
2830 Simple algorithm to expand audio dynamic range.
2831
2832 The filter accepts the following options:
2833
2834 @table @option
2835 @item i
2836 Sets the intensity of effect (default: 2.0). Must be in range between 0.0
2837 (unchanged sound) to 10.0 (maximum effect).
2838
2839 @item c
2840 Enable clipping. By default is enabled.
2841 @end table
2842
2843 @section dcshift
2844 Apply a DC shift to the audio.
2845
2846 This can be useful to remove a DC offset (caused perhaps by a hardware problem
2847 in the recording chain) from the audio. The effect of a DC offset is reduced
2848 headroom and hence volume. The @ref{astats} filter can be used to determine if
2849 a signal has a DC offset.
2850
2851 @table @option
2852 @item shift
2853 Set the DC shift, allowed range is [-1, 1]. It indicates the amount to shift
2854 the audio.
2855
2856 @item limitergain
2857 Optional. It should have a value much less than 1 (e.g. 0.05 or 0.02) and is
2858 used to prevent clipping.
2859 @end table
2860
2861 @section drmeter
2862 Measure audio dynamic range.
2863
2864 DR values of 14 and higher is found in very dynamic material. DR of 8 to 13
2865 is found in transition material. And anything less that 8 have very poor dynamics
2866 and is very compressed.
2867
2868 The filter accepts the following options:
2869
2870 @table @option
2871 @item length
2872 Set window length in seconds used to split audio into segments of equal length.
2873 Default is 3 seconds.
2874 @end table
2875
2876 @section dynaudnorm
2877 Dynamic Audio Normalizer.
2878
2879 This filter applies a certain amount of gain to the input audio in order
2880 to bring its peak magnitude to a target level (e.g. 0 dBFS). However, in
2881 contrast to more "simple" normalization algorithms, the Dynamic Audio
2882 Normalizer *dynamically* re-adjusts the gain factor to the input audio.
2883 This allows for applying extra gain to the "quiet" sections of the audio
2884 while avoiding distortions or clipping the "loud" sections. In other words:
2885 The Dynamic Audio Normalizer will "even out" the volume of quiet and loud
2886 sections, in the sense that the volume of each section is brought to the
2887 same target level. Note, however, that the Dynamic Audio Normalizer achieves
2888 this goal *without* applying "dynamic range compressing". It will retain 100%
2889 of the dynamic range *within* each section of the audio file.
2890
2891 @table @option
2892 @item f
2893 Set the frame length in milliseconds. In range from 10 to 8000 milliseconds.
2894 Default is 500 milliseconds.
2895 The Dynamic Audio Normalizer processes the input audio in small chunks,
2896 referred to as frames. This is required, because a peak magnitude has no
2897 meaning for just a single sample value. Instead, we need to determine the
2898 peak magnitude for a contiguous sequence of sample values. While a "standard"
2899 normalizer would simply use the peak magnitude of the complete file, the
2900 Dynamic Audio Normalizer determines the peak magnitude individually for each
2901 frame. The length of a frame is specified in milliseconds. By default, the
2902 Dynamic Audio Normalizer uses a frame length of 500 milliseconds, which has
2903 been found to give good results with most files.
2904 Note that the exact frame length, in number of samples, will be determined
2905 automatically, based on the sampling rate of the individual input audio file.
2906
2907 @item g
2908 Set the Gaussian filter window size. In range from 3 to 301, must be odd
2909 number. Default is 31.
2910 Probably the most important parameter of the Dynamic Audio Normalizer is the
2911 @code{window size} of the Gaussian smoothing filter. The filter's window size
2912 is specified in frames, centered around the current frame. For the sake of
2913 simplicity, this must be an odd number. Consequently, the default value of 31
2914 takes into account the current frame, as well as the 15 preceding frames and
2915 the 15 subsequent frames. Using a larger window results in a stronger
2916 smoothing effect and thus in less gain variation, i.e. slower gain
2917 adaptation. Conversely, using a smaller window results in a weaker smoothing
2918 effect and thus in more gain variation, i.e. faster gain adaptation.
2919 In other words, the more you increase this value, the more the Dynamic Audio
2920 Normalizer will behave like a "traditional" normalization filter. On the
2921 contrary, the more you decrease this value, the more the Dynamic Audio
2922 Normalizer will behave like a dynamic range compressor.
2923
2924 @item p
2925 Set the target peak value. This specifies the highest permissible magnitude
2926 level for the normalized audio input. This filter will try to approach the
2927 target peak magnitude as closely as possible, but at the same time it also
2928 makes sure that the normalized signal will never exceed the peak magnitude.
2929 A frame's maximum local gain factor is imposed directly by the target peak
2930 magnitude. The default value is 0.95 and thus leaves a headroom of 5%*.
2931 It is not recommended to go above this value.
2932
2933 @item m
2934 Set the maximum gain factor. In range from 1.0 to 100.0. Default is 10.0.
2935 The Dynamic Audio Normalizer determines the maximum possible (local) gain
2936 factor for each input frame, i.e. the maximum gain factor that does not
2937 result in clipping or distortion. The maximum gain factor is determined by
2938 the frame's highest magnitude sample. However, the Dynamic Audio Normalizer
2939 additionally bounds the frame's maximum gain factor by a predetermined
2940 (global) maximum gain factor. This is done in order to avoid excessive gain
2941 factors in "silent" or almost silent frames. By default, the maximum gain
2942 factor is 10.0, For most inputs the default value should be sufficient and
2943 it usually is not recommended to increase this value. Though, for input
2944 with an extremely low overall volume level, it may be necessary to allow even
2945 higher gain factors. Note, however, that the Dynamic Audio Normalizer does
2946 not simply apply a "hard" threshold (i.e. cut off values above the threshold).
2947 Instead, a "sigmoid" threshold function will be applied. This way, the
2948 gain factors will smoothly approach the threshold value, but never exceed that
2949 value.
2950
2951 @item r
2952 Set the target RMS. In range from 0.0 to 1.0. Default is 0.0 - disabled.
2953 By default, the Dynamic Audio Normalizer performs "peak" normalization.
2954 This means that the maximum local gain factor for each frame is defined
2955 (only) by the frame's highest magnitude sample. This way, the samples can
2956 be amplified as much as possible without exceeding the maximum signal
2957 level, i.e. without clipping. Optionally, however, the Dynamic Audio
2958 Normalizer can also take into account the frame's root mean square,
2959 abbreviated RMS. In electrical engineering, the RMS is commonly used to
2960 determine the power of a time-varying signal. It is therefore considered
2961 that the RMS is a better approximation of the "perceived loudness" than
2962 just looking at the signal's peak magnitude. Consequently, by adjusting all
2963 frames to a constant RMS value, a uniform "perceived loudness" can be
2964 established. If a target RMS value has been specified, a frame's local gain
2965 factor is defined as the factor that would result in exactly that RMS value.
2966 Note, however, that the maximum local gain factor is still restricted by the
2967 frame's highest magnitude sample, in order to prevent clipping.
2968
2969 @item n
2970 Enable channels coupling. By default is enabled.
2971 By default, the Dynamic Audio Normalizer will amplify all channels by the same
2972 amount. This means the same gain factor will be applied to all channels, i.e.
2973 the maximum possible gain factor is determined by the "loudest" channel.
2974 However, in some recordings, it may happen that the volume of the different
2975 channels is uneven, e.g. one channel may be "quieter" than the other one(s).
2976 In this case, this option can be used to disable the channel coupling. This way,
2977 the gain factor will be determined independently for each channel, depending
2978 only on the individual channel's highest magnitude sample. This allows for
2979 harmonizing the volume of the different channels.
2980
2981 @item c
2982 Enable DC bias correction. By default is disabled.
2983 An audio signal (in the time domain) is a sequence of sample values.
2984 In the Dynamic Audio Normalizer these sample values are represented in the
2985 -1.0 to 1.0 range, regardless of the original input format. Normally, the
2986 audio signal, or "waveform", should be centered around the zero point.
2987 That means if we calculate the mean value of all samples in a file, or in a
2988 single frame, then the result should be 0.0 or at least very close to that
2989 value. If, however, there is a significant deviation of the mean value from
2990 0.0, in either positive or negative direction, this is referred to as a
2991 DC bias or DC offset. Since a DC bias is clearly undesirable, the Dynamic
2992 Audio Normalizer provides optional DC bias correction.
2993 With DC bias correction enabled, the Dynamic Audio Normalizer will determine
2994 the mean value, or "DC correction" offset, of each input frame and subtract
2995 that value from all of the frame's sample values which ensures those samples
2996 are centered around 0.0 again. Also, in order to avoid "gaps" at the frame
2997 boundaries, the DC correction offset values will be interpolated smoothly
2998 between neighbouring frames.
2999
3000 @item b
3001 Enable alternative boundary mode. By default is disabled.
3002 The Dynamic Audio Normalizer takes into account a certain neighbourhood
3003 around each frame. This includes the preceding frames as well as the
3004 subsequent frames. However, for the "boundary" frames, located at the very
3005 beginning and at the very end of the audio file, not all neighbouring
3006 frames are available. In particular, for the first few frames in the audio
3007 file, the preceding frames are not known. And, similarly, for the last few
3008 frames in the audio file, the subsequent frames are not known. Thus, the
3009 question arises which gain factors should be assumed for the missing frames
3010 in the "boundary" region. The Dynamic Audio Normalizer implements two modes
3011 to deal with this situation. The default boundary mode assumes a gain factor
3012 of exactly 1.0 for the missing frames, resulting in a smooth "fade in" and
3013 "fade out" at the beginning and at the end of the input, respectively.
3014
3015 @item s
3016 Set the compress factor. In range from 0.0 to 30.0. Default is 0.0.
3017 By default, the Dynamic Audio Normalizer does not apply "traditional"
3018 compression. This means that signal peaks will not be pruned and thus the
3019 full dynamic range will be retained within each local neighbourhood. However,
3020 in some cases it may be desirable to combine the Dynamic Audio Normalizer's
3021 normalization algorithm with a more "traditional" compression.
3022 For this purpose, the Dynamic Audio Normalizer provides an optional compression
3023 (thresholding) function. If (and only if) the compression feature is enabled,
3024 all input frames will be processed by a soft knee thresholding function prior
3025 to the actual normalization process. Put simply, the thresholding function is
3026 going to prune all samples whose magnitude exceeds a certain threshold value.
3027 However, the Dynamic Audio Normalizer does not simply apply a fixed threshold
3028 value. Instead, the threshold value will be adjusted for each individual
3029 frame.
3030 In general, smaller parameters result in stronger compression, and vice versa.
3031 Values below 3.0 are not recommended, because audible distortion may appear.
3032 @end table
3033
3034 @section earwax
3035
3036 Make audio easier to listen to on headphones.
3037
3038 This filter adds `cues' to 44.1kHz stereo (i.e. audio CD format) audio
3039 so that when listened to on headphones the stereo image is moved from
3040 inside your head (standard for headphones) to outside and in front of
3041 the listener (standard for speakers).
3042
3043 Ported from SoX.
3044
3045 @section equalizer
3046
3047 Apply a two-pole peaking equalisation (EQ) filter. With this
3048 filter, the signal-level at and around a selected frequency can
3049 be increased or decreased, whilst (unlike bandpass and bandreject
3050 filters) that at all other frequencies is unchanged.
3051
3052 In order to produce complex equalisation curves, this filter can
3053 be given several times, each with a different central frequency.
3054
3055 The filter accepts the following options:
3056
3057 @table @option
3058 @item frequency, f
3059 Set the filter's central frequency in Hz.
3060
3061 @item width_type, t
3062 Set method to specify band-width of filter.
3063 @table @option
3064 @item h
3065 Hz
3066 @item q
3067 Q-Factor
3068 @item o
3069 octave
3070 @item s
3071 slope
3072 @item k
3073 kHz
3074 @end table
3075
3076 @item width, w
3077 Specify the band-width of a filter in width_type units.
3078
3079 @item gain, g
3080 Set the required gain or attenuation in dB.
3081 Beware of clipping when using a positive gain.
3082
3083 @item channels, c
3084 Specify which channels to filter, by default all available are filtered.
3085 @end table
3086
3087 @subsection Examples
3088 @itemize
3089 @item
3090 Attenuate 10 dB at 1000 Hz, with a bandwidth of 200 Hz:
3091 @example
3092 equalizer=f=1000:t=h:width=200:g=-10
3093 @end example
3094
3095 @item
3096 Apply 2 dB gain at 1000 Hz with Q 1 and attenuate 5 dB at 100 Hz with Q 2:
3097 @example
3098 equalizer=f=1000:t=q:w=1:g=2,equalizer=f=100:t=q:w=2:g=-5
3099 @end example
3100 @end itemize
3101
3102 @subsection Commands
3103
3104 This filter supports the following commands:
3105 @table @option
3106 @item frequency, f
3107 Change equalizer frequency.
3108 Syntax for the command is : "@var{frequency}"
3109
3110 @item width_type, t
3111 Change equalizer width_type.
3112 Syntax for the command is : "@var{width_type}"
3113
3114 @item width, w
3115 Change equalizer width.
3116 Syntax for the command is : "@var{width}"
3117
3118 @item gain, g
3119 Change equalizer gain.
3120 Syntax for the command is : "@var{gain}"
3121 @end table
3122
3123 @section extrastereo
3124
3125 Linearly increases the difference between left and right channels which
3126 adds some sort of "live" effect to playback.
3127
3128 The filter accepts the following options:
3129
3130 @table @option
3131 @item m
3132 Sets the difference coefficient (default: 2.5). 0.0 means mono sound
3133 (average of both channels), with 1.0 sound will be unchanged, with
3134 -1.0 left and right channels will be swapped.
3135
3136 @item c
3137 Enable clipping. By default is enabled.
3138 @end table
3139
3140 @section firequalizer
3141 Apply FIR Equalization using arbitrary frequency response.
3142
3143 The filter accepts the following option:
3144
3145 @table @option
3146 @item gain
3147 Set gain curve equation (in dB). The expression can contain variables:
3148 @table @option
3149 @item f
3150 the evaluated frequency
3151 @item sr
3152 sample rate
3153 @item ch
3154 channel number, set to 0 when multichannels evaluation is disabled
3155 @item chid
3156 channel id, see libavutil/channel_layout.h, set to the first channel id when
3157 multichannels evaluation is disabled
3158 @item chs
3159 number of channels
3160 @item chlayout
3161 channel_layout, see libavutil/channel_layout.h
3162
3163 @end table
3164 and functions:
3165 @table @option
3166 @item gain_interpolate(f)
3167 interpolate gain on frequency f based on gain_entry
3168 @item cubic_interpolate(f)
3169 same as gain_interpolate, but smoother
3170 @end table
3171 This option is also available as command. Default is @code{gain_interpolate(f)}.
3172
3173 @item gain_entry
3174 Set gain entry for gain_interpolate function. The expression can
3175 contain functions:
3176 @table @option
3177 @item entry(f, g)
3178 store gain entry at frequency f with value g
3179 @end table
3180 This option is also available as command.
3181
3182 @item delay
3183 Set filter delay in seconds. Higher value means more accurate.
3184 Default is @code{0.01}.
3185
3186 @item accuracy
3187 Set filter accuracy in Hz. Lower value means more accurate.
3188 Default is @code{5}.
3189
3190 @item wfunc
3191 Set window function. Acceptable values are:
3192 @table @option
3193 @item rectangular
3194 rectangular window, useful when gain curve is already smooth
3195 @item hann
3196 hann window (default)
3197 @item hamming
3198 hamming window
3199 @item blackman
3200 blackman window
3201 @item nuttall3
3202 3-terms continuous 1st derivative nuttall window
3203 @item mnuttall3
3204 minimum 3-terms discontinuous nuttall window
3205 @item nuttall
3206 4-terms continuous 1st derivative nuttall window
3207 @item bnuttall
3208 minimum 4-terms discontinuous nuttall (blackman-nuttall) window
3209 @item bharris
3210 blackman-harris window
3211 @item tukey
3212 tukey window
3213 @end table
3214
3215 @item fixed
3216 If enabled, use fixed number of audio samples. This improves speed when
3217 filtering with large delay. Default is disabled.
3218
3219 @item multi
3220 Enable multichannels evaluation on gain. Default is disabled.
3221
3222 @item zero_phase
3223 Enable zero phase mode by subtracting timestamp to compensate delay.
3224 Default is disabled.
3225
3226 @item scale
3227 Set scale used by gain. Acceptable values are:
3228 @table @option
3229 @item linlin
3230 linear frequency, linear gain
3231 @item linlog
3232 linear frequency, logarithmic (in dB) gain (default)
3233 @item loglin
3234 logarithmic (in octave scale where 20 Hz is 0) frequency, linear gain
3235 @item loglog
3236 logarithmic frequency, logarithmic gain
3237 @end table
3238
3239 @item dumpfile
3240 Set file for dumping, suitable for gnuplot.
3241
3242 @item dumpscale
3243 Set scale for dumpfile. Acceptable values are same with scale option.
3244 Default is linlog.
3245
3246 @item fft2
3247 Enable 2-channel convolution using complex FFT. This improves speed significantly.
3248 Default is disabled.
3249
3250 @item min_phase
3251 Enable minimum phase impulse response. Default is disabled.
3252 @end table
3253
3254 @subsection Examples
3255 @itemize
3256 @item
3257 lowpass at 1000 Hz:
3258 @example
3259 firequalizer=gain='if(lt(f,1000), 0, -INF)'
3260 @end example
3261 @item
3262 lowpass at 1000 Hz with gain_entry:
3263 @example
3264 firequalizer=gain_entry='entry(1000,0); entry(1001, -INF)'
3265 @end example
3266 @item
3267 custom equalization:
3268 @example
3269 firequalizer=gain_entry='entry(100,0); entry(400, -4); entry(1000, -6); entry(2000, 0)'
3270 @end example
3271 @item
3272 higher delay with zero phase to compensate delay:
3273 @example
3274 firequalizer=delay=0.1:fixed=on:zero_phase=on
3275 @end example
3276 @item
3277 lowpass on left channel, highpass on right channel:
3278 @example
3279 firequalizer=gain='if(eq(chid,1), gain_interpolate(f), if(eq(chid,2), gain_interpolate(1e6+f), 0))'
3280 :gain_entry='entry(1000, 0); entry(1001,-INF); entry(1e6+1000,0)':multi=on
3281 @end example
3282 @end itemize
3283
3284 @section flanger
3285 Apply a flanging effect to the audio.
3286
3287 The filter accepts the following options:
3288
3289 @table @option
3290 @item delay
3291 Set base delay in milliseconds. Range from 0 to 30. Default value is 0.
3292
3293 @item depth
3294 Set added sweep delay in milliseconds. Range from 0 to 10. Default value is 2.
3295
3296 @item regen
3297 Set percentage regeneration (delayed signal feedback). Range from -95 to 95.
3298 Default value is 0.
3299
3300 @item width
3301 Set percentage of delayed signal mixed with original. Range from 0 to 100.
3302 Default value is 71.
3303
3304 @item speed
3305 Set sweeps per second (Hz). Range from 0.1 to 10. Default value is 0.5.
3306
3307 @item shape
3308 Set swept wave shape, can be @var{triangular} or @var{sinusoidal}.
3309 Default value is @var{sinusoidal}.
3310
3311 @item phase
3312 Set swept wave percentage-shift for multi channel. Range from 0 to 100.
3313 Default value is 25.
3314
3315 @item interp
3316 Set delay-line interpolation, @var{linear} or @var{quadratic}.
3317 Default is @var{linear}.
3318 @end table
3319
3320 @section haas
3321 Apply Haas effect to audio.
3322
3323 Note that this makes most sense to apply on mono signals.
3324 With this filter applied to mono signals it give some directionality and
3325 stretches its stereo image.
3326
3327 The filter accepts the following options:
3328
3329 @table @option
3330 @item level_in
3331 Set input level. By default is @var{1}, or 0dB
3332
3333 @item level_out
3334 Set output level. By default is @var{1}, or 0dB.
3335
3336 @item side_gain
3337 Set gain applied to side part of signal. By default is @var{1}.
3338
3339 @item middle_source
3340 Set kind of middle source. Can be one of the following:
3341
3342 @table @samp
3343 @item left
3344 Pick left channel.
3345
3346 @item right
3347 Pick right channel.
3348
3349 @item mid
3350 Pick middle part signal of stereo image.
3351
3352 @item side
3353 Pick side part signal of stereo image.
3354 @end table
3355
3356 @item middle_phase
3357 Change middle phase. By default is disabled.
3358
3359 @item left_delay
3360 Set left channel delay. By default is @var{2.05} milliseconds.
3361
3362 @item left_balance
3363 Set left channel balance. By default is @var{-1}.
3364
3365 @item left_gain
3366 Set left channel gain. By default is @var{1}.
3367
3368 @item left_phase
3369 Change left phase. By default is disabled.
3370
3371 @item right_delay
3372 Set right channel delay. By defaults is @var{2.12} milliseconds.
3373
3374 @item right_balance
3375 Set right channel balance. By default is @var{1}.
3376
3377 @item right_gain
3378 Set right channel gain. By default is @var{1}.
3379
3380 @item right_phase
3381 Change right phase. By default is enabled.
3382 @end table
3383
3384 @section hdcd
3385
3386 Decodes High Definition Compatible Digital (HDCD) data. A 16-bit PCM stream with
3387 embedded HDCD codes is expanded into a 20-bit PCM stream.
3388
3389 The filter supports the Peak Extend and Low-level Gain Adjustment features
3390 of HDCD, and detects the Transient Filter flag.
3391
3392 @example
3393 ffmpeg -i HDCD16.flac -af hdcd OUT24.flac
3394 @end example
3395
3396 When using the filter with wav, note the default encoding for wav is 16-bit,
3397 so the resulting 20-bit stream will be truncated back to 16-bit. Use something
3398 like @command{-acodec pcm_s24le} after the filter to get 24-bit PCM output.
3399 @example
3400 ffmpeg -i HDCD16.wav -af hdcd OUT16.wav
3401 ffmpeg -i HDCD16.wav -af hdcd -c:a pcm_s24le OUT24.wav
3402 @end example
3403
3404 The filter accepts the following options:
3405
3406 @table @option
3407 @item disable_autoconvert
3408 Disable any automatic format conversion or resampling in the filter graph.
3409
3410 @item process_stereo
3411 Process the stereo channels together. If target_gain does not match between
3412 channels, consider it invalid and use the last valid target_gain.
3413
3414 @item cdt_ms
3415 Set the code detect timer period in ms.
3416
3417 @item force_pe
3418 Always extend peaks above -3dBFS even if PE isn't signaled.
3419
3420 @item analyze_mode
3421 Replace audio with a solid tone and adjust the amplitude to signal some
3422 specific aspect of the decoding process. The output file can be loaded in
3423 an audio editor alongside the original to aid analysis.
3424
3425 @code{analyze_mode=pe:force_pe=true} can be used to see all samples above the PE level.
3426
3427 Modes are:
3428 @table @samp
3429 @item 0, off
3430 Disabled
3431 @item 1, lle
3432 Gain adjustment level at each sample
3433 @item 2, pe
3434 Samples where peak extend occurs
3435 @item 3, cdt
3436 Samples where the code detect timer is active
3437 @item 4, tgm
3438 Samples where the target gain does not match between channels
3439 @end table
3440 @end table
3441
3442 @section headphone
3443
3444 Apply head-related transfer functions (HRTFs) to create virtual
3445 loudspeakers around the user for binaural listening via headphones.
3446 The HRIRs are provided via additional streams, for each channel
3447 one stereo input stream is needed.
3448
3449 The filter accepts the following options:
3450
3451 @table @option
3452 @item map
3453 Set mapping of input streams for convolution.
3454 The argument is a '|'-separated list of channel names in order as they
3455 are given as additional stream inputs for filter.
3456 This also specify number of input streams. Number of input streams
3457 must be not less than number of channels in first stream plus one.
3458
3459 @item gain
3460 Set gain applied to audio. Value is in dB. Default is 0.
3461
3462 @item type
3463 Set processing type. Can be @var{time} or @var{freq}. @var{time} is
3464 processing audio in time domain which is slow.
3465 @var{freq} is processing audio in frequency domain which is fast.
3466 Default is @var{freq}.
3467
3468 @item lfe
3469 Set custom gain for LFE channels. Value is in dB. Default is 0.
3470
3471 @item size
3472 Set size of frame in number of samples which will be processed at once.
3473 Default value is @var{1024}. Allowed range is from 1024 to 96000.
3474
3475 @item hrir
3476 Set format of hrir stream.
3477 Default value is @var{stereo}. Alternative value is @var{multich}.
3478 If value is set to @var{stereo}, number of additional streams should
3479 be greater or equal to number of input channels in first input stream.
3480 Also each additional stream should have stereo number of channels.
3481 If value is set to @var{multich}, number of additional streams should
3482 be exactly one. Also number of input channels of additional stream
3483 should be equal or greater than twice number of channels of first input
3484 stream.
3485 @end table
3486
3487 @subsection Examples
3488
3489 @itemize
3490 @item
3491 Full example using wav files as coefficients with amovie filters for 7.1 downmix,
3492 each amovie filter use stereo file with IR coefficients as input.
3493 The files give coefficients for each position of virtual loudspeaker:
3494 @example
3495 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"
3496 output.wav
3497 @end example
3498
3499 @item
3500 Full example using wav files as coefficients with amovie filters for 7.1 downmix,
3501 but now in @var{multich} @var{hrir} format.
3502 @example
3503 ffmpeg -i input.wav -lavfi-complex "amovie=minp.wav[hrirs],[a:0][hrirs]headphone=map=FL|FR|FC|LFE|BL|BR|SL|SR:hrir=multich"
3504 output.wav
3505 @end example
3506 @end itemize
3507
3508 @section highpass
3509
3510 Apply a high-pass filter with 3dB point frequency.
3511 The filter can be either single-pole, or double-pole (the default).
3512 The filter roll off at 6dB per pole per octave (20dB per pole per decade).
3513
3514 The filter accepts the following options:
3515
3516 @table @option
3517 @item frequency, f
3518 Set frequency in Hz. Default is 3000.
3519
3520 @item poles, p
3521 Set number of poles. Default is 2.
3522
3523 @item width_type, t
3524 Set method to specify band-width of filter.
3525 @table @option
3526 @item h
3527 Hz
3528 @item q
3529 Q-Factor
3530 @item o
3531 octave
3532 @item s
3533 slope
3534 @item k
3535 kHz
3536 @end table
3537
3538 @item width, w
3539 Specify the band-width of a filter in width_type units.
3540 Applies only to double-pole filter.
3541 The default is 0.707q and gives a Butterworth response.
3542
3543 @item channels, c
3544 Specify which channels to filter, by default all available are filtered.
3545 @end table
3546
3547 @subsection Commands
3548
3549 This filter supports the following commands:
3550 @table @option
3551 @item frequency, f
3552 Change highpass frequency.
3553 Syntax for the command is : "@var{frequency}"
3554
3555 @item width_type, t
3556 Change highpass width_type.
3557 Syntax for the command is : "@var{width_type}"
3558
3559 @item width, w
3560 Change highpass width.
3561 Syntax for the command is : "@var{width}"
3562 @end table
3563
3564 @section join
3565
3566 Join multiple input streams into one multi-channel stream.
3567
3568 It accepts the following parameters:
3569 @table @option
3570
3571 @item inputs
3572 The number of input streams. It defaults to 2.
3573
3574 @item channel_layout
3575 The desired output channel layout. It defaults to stereo.
3576
3577 @item map
3578 Map channels from inputs to output. The argument is a '|'-separated list of
3579 mappings, each in the @code{@var{input_idx}.@var{in_channel}-@var{out_channel}}
3580 form. @var{input_idx} is the 0-based index of the input stream. @var{in_channel}
3581 can be either the name of the input channel (e.g. FL for front left) or its
3582 index in the specified input stream. @var{out_channel} is the name of the output
3583 channel.
3584 @end table
3585
3586 The filter will attempt to guess the mappings when they are not specified
3587 explicitly. It does so by first trying to find an unused matching input channel
3588 and if that fails it picks the first unused input channel.
3589
3590 Join 3 inputs (with properly set channel layouts):
3591 @example
3592 ffmpeg -i INPUT1 -i INPUT2 -i INPUT3 -filter_complex join=inputs=3 OUTPUT
3593 @end example
3594
3595 Build a 5.1 output from 6 single-channel streams:
3596 @example
3597 ffmpeg -i fl -i fr -i fc -i sl -i sr -i lfe -filter_complex
3598 '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'
3599 out
3600 @end example
3601
3602 @section ladspa
3603
3604 Load a LADSPA (Linux Audio Developer's Simple Plugin API) plugin.
3605
3606 To enable compilation of this filter you need to configure FFmpeg with
3607 @code{--enable-ladspa}.
3608
3609 @table @option
3610 @item file, f
3611 Specifies the name of LADSPA plugin library to load. If the environment
3612 variable @env{LADSPA_PATH} is defined, the LADSPA plugin is searched in
3613 each one of the directories specified by the colon separated list in
3614 @env{LADSPA_PATH}, otherwise in the standard LADSPA paths, which are in
3615 this order: @file{HOME/.ladspa/lib/}, @file{/usr/local/lib/ladspa/},
3616 @file{/usr/lib/ladspa/}.
3617
3618 @item plugin, p
3619 Specifies the plugin within the library. Some libraries contain only
3620 one plugin, but others contain many of them. If this is not set filter
3621 will list all available plugins within the specified library.
3622
3623 @item controls, c
3624 Set the '|' separated list of controls which are zero or more floating point
3625 values that determine the behavior of the loaded plugin (for example delay,
3626 threshold or gain).
3627 Controls need to be defined using the following syntax:
3628 c0=@var{value0}|c1=@var{value1}|c2=@var{value2}|..., where
3629 @var{valuei} is the value set on the @var{i}-th control.
3630 Alternatively they can be also defined using the following syntax:
3631 @var{value0}|@var{value1}|@var{value2}|..., where
3632 @var{valuei} is the value set on the @var{i}-th control.
3633 If @option{controls} is set to @code{help}, all available controls and
3634 their valid ranges are printed.
3635
3636 @item sample_rate, s
3637 Specify the sample rate, default to 44100. Only used if plugin have
3638 zero inputs.
3639
3640 @item nb_samples, n
3641 Set the number of samples per channel per each output frame, default
3642 is 1024. Only used if plugin have zero inputs.
3643
3644 @item duration, d
3645 Set the minimum duration of the sourced audio. See
3646 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
3647 for the accepted syntax.
3648 Note that the resulting duration may be greater than the specified duration,
3649 as the generated audio is always cut at the end of a complete frame.
3650 If not specified, or the expressed duration is negative, the audio is
3651 supposed to be generated forever.
3652 Only used if plugin have zero inputs.
3653
3654 @end table
3655
3656 @subsection Examples
3657
3658 @itemize
3659 @item
3660 List all available plugins within amp (LADSPA example plugin) library:
3661 @example
3662 ladspa=file=amp
3663 @end example
3664
3665 @item
3666 List all available controls and their valid ranges for @code{vcf_notch}
3667 plugin from @code{VCF} library:
3668 @example
3669 ladspa=f=vcf:p=vcf_notch:c=help
3670 @end example
3671
3672 @item
3673 Simulate low quality audio equipment using @code{Computer Music Toolkit} (CMT)
3674 plugin library:
3675 @example
3676 ladspa=file=cmt:plugin=lofi:controls=c0=22|c1=12|c2=12
3677 @end example
3678
3679 @item
3680 Add reverberation to the audio using TAP-plugins
3681 (Tom's Audio Processing plugins):
3682 @example
3683 ladspa=file=tap_reverb:tap_reverb
3684 @end example
3685
3686 @item
3687 Generate white noise, with 0.2 amplitude:
3688 @example
3689 ladspa=file=cmt:noise_source_white:c=c0=.2
3690 @end example
3691
3692 @item
3693 Generate 20 bpm clicks using plugin @code{C* Click - Metronome} from the
3694 @code{C* Audio Plugin Suite} (CAPS) library:
3695 @example
3696 ladspa=file=caps:Click:c=c1=20'
3697 @end example
3698
3699 @item
3700 Apply @code{C* Eq10X2 - Stereo 10-band equaliser} effect:
3701 @example
3702 ladspa=caps:Eq10X2:c=c0=-48|c9=-24|c3=12|c4=2
3703 @end example
3704
3705 @item
3706 Increase volume by 20dB using fast lookahead limiter from Steve Harris
3707 @code{SWH Plugins} collection:
3708 @example
3709 ladspa=fast_lookahead_limiter_1913:fastLookaheadLimiter:20|0|2
3710 @end example
3711
3712 @item
3713 Attenuate low frequencies using Multiband EQ from Steve Harris
3714 @code{SWH Plugins} collection:
3715 @example
3716 ladspa=mbeq_1197:mbeq:-24|-24|-24|0|0|0|0|0|0|0|0|0|0|0|0
3717 @end example
3718
3719 @item
3720 Reduce stereo image using @code{Narrower} from the @code{C* Audio Plugin Suite}
3721 (CAPS) library:
3722 @example
3723 ladspa=caps:Narrower
3724 @end example
3725
3726 @item
3727 Another white noise, now using @code{C* Audio Plugin Suite} (CAPS) library:
3728 @example
3729 ladspa=caps:White:.2
3730 @end example
3731
3732 @item
3733 Some fractal noise, using @code{C* Audio Plugin Suite} (CAPS) library:
3734 @example
3735 ladspa=caps:Fractal:c=c1=1
3736 @end example
3737
3738 @item
3739 Dynamic volume normalization using @code{VLevel} plugin:
3740 @example
3741 ladspa=vlevel-ladspa:vlevel_mono
3742 @end example
3743 @end itemize
3744
3745 @subsection Commands
3746
3747 This filter supports the following commands:
3748 @table @option
3749 @item cN
3750 Modify the @var{N}-th control value.
3751
3752 If the specified value is not valid, it is ignored and prior one is kept.
3753 @end table
3754
3755 @section loudnorm
3756
3757 EBU R128 loudness normalization. Includes both dynamic and linear normalization modes.
3758 Support for both single pass (livestreams, files) and double pass (files) modes.
3759 This algorithm can target IL, LRA, and maximum true peak. To accurately detect true peaks,
3760 the audio stream will be upsampled to 192 kHz unless the normalization mode is linear.
3761 Use the @code{-ar} option or @code{aresample} filter to explicitly set an output sample rate.
3762
3763 The filter accepts the following options:
3764
3765 @table @option
3766 @item I, i
3767 Set integrated loudness target.
3768 Range is -70.0 - -5.0. Default value is -24.0.
3769
3770 @item LRA, lra
3771 Set loudness range target.
3772 Range is 1.0 - 20.0. Default value is 7.0.
3773
3774 @item TP, tp
3775 Set maximum true peak.
3776 Range is -9.0 - +0.0. Default value is -2.0.
3777
3778 @item measured_I, measured_i
3779 Measured IL of input file.
3780 Range is -99.0 - +0.0.
3781
3782 @item measured_LRA, measured_lra
3783 Measured LRA of input file.
3784 Range is  0.0 - 99.0.
3785
3786 @item measured_TP, measured_tp
3787 Measured true peak of input file.
3788 Range is  -99.0 - +99.0.
3789
3790 @item measured_thresh
3791 Measured threshold of input file.
3792 Range is -99.0 - +0.0.
3793
3794 @item offset
3795 Set offset gain. Gain is applied before the true-peak limiter.
3796 Range is  -99.0 - +99.0. Default is +0.0.
3797
3798 @item linear
3799 Normalize linearly if possible.
3800 measured_I, measured_LRA, measured_TP, and measured_thresh must also
3801 to be specified in order to use this mode.
3802 Options are true or false. Default is true.
3803
3804 @item dual_mono
3805 Treat mono input files as "dual-mono". If a mono file is intended for playback
3806 on a stereo system, its EBU R128 measurement will be perceptually incorrect.
3807 If set to @code{true}, this option will compensate for this effect.
3808 Multi-channel input files are not affected by this option.
3809 Options are true or false. Default is false.
3810
3811 @item print_format
3812 Set print format for stats. Options are summary, json, or none.
3813 Default value is none.
3814 @end table
3815
3816 @section lowpass
3817
3818 Apply a low-pass filter with 3dB point frequency.
3819 The filter can be either single-pole or double-pole (the default).
3820 The filter roll off at 6dB per pole per octave (20dB per pole per decade).
3821
3822 The filter accepts the following options:
3823
3824 @table @option
3825 @item frequency, f
3826 Set frequency in Hz. Default is 500.
3827
3828 @item poles, p
3829 Set number of poles. Default is 2.
3830
3831 @item width_type, t
3832 Set method to specify band-width of filter.
3833 @table @option
3834 @item h
3835 Hz
3836 @item q
3837 Q-Factor
3838 @item o
3839 octave
3840 @item s
3841 slope
3842 @item k
3843 kHz
3844 @end table
3845
3846 @item width, w
3847 Specify the band-width of a filter in width_type units.
3848 Applies only to double-pole filter.
3849 The default is 0.707q and gives a Butterworth response.
3850
3851 @item channels, c
3852 Specify which channels to filter, by default all available are filtered.
3853 @end table
3854
3855 @subsection Examples
3856 @itemize
3857 @item
3858 Lowpass only LFE channel, it LFE is not present it does nothing:
3859 @example
3860 lowpass=c=LFE
3861 @end example
3862 @end itemize
3863
3864 @subsection Commands
3865
3866 This filter supports the following commands:
3867 @table @option
3868 @item frequency, f
3869 Change lowpass frequency.
3870 Syntax for the command is : "@var{frequency}"
3871
3872 @item width_type, t
3873 Change lowpass width_type.
3874 Syntax for the command is : "@var{width_type}"
3875
3876 @item width, w
3877 Change lowpass width.
3878 Syntax for the command is : "@var{width}"
3879 @end table
3880
3881 @section lv2
3882
3883 Load a LV2 (LADSPA Version 2) plugin.
3884
3885 To enable compilation of this filter you need to configure FFmpeg with
3886 @code{--enable-lv2}.
3887
3888 @table @option
3889 @item plugin, p
3890 Specifies the plugin URI. You may need to escape ':'.
3891
3892 @item controls, c
3893 Set the '|' separated list of controls which are zero or more floating point
3894 values that determine the behavior of the loaded plugin (for example delay,
3895 threshold or gain).
3896 If @option{controls} is set to @code{help}, all available controls and
3897 their valid ranges are printed.
3898
3899 @item sample_rate, s
3900 Specify the sample rate, default to 44100. Only used if plugin have
3901 zero inputs.
3902
3903 @item nb_samples, n
3904 Set the number of samples per channel per each output frame, default
3905 is 1024. Only used if plugin have zero inputs.
3906
3907 @item duration, d
3908 Set the minimum duration of the sourced audio. See
3909 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
3910 for the accepted syntax.
3911 Note that the resulting duration may be greater than the specified duration,
3912 as the generated audio is always cut at the end of a complete frame.
3913 If not specified, or the expressed duration is negative, the audio is
3914 supposed to be generated forever.
3915 Only used if plugin have zero inputs.
3916 @end table
3917
3918 @subsection Examples
3919
3920 @itemize
3921 @item
3922 Apply bass enhancer plugin from Calf:
3923 @example
3924 lv2=p=http\\\\://calf.sourceforge.net/plugins/BassEnhancer:c=amount=2
3925 @end example
3926
3927 @item
3928 Apply vinyl plugin from Calf:
3929 @example
3930 lv2=p=http\\\\://calf.sourceforge.net/plugins/Vinyl:c=drone=0.2|aging=0.5
3931 @end example
3932
3933 @item
3934 Apply bit crusher plugin from ArtyFX:
3935 @example
3936 lv2=p=http\\\\://www.openavproductions.com/artyfx#bitta:c=crush=0.3
3937 @end example
3938 @end itemize
3939
3940 @section mcompand
3941 Multiband Compress or expand the audio's dynamic range.
3942
3943 The input audio is divided into bands using 4th order Linkwitz-Riley IIRs.
3944 This is akin to the crossover of a loudspeaker, and results in flat frequency
3945 response when absent compander action.
3946
3947 It accepts the following parameters:
3948
3949 @table @option
3950 @item args
3951 This option syntax is:
3952 attack,decay,[attack,decay..] soft-knee points crossover_frequency [delay [initial_volume [gain]]] | attack,decay ...
3953 For explanation of each item refer to compand filter documentation.
3954 @end table
3955
3956 @anchor{pan}
3957 @section pan
3958
3959 Mix channels with specific gain levels. The filter accepts the output
3960 channel layout followed by a set of channels definitions.
3961
3962 This filter is also designed to efficiently remap the channels of an audio
3963 stream.
3964
3965 The filter accepts parameters of the form:
3966 "@var{l}|@var{outdef}|@var{outdef}|..."
3967
3968 @table @option
3969 @item l
3970 output channel layout or number of channels
3971
3972 @item outdef
3973 output channel specification, of the form:
3974 "@var{out_name}=[@var{gain}*]@var{in_name}[(+-)[@var{gain}*]@var{in_name}...]"
3975
3976 @item out_name
3977 output channel to define, either a channel name (FL, FR, etc.) or a channel
3978 number (c0, c1, etc.)
3979
3980 @item gain
3981 multiplicative coefficient for the channel, 1 leaving the volume unchanged
3982
3983 @item in_name
3984 input channel to use, see out_name for details; it is not possible to mix
3985 named and numbered input channels
3986 @end table
3987
3988 If the `=' in a channel specification is replaced by `<', then the gains for
3989 that specification will be renormalized so that the total is 1, thus
3990 avoiding clipping noise.
3991
3992 @subsection Mixing examples
3993
3994 For example, if you want to down-mix from stereo to mono, but with a bigger
3995 factor for the left channel:
3996 @example
3997 pan=1c|c0=0.9*c0+0.1*c1
3998 @end example
3999
4000 A customized down-mix to stereo that works automatically for 3-, 4-, 5- and
4001 7-channels surround:
4002 @example
4003 pan=stereo| FL < FL + 0.5*FC + 0.6*BL + 0.6*SL | FR < FR + 0.5*FC + 0.6*BR + 0.6*SR
4004 @end example
4005
4006 Note that @command{ffmpeg} integrates a default down-mix (and up-mix) system
4007 that should be preferred (see "-ac" option) unless you have very specific
4008 needs.
4009
4010 @subsection Remapping examples
4011
4012 The channel remapping will be effective if, and only if:
4013
4014 @itemize
4015 @item gain coefficients are zeroes or ones,
4016 @item only one input per channel output,
4017 @end itemize
4018
4019 If all these conditions are satisfied, the filter will notify the user ("Pure
4020 channel mapping detected"), and use an optimized and lossless method to do the
4021 remapping.
4022
4023 For example, if you have a 5.1 source and want a stereo audio stream by
4024 dropping the extra channels:
4025 @example
4026 pan="stereo| c0=FL | c1=FR"
4027 @end example
4028
4029 Given the same source, you can also switch front left and front right channels
4030 and keep the input channel layout:
4031 @example
4032 pan="5.1| c0=c1 | c1=c0 | c2=c2 | c3=c3 | c4=c4 | c5=c5"
4033 @end example
4034
4035 If the input is a stereo audio stream, you can mute the front left channel (and
4036 still keep the stereo channel layout) with:
4037 @example
4038 pan="stereo|c1=c1"
4039 @end example
4040
4041 Still with a stereo audio stream input, you can copy the right channel in both
4042 front left and right:
4043 @example
4044 pan="stereo| c0=FR | c1=FR"
4045 @end example
4046
4047 @section replaygain
4048
4049 ReplayGain scanner filter. This filter takes an audio stream as an input and
4050 outputs it unchanged.
4051 At end of filtering it displays @code{track_gain} and @code{track_peak}.
4052
4053 @section resample
4054
4055 Convert the audio sample format, sample rate and channel layout. It is
4056 not meant to be used directly.
4057
4058 @section rubberband
4059 Apply time-stretching and pitch-shifting with librubberband.
4060
4061 To enable compilation of this filter, you need to configure FFmpeg with
4062 @code{--enable-librubberband}.
4063
4064 The filter accepts the following options:
4065
4066 @table @option
4067 @item tempo
4068 Set tempo scale factor.
4069
4070 @item pitch
4071 Set pitch scale factor.
4072
4073 @item transients
4074 Set transients detector.
4075 Possible values are:
4076 @table @var
4077 @item crisp
4078 @item mixed
4079 @item smooth
4080 @end table
4081
4082 @item detector
4083 Set detector.
4084 Possible values are:
4085 @table @var
4086 @item compound
4087 @item percussive
4088 @item soft
4089 @end table
4090
4091 @item phase
4092 Set phase.
4093 Possible values are:
4094 @table @var
4095 @item laminar
4096 @item independent
4097 @end table
4098
4099 @item window
4100 Set processing window size.
4101 Possible values are:
4102 @table @var
4103 @item standard
4104 @item short
4105 @item long
4106 @end table
4107
4108 @item smoothing
4109 Set smoothing.
4110 Possible values are:
4111 @table @var
4112 @item off
4113 @item on
4114 @end table
4115
4116 @item formant
4117 Enable formant preservation when shift pitching.
4118 Possible values are:
4119 @table @var
4120 @item shifted
4121 @item preserved
4122 @end table
4123
4124 @item pitchq
4125 Set pitch quality.
4126 Possible values are:
4127 @table @var
4128 @item quality
4129 @item speed
4130 @item consistency
4131 @end table
4132
4133 @item channels
4134 Set channels.
4135 Possible values are:
4136 @table @var
4137 @item apart
4138 @item together
4139 @end table
4140 @end table
4141
4142 @section sidechaincompress
4143
4144 This filter acts like normal compressor but has the ability to compress
4145 detected signal using second input signal.
4146 It needs two input streams and returns one output stream.
4147 First input stream will be processed depending on second stream signal.
4148 The filtered signal then can be filtered with other filters in later stages of
4149 processing. See @ref{pan} and @ref{amerge} filter.
4150
4151 The filter accepts the following options:
4152
4153 @table @option
4154 @item level_in
4155 Set input gain. Default is 1. Range is between 0.015625 and 64.
4156
4157 @item threshold
4158 If a signal of second stream raises above this level it will affect the gain
4159 reduction of first stream.
4160 By default is 0.125. Range is between 0.00097563 and 1.
4161
4162 @item ratio
4163 Set a ratio about which the signal is reduced. 1:2 means that if the level
4164 raised 4dB above the threshold, it will be only 2dB above after the reduction.
4165 Default is 2. Range is between 1 and 20.
4166
4167 @item attack
4168 Amount of milliseconds the signal has to rise above the threshold before gain
4169 reduction starts. Default is 20. Range is between 0.01 and 2000.
4170
4171 @item release
4172 Amount of milliseconds the signal has to fall below the threshold before
4173 reduction is decreased again. Default is 250. Range is between 0.01 and 9000.
4174
4175 @item makeup
4176 Set the amount by how much signal will be amplified after processing.
4177 Default is 1. Range is from 1 to 64.
4178
4179 @item knee
4180 Curve the sharp knee around the threshold to enter gain reduction more softly.
4181 Default is 2.82843. Range is between 1 and 8.
4182
4183 @item link
4184 Choose if the @code{average} level between all channels of side-chain stream
4185 or the louder(@code{maximum}) channel of side-chain stream affects the
4186 reduction. Default is @code{average}.
4187
4188 @item detection
4189 Should the exact signal be taken in case of @code{peak} or an RMS one in case
4190 of @code{rms}. Default is @code{rms} which is mainly smoother.
4191
4192 @item level_sc
4193 Set sidechain gain. Default is 1. Range is between 0.015625 and 64.
4194
4195 @item mix
4196 How much to use compressed signal in output. Default is 1.
4197 Range is between 0 and 1.
4198 @end table
4199
4200 @subsection Examples
4201
4202 @itemize
4203 @item
4204 Full ffmpeg example taking 2 audio inputs, 1st input to be compressed
4205 depending on the signal of 2nd input and later compressed signal to be
4206 merged with 2nd input:
4207 @example
4208 ffmpeg -i main.flac -i sidechain.flac -filter_complex "[1:a]asplit=2[sc][mix];[0:a][sc]sidechaincompress[compr];[compr][mix]amerge"
4209 @end example
4210 @end itemize
4211
4212 @section sidechaingate
4213
4214 A sidechain gate acts like a normal (wideband) gate but has the ability to
4215 filter the detected signal before sending it to the gain reduction stage.
4216 Normally a gate uses the full range signal to detect a level above the
4217 threshold.
4218 For example: If you cut all lower frequencies from your sidechain signal
4219 the gate will decrease the volume of your track only if not enough highs
4220 appear. With this technique you are able to reduce the resonation of a
4221 natural drum or remove "rumbling" of muted strokes from a heavily distorted
4222 guitar.
4223 It needs two input streams and returns one output stream.
4224 First input stream will be processed depending on second stream signal.
4225
4226 The filter accepts the following options:
4227
4228 @table @option
4229 @item level_in
4230 Set input level before filtering.
4231 Default is 1. Allowed range is from 0.015625 to 64.
4232
4233 @item range
4234 Set the level of gain reduction when the signal is below the threshold.
4235 Default is 0.06125. Allowed range is from 0 to 1.
4236
4237 @item threshold
4238 If a signal rises above this level the gain reduction is released.
4239 Default is 0.125. Allowed range is from 0 to 1.
4240
4241 @item ratio
4242 Set a ratio about which the signal is reduced.
4243 Default is 2. Allowed range is from 1 to 9000.
4244
4245 @item attack
4246 Amount of milliseconds the signal has to rise above the threshold before gain
4247 reduction stops.
4248 Default is 20 milliseconds. Allowed range is from 0.01 to 9000.
4249
4250 @item release
4251 Amount of milliseconds the signal has to fall below the threshold before the
4252 reduction is increased again. Default is 250 milliseconds.
4253 Allowed range is from 0.01 to 9000.
4254
4255 @item makeup
4256 Set amount of amplification of signal after processing.
4257 Default is 1. Allowed range is from 1 to 64.
4258
4259 @item knee
4260 Curve the sharp knee around the threshold to enter gain reduction more softly.
4261 Default is 2.828427125. Allowed range is from 1 to 8.
4262
4263 @item detection
4264 Choose if exact signal should be taken for detection or an RMS like one.
4265 Default is rms. Can be peak or rms.
4266
4267 @item link
4268 Choose if the average level between all channels or the louder channel affects
4269 the reduction.
4270 Default is average. Can be average or maximum.
4271
4272 @item level_sc
4273 Set sidechain gain. Default is 1. Range is from 0.015625 to 64.
4274 @end table
4275
4276 @section silencedetect
4277
4278 Detect silence in an audio stream.
4279
4280 This filter logs a message when it detects that the input audio volume is less
4281 or equal to a noise tolerance value for a duration greater or equal to the
4282 minimum detected noise duration.
4283
4284 The printed times and duration are expressed in seconds.
4285
4286 The filter accepts the following options:
4287
4288 @table @option
4289 @item noise, n
4290 Set noise tolerance. Can be specified in dB (in case "dB" is appended to the
4291 specified value) or amplitude ratio. Default is -60dB, or 0.001.
4292
4293 @item duration, d
4294 Set silence duration until notification (default is 2 seconds).
4295
4296 @item mono, m
4297 Process each channel separately, instead of combined. By default is disabled.
4298 @end table
4299
4300 @subsection Examples
4301
4302 @itemize
4303 @item
4304 Detect 5 seconds of silence with -50dB noise tolerance:
4305 @example
4306 silencedetect=n=-50dB:d=5
4307 @end example
4308
4309 @item
4310 Complete example with @command{ffmpeg} to detect silence with 0.0001 noise
4311 tolerance in @file{silence.mp3}:
4312 @example
4313 ffmpeg -i silence.mp3 -af silencedetect=noise=0.0001 -f null -
4314 @end example
4315 @end itemize
4316
4317 @section silenceremove
4318
4319 Remove silence from the beginning, middle or end of the audio.
4320
4321 The filter accepts the following options:
4322
4323 @table @option
4324 @item start_periods
4325 This value is used to indicate if audio should be trimmed at beginning of
4326 the audio. A value of zero indicates no silence should be trimmed from the
4327 beginning. When specifying a non-zero value, it trims audio up until it
4328 finds non-silence. Normally, when trimming silence from beginning of audio
4329 the @var{start_periods} will be @code{1} but it can be increased to higher
4330 values to trim all audio up to specific count of non-silence periods.
4331 Default value is @code{0}.
4332
4333 @item start_duration
4334 Specify the amount of time that non-silence must be detected before it stops
4335 trimming audio. By increasing the duration, bursts of noises can be treated
4336 as silence and trimmed off. Default value is @code{0}.
4337
4338 @item start_threshold
4339 This indicates what sample value should be treated as silence. For digital
4340 audio, a value of @code{0} may be fine but for audio recorded from analog,
4341 you may wish to increase the value to account for background noise.
4342 Can be specified in dB (in case "dB" is appended to the specified value)
4343 or amplitude ratio. Default value is @code{0}.
4344
4345 @item stop_periods
4346 Set the count for trimming silence from the end of audio.
4347 To remove silence from the middle of a file, specify a @var{stop_periods}
4348 that is negative. This value is then treated as a positive value and is
4349 used to indicate the effect should restart processing as specified by
4350 @var{start_periods}, making it suitable for removing periods of silence
4351 in the middle of the audio.
4352 Default value is @code{0}.
4353
4354 @item stop_duration
4355 Specify a duration of silence that must exist before audio is not copied any
4356 more. By specifying a higher duration, silence that is wanted can be left in
4357 the audio.
4358 Default value is @code{0}.
4359
4360 @item stop_threshold
4361 This is the same as @option{start_threshold} but for trimming silence from
4362 the end of audio.
4363 Can be specified in dB (in case "dB" is appended to the specified value)
4364 or amplitude ratio. Default value is @code{0}.
4365
4366 @item leave_silence
4367 This indicates that @var{stop_duration} length of audio should be left intact
4368 at the beginning of each period of silence.
4369 For example, if you want to remove long pauses between words but do not want
4370 to remove the pauses completely. Default value is @code{0}.
4371
4372 @item detection
4373 Set how is silence detected. Can be @code{rms} or @code{peak}. Second is faster
4374 and works better with digital silence which is exactly 0.
4375 Default value is @code{rms}.
4376
4377 @item window
4378 Set ratio used to calculate size of window for detecting silence.
4379 Default value is @code{0.02}. Allowed range is from @code{0} to @code{10}.
4380 @end table
4381
4382 @subsection Examples
4383
4384 @itemize
4385 @item
4386 The following example shows how this filter can be used to start a recording
4387 that does not contain the delay at the start which usually occurs between
4388 pressing the record button and the start of the performance:
4389 @example
4390 silenceremove=1:5:0.02
4391 @end example
4392
4393 @item
4394 Trim all silence encountered from beginning to end where there is more than 1
4395 second of silence in audio:
4396 @example
4397 silenceremove=0:0:0:-1:1:-90dB
4398 @end example
4399 @end itemize
4400
4401 @section sofalizer
4402
4403 SOFAlizer uses head-related transfer functions (HRTFs) to create virtual
4404 loudspeakers around the user for binaural listening via headphones (audio
4405 formats up to 9 channels supported).
4406 The HRTFs are stored in SOFA files (see @url{http://www.sofacoustics.org/} for a database).
4407 SOFAlizer is developed at the Acoustics Research Institute (ARI) of the
4408 Austrian Academy of Sciences.
4409
4410 To enable compilation of this filter you need to configure FFmpeg with
4411 @code{--enable-libmysofa}.
4412
4413 The filter accepts the following options:
4414
4415 @table @option
4416 @item sofa
4417 Set the SOFA file used for rendering.
4418
4419 @item gain
4420 Set gain applied to audio. Value is in dB. Default is 0.
4421
4422 @item rotation
4423 Set rotation of virtual loudspeakers in deg. Default is 0.
4424
4425 @item elevation
4426 Set elevation of virtual speakers in deg. Default is 0.
4427
4428 @item radius
4429 Set distance in meters between loudspeakers and the listener with near-field
4430 HRTFs. Default is 1.
4431
4432 @item type
4433 Set processing type. Can be @var{time} or @var{freq}. @var{time} is
4434 processing audio in time domain which is slow.
4435 @var{freq} is processing audio in frequency domain which is fast.
4436 Default is @var{freq}.
4437
4438 @item speakers
4439 Set custom positions of virtual loudspeakers. Syntax for this option is:
4440 <CH> <AZIM> <ELEV>[|<CH> <AZIM> <ELEV>|...].
4441 Each virtual loudspeaker is described with short channel name following with
4442 azimuth and elevation in degrees.
4443 Each virtual loudspeaker description is separated by '|'.
4444 For example to override front left and front right channel positions use:
4445 'speakers=FL 45 15|FR 345 15'.
4446 Descriptions with unrecognised channel names are ignored.
4447
4448 @item lfegain
4449 Set custom gain for LFE channels. Value is in dB. Default is 0.
4450 @end table
4451
4452 @subsection Examples
4453
4454 @itemize
4455 @item
4456 Using ClubFritz6 sofa file:
4457 @example
4458 sofalizer=sofa=/path/to/ClubFritz6.sofa:type=freq:radius=1
4459 @end example
4460
4461 @item
4462 Using ClubFritz12 sofa file and bigger radius with small rotation:
4463 @example
4464 sofalizer=sofa=/path/to/ClubFritz12.sofa:type=freq:radius=2:rotation=5
4465 @end example
4466
4467 @item
4468 Similar as above but with custom speaker positions for front left, front right, back left and back right
4469 and also with custom gain:
4470 @example
4471 "sofalizer=sofa=/path/to/ClubFritz6.sofa:type=freq:radius=2:speakers=FL 45|FR 315|BL 135|BR 225:gain=28"
4472 @end example
4473 @end itemize
4474
4475 @section stereotools
4476
4477 This filter has some handy utilities to manage stereo signals, for converting
4478 M/S stereo recordings to L/R signal while having control over the parameters
4479 or spreading the stereo image of master track.
4480
4481 The filter accepts the following options:
4482
4483 @table @option
4484 @item level_in
4485 Set input level before filtering for both channels. Defaults is 1.
4486 Allowed range is from 0.015625 to 64.
4487
4488 @item level_out
4489 Set output level after filtering for both channels. Defaults is 1.
4490 Allowed range is from 0.015625 to 64.
4491
4492 @item balance_in
4493 Set input balance between both channels. Default is 0.
4494 Allowed range is from -1 to 1.
4495
4496 @item balance_out
4497 Set output balance between both channels. Default is 0.
4498 Allowed range is from -1 to 1.
4499
4500 @item softclip
4501 Enable softclipping. Results in analog distortion instead of harsh digital 0dB
4502 clipping. Disabled by default.
4503
4504 @item mutel
4505 Mute the left channel. Disabled by default.
4506
4507 @item muter
4508 Mute the right channel. Disabled by default.
4509
4510 @item phasel
4511 Change the phase of the left channel. Disabled by default.
4512
4513 @item phaser
4514 Change the phase of the right channel. Disabled by default.
4515
4516 @item mode
4517 Set stereo mode. Available values are:
4518
4519 @table @samp
4520 @item lr>lr
4521 Left/Right to Left/Right, this is default.
4522
4523 @item lr>ms
4524 Left/Right to Mid/Side.
4525
4526 @item ms>lr
4527 Mid/Side to Left/Right.
4528
4529 @item lr>ll
4530 Left/Right to Left/Left.
4531
4532 @item lr>rr
4533 Left/Right to Right/Right.
4534
4535 @item lr>l+r
4536 Left/Right to Left + Right.
4537
4538 @item lr>rl
4539 Left/Right to Right/Left.
4540
4541 @item ms>ll
4542 Mid/Side to Left/Left.
4543
4544 @item ms>rr
4545 Mid/Side to Right/Right.
4546 @end table
4547
4548 @item slev
4549 Set level of side signal. Default is 1.
4550 Allowed range is from 0.015625 to 64.
4551
4552 @item sbal
4553 Set balance of side signal. Default is 0.
4554 Allowed range is from -1 to 1.
4555
4556 @item mlev
4557 Set level of the middle signal. Default is 1.
4558 Allowed range is from 0.015625 to 64.
4559
4560 @item mpan
4561 Set middle signal pan. Default is 0. Allowed range is from -1 to 1.
4562
4563 @item base
4564 Set stereo base between mono and inversed channels. Default is 0.
4565 Allowed range is from -1 to 1.
4566
4567 @item delay
4568 Set delay in milliseconds how much to delay left from right channel and
4569 vice versa. Default is 0. Allowed range is from -20 to 20.
4570
4571 @item sclevel
4572 Set S/C level. Default is 1. Allowed range is from 1 to 100.
4573
4574 @item phase
4575 Set the stereo phase in degrees. Default is 0. Allowed range is from 0 to 360.
4576
4577 @item bmode_in, bmode_out
4578 Set balance mode for balance_in/balance_out option.
4579
4580 Can be one of the following:
4581
4582 @table @samp
4583 @item balance
4584 Classic balance mode. Attenuate one channel at time.
4585 Gain is raised up to 1.
4586
4587 @item amplitude
4588 Similar as classic mode above but gain is raised up to 2.
4589
4590 @item power
4591 Equal power distribution, from -6dB to +6dB range.
4592 @end table
4593 @end table
4594
4595 @subsection Examples
4596
4597 @itemize
4598 @item
4599 Apply karaoke like effect:
4600 @example
4601 stereotools=mlev=0.015625
4602 @end example
4603
4604 @item
4605 Convert M/S signal to L/R:
4606 @example
4607 "stereotools=mode=ms>lr"
4608 @end example
4609 @end itemize
4610
4611 @section stereowiden
4612
4613 This filter enhance the stereo effect by suppressing signal common to both
4614 channels and by delaying the signal of left into right and vice versa,
4615 thereby widening the stereo effect.
4616
4617 The filter accepts the following options:
4618
4619 @table @option
4620 @item delay
4621 Time in milliseconds of the delay of left signal into right and vice versa.
4622 Default is 20 milliseconds.
4623
4624 @item feedback
4625 Amount of gain in delayed signal into right and vice versa. Gives a delay
4626 effect of left signal in right output and vice versa which gives widening
4627 effect. Default is 0.3.
4628
4629 @item crossfeed
4630 Cross feed of left into right with inverted phase. This helps in suppressing
4631 the mono. If the value is 1 it will cancel all the signal common to both
4632 channels. Default is 0.3.
4633
4634 @item drymix
4635 Set level of input signal of original channel. Default is 0.8.
4636 @end table
4637
4638 @section superequalizer
4639 Apply 18 band equalizer.
4640
4641 The filter accepts the following options:
4642 @table @option
4643 @item 1b
4644 Set 65Hz band gain.
4645 @item 2b
4646 Set 92Hz band gain.
4647 @item 3b
4648 Set 131Hz band gain.
4649 @item 4b
4650 Set 185Hz band gain.
4651 @item 5b
4652 Set 262Hz band gain.
4653 @item 6b
4654 Set 370Hz band gain.
4655 @item 7b
4656 Set 523Hz band gain.
4657 @item 8b
4658 Set 740Hz band gain.
4659 @item 9b
4660 Set 1047Hz band gain.
4661 @item 10b
4662 Set 1480Hz band gain.
4663 @item 11b
4664 Set 2093Hz band gain.
4665 @item 12b
4666 Set 2960Hz band gain.
4667 @item 13b
4668 Set 4186Hz band gain.
4669 @item 14b
4670 Set 5920Hz band gain.
4671 @item 15b
4672 Set 8372Hz band gain.
4673 @item 16b
4674 Set 11840Hz band gain.
4675 @item 17b
4676 Set 16744Hz band gain.
4677 @item 18b
4678 Set 20000Hz band gain.
4679 @end table
4680
4681 @section surround
4682 Apply audio surround upmix filter.
4683
4684 This filter allows to produce multichannel output from audio stream.
4685
4686 The filter accepts the following options:
4687
4688 @table @option
4689 @item chl_out
4690 Set output channel layout. By default, this is @var{5.1}.
4691
4692 See @ref{channel layout syntax,,the Channel Layout section in the ffmpeg-utils(1) manual,ffmpeg-utils}
4693 for the required syntax.
4694
4695 @item chl_in
4696 Set input channel layout. By default, this is @var{stereo}.
4697
4698 See @ref{channel layout syntax,,the Channel Layout section in the ffmpeg-utils(1) manual,ffmpeg-utils}
4699 for the required syntax.
4700
4701 @item level_in
4702 Set input volume level. By default, this is @var{1}.
4703
4704 @item level_out
4705 Set output volume level. By default, this is @var{1}.
4706
4707 @item lfe
4708 Enable LFE channel output if output channel layout has it. By default, this is enabled.
4709
4710 @item lfe_low
4711 Set LFE low cut off frequency. By default, this is @var{128} Hz.
4712
4713 @item lfe_high
4714 Set LFE high cut off frequency. By default, this is @var{256} Hz.
4715
4716 @item fc_in
4717 Set front center input volume. By default, this is @var{1}.
4718
4719 @item fc_out
4720 Set front center output volume. By default, this is @var{1}.
4721
4722 @item lfe_in
4723 Set LFE input volume. By default, this is @var{1}.
4724
4725 @item lfe_out
4726 Set LFE output volume. By default, this is @var{1}.
4727 @end table
4728
4729 @section treble, highshelf
4730
4731 Boost or cut treble (upper) frequencies of the audio using a two-pole
4732 shelving filter with a response similar to that of a standard
4733 hi-fi's tone-controls. This is also known as shelving equalisation (EQ).
4734
4735 The filter accepts the following options:
4736
4737 @table @option
4738 @item gain, g
4739 Give the gain at whichever is the lower of ~22 kHz and the
4740 Nyquist frequency. Its useful range is about -20 (for a large cut)
4741 to +20 (for a large boost). Beware of clipping when using a positive gain.
4742
4743 @item frequency, f
4744 Set the filter's central frequency and so can be used
4745 to extend or reduce the frequency range to be boosted or cut.
4746 The default value is @code{3000} Hz.
4747
4748 @item width_type, t
4749 Set method to specify band-width of filter.
4750 @table @option
4751 @item h
4752 Hz
4753 @item q
4754 Q-Factor
4755 @item o
4756 octave
4757 @item s
4758 slope
4759 @item k
4760 kHz
4761 @end table
4762
4763 @item width, w
4764 Determine how steep is the filter's shelf transition.
4765
4766 @item channels, c
4767 Specify which channels to filter, by default all available are filtered.
4768 @end table
4769
4770 @subsection Commands
4771
4772 This filter supports the following commands:
4773 @table @option
4774 @item frequency, f
4775 Change treble frequency.
4776 Syntax for the command is : "@var{frequency}"
4777
4778 @item width_type, t
4779 Change treble width_type.
4780 Syntax for the command is : "@var{width_type}"
4781
4782 @item width, w
4783 Change treble width.
4784 Syntax for the command is : "@var{width}"
4785
4786 @item gain, g
4787 Change treble gain.
4788 Syntax for the command is : "@var{gain}"
4789 @end table
4790
4791 @section tremolo
4792
4793 Sinusoidal amplitude modulation.
4794
4795 The filter accepts the following options:
4796
4797 @table @option
4798 @item f
4799 Modulation frequency in Hertz. Modulation frequencies in the subharmonic range
4800 (20 Hz or lower) will result in a tremolo effect.
4801 This filter may also be used as a ring modulator by specifying
4802 a modulation frequency higher than 20 Hz.
4803 Range is 0.1 - 20000.0. Default value is 5.0 Hz.
4804
4805 @item d
4806 Depth of modulation as a percentage. Range is 0.0 - 1.0.
4807 Default value is 0.5.
4808 @end table
4809
4810 @section vibrato
4811
4812 Sinusoidal phase modulation.
4813
4814 The filter accepts the following options:
4815
4816 @table @option
4817 @item f
4818 Modulation frequency in Hertz.
4819 Range is 0.1 - 20000.0. Default value is 5.0 Hz.
4820
4821 @item d
4822 Depth of modulation as a percentage. Range is 0.0 - 1.0.
4823 Default value is 0.5.
4824 @end table
4825
4826 @section volume
4827
4828 Adjust the input audio volume.
4829
4830 It accepts the following parameters:
4831 @table @option
4832
4833 @item volume
4834 Set audio volume expression.
4835
4836 Output values are clipped to the maximum value.
4837
4838 The output audio volume is given by the relation:
4839 @example
4840 @var{output_volume} = @var{volume} * @var{input_volume}
4841 @end example
4842
4843 The default value for @var{volume} is "1.0".
4844
4845 @item precision
4846 This parameter represents the mathematical precision.
4847
4848 It determines which input sample formats will be allowed, which affects the
4849 precision of the volume scaling.
4850
4851 @table @option
4852 @item fixed
4853 8-bit fixed-point; this limits input sample format to U8, S16, and S32.
4854 @item float
4855 32-bit floating-point; this limits input sample format to FLT. (default)
4856 @item double
4857 64-bit floating-point; this limits input sample format to DBL.
4858 @end table
4859
4860 @item replaygain
4861 Choose the behaviour on encountering ReplayGain side data in input frames.
4862
4863 @table @option
4864 @item drop
4865 Remove ReplayGain side data, ignoring its contents (the default).
4866
4867 @item ignore
4868 Ignore ReplayGain side data, but leave it in the frame.
4869
4870 @item track
4871 Prefer the track gain, if present.
4872
4873 @item album
4874 Prefer the album gain, if present.
4875 @end table
4876
4877 @item replaygain_preamp
4878 Pre-amplification gain in dB to apply to the selected replaygain gain.
4879
4880 Default value for @var{replaygain_preamp} is 0.0.
4881
4882 @item eval
4883 Set when the volume expression is evaluated.
4884
4885 It accepts the following values:
4886 @table @samp
4887 @item once
4888 only evaluate expression once during the filter initialization, or
4889 when the @samp{volume} command is sent
4890
4891 @item frame
4892 evaluate expression for each incoming frame
4893 @end table
4894
4895 Default value is @samp{once}.
4896 @end table
4897
4898 The volume expression can contain the following parameters.
4899
4900 @table @option
4901 @item n
4902 frame number (starting at zero)
4903 @item nb_channels
4904 number of channels
4905 @item nb_consumed_samples
4906 number of samples consumed by the filter
4907 @item nb_samples
4908 number of samples in the current frame
4909 @item pos
4910 original frame position in the file
4911 @item pts
4912 frame PTS
4913 @item sample_rate
4914 sample rate
4915 @item startpts
4916 PTS at start of stream
4917 @item startt
4918 time at start of stream
4919 @item t
4920 frame time
4921 @item tb
4922 timestamp timebase
4923 @item volume
4924 last set volume value
4925 @end table
4926
4927 Note that when @option{eval} is set to @samp{once} only the
4928 @var{sample_rate} and @var{tb} variables are available, all other
4929 variables will evaluate to NAN.
4930
4931 @subsection Commands
4932
4933 This filter supports the following commands:
4934 @table @option
4935 @item volume
4936 Modify the volume expression.
4937 The command accepts the same syntax of the corresponding option.
4938
4939 If the specified expression is not valid, it is kept at its current
4940 value.
4941 @item replaygain_noclip
4942 Prevent clipping by limiting the gain applied.
4943
4944 Default value for @var{replaygain_noclip} is 1.
4945
4946 @end table
4947
4948 @subsection Examples
4949
4950 @itemize
4951 @item
4952 Halve the input audio volume:
4953 @example
4954 volume=volume=0.5
4955 volume=volume=1/2
4956 volume=volume=-6.0206dB
4957 @end example
4958
4959 In all the above example the named key for @option{volume} can be
4960 omitted, for example like in:
4961 @example
4962 volume=0.5
4963 @end example
4964
4965 @item
4966 Increase input audio power by 6 decibels using fixed-point precision:
4967 @example
4968 volume=volume=6dB:precision=fixed
4969 @end example
4970
4971 @item
4972 Fade volume after time 10 with an annihilation period of 5 seconds:
4973 @example
4974 volume='if(lt(t,10),1,max(1-(t-10)/5,0))':eval=frame
4975 @end example
4976 @end itemize
4977
4978 @section volumedetect
4979
4980 Detect the volume of the input video.
4981
4982 The filter has no parameters. The input is not modified. Statistics about
4983 the volume will be printed in the log when the input stream end is reached.
4984
4985 In particular it will show the mean volume (root mean square), maximum
4986 volume (on a per-sample basis), and the beginning of a histogram of the
4987 registered volume values (from the maximum value to a cumulated 1/1000 of
4988 the samples).
4989
4990 All volumes are in decibels relative to the maximum PCM value.
4991
4992 @subsection Examples
4993
4994 Here is an excerpt of the output:
4995 @example
4996 [Parsed_volumedetect_0 @ 0xa23120] mean_volume: -27 dB
4997 [Parsed_volumedetect_0 @ 0xa23120] max_volume: -4 dB
4998 [Parsed_volumedetect_0 @ 0xa23120] histogram_4db: 6
4999 [Parsed_volumedetect_0 @ 0xa23120] histogram_5db: 62
5000 [Parsed_volumedetect_0 @ 0xa23120] histogram_6db: 286
5001 [Parsed_volumedetect_0 @ 0xa23120] histogram_7db: 1042
5002 [Parsed_volumedetect_0 @ 0xa23120] histogram_8db: 2551
5003 [Parsed_volumedetect_0 @ 0xa23120] histogram_9db: 4609
5004 [Parsed_volumedetect_0 @ 0xa23120] histogram_10db: 8409
5005 @end example
5006
5007 It means that:
5008 @itemize
5009 @item
5010 The mean square energy is approximately -27 dB, or 10^-2.7.
5011 @item
5012 The largest sample is at -4 dB, or more precisely between -4 dB and -5 dB.
5013 @item
5014 There are 6 samples at -4 dB, 62 at -5 dB, 286 at -6 dB, etc.
5015 @end itemize
5016
5017 In other words, raising the volume by +4 dB does not cause any clipping,
5018 raising it by +5 dB causes clipping for 6 samples, etc.
5019
5020 @c man end AUDIO FILTERS
5021
5022 @chapter Audio Sources
5023 @c man begin AUDIO SOURCES
5024
5025 Below is a description of the currently available audio sources.
5026
5027 @section abuffer
5028
5029 Buffer audio frames, and make them available to the filter chain.
5030
5031 This source is mainly intended for a programmatic use, in particular
5032 through the interface defined in @file{libavfilter/asrc_abuffer.h}.
5033
5034 It accepts the following parameters:
5035 @table @option
5036
5037 @item time_base
5038 The timebase which will be used for timestamps of submitted frames. It must be
5039 either a floating-point number or in @var{numerator}/@var{denominator} form.
5040
5041 @item sample_rate
5042 The sample rate of the incoming audio buffers.
5043
5044 @item sample_fmt
5045 The sample format of the incoming audio buffers.
5046 Either a sample format name or its corresponding integer representation from
5047 the enum AVSampleFormat in @file{libavutil/samplefmt.h}
5048
5049 @item channel_layout
5050 The channel layout of the incoming audio buffers.
5051 Either a channel layout name from channel_layout_map in
5052 @file{libavutil/channel_layout.c} or its corresponding integer representation
5053 from the AV_CH_LAYOUT_* macros in @file{libavutil/channel_layout.h}
5054
5055 @item channels
5056 The number of channels of the incoming audio buffers.
5057 If both @var{channels} and @var{channel_layout} are specified, then they
5058 must be consistent.
5059
5060 @end table
5061
5062 @subsection Examples
5063
5064 @example
5065 abuffer=sample_rate=44100:sample_fmt=s16p:channel_layout=stereo
5066 @end example
5067
5068 will instruct the source to accept planar 16bit signed stereo at 44100Hz.
5069 Since the sample format with name "s16p" corresponds to the number
5070 6 and the "stereo" channel layout corresponds to the value 0x3, this is
5071 equivalent to:
5072 @example
5073 abuffer=sample_rate=44100:sample_fmt=6:channel_layout=0x3
5074 @end example
5075
5076 @section aevalsrc
5077
5078 Generate an audio signal specified by an expression.
5079
5080 This source accepts in input one or more expressions (one for each
5081 channel), which are evaluated and used to generate a corresponding
5082 audio signal.
5083
5084 This source accepts the following options:
5085
5086 @table @option
5087 @item exprs
5088 Set the '|'-separated expressions list for each separate channel. In case the
5089 @option{channel_layout} option is not specified, the selected channel layout
5090 depends on the number of provided expressions. Otherwise the last
5091 specified expression is applied to the remaining output channels.
5092
5093 @item channel_layout, c
5094 Set the channel layout. The number of channels in the specified layout
5095 must be equal to the number of specified expressions.
5096
5097 @item duration, d
5098 Set the minimum duration of the sourced audio. See
5099 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
5100 for the accepted syntax.
5101 Note that the resulting duration may be greater than the specified
5102 duration, as the generated audio is always cut at the end of a
5103 complete frame.
5104
5105 If not specified, or the expressed duration is negative, the audio is
5106 supposed to be generated forever.
5107
5108 @item nb_samples, n
5109 Set the number of samples per channel per each output frame,
5110 default to 1024.
5111
5112 @item sample_rate, s
5113 Specify the sample rate, default to 44100.
5114 @end table
5115
5116 Each expression in @var{exprs} can contain the following constants:
5117
5118 @table @option
5119 @item n
5120 number of the evaluated sample, starting from 0
5121
5122 @item t
5123 time of the evaluated sample expressed in seconds, starting from 0
5124
5125 @item s
5126 sample rate
5127
5128 @end table
5129
5130 @subsection Examples
5131
5132 @itemize
5133 @item
5134 Generate silence:
5135 @example
5136 aevalsrc=0
5137 @end example
5138
5139 @item
5140 Generate a sin signal with frequency of 440 Hz, set sample rate to
5141 8000 Hz:
5142 @example
5143 aevalsrc="sin(440*2*PI*t):s=8000"
5144 @end example
5145
5146 @item
5147 Generate a two channels signal, specify the channel layout (Front
5148 Center + Back Center) explicitly:
5149 @example
5150 aevalsrc="sin(420*2*PI*t)|cos(430*2*PI*t):c=FC|BC"
5151 @end example
5152
5153 @item
5154 Generate white noise:
5155 @example
5156 aevalsrc="-2+random(0)"
5157 @end example
5158
5159 @item
5160 Generate an amplitude modulated signal:
5161 @example
5162 aevalsrc="sin(10*2*PI*t)*sin(880*2*PI*t)"
5163 @end example
5164
5165 @item
5166 Generate 2.5 Hz binaural beats on a 360 Hz carrier:
5167 @example
5168 aevalsrc="0.1*sin(2*PI*(360-2.5/2)*t) | 0.1*sin(2*PI*(360+2.5/2)*t)"
5169 @end example
5170
5171 @end itemize
5172
5173 @section anullsrc
5174
5175 The null audio source, return unprocessed audio frames. It is mainly useful
5176 as a template and to be employed in analysis / debugging tools, or as
5177 the source for filters which ignore the input data (for example the sox
5178 synth filter).
5179
5180 This source accepts the following options:
5181
5182 @table @option
5183
5184 @item channel_layout, cl
5185
5186 Specifies the channel layout, and can be either an integer or a string
5187 representing a channel layout. The default value of @var{channel_layout}
5188 is "stereo".
5189
5190 Check the channel_layout_map definition in
5191 @file{libavutil/channel_layout.c} for the mapping between strings and
5192 channel layout values.
5193
5194 @item sample_rate, r
5195 Specifies the sample rate, and defaults to 44100.
5196
5197 @item nb_samples, n
5198 Set the number of samples per requested frames.
5199
5200 @end table
5201
5202 @subsection Examples
5203
5204 @itemize
5205 @item
5206 Set the sample rate to 48000 Hz and the channel layout to AV_CH_LAYOUT_MONO.
5207 @example
5208 anullsrc=r=48000:cl=4
5209 @end example
5210
5211 @item
5212 Do the same operation with a more obvious syntax:
5213 @example
5214 anullsrc=r=48000:cl=mono
5215 @end example
5216 @end itemize
5217
5218 All the parameters need to be explicitly defined.
5219
5220 @section flite
5221
5222 Synthesize a voice utterance using the libflite library.
5223
5224 To enable compilation of this filter you need to configure FFmpeg with
5225 @code{--enable-libflite}.
5226
5227 Note that versions of the flite library prior to 2.0 are not thread-safe.
5228
5229 The filter accepts the following options:
5230
5231 @table @option
5232
5233 @item list_voices
5234 If set to 1, list the names of the available voices and exit
5235 immediately. Default value is 0.
5236
5237 @item nb_samples, n
5238 Set the maximum number of samples per frame. Default value is 512.
5239
5240 @item textfile
5241 Set the filename containing the text to speak.
5242
5243 @item text
5244 Set the text to speak.
5245
5246 @item voice, v
5247 Set the voice to use for the speech synthesis. Default value is
5248 @code{kal}. See also the @var{list_voices} option.
5249 @end table
5250
5251 @subsection Examples
5252
5253 @itemize
5254 @item
5255 Read from file @file{speech.txt}, and synthesize the text using the
5256 standard flite voice:
5257 @example
5258 flite=textfile=speech.txt
5259 @end example
5260
5261 @item
5262 Read the specified text selecting the @code{slt} voice:
5263 @example
5264 flite=text='So fare thee well, poor devil of a Sub-Sub, whose commentator I am':voice=slt
5265 @end example
5266
5267 @item
5268 Input text to ffmpeg:
5269 @example
5270 ffmpeg -f lavfi -i flite=text='So fare thee well, poor devil of a Sub-Sub, whose commentator I am':voice=slt
5271 @end example
5272
5273 @item
5274 Make @file{ffplay} speak the specified text, using @code{flite} and
5275 the @code{lavfi} device:
5276 @example
5277 ffplay -f lavfi flite=text='No more be grieved for which that thou hast done.'
5278 @end example
5279 @end itemize
5280
5281 For more information about libflite, check:
5282 @url{http://www.festvox.org/flite/}
5283
5284 @section anoisesrc
5285
5286 Generate a noise audio signal.
5287
5288 The filter accepts the following options:
5289
5290 @table @option
5291 @item sample_rate, r
5292 Specify the sample rate. Default value is 48000 Hz.
5293
5294 @item amplitude, a
5295 Specify the amplitude (0.0 - 1.0) of the generated audio stream. Default value
5296 is 1.0.
5297
5298 @item duration, d
5299 Specify the duration of the generated audio stream. Not specifying this option
5300 results in noise with an infinite length.
5301
5302 @item color, colour, c
5303 Specify the color of noise. Available noise colors are white, pink, brown,
5304 blue and violet. Default color is white.
5305
5306 @item seed, s
5307 Specify a value used to seed the PRNG.
5308
5309 @item nb_samples, n
5310 Set the number of samples per each output frame, default is 1024.
5311 @end table
5312
5313 @subsection Examples
5314
5315 @itemize
5316
5317 @item
5318 Generate 60 seconds of pink noise, with a 44.1 kHz sampling rate and an amplitude of 0.5:
5319 @example
5320 anoisesrc=d=60:c=pink:r=44100:a=0.5
5321 @end example
5322 @end itemize
5323
5324 @section hilbert
5325
5326 Generate odd-tap Hilbert transform FIR coefficients.
5327
5328 The resulting stream can be used with @ref{afir} filter for phase-shifting
5329 the signal by 90 degrees.
5330
5331 This is used in many matrix coding schemes and for analytic signal generation.
5332 The process is often written as a multiplication by i (or j), the imaginary unit.
5333
5334 The filter accepts the following options:
5335
5336 @table @option
5337
5338 @item sample_rate, s
5339 Set sample rate, default is 44100.
5340
5341 @item taps, t
5342 Set length of FIR filter, default is 22051.
5343
5344 @item nb_samples, n
5345 Set number of samples per each frame.
5346
5347 @item win_func, w
5348 Set window function to be used when generating FIR coefficients.
5349 @end table
5350
5351 @section sine
5352
5353 Generate an audio signal made of a sine wave with amplitude 1/8.
5354
5355 The audio signal is bit-exact.
5356
5357 The filter accepts the following options:
5358
5359 @table @option
5360
5361 @item frequency, f
5362 Set the carrier frequency. Default is 440 Hz.
5363
5364 @item beep_factor, b
5365 Enable a periodic beep every second with frequency @var{beep_factor} times
5366 the carrier frequency. Default is 0, meaning the beep is disabled.
5367
5368 @item sample_rate, r
5369 Specify the sample rate, default is 44100.
5370
5371 @item duration, d
5372 Specify the duration of the generated audio stream.
5373
5374 @item samples_per_frame
5375 Set the number of samples per output frame.
5376
5377 The expression can contain the following constants:
5378
5379 @table @option
5380 @item n
5381 The (sequential) number of the output audio frame, starting from 0.
5382
5383 @item pts
5384 The PTS (Presentation TimeStamp) of the output audio frame,
5385 expressed in @var{TB} units.
5386
5387 @item t
5388 The PTS of the output audio frame, expressed in seconds.
5389
5390 @item TB
5391 The timebase of the output audio frames.
5392 @end table
5393
5394 Default is @code{1024}.
5395 @end table
5396
5397 @subsection Examples
5398
5399 @itemize
5400
5401 @item
5402 Generate a simple 440 Hz sine wave:
5403 @example
5404 sine
5405 @end example
5406
5407 @item
5408 Generate a 220 Hz sine wave with a 880 Hz beep each second, for 5 seconds:
5409 @example
5410 sine=220:4:d=5
5411 sine=f=220:b=4:d=5
5412 sine=frequency=220:beep_factor=4:duration=5
5413 @end example
5414
5415 @item
5416 Generate a 1 kHz sine wave following @code{1602,1601,1602,1601,1602} NTSC
5417 pattern:
5418 @example
5419 sine=1000:samples_per_frame='st(0,mod(n,5)); 1602-not(not(eq(ld(0),1)+eq(ld(0),3)))'
5420 @end example
5421 @end itemize
5422
5423 @c man end AUDIO SOURCES
5424
5425 @chapter Audio Sinks
5426 @c man begin AUDIO SINKS
5427
5428 Below is a description of the currently available audio sinks.
5429
5430 @section abuffersink
5431
5432 Buffer audio frames, and make them available to the end of filter chain.
5433
5434 This sink is mainly intended for programmatic use, in particular
5435 through the interface defined in @file{libavfilter/buffersink.h}
5436 or the options system.
5437
5438 It accepts a pointer to an AVABufferSinkContext structure, which
5439 defines the incoming buffers' formats, to be passed as the opaque
5440 parameter to @code{avfilter_init_filter} for initialization.
5441 @section anullsink
5442
5443 Null audio sink; do absolutely nothing with the input audio. It is
5444 mainly useful as a template and for use in analysis / debugging
5445 tools.
5446
5447 @c man end AUDIO SINKS
5448
5449 @chapter Video Filters
5450 @c man begin VIDEO FILTERS
5451
5452 When you configure your FFmpeg build, you can disable any of the
5453 existing filters using @code{--disable-filters}.
5454 The configure output will show the video filters included in your
5455 build.
5456
5457 Below is a description of the currently available video filters.
5458
5459 @section alphaextract
5460
5461 Extract the alpha component from the input as a grayscale video. This
5462 is especially useful with the @var{alphamerge} filter.
5463
5464 @section alphamerge
5465
5466 Add or replace the alpha component of the primary input with the
5467 grayscale value of a second input. This is intended for use with
5468 @var{alphaextract} to allow the transmission or storage of frame
5469 sequences that have alpha in a format that doesn't support an alpha
5470 channel.
5471
5472 For example, to reconstruct full frames from a normal YUV-encoded video
5473 and a separate video created with @var{alphaextract}, you might use:
5474 @example
5475 movie=in_alpha.mkv [alpha]; [in][alpha] alphamerge [out]
5476 @end example
5477
5478 Since this filter is designed for reconstruction, it operates on frame
5479 sequences without considering timestamps, and terminates when either
5480 input reaches end of stream. This will cause problems if your encoding
5481 pipeline drops frames. If you're trying to apply an image as an
5482 overlay to a video stream, consider the @var{overlay} filter instead.
5483
5484 @section amplify
5485
5486 Amplify differences between current pixel and pixels of adjacent frames in
5487 same pixel location.
5488
5489 This filter accepts the following options:
5490
5491 @table @option
5492 @item radius
5493 Set frame radius. Default is 2. Allowed range is from 1 to 63.
5494 For example radius of 3 will instruct filter to calculate average of 7 frames.
5495
5496 @item factor
5497 Set factor to amplify difference. Default is 2. Allowed range is from 0 to 65535.
5498
5499 @item threshold
5500 Set threshold for difference amplification. Any differrence greater or equal to
5501 this value will not alter source pixel. Default is 10.
5502 Allowed range is from 0 to 65535.
5503
5504 @item low
5505 Set lower limit for changing source pixel. Default is 65535. Allowed range is from 0 to 65535.
5506 This option controls maximum possible value that will decrease source pixel value.
5507
5508 @item high
5509 Set high limit for changing source pixel. Default is 65535. Allowed range is from 0 to 65535.
5510 This option controls maximum possible value that will increase source pixel value.
5511
5512 @item planes
5513 Set which planes to filter. Default is all. Allowed range is from 0 to 15.
5514 @end table
5515
5516 @section ass
5517
5518 Same as the @ref{subtitles} filter, except that it doesn't require libavcodec
5519 and libavformat to work. On the other hand, it is limited to ASS (Advanced
5520 Substation Alpha) subtitles files.
5521
5522 This filter accepts the following option in addition to the common options from
5523 the @ref{subtitles} filter:
5524
5525 @table @option
5526 @item shaping
5527 Set the shaping engine
5528
5529 Available values are:
5530 @table @samp
5531 @item auto
5532 The default libass shaping engine, which is the best available.
5533 @item simple
5534 Fast, font-agnostic shaper that can do only substitutions
5535 @item complex
5536 Slower shaper using OpenType for substitutions and positioning
5537 @end table
5538
5539 The default is @code{auto}.
5540 @end table
5541
5542 @section atadenoise
5543 Apply an Adaptive Temporal Averaging Denoiser to the video input.
5544
5545 The filter accepts the following options:
5546
5547 @table @option
5548 @item 0a
5549 Set threshold A for 1st plane. Default is 0.02.
5550 Valid range is 0 to 0.3.
5551
5552 @item 0b
5553 Set threshold B for 1st plane. Default is 0.04.
5554 Valid range is 0 to 5.
5555
5556 @item 1a
5557 Set threshold A for 2nd plane. Default is 0.02.
5558 Valid range is 0 to 0.3.
5559
5560 @item 1b
5561 Set threshold B for 2nd plane. Default is 0.04.
5562 Valid range is 0 to 5.
5563
5564 @item 2a
5565 Set threshold A for 3rd plane. Default is 0.02.
5566 Valid range is 0 to 0.3.
5567
5568 @item 2b
5569 Set threshold B for 3rd plane. Default is 0.04.
5570 Valid range is 0 to 5.
5571
5572 Threshold A is designed to react on abrupt changes in the input signal and
5573 threshold B is designed to react on continuous changes in the input signal.
5574
5575 @item s
5576 Set number of frames filter will use for averaging. Default is 9. Must be odd
5577 number in range [5, 129].
5578
5579 @item p
5580 Set what planes of frame filter will use for averaging. Default is all.
5581 @end table
5582
5583 @section avgblur
5584
5585 Apply average blur filter.
5586
5587 The filter accepts the following options:
5588
5589 @table @option
5590 @item sizeX
5591 Set horizontal radius size.
5592
5593 @item planes
5594 Set which planes to filter. By default all planes are filtered.
5595
5596 @item sizeY
5597 Set vertical radius size, if zero it will be same as @code{sizeX}.
5598 Default is @code{0}.
5599 @end table
5600
5601 @section bbox
5602
5603 Compute the bounding box for the non-black pixels in the input frame
5604 luminance plane.
5605
5606 This filter computes the bounding box containing all the pixels with a
5607 luminance value greater than the minimum allowed value.
5608 The parameters describing the bounding box are printed on the filter
5609 log.
5610
5611 The filter accepts the following option:
5612
5613 @table @option
5614 @item min_val
5615 Set the minimal luminance value. Default is @code{16}.
5616 @end table
5617
5618 @section bitplanenoise
5619
5620 Show and measure bit plane noise.
5621
5622 The filter accepts the following options:
5623
5624 @table @option
5625 @item bitplane
5626 Set which plane to analyze. Default is @code{1}.
5627
5628 @item filter
5629 Filter out noisy pixels from @code{bitplane} set above.
5630 Default is disabled.
5631 @end table
5632
5633 @section blackdetect
5634
5635 Detect video intervals that are (almost) completely black. Can be
5636 useful to detect chapter transitions, commercials, or invalid
5637 recordings. Output lines contains the time for the start, end and
5638 duration of the detected black interval expressed in seconds.
5639
5640 In order to display the output lines, you need to set the loglevel at
5641 least to the AV_LOG_INFO value.
5642
5643 The filter accepts the following options:
5644
5645 @table @option
5646 @item black_min_duration, d
5647 Set the minimum detected black duration expressed in seconds. It must
5648 be a non-negative floating point number.
5649
5650 Default value is 2.0.
5651
5652 @item picture_black_ratio_th, pic_th
5653 Set the threshold for considering a picture "black".
5654 Express the minimum value for the ratio:
5655 @example
5656 @var{nb_black_pixels} / @var{nb_pixels}
5657 @end example
5658
5659 for which a picture is considered black.
5660 Default value is 0.98.
5661
5662 @item pixel_black_th, pix_th
5663 Set the threshold for considering a pixel "black".
5664
5665 The threshold expresses the maximum pixel luminance value for which a
5666 pixel is considered "black". The provided value is scaled according to
5667 the following equation:
5668 @example
5669 @var{absolute_threshold} = @var{luminance_minimum_value} + @var{pixel_black_th} * @var{luminance_range_size}
5670 @end example
5671
5672 @var{luminance_range_size} and @var{luminance_minimum_value} depend on
5673 the input video format, the range is [0-255] for YUV full-range
5674 formats and [16-235] for YUV non full-range formats.
5675
5676 Default value is 0.10.
5677 @end table
5678
5679 The following example sets the maximum pixel threshold to the minimum
5680 value, and detects only black intervals of 2 or more seconds:
5681 @example
5682 blackdetect=d=2:pix_th=0.00
5683 @end example
5684
5685 @section blackframe
5686
5687 Detect frames that are (almost) completely black. Can be useful to
5688 detect chapter transitions or commercials. Output lines consist of
5689 the frame number of the detected frame, the percentage of blackness,
5690 the position in the file if known or -1 and the timestamp in seconds.
5691
5692 In order to display the output lines, you need to set the loglevel at
5693 least to the AV_LOG_INFO value.
5694
5695 This filter exports frame metadata @code{lavfi.blackframe.pblack}.
5696 The value represents the percentage of pixels in the picture that
5697 are below the threshold value.
5698
5699 It accepts the following parameters:
5700
5701 @table @option
5702
5703 @item amount
5704 The percentage of the pixels that have to be below the threshold; it defaults to
5705 @code{98}.
5706
5707 @item threshold, thresh
5708 The threshold below which a pixel value is considered black; it defaults to
5709 @code{32}.
5710
5711 @end table
5712
5713 @section blend, tblend
5714
5715 Blend two video frames into each other.
5716
5717 The @code{blend} filter takes two input streams and outputs one
5718 stream, the first input is the "top" layer and second input is
5719 "bottom" layer.  By default, the output terminates when the longest input terminates.
5720
5721 The @code{tblend} (time blend) filter takes two consecutive frames
5722 from one single stream, and outputs the result obtained by blending
5723 the new frame on top of the old frame.
5724
5725 A description of the accepted options follows.
5726
5727 @table @option
5728 @item c0_mode
5729 @item c1_mode
5730 @item c2_mode
5731 @item c3_mode
5732 @item all_mode
5733 Set blend mode for specific pixel component or all pixel components in case
5734 of @var{all_mode}. Default value is @code{normal}.
5735
5736 Available values for component modes are:
5737 @table @samp
5738 @item addition
5739 @item grainmerge
5740 @item and
5741 @item average
5742 @item burn
5743 @item darken
5744 @item difference
5745 @item grainextract
5746 @item divide
5747 @item dodge
5748 @item freeze
5749 @item exclusion
5750 @item extremity
5751 @item glow
5752 @item hardlight
5753 @item hardmix
5754 @item heat
5755 @item lighten
5756 @item linearlight
5757 @item multiply
5758 @item multiply128
5759 @item negation
5760 @item normal
5761 @item or
5762 @item overlay
5763 @item phoenix
5764 @item pinlight
5765 @item reflect
5766 @item screen
5767 @item softlight
5768 @item subtract
5769 @item vividlight
5770 @item xor
5771 @end table
5772
5773 @item c0_opacity
5774 @item c1_opacity
5775 @item c2_opacity
5776 @item c3_opacity
5777 @item all_opacity
5778 Set blend opacity for specific pixel component or all pixel components in case
5779 of @var{all_opacity}. Only used in combination with pixel component blend modes.
5780
5781 @item c0_expr
5782 @item c1_expr
5783 @item c2_expr
5784 @item c3_expr
5785 @item all_expr
5786 Set blend expression for specific pixel component or all pixel components in case
5787 of @var{all_expr}. Note that related mode options will be ignored if those are set.
5788
5789 The expressions can use the following variables:
5790
5791 @table @option
5792 @item N
5793 The sequential number of the filtered frame, starting from @code{0}.
5794
5795 @item X
5796 @item Y
5797 the coordinates of the current sample
5798
5799 @item W
5800 @item H
5801 the width and height of currently filtered plane
5802
5803 @item SW
5804 @item SH
5805 Width and height scale for the plane being filtered. It is the
5806 ratio between the dimensions of the current plane to the luma plane,
5807 e.g. for a @code{yuv420p} frame, the values are @code{1,1} for
5808 the luma plane and @code{0.5,0.5} for the chroma planes.
5809
5810 @item T
5811 Time of the current frame, expressed in seconds.
5812
5813 @item TOP, A
5814 Value of pixel component at current location for first video frame (top layer).
5815
5816 @item BOTTOM, B
5817 Value of pixel component at current location for second video frame (bottom layer).
5818 @end table
5819 @end table
5820
5821 The @code{blend} filter also supports the @ref{framesync} options.
5822
5823 @subsection Examples
5824
5825 @itemize
5826 @item
5827 Apply transition from bottom layer to top layer in first 10 seconds:
5828 @example
5829 blend=all_expr='A*(if(gte(T,10),1,T/10))+B*(1-(if(gte(T,10),1,T/10)))'
5830 @end example
5831
5832 @item
5833 Apply linear horizontal transition from top layer to bottom layer:
5834 @example
5835 blend=all_expr='A*(X/W)+B*(1-X/W)'
5836 @end example
5837
5838 @item
5839 Apply 1x1 checkerboard effect:
5840 @example
5841 blend=all_expr='if(eq(mod(X,2),mod(Y,2)),A,B)'
5842 @end example
5843
5844 @item
5845 Apply uncover left effect:
5846 @example
5847 blend=all_expr='if(gte(N*SW+X,W),A,B)'
5848 @end example
5849
5850 @item
5851 Apply uncover down effect:
5852 @example
5853 blend=all_expr='if(gte(Y-N*SH,0),A,B)'
5854 @end example
5855
5856 @item
5857 Apply uncover up-left effect:
5858 @example
5859 blend=all_expr='if(gte(T*SH*40+Y,H)*gte((T*40*SW+X)*W/H,W),A,B)'
5860 @end example
5861
5862 @item
5863 Split diagonally video and shows top and bottom layer on each side:
5864 @example
5865 blend=all_expr='if(gt(X,Y*(W/H)),A,B)'
5866 @end example
5867
5868 @item
5869 Display differences between the current and the previous frame:
5870 @example
5871 tblend=all_mode=grainextract
5872 @end example
5873 @end itemize
5874
5875 @section bm3d
5876
5877 Denoise frames using Block-Matching 3D algorithm.
5878
5879 The filter accepts the following options.
5880
5881 @table @option
5882 @item sigma
5883 Set denoising strength. Default value is 1.
5884 Allowed range is from 0 to 999.9.
5885 The denoising algorith is very sensitive to sigma, so adjust it
5886 according to the source.
5887
5888 @item block
5889 Set local patch size. This sets dimensions in 2D.
5890
5891 @item bstep
5892 Set sliding step for processing blocks. Default value is 4.
5893 Allowed range is from 1 to 64.
5894 Smaller values allows processing more reference blocks and is slower.
5895
5896 @item group
5897 Set maximal number of similar blocks for 3rd dimension. Default value is 1.
5898 When set to 1, no block matching is done. Larger values allows more blocks
5899 in single group.
5900 Allowed range is from 1 to 256.
5901
5902 @item range
5903 Set radius for search block matching. Default is 9.
5904 Allowed range is from 1 to INT32_MAX.
5905
5906 @item mstep
5907 Set step between two search locations for block matching. Default is 1.
5908 Allowed range is from 1 to 64. Smaller is slower.
5909
5910 @item thmse
5911 Set threshold of mean square error for block matching. Valid range is 0 to
5912 INT32_MAX.
5913
5914 @item hdthr
5915 Set thresholding parameter for hard thresholding in 3D transformed domain.
5916 Larger values results in stronger hard-thresholding filtering in frequency
5917 domain.
5918
5919 @item estim
5920 Set filtering estimation mode. Can be @code{basic} or @code{final}.
5921 Default is @code{basic}.
5922
5923 @item ref
5924 If enabled, filter will use 2nd stream for block matching.
5925 Default is disabled for @code{basic} value of @var{estim} option,
5926 and always enabled if value of @var{estim} is @code{final}.
5927
5928 @item planes
5929 Set planes to filter. Default is all available except alpha.
5930 @end table
5931
5932 @subsection Examples
5933
5934 @itemize
5935 @item
5936 Basic filtering with bm3d:
5937 @example
5938 bm3d=sigma=3:block=4:bstep=2:group=1:estim=basic
5939 @end example
5940
5941 @item
5942 Same as above, but filtering only luma:
5943 @example
5944 bm3d=sigma=3:block=4:bstep=2:group=1:estim=basic:planes=1
5945 @end example
5946
5947 @item
5948 Same as above, but with both estimation modes:
5949 @example
5950 split[a][b],[a]bm3d=sigma=3:block=4:bstep=2:group=1:estim=basic[a],[b][a]bm3d=sigma=3:block=4:bstep=2:group=16:estim=final:ref=1
5951 @end example
5952
5953 @item
5954 Same as above, but prefilter with @ref{nlmeans} filter instead:
5955 @example
5956 split[a][b],[a]nlmeans=s=3:r=7:p=3[a],[b][a]bm3d=sigma=3:block=4:bstep=2:group=16:estim=final:ref=1
5957 @end example
5958 @end itemize
5959
5960 @section boxblur
5961
5962 Apply a boxblur algorithm to the input video.
5963
5964 It accepts the following parameters:
5965
5966 @table @option
5967
5968 @item luma_radius, lr
5969 @item luma_power, lp
5970 @item chroma_radius, cr
5971 @item chroma_power, cp
5972 @item alpha_radius, ar
5973 @item alpha_power, ap
5974
5975 @end table
5976
5977 A description of the accepted options follows.
5978
5979 @table @option
5980 @item luma_radius, lr
5981 @item chroma_radius, cr
5982 @item alpha_radius, ar
5983 Set an expression for the box radius in pixels used for blurring the
5984 corresponding input plane.
5985
5986 The radius value must be a non-negative number, and must not be
5987 greater than the value of the expression @code{min(w,h)/2} for the
5988 luma and alpha planes, and of @code{min(cw,ch)/2} for the chroma
5989 planes.
5990
5991 Default value for @option{luma_radius} is "2". If not specified,
5992 @option{chroma_radius} and @option{alpha_radius} default to the
5993 corresponding value set for @option{luma_radius}.
5994
5995 The expressions can contain the following constants:
5996 @table @option
5997 @item w
5998 @item h
5999 The input width and height in pixels.
6000
6001 @item cw
6002 @item ch
6003 The input chroma image width and height in pixels.
6004
6005 @item hsub
6006 @item vsub
6007 The horizontal and vertical chroma subsample values. For example, for the
6008 pixel format "yuv422p", @var{hsub} is 2 and @var{vsub} is 1.
6009 @end table
6010
6011 @item luma_power, lp
6012 @item chroma_power, cp
6013 @item alpha_power, ap
6014 Specify how many times the boxblur filter is applied to the
6015 corresponding plane.
6016
6017 Default value for @option{luma_power} is 2. If not specified,
6018 @option{chroma_power} and @option{alpha_power} default to the
6019 corresponding value set for @option{luma_power}.
6020
6021 A value of 0 will disable the effect.
6022 @end table
6023
6024 @subsection Examples
6025
6026 @itemize
6027 @item
6028 Apply a boxblur filter with the luma, chroma, and alpha radii
6029 set to 2:
6030 @example
6031 boxblur=luma_radius=2:luma_power=1
6032 boxblur=2:1
6033 @end example
6034
6035 @item
6036 Set the luma radius to 2, and alpha and chroma radius to 0:
6037 @example
6038 boxblur=2:1:cr=0:ar=0
6039 @end example
6040
6041 @item
6042 Set the luma and chroma radii to a fraction of the video dimension:
6043 @example
6044 boxblur=luma_radius=min(h\,w)/10:luma_power=1:chroma_radius=min(cw\,ch)/10:chroma_power=1
6045 @end example
6046 @end itemize
6047
6048 @section bwdif
6049
6050 Deinterlace the input video ("bwdif" stands for "Bob Weaver
6051 Deinterlacing Filter").
6052
6053 Motion adaptive deinterlacing based on yadif with the use of w3fdif and cubic
6054 interpolation algorithms.
6055 It accepts the following parameters:
6056
6057 @table @option
6058 @item mode
6059 The interlacing mode to adopt. It accepts one of the following values:
6060
6061 @table @option
6062 @item 0, send_frame
6063 Output one frame for each frame.
6064 @item 1, send_field
6065 Output one frame for each field.
6066 @end table
6067
6068 The default value is @code{send_field}.
6069
6070 @item parity
6071 The picture field parity assumed for the input interlaced video. It accepts one
6072 of the following values:
6073
6074 @table @option
6075 @item 0, tff
6076 Assume the top field is first.
6077 @item 1, bff
6078 Assume the bottom field is first.
6079 @item -1, auto
6080 Enable automatic detection of field parity.
6081 @end table
6082
6083 The default value is @code{auto}.
6084 If the interlacing is unknown or the decoder does not export this information,
6085 top field first will be assumed.
6086
6087 @item deint
6088 Specify which frames to deinterlace. Accept one of the following
6089 values:
6090
6091 @table @option
6092 @item 0, all
6093 Deinterlace all frames.
6094 @item 1, interlaced
6095 Only deinterlace frames marked as interlaced.
6096 @end table
6097
6098 The default value is @code{all}.
6099 @end table
6100
6101 @section chromakey
6102 YUV colorspace color/chroma keying.
6103
6104 The filter accepts the following options:
6105
6106 @table @option
6107 @item color
6108 The color which will be replaced with transparency.
6109
6110 @item similarity
6111 Similarity percentage with the key color.
6112
6113 0.01 matches only the exact key color, while 1.0 matches everything.
6114
6115 @item blend
6116 Blend percentage.
6117
6118 0.0 makes pixels either fully transparent, or not transparent at all.
6119
6120 Higher values result in semi-transparent pixels, with a higher transparency
6121 the more similar the pixels color is to the key color.
6122
6123 @item yuv
6124 Signals that the color passed is already in YUV instead of RGB.
6125
6126 Literal colors like "green" or "red" don't make sense with this enabled anymore.
6127 This can be used to pass exact YUV values as hexadecimal numbers.
6128 @end table
6129
6130 @subsection Examples
6131
6132 @itemize
6133 @item
6134 Make every green pixel in the input image transparent:
6135 @example
6136 ffmpeg -i input.png -vf chromakey=green out.png
6137 @end example
6138
6139 @item
6140 Overlay a greenscreen-video on top of a static black background.
6141 @example
6142 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
6143 @end example
6144 @end itemize
6145
6146 @section ciescope
6147
6148 Display CIE color diagram with pixels overlaid onto it.
6149
6150 The filter accepts the following options:
6151
6152 @table @option
6153 @item system
6154 Set color system.
6155
6156 @table @samp
6157 @item ntsc, 470m
6158 @item ebu, 470bg
6159 @item smpte
6160 @item 240m
6161 @item apple
6162 @item widergb
6163 @item cie1931
6164 @item rec709, hdtv
6165 @item uhdtv, rec2020
6166 @end table
6167
6168 @item cie
6169 Set CIE system.
6170
6171 @table @samp
6172 @item xyy
6173 @item ucs
6174 @item luv
6175 @end table
6176
6177 @item gamuts
6178 Set what gamuts to draw.
6179
6180 See @code{system} option for available values.
6181
6182 @item size, s
6183 Set ciescope size, by default set to 512.
6184
6185 @item intensity, i
6186 Set intensity used to map input pixel values to CIE diagram.
6187
6188 @item contrast
6189 Set contrast used to draw tongue colors that are out of active color system gamut.
6190
6191 @item corrgamma
6192 Correct gamma displayed on scope, by default enabled.
6193
6194 @item showwhite
6195 Show white point on CIE diagram, by default disabled.
6196
6197 @item gamma
6198 Set input gamma. Used only with XYZ input color space.
6199 @end table
6200
6201 @section codecview
6202
6203 Visualize information exported by some codecs.
6204
6205 Some codecs can export information through frames using side-data or other
6206 means. For example, some MPEG based codecs export motion vectors through the
6207 @var{export_mvs} flag in the codec @option{flags2} option.
6208
6209 The filter accepts the following option:
6210
6211 @table @option
6212 @item mv
6213 Set motion vectors to visualize.
6214
6215 Available flags for @var{mv} are:
6216
6217 @table @samp
6218 @item pf
6219 forward predicted MVs of P-frames
6220 @item bf
6221 forward predicted MVs of B-frames
6222 @item bb
6223 backward predicted MVs of B-frames
6224 @end table
6225
6226 @item qp
6227 Display quantization parameters using the chroma planes.
6228
6229 @item mv_type, mvt
6230 Set motion vectors type to visualize. Includes MVs from all frames unless specified by @var{frame_type} option.
6231
6232 Available flags for @var{mv_type} are:
6233
6234 @table @samp
6235 @item fp
6236 forward predicted MVs
6237 @item bp
6238 backward predicted MVs
6239 @end table
6240
6241 @item frame_type, ft
6242 Set frame type to visualize motion vectors of.
6243
6244 Available flags for @var{frame_type} are:
6245
6246 @table @samp
6247 @item if
6248 intra-coded frames (I-frames)
6249 @item pf
6250 predicted frames (P-frames)
6251 @item bf
6252 bi-directionally predicted frames (B-frames)
6253 @end table
6254 @end table
6255
6256 @subsection Examples
6257
6258 @itemize
6259 @item
6260 Visualize forward predicted MVs of all frames using @command{ffplay}:
6261 @example
6262 ffplay -flags2 +export_mvs input.mp4 -vf codecview=mv_type=fp
6263 @end example
6264
6265 @item
6266 Visualize multi-directionals MVs of P and B-Frames using @command{ffplay}:
6267 @example
6268 ffplay -flags2 +export_mvs input.mp4 -vf codecview=mv=pf+bf+bb
6269 @end example
6270 @end itemize
6271
6272 @section colorbalance
6273 Modify intensity of primary colors (red, green and blue) of input frames.
6274
6275 The filter allows an input frame to be adjusted in the shadows, midtones or highlights
6276 regions for the red-cyan, green-magenta or blue-yellow balance.
6277
6278 A positive adjustment value shifts the balance towards the primary color, a negative
6279 value towards the complementary color.
6280
6281 The filter accepts the following options:
6282
6283 @table @option
6284 @item rs
6285 @item gs
6286 @item bs
6287 Adjust red, green and blue shadows (darkest pixels).
6288
6289 @item rm
6290 @item gm
6291 @item bm
6292 Adjust red, green and blue midtones (medium pixels).
6293
6294 @item rh
6295 @item gh
6296 @item bh
6297 Adjust red, green and blue highlights (brightest pixels).
6298
6299 Allowed ranges for options are @code{[-1.0, 1.0]}. Defaults are @code{0}.
6300 @end table
6301
6302 @subsection Examples
6303
6304 @itemize
6305 @item
6306 Add red color cast to shadows:
6307 @example
6308 colorbalance=rs=.3
6309 @end example
6310 @end itemize
6311
6312 @section colorkey
6313 RGB colorspace color keying.
6314
6315 The filter accepts the following options:
6316
6317 @table @option
6318 @item color
6319 The color which will be replaced with transparency.
6320
6321 @item similarity
6322 Similarity percentage with the key color.
6323
6324 0.01 matches only the exact key color, while 1.0 matches everything.
6325
6326 @item blend
6327 Blend percentage.
6328
6329 0.0 makes pixels either fully transparent, or not transparent at all.
6330
6331 Higher values result in semi-transparent pixels, with a higher transparency
6332 the more similar the pixels color is to the key color.
6333 @end table
6334
6335 @subsection Examples
6336
6337 @itemize
6338 @item
6339 Make every green pixel in the input image transparent:
6340 @example
6341 ffmpeg -i input.png -vf colorkey=green out.png
6342 @end example
6343
6344 @item
6345 Overlay a greenscreen-video on top of a static background image.
6346 @example
6347 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
6348 @end example
6349 @end itemize
6350
6351 @section colorlevels
6352
6353 Adjust video input frames using levels.
6354
6355 The filter accepts the following options:
6356
6357 @table @option
6358 @item rimin
6359 @item gimin
6360 @item bimin
6361 @item aimin
6362 Adjust red, green, blue and alpha input black point.
6363 Allowed ranges for options are @code{[-1.0, 1.0]}. Defaults are @code{0}.
6364
6365 @item rimax
6366 @item gimax
6367 @item bimax
6368 @item aimax
6369 Adjust red, green, blue and alpha input white point.
6370 Allowed ranges for options are @code{[-1.0, 1.0]}. Defaults are @code{1}.
6371
6372 Input levels are used to lighten highlights (bright tones), darken shadows
6373 (dark tones), change the balance of bright and dark tones.
6374
6375 @item romin
6376 @item gomin
6377 @item bomin
6378 @item aomin
6379 Adjust red, green, blue and alpha output black point.
6380 Allowed ranges for options are @code{[0, 1.0]}. Defaults are @code{0}.
6381
6382 @item romax
6383 @item gomax
6384 @item bomax
6385 @item aomax
6386 Adjust red, green, blue and alpha output white point.
6387 Allowed ranges for options are @code{[0, 1.0]}. Defaults are @code{1}.
6388
6389 Output levels allows manual selection of a constrained output level range.
6390 @end table
6391
6392 @subsection Examples
6393
6394 @itemize
6395 @item
6396 Make video output darker:
6397 @example
6398 colorlevels=rimin=0.058:gimin=0.058:bimin=0.058
6399 @end example
6400
6401 @item
6402 Increase contrast:
6403 @example
6404 colorlevels=rimin=0.039:gimin=0.039:bimin=0.039:rimax=0.96:gimax=0.96:bimax=0.96
6405 @end example
6406
6407 @item
6408 Make video output lighter:
6409 @example
6410 colorlevels=rimax=0.902:gimax=0.902:bimax=0.902
6411 @end example
6412
6413 @item
6414 Increase brightness:
6415 @example
6416 colorlevels=romin=0.5:gomin=0.5:bomin=0.5
6417 @end example
6418 @end itemize
6419
6420 @section colorchannelmixer
6421
6422 Adjust video input frames by re-mixing color channels.
6423
6424 This filter modifies a color channel by adding the values associated to
6425 the other channels of the same pixels. For example if the value to
6426 modify is red, the output value will be:
6427 @example
6428 @var{red}=@var{red}*@var{rr} + @var{blue}*@var{rb} + @var{green}*@var{rg} + @var{alpha}*@var{ra}
6429 @end example
6430
6431 The filter accepts the following options:
6432
6433 @table @option
6434 @item rr
6435 @item rg
6436 @item rb
6437 @item ra
6438 Adjust contribution of input red, green, blue and alpha channels for output red channel.
6439 Default is @code{1} for @var{rr}, and @code{0} for @var{rg}, @var{rb} and @var{ra}.
6440
6441 @item gr
6442 @item gg
6443 @item gb
6444 @item ga
6445 Adjust contribution of input red, green, blue and alpha channels for output green channel.
6446 Default is @code{1} for @var{gg}, and @code{0} for @var{gr}, @var{gb} and @var{ga}.
6447
6448 @item br
6449 @item bg
6450 @item bb
6451 @item ba
6452 Adjust contribution of input red, green, blue and alpha channels for output blue channel.
6453 Default is @code{1} for @var{bb}, and @code{0} for @var{br}, @var{bg} and @var{ba}.
6454
6455 @item ar
6456 @item ag
6457 @item ab
6458 @item aa
6459 Adjust contribution of input red, green, blue and alpha channels for output alpha channel.
6460 Default is @code{1} for @var{aa}, and @code{0} for @var{ar}, @var{ag} and @var{ab}.
6461
6462 Allowed ranges for options are @code{[-2.0, 2.0]}.
6463 @end table
6464
6465 @subsection Examples
6466
6467 @itemize
6468 @item
6469 Convert source to grayscale:
6470 @example
6471 colorchannelmixer=.3:.4:.3:0:.3:.4:.3:0:.3:.4:.3
6472 @end example
6473 @item
6474 Simulate sepia tones:
6475 @example
6476 colorchannelmixer=.393:.769:.189:0:.349:.686:.168:0:.272:.534:.131
6477 @end example
6478 @end itemize
6479
6480 @section colormatrix
6481
6482 Convert color matrix.
6483
6484 The filter accepts the following options:
6485
6486 @table @option
6487 @item src
6488 @item dst
6489 Specify the source and destination color matrix. Both values must be
6490 specified.
6491
6492 The accepted values are:
6493 @table @samp
6494 @item bt709
6495 BT.709
6496
6497 @item fcc
6498 FCC
6499
6500 @item bt601
6501 BT.601
6502
6503 @item bt470
6504 BT.470
6505
6506 @item bt470bg
6507 BT.470BG
6508
6509 @item smpte170m
6510 SMPTE-170M
6511
6512 @item smpte240m
6513 SMPTE-240M
6514
6515 @item bt2020
6516 BT.2020
6517 @end table
6518 @end table
6519
6520 For example to convert from BT.601 to SMPTE-240M, use the command:
6521 @example
6522 colormatrix=bt601:smpte240m
6523 @end example
6524
6525 @section colorspace
6526
6527 Convert colorspace, transfer characteristics or color primaries.
6528 Input video needs to have an even size.
6529
6530 The filter accepts the following options:
6531
6532 @table @option
6533 @anchor{all}
6534 @item all
6535 Specify all color properties at once.
6536
6537 The accepted values are:
6538 @table @samp
6539 @item bt470m
6540 BT.470M
6541
6542 @item bt470bg
6543 BT.470BG
6544
6545 @item bt601-6-525
6546 BT.601-6 525
6547
6548 @item bt601-6-625
6549 BT.601-6 625
6550
6551 @item bt709
6552 BT.709
6553
6554 @item smpte170m
6555 SMPTE-170M
6556
6557 @item smpte240m
6558 SMPTE-240M
6559
6560 @item bt2020
6561 BT.2020
6562
6563 @end table
6564
6565 @anchor{space}
6566 @item space
6567 Specify output colorspace.
6568
6569 The accepted values are:
6570 @table @samp
6571 @item bt709
6572 BT.709
6573
6574 @item fcc
6575 FCC
6576
6577 @item bt470bg
6578 BT.470BG or BT.601-6 625
6579
6580 @item smpte170m
6581 SMPTE-170M or BT.601-6 525
6582
6583 @item smpte240m
6584 SMPTE-240M
6585
6586 @item ycgco
6587 YCgCo
6588
6589 @item bt2020ncl
6590 BT.2020 with non-constant luminance
6591
6592 @end table
6593
6594 @anchor{trc}
6595 @item trc
6596 Specify output transfer characteristics.
6597
6598 The accepted values are:
6599 @table @samp
6600 @item bt709
6601 BT.709
6602
6603 @item bt470m
6604 BT.470M
6605
6606 @item bt470bg
6607 BT.470BG
6608
6609 @item gamma22
6610 Constant gamma of 2.2
6611
6612 @item gamma28
6613 Constant gamma of 2.8
6614
6615 @item smpte170m
6616 SMPTE-170M, BT.601-6 625 or BT.601-6 525
6617
6618 @item smpte240m
6619 SMPTE-240M
6620
6621 @item srgb
6622 SRGB
6623
6624 @item iec61966-2-1
6625 iec61966-2-1
6626
6627 @item iec61966-2-4
6628 iec61966-2-4
6629
6630 @item xvycc
6631 xvycc
6632
6633 @item bt2020-10
6634 BT.2020 for 10-bits content
6635
6636 @item bt2020-12
6637 BT.2020 for 12-bits content
6638
6639 @end table
6640
6641 @anchor{primaries}
6642 @item primaries
6643 Specify output color primaries.
6644
6645 The accepted values are:
6646 @table @samp
6647 @item bt709
6648 BT.709
6649
6650 @item bt470m
6651 BT.470M
6652
6653 @item bt470bg
6654 BT.470BG or BT.601-6 625
6655
6656 @item smpte170m
6657 SMPTE-170M or BT.601-6 525
6658
6659 @item smpte240m
6660 SMPTE-240M
6661
6662 @item film
6663 film
6664
6665 @item smpte431
6666 SMPTE-431
6667
6668 @item smpte432
6669 SMPTE-432
6670
6671 @item bt2020
6672 BT.2020
6673
6674 @item jedec-p22
6675 JEDEC P22 phosphors
6676
6677 @end table
6678
6679 @anchor{range}
6680 @item range
6681 Specify output color range.
6682
6683 The accepted values are:
6684 @table @samp
6685 @item tv
6686 TV (restricted) range
6687
6688 @item mpeg
6689 MPEG (restricted) range
6690
6691 @item pc
6692 PC (full) range
6693
6694 @item jpeg
6695 JPEG (full) range
6696
6697 @end table
6698
6699 @item format
6700 Specify output color format.
6701
6702 The accepted values are:
6703 @table @samp
6704 @item yuv420p
6705 YUV 4:2:0 planar 8-bits
6706
6707 @item yuv420p10
6708 YUV 4:2:0 planar 10-bits
6709
6710 @item yuv420p12
6711 YUV 4:2:0 planar 12-bits
6712
6713 @item yuv422p
6714 YUV 4:2:2 planar 8-bits
6715
6716 @item yuv422p10
6717 YUV 4:2:2 planar 10-bits
6718
6719 @item yuv422p12
6720 YUV 4:2:2 planar 12-bits
6721
6722 @item yuv444p
6723 YUV 4:4:4 planar 8-bits
6724
6725 @item yuv444p10
6726 YUV 4:4:4 planar 10-bits
6727
6728 @item yuv444p12
6729 YUV 4:4:4 planar 12-bits
6730
6731 @end table
6732
6733 @item fast
6734 Do a fast conversion, which skips gamma/primary correction. This will take
6735 significantly less CPU, but will be mathematically incorrect. To get output
6736 compatible with that produced by the colormatrix filter, use fast=1.
6737
6738 @item dither
6739 Specify dithering mode.
6740
6741 The accepted values are:
6742 @table @samp
6743 @item none
6744 No dithering
6745
6746 @item fsb
6747 Floyd-Steinberg dithering
6748 @end table
6749
6750 @item wpadapt
6751 Whitepoint adaptation mode.
6752
6753 The accepted values are:
6754 @table @samp
6755 @item bradford
6756 Bradford whitepoint adaptation
6757
6758 @item vonkries
6759 von Kries whitepoint adaptation
6760
6761 @item identity
6762 identity whitepoint adaptation (i.e. no whitepoint adaptation)
6763 @end table
6764
6765 @item iall
6766 Override all input properties at once. Same accepted values as @ref{all}.
6767
6768 @item ispace
6769 Override input colorspace. Same accepted values as @ref{space}.
6770
6771 @item iprimaries
6772 Override input color primaries. Same accepted values as @ref{primaries}.
6773
6774 @item itrc
6775 Override input transfer characteristics. Same accepted values as @ref{trc}.
6776
6777 @item irange
6778 Override input color range. Same accepted values as @ref{range}.
6779
6780 @end table
6781
6782 The filter converts the transfer characteristics, color space and color
6783 primaries to the specified user values. The output value, if not specified,
6784 is set to a default value based on the "all" property. If that property is
6785 also not specified, the filter will log an error. The output color range and
6786 format default to the same value as the input color range and format. The
6787 input transfer characteristics, color space, color primaries and color range
6788 should be set on the input data. If any of these are missing, the filter will
6789 log an error and no conversion will take place.
6790
6791 For example to convert the input to SMPTE-240M, use the command:
6792 @example
6793 colorspace=smpte240m
6794 @end example
6795
6796 @section convolution
6797
6798 Apply convolution of 3x3, 5x5, 7x7 or horizontal/vertical up to 49 elements.
6799
6800 The filter accepts the following options:
6801
6802 @table @option
6803 @item 0m
6804 @item 1m
6805 @item 2m
6806 @item 3m
6807 Set matrix for each plane.
6808 Matrix is sequence of 9, 25 or 49 signed integers in @var{square} mode,
6809 and from 1 to 49 odd number of signed integers in @var{row} mode.
6810
6811 @item 0rdiv
6812 @item 1rdiv
6813 @item 2rdiv
6814 @item 3rdiv
6815 Set multiplier for calculated value for each plane.
6816 If unset or 0, it will be sum of all matrix elements.
6817
6818 @item 0bias
6819 @item 1bias
6820 @item 2bias
6821 @item 3bias
6822 Set bias for each plane. This value is added to the result of the multiplication.
6823 Useful for making the overall image brighter or darker. Default is 0.0.
6824
6825 @item 0mode
6826 @item 1mode
6827 @item 2mode
6828 @item 3mode
6829 Set matrix mode for each plane. Can be @var{square}, @var{row} or @var{column}.
6830 Default is @var{square}.
6831 @end table
6832
6833 @subsection Examples
6834
6835 @itemize
6836 @item
6837 Apply sharpen:
6838 @example
6839 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"
6840 @end example
6841
6842 @item
6843 Apply blur:
6844 @example
6845 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"
6846 @end example
6847
6848 @item
6849 Apply edge enhance:
6850 @example
6851 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"
6852 @end example
6853
6854 @item
6855 Apply edge detect:
6856 @example
6857 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"
6858 @end example
6859
6860 @item
6861 Apply laplacian edge detector which includes diagonals:
6862 @example
6863 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"
6864 @end example
6865
6866 @item
6867 Apply emboss:
6868 @example
6869 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"
6870 @end example
6871 @end itemize
6872
6873 @section convolve
6874
6875 Apply 2D convolution of video stream in frequency domain using second stream
6876 as impulse.
6877
6878 The filter accepts the following options:
6879
6880 @table @option
6881 @item planes
6882 Set which planes to process.
6883
6884 @item impulse
6885 Set which impulse video frames will be processed, can be @var{first}
6886 or @var{all}. Default is @var{all}.
6887 @end table
6888
6889 The @code{convolve} filter also supports the @ref{framesync} options.
6890
6891 @section copy
6892
6893 Copy the input video source unchanged to the output. This is mainly useful for
6894 testing purposes.
6895
6896 @anchor{coreimage}
6897 @section coreimage
6898 Video filtering on GPU using Apple's CoreImage API on OSX.
6899
6900 Hardware acceleration is based on an OpenGL context. Usually, this means it is
6901 processed by video hardware. However, software-based OpenGL implementations
6902 exist which means there is no guarantee for hardware processing. It depends on
6903 the respective OSX.
6904
6905 There are many filters and image generators provided by Apple that come with a
6906 large variety of options. The filter has to be referenced by its name along
6907 with its options.
6908
6909 The coreimage filter accepts the following options:
6910 @table @option
6911 @item list_filters
6912 List all available filters and generators along with all their respective
6913 options as well as possible minimum and maximum values along with the default
6914 values.
6915 @example
6916 list_filters=true
6917 @end example
6918
6919 @item filter
6920 Specify all filters by their respective name and options.
6921 Use @var{list_filters} to determine all valid filter names and options.
6922 Numerical options are specified by a float value and are automatically clamped
6923 to their respective value range.  Vector and color options have to be specified
6924 by a list of space separated float values. Character escaping has to be done.
6925 A special option name @code{default} is available to use default options for a
6926 filter.
6927
6928 It is required to specify either @code{default} or at least one of the filter options.
6929 All omitted options are used with their default values.
6930 The syntax of the filter string is as follows:
6931 @example
6932 filter=<NAME>@@<OPTION>=<VALUE>[@@<OPTION>=<VALUE>][@@...][#<NAME>@@<OPTION>=<VALUE>[@@<OPTION>=<VALUE>][@@...]][#...]
6933 @end example
6934
6935 @item output_rect
6936 Specify a rectangle where the output of the filter chain is copied into the
6937 input image. It is given by a list of space separated float values:
6938 @example
6939 output_rect=x\ y\ width\ height
6940 @end example
6941 If not given, the output rectangle equals the dimensions of the input image.
6942 The output rectangle is automatically cropped at the borders of the input
6943 image. Negative values are valid for each component.
6944 @example
6945 output_rect=25\ 25\ 100\ 100
6946 @end example
6947 @end table
6948
6949 Several filters can be chained for successive processing without GPU-HOST
6950 transfers allowing for fast processing of complex filter chains.
6951 Currently, only filters with zero (generators) or exactly one (filters) input
6952 image and one output image are supported. Also, transition filters are not yet
6953 usable as intended.
6954
6955 Some filters generate output images with additional padding depending on the
6956 respective filter kernel. The padding is automatically removed to ensure the
6957 filter output has the same size as the input image.
6958
6959 For image generators, the size of the output image is determined by the
6960 previous output image of the filter chain or the input image of the whole
6961 filterchain, respectively. The generators do not use the pixel information of
6962 this image to generate their output. However, the generated output is
6963 blended onto this image, resulting in partial or complete coverage of the
6964 output image.
6965
6966 The @ref{coreimagesrc} video source can be used for generating input images
6967 which are directly fed into the filter chain. By using it, providing input
6968 images by another video source or an input video is not required.
6969
6970 @subsection Examples
6971
6972 @itemize
6973
6974 @item
6975 List all filters available:
6976 @example
6977 coreimage=list_filters=true
6978 @end example
6979
6980 @item
6981 Use the CIBoxBlur filter with default options to blur an image:
6982 @example
6983 coreimage=filter=CIBoxBlur@@default
6984 @end example
6985
6986 @item
6987 Use a filter chain with CISepiaTone at default values and CIVignetteEffect with
6988 its center at 100x100 and a radius of 50 pixels:
6989 @example
6990 coreimage=filter=CIBoxBlur@@default#CIVignetteEffect@@inputCenter=100\ 100@@inputRadius=50
6991 @end example
6992
6993 @item
6994 Use nullsrc and CIQRCodeGenerator to create a QR code for the FFmpeg homepage,
6995 given as complete and escaped command-line for Apple's standard bash shell:
6996 @example
6997 ffmpeg -f lavfi -i nullsrc=s=100x100,coreimage=filter=CIQRCodeGenerator@@inputMessage=https\\\\\://FFmpeg.org/@@inputCorrectionLevel=H -frames:v 1 QRCode.png
6998 @end example
6999 @end itemize
7000
7001 @section crop
7002
7003 Crop the input video to given dimensions.
7004
7005 It accepts the following parameters:
7006
7007 @table @option
7008 @item w, out_w
7009 The width of the output video. It defaults to @code{iw}.
7010 This expression is evaluated only once during the filter
7011 configuration, or when the @samp{w} or @samp{out_w} command is sent.
7012
7013 @item h, out_h
7014 The height of the output video. It defaults to @code{ih}.
7015 This expression is evaluated only once during the filter
7016 configuration, or when the @samp{h} or @samp{out_h} command is sent.
7017
7018 @item x
7019 The horizontal position, in the input video, of the left edge of the output
7020 video. It defaults to @code{(in_w-out_w)/2}.
7021 This expression is evaluated per-frame.
7022
7023 @item y
7024 The vertical position, in the input video, of the top edge of the output video.
7025 It defaults to @code{(in_h-out_h)/2}.
7026 This expression is evaluated per-frame.
7027
7028 @item keep_aspect
7029 If set to 1 will force the output display aspect ratio
7030 to be the same of the input, by changing the output sample aspect
7031 ratio. It defaults to 0.
7032
7033 @item exact
7034 Enable exact cropping. If enabled, subsampled videos will be cropped at exact
7035 width/height/x/y as specified and will not be rounded to nearest smaller value.
7036 It defaults to 0.
7037 @end table
7038
7039 The @var{out_w}, @var{out_h}, @var{x}, @var{y} parameters are
7040 expressions containing the following constants:
7041
7042 @table @option
7043 @item x
7044 @item y
7045 The computed values for @var{x} and @var{y}. They are evaluated for
7046 each new frame.
7047
7048 @item in_w
7049 @item in_h
7050 The input width and height.
7051
7052 @item iw
7053 @item ih
7054 These are the same as @var{in_w} and @var{in_h}.
7055
7056 @item out_w
7057 @item out_h
7058 The output (cropped) width and height.
7059
7060 @item ow
7061 @item oh
7062 These are the same as @var{out_w} and @var{out_h}.
7063
7064 @item a
7065 same as @var{iw} / @var{ih}
7066
7067 @item sar
7068 input sample aspect ratio
7069
7070 @item dar
7071 input display aspect ratio, it is the same as (@var{iw} / @var{ih}) * @var{sar}
7072
7073 @item hsub
7074 @item vsub
7075 horizontal and vertical chroma subsample values. For example for the
7076 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
7077
7078 @item n
7079 The number of the input frame, starting from 0.
7080
7081 @item pos
7082 the position in the file of the input frame, NAN if unknown
7083
7084 @item t
7085 The timestamp expressed in seconds. It's NAN if the input timestamp is unknown.
7086
7087 @end table
7088
7089 The expression for @var{out_w} may depend on the value of @var{out_h},
7090 and the expression for @var{out_h} may depend on @var{out_w}, but they
7091 cannot depend on @var{x} and @var{y}, as @var{x} and @var{y} are
7092 evaluated after @var{out_w} and @var{out_h}.
7093
7094 The @var{x} and @var{y} parameters specify the expressions for the
7095 position of the top-left corner of the output (non-cropped) area. They
7096 are evaluated for each frame. If the evaluated value is not valid, it
7097 is approximated to the nearest valid value.
7098
7099 The expression for @var{x} may depend on @var{y}, and the expression
7100 for @var{y} may depend on @var{x}.
7101
7102 @subsection Examples
7103
7104 @itemize
7105 @item
7106 Crop area with size 100x100 at position (12,34).
7107 @example
7108 crop=100:100:12:34
7109 @end example
7110
7111 Using named options, the example above becomes:
7112 @example
7113 crop=w=100:h=100:x=12:y=34
7114 @end example
7115
7116 @item
7117 Crop the central input area with size 100x100:
7118 @example
7119 crop=100:100
7120 @end example
7121
7122 @item
7123 Crop the central input area with size 2/3 of the input video:
7124 @example
7125 crop=2/3*in_w:2/3*in_h
7126 @end example
7127
7128 @item
7129 Crop the input video central square:
7130 @example
7131 crop=out_w=in_h
7132 crop=in_h
7133 @end example
7134
7135 @item
7136 Delimit the rectangle with the top-left corner placed at position
7137 100:100 and the right-bottom corner corresponding to the right-bottom
7138 corner of the input image.
7139 @example
7140 crop=in_w-100:in_h-100:100:100
7141 @end example
7142
7143 @item
7144 Crop 10 pixels from the left and right borders, and 20 pixels from
7145 the top and bottom borders
7146 @example
7147 crop=in_w-2*10:in_h-2*20
7148 @end example
7149
7150 @item
7151 Keep only the bottom right quarter of the input image:
7152 @example
7153 crop=in_w/2:in_h/2:in_w/2:in_h/2
7154 @end example
7155
7156 @item
7157 Crop height for getting Greek harmony:
7158 @example
7159 crop=in_w:1/PHI*in_w
7160 @end example
7161
7162 @item
7163 Apply trembling effect:
7164 @example
7165 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)
7166 @end example
7167
7168 @item
7169 Apply erratic camera effect depending on timestamp:
7170 @example
7171 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)"
7172 @end example
7173
7174 @item
7175 Set x depending on the value of y:
7176 @example
7177 crop=in_w/2:in_h/2:y:10+10*sin(n/10)
7178 @end example
7179 @end itemize
7180
7181 @subsection Commands
7182
7183 This filter supports the following commands:
7184 @table @option
7185 @item w, out_w
7186 @item h, out_h
7187 @item x
7188 @item y
7189 Set width/height of the output video and the horizontal/vertical position
7190 in the input video.
7191 The command accepts the same syntax of the corresponding option.
7192
7193 If the specified expression is not valid, it is kept at its current
7194 value.
7195 @end table
7196
7197 @section cropdetect
7198
7199 Auto-detect the crop size.
7200
7201 It calculates the necessary cropping parameters and prints the
7202 recommended parameters via the logging system. The detected dimensions
7203 correspond to the non-black area of the input video.
7204
7205 It accepts the following parameters:
7206
7207 @table @option
7208
7209 @item limit
7210 Set higher black value threshold, which can be optionally specified
7211 from nothing (0) to everything (255 for 8-bit based formats). An intensity
7212 value greater to the set value is considered non-black. It defaults to 24.
7213 You can also specify a value between 0.0 and 1.0 which will be scaled depending
7214 on the bitdepth of the pixel format.
7215
7216 @item round
7217 The value which the width/height should be divisible by. It defaults to
7218 16. The offset is automatically adjusted to center the video. Use 2 to
7219 get only even dimensions (needed for 4:2:2 video). 16 is best when
7220 encoding to most video codecs.
7221
7222 @item reset_count, reset
7223 Set the counter that determines after how many frames cropdetect will
7224 reset the previously detected largest video area and start over to
7225 detect the current optimal crop area. Default value is 0.
7226
7227 This can be useful when channel logos distort the video area. 0
7228 indicates 'never reset', and returns the largest area encountered during
7229 playback.
7230 @end table
7231
7232 @anchor{cue}
7233 @section cue
7234
7235 Delay video filtering until a given wallclock timestamp. The filter first
7236 passes on @option{preroll} amount of frames, then it buffers at most
7237 @option{buffer} amount of frames and waits for the cue. After reaching the cue
7238 it forwards the buffered frames and also any subsequent frames coming in its
7239 input.
7240
7241 The filter can be used synchronize the output of multiple ffmpeg processes for
7242 realtime output devices like decklink. By putting the delay in the filtering
7243 chain and pre-buffering frames the process can pass on data to output almost
7244 immediately after the target wallclock timestamp is reached.
7245
7246 Perfect frame accuracy cannot be guaranteed, but the result is good enough for
7247 some use cases.
7248
7249 @table @option
7250
7251 @item cue
7252 The cue timestamp expressed in a UNIX timestamp in microseconds. Default is 0.
7253
7254 @item preroll
7255 The duration of content to pass on as preroll expressed in seconds. Default is 0.
7256
7257 @item buffer
7258 The maximum duration of content to buffer before waiting for the cue expressed
7259 in seconds. Default is 0.
7260
7261 @end table
7262
7263 @anchor{curves}
7264 @section curves
7265
7266 Apply color adjustments using curves.
7267
7268 This filter is similar to the Adobe Photoshop and GIMP curves tools. Each
7269 component (red, green and blue) has its values defined by @var{N} key points
7270 tied from each other using a smooth curve. The x-axis represents the pixel
7271 values from the input frame, and the y-axis the new pixel values to be set for
7272 the output frame.
7273
7274 By default, a component curve is defined by the two points @var{(0;0)} and
7275 @var{(1;1)}. This creates a straight line where each original pixel value is
7276 "adjusted" to its own value, which means no change to the image.
7277
7278 The filter allows you to redefine these two points and add some more. A new
7279 curve (using a natural cubic spline interpolation) will be define to pass
7280 smoothly through all these new coordinates. The new defined points needs to be
7281 strictly increasing over the x-axis, and their @var{x} and @var{y} values must
7282 be in the @var{[0;1]} interval.  If the computed curves happened to go outside
7283 the vector spaces, the values will be clipped accordingly.
7284
7285 The filter accepts the following options:
7286
7287 @table @option
7288 @item preset
7289 Select one of the available color presets. This option can be used in addition
7290 to the @option{r}, @option{g}, @option{b} parameters; in this case, the later
7291 options takes priority on the preset values.
7292 Available presets are:
7293 @table @samp
7294 @item none
7295 @item color_negative
7296 @item cross_process
7297 @item darker
7298 @item increase_contrast
7299 @item lighter
7300 @item linear_contrast
7301 @item medium_contrast
7302 @item negative
7303 @item strong_contrast
7304 @item vintage
7305 @end table
7306 Default is @code{none}.
7307 @item master, m
7308 Set the master key points. These points will define a second pass mapping. It
7309 is sometimes called a "luminance" or "value" mapping. It can be used with
7310 @option{r}, @option{g}, @option{b} or @option{all} since it acts like a
7311 post-processing LUT.
7312 @item red, r
7313 Set the key points for the red component.
7314 @item green, g
7315 Set the key points for the green component.
7316 @item blue, b
7317 Set the key points for the blue component.
7318 @item all
7319 Set the key points for all components (not including master).
7320 Can be used in addition to the other key points component
7321 options. In this case, the unset component(s) will fallback on this
7322 @option{all} setting.
7323 @item psfile
7324 Specify a Photoshop curves file (@code{.acv}) to import the settings from.
7325 @item plot
7326 Save Gnuplot script of the curves in specified file.
7327 @end table
7328
7329 To avoid some filtergraph syntax conflicts, each key points list need to be
7330 defined using the following syntax: @code{x0/y0 x1/y1 x2/y2 ...}.
7331
7332 @subsection Examples
7333
7334 @itemize
7335 @item
7336 Increase slightly the middle level of blue:
7337 @example
7338 curves=blue='0/0 0.5/0.58 1/1'
7339 @end example
7340
7341 @item
7342 Vintage effect:
7343 @example
7344 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'
7345 @end example
7346 Here we obtain the following coordinates for each components:
7347 @table @var
7348 @item red
7349 @code{(0;0.11) (0.42;0.51) (1;0.95)}
7350 @item green
7351 @code{(0;0) (0.50;0.48) (1;1)}
7352 @item blue
7353 @code{(0;0.22) (0.49;0.44) (1;0.80)}
7354 @end table
7355
7356 @item
7357 The previous example can also be achieved with the associated built-in preset:
7358 @example
7359 curves=preset=vintage
7360 @end example
7361
7362 @item
7363 Or simply:
7364 @example
7365 curves=vintage
7366 @end example
7367
7368 @item
7369 Use a Photoshop preset and redefine the points of the green component:
7370 @example
7371 curves=psfile='MyCurvesPresets/purple.acv':green='0/0 0.45/0.53 1/1'
7372 @end example
7373
7374 @item
7375 Check out the curves of the @code{cross_process} profile using @command{ffmpeg}
7376 and @command{gnuplot}:
7377 @example
7378 ffmpeg -f lavfi -i color -vf curves=cross_process:plot=/tmp/curves.plt -frames:v 1 -f null -
7379 gnuplot -p /tmp/curves.plt
7380 @end example
7381 @end itemize
7382
7383 @section datascope
7384
7385 Video data analysis filter.
7386
7387 This filter shows hexadecimal pixel values of part of video.
7388
7389 The filter accepts the following options:
7390
7391 @table @option
7392 @item size, s
7393 Set output video size.
7394
7395 @item x
7396 Set x offset from where to pick pixels.
7397
7398 @item y
7399 Set y offset from where to pick pixels.
7400
7401 @item mode
7402 Set scope mode, can be one of the following:
7403 @table @samp
7404 @item mono
7405 Draw hexadecimal pixel values with white color on black background.
7406
7407 @item color
7408 Draw hexadecimal pixel values with input video pixel color on black
7409 background.
7410
7411 @item color2
7412 Draw hexadecimal pixel values on color background picked from input video,
7413 the text color is picked in such way so its always visible.
7414 @end table
7415
7416 @item axis
7417 Draw rows and columns numbers on left and top of video.
7418
7419 @item opacity
7420 Set background opacity.
7421 @end table
7422
7423 @section dctdnoiz
7424
7425 Denoise frames using 2D DCT (frequency domain filtering).
7426
7427 This filter is not designed for real time.
7428
7429 The filter accepts the following options:
7430
7431 @table @option
7432 @item sigma, s
7433 Set the noise sigma constant.
7434
7435 This @var{sigma} defines a hard threshold of @code{3 * sigma}; every DCT
7436 coefficient (absolute value) below this threshold with be dropped.
7437
7438 If you need a more advanced filtering, see @option{expr}.
7439
7440 Default is @code{0}.
7441
7442 @item overlap
7443 Set number overlapping pixels for each block. Since the filter can be slow, you
7444 may want to reduce this value, at the cost of a less effective filter and the
7445 risk of various artefacts.
7446
7447 If the overlapping value doesn't permit processing the whole input width or
7448 height, a warning will be displayed and according borders won't be denoised.
7449
7450 Default value is @var{blocksize}-1, which is the best possible setting.
7451
7452 @item expr, e
7453 Set the coefficient factor expression.
7454
7455 For each coefficient of a DCT block, this expression will be evaluated as a
7456 multiplier value for the coefficient.
7457
7458 If this is option is set, the @option{sigma} option will be ignored.
7459
7460 The absolute value of the coefficient can be accessed through the @var{c}
7461 variable.
7462
7463 @item n
7464 Set the @var{blocksize} using the number of bits. @code{1<<@var{n}} defines the
7465 @var{blocksize}, which is the width and height of the processed blocks.
7466
7467 The default value is @var{3} (8x8) and can be raised to @var{4} for a
7468 @var{blocksize} of 16x16. Note that changing this setting has huge consequences
7469 on the speed processing. Also, a larger block size does not necessarily means a
7470 better de-noising.
7471 @end table
7472
7473 @subsection Examples
7474
7475 Apply a denoise with a @option{sigma} of @code{4.5}:
7476 @example
7477 dctdnoiz=4.5
7478 @end example
7479
7480 The same operation can be achieved using the expression system:
7481 @example
7482 dctdnoiz=e='gte(c, 4.5*3)'
7483 @end example
7484
7485 Violent denoise using a block size of @code{16x16}:
7486 @example
7487 dctdnoiz=15:n=4
7488 @end example
7489
7490 @section deband
7491
7492 Remove banding artifacts from input video.
7493 It works by replacing banded pixels with average value of referenced pixels.
7494
7495 The filter accepts the following options:
7496
7497 @table @option
7498 @item 1thr
7499 @item 2thr
7500 @item 3thr
7501 @item 4thr
7502 Set banding detection threshold for each plane. Default is 0.02.
7503 Valid range is 0.00003 to 0.5.
7504 If difference between current pixel and reference pixel is less than threshold,
7505 it will be considered as banded.
7506
7507 @item range, r
7508 Banding detection range in pixels. Default is 16. If positive, random number
7509 in range 0 to set value will be used. If negative, exact absolute value
7510 will be used.
7511 The range defines square of four pixels around current pixel.
7512
7513 @item direction, d
7514 Set direction in radians from which four pixel will be compared. If positive,
7515 random direction from 0 to set direction will be picked. If negative, exact of
7516 absolute value will be picked. For example direction 0, -PI or -2*PI radians
7517 will pick only pixels on same row and -PI/2 will pick only pixels on same
7518 column.
7519
7520 @item blur, b
7521 If enabled, current pixel is compared with average value of all four
7522 surrounding pixels. The default is enabled. If disabled current pixel is
7523 compared with all four surrounding pixels. The pixel is considered banded
7524 if only all four differences with surrounding pixels are less than threshold.
7525
7526 @item coupling, c
7527 If enabled, current pixel is changed if and only if all pixel components are banded,
7528 e.g. banding detection threshold is triggered for all color components.
7529 The default is disabled.
7530 @end table
7531
7532 @section deblock
7533
7534 Remove blocking artifacts from input video.
7535
7536 The filter accepts the following options:
7537
7538 @table @option
7539 @item filter
7540 Set filter type, can be @var{weak} or @var{strong}. Default is @var{strong}.
7541 This controls what kind of deblocking is applied.
7542
7543 @item block
7544 Set size of block, allowed range is from 4 to 512. Default is @var{8}.
7545
7546 @item alpha
7547 @item beta
7548 @item gamma
7549 @item delta
7550 Set blocking detection thresholds. Allowed range is 0 to 1.
7551 Defaults are: @var{0.098} for @var{alpha} and @var{0.05} for the rest.
7552 Using higher threshold gives more deblocking strength.
7553 Setting @var{alpha} controls threshold detection at exact edge of block.
7554 Remaining options controls threshold detection near the edge. Each one for
7555 below/above or left/right. Setting any of those to @var{0} disables
7556 deblocking.
7557
7558 @item planes
7559 Set planes to filter. Default is to filter all available planes.
7560 @end table
7561
7562 @subsection Examples
7563
7564 @itemize
7565 @item
7566 Deblock using weak filter and block size of 4 pixels.
7567 @example
7568 deblock=filter=weak:block=4
7569 @end example
7570
7571 @item
7572 Deblock using strong filter, block size of 4 pixels and custom thresholds for
7573 deblocking more edges.
7574 @example
7575 deblock=filter=strong:block=4:alpha=0.12:beta=0.07:gamma=0.06:delta=0.05
7576 @end example
7577
7578 @item
7579 Similar as above, but filter only first plane.
7580 @example
7581 deblock=filter=strong:block=4:alpha=0.12:beta=0.07:gamma=0.06:delta=0.05:planes=1
7582 @end example
7583
7584 @item
7585 Similar as above, but filter only second and third plane.
7586 @example
7587 deblock=filter=strong:block=4:alpha=0.12:beta=0.07:gamma=0.06:delta=0.05:planes=6
7588 @end example
7589 @end itemize
7590
7591 @anchor{decimate}
7592 @section decimate
7593
7594 Drop duplicated frames at regular intervals.
7595
7596 The filter accepts the following options:
7597
7598 @table @option
7599 @item cycle
7600 Set the number of frames from which one will be dropped. Setting this to
7601 @var{N} means one frame in every batch of @var{N} frames will be dropped.
7602 Default is @code{5}.
7603
7604 @item dupthresh
7605 Set the threshold for duplicate detection. If the difference metric for a frame
7606 is less than or equal to this value, then it is declared as duplicate. Default
7607 is @code{1.1}
7608
7609 @item scthresh
7610 Set scene change threshold. Default is @code{15}.
7611
7612 @item blockx
7613 @item blocky
7614 Set the size of the x and y-axis blocks used during metric calculations.
7615 Larger blocks give better noise suppression, but also give worse detection of
7616 small movements. Must be a power of two. Default is @code{32}.
7617
7618 @item ppsrc
7619 Mark main input as a pre-processed input and activate clean source input
7620 stream. This allows the input to be pre-processed with various filters to help
7621 the metrics calculation while keeping the frame selection lossless. When set to
7622 @code{1}, the first stream is for the pre-processed input, and the second
7623 stream is the clean source from where the kept frames are chosen. Default is
7624 @code{0}.
7625
7626 @item chroma
7627 Set whether or not chroma is considered in the metric calculations. Default is
7628 @code{1}.
7629 @end table
7630
7631 @section deconvolve
7632
7633 Apply 2D deconvolution of video stream in frequency domain using second stream
7634 as impulse.
7635
7636 The filter accepts the following options:
7637
7638 @table @option
7639 @item planes
7640 Set which planes to process.
7641
7642 @item impulse
7643 Set which impulse video frames will be processed, can be @var{first}
7644 or @var{all}. Default is @var{all}.
7645
7646 @item noise
7647 Set noise when doing divisions. Default is @var{0.0000001}. Useful when width
7648 and height are not same and not power of 2 or if stream prior to convolving
7649 had noise.
7650 @end table
7651
7652 The @code{deconvolve} filter also supports the @ref{framesync} options.
7653
7654 @section deflate
7655
7656 Apply deflate effect to the video.
7657
7658 This filter replaces the pixel by the local(3x3) average by taking into account
7659 only values lower than the pixel.
7660
7661 It accepts the following options:
7662
7663 @table @option
7664 @item threshold0
7665 @item threshold1
7666 @item threshold2
7667 @item threshold3
7668 Limit the maximum change for each plane, default is 65535.
7669 If 0, plane will remain unchanged.
7670 @end table
7671
7672 @section deflicker
7673
7674 Remove temporal frame luminance variations.
7675
7676 It accepts the following options:
7677
7678 @table @option
7679 @item size, s
7680 Set moving-average filter size in frames. Default is 5. Allowed range is 2 - 129.
7681
7682 @item mode, m
7683 Set averaging mode to smooth temporal luminance variations.
7684
7685 Available values are:
7686 @table @samp
7687 @item am
7688 Arithmetic mean
7689
7690 @item gm
7691 Geometric mean
7692
7693 @item hm
7694 Harmonic mean
7695
7696 @item qm
7697 Quadratic mean
7698
7699 @item cm
7700 Cubic mean
7701
7702 @item pm
7703 Power mean
7704
7705 @item median
7706 Median
7707 @end table
7708
7709 @item bypass
7710 Do not actually modify frame. Useful when one only wants metadata.
7711 @end table
7712
7713 @section dejudder
7714
7715 Remove judder produced by partially interlaced telecined content.
7716
7717 Judder can be introduced, for instance, by @ref{pullup} filter. If the original
7718 source was partially telecined content then the output of @code{pullup,dejudder}
7719 will have a variable frame rate. May change the recorded frame rate of the
7720 container. Aside from that change, this filter will not affect constant frame
7721 rate video.
7722
7723 The option available in this filter is:
7724 @table @option
7725
7726 @item cycle
7727 Specify the length of the window over which the judder repeats.
7728
7729 Accepts any integer greater than 1. Useful values are:
7730 @table @samp
7731
7732 @item 4
7733 If the original was telecined from 24 to 30 fps (Film to NTSC).
7734
7735 @item 5
7736 If the original was telecined from 25 to 30 fps (PAL to NTSC).
7737
7738 @item 20
7739 If a mixture of the two.
7740 @end table
7741
7742 The default is @samp{4}.
7743 @end table
7744
7745 @section delogo
7746
7747 Suppress a TV station logo by a simple interpolation of the surrounding
7748 pixels. Just set a rectangle covering the logo and watch it disappear
7749 (and sometimes something even uglier appear - your mileage may vary).
7750
7751 It accepts the following parameters:
7752 @table @option
7753
7754 @item x
7755 @item y
7756 Specify the top left corner coordinates of the logo. They must be
7757 specified.
7758
7759 @item w
7760 @item h
7761 Specify the width and height of the logo to clear. They must be
7762 specified.
7763
7764 @item band, t
7765 Specify the thickness of the fuzzy edge of the rectangle (added to
7766 @var{w} and @var{h}). The default value is 1. This option is
7767 deprecated, setting higher values should no longer be necessary and
7768 is not recommended.
7769
7770 @item show
7771 When set to 1, a green rectangle is drawn on the screen to simplify
7772 finding the right @var{x}, @var{y}, @var{w}, and @var{h} parameters.
7773 The default value is 0.
7774
7775 The rectangle is drawn on the outermost pixels which will be (partly)
7776 replaced with interpolated values. The values of the next pixels
7777 immediately outside this rectangle in each direction will be used to
7778 compute the interpolated pixel values inside the rectangle.
7779
7780 @end table
7781
7782 @subsection Examples
7783
7784 @itemize
7785 @item
7786 Set a rectangle covering the area with top left corner coordinates 0,0
7787 and size 100x77, and a band of size 10:
7788 @example
7789 delogo=x=0:y=0:w=100:h=77:band=10
7790 @end example
7791
7792 @end itemize
7793
7794 @section deshake
7795
7796 Attempt to fix small changes in horizontal and/or vertical shift. This
7797 filter helps remove camera shake from hand-holding a camera, bumping a
7798 tripod, moving on a vehicle, etc.
7799
7800 The filter accepts the following options:
7801
7802 @table @option
7803
7804 @item x
7805 @item y
7806 @item w
7807 @item h
7808 Specify a rectangular area where to limit the search for motion
7809 vectors.
7810 If desired the search for motion vectors can be limited to a
7811 rectangular area of the frame defined by its top left corner, width
7812 and height. These parameters have the same meaning as the drawbox
7813 filter which can be used to visualise the position of the bounding
7814 box.
7815
7816 This is useful when simultaneous movement of subjects within the frame
7817 might be confused for camera motion by the motion vector search.
7818
7819 If any or all of @var{x}, @var{y}, @var{w} and @var{h} are set to -1
7820 then the full frame is used. This allows later options to be set
7821 without specifying the bounding box for the motion vector search.
7822
7823 Default - search the whole frame.
7824
7825 @item rx
7826 @item ry
7827 Specify the maximum extent of movement in x and y directions in the
7828 range 0-64 pixels. Default 16.
7829
7830 @item edge
7831 Specify how to generate pixels to fill blanks at the edge of the
7832 frame. Available values are:
7833 @table @samp
7834 @item blank, 0
7835 Fill zeroes at blank locations
7836 @item original, 1
7837 Original image at blank locations
7838 @item clamp, 2
7839 Extruded edge value at blank locations
7840 @item mirror, 3
7841 Mirrored edge at blank locations
7842 @end table
7843 Default value is @samp{mirror}.
7844
7845 @item blocksize
7846 Specify the blocksize to use for motion search. Range 4-128 pixels,
7847 default 8.
7848
7849 @item contrast
7850 Specify the contrast threshold for blocks. Only blocks with more than
7851 the specified contrast (difference between darkest and lightest
7852 pixels) will be considered. Range 1-255, default 125.
7853
7854 @item search
7855 Specify the search strategy. Available values are:
7856 @table @samp
7857 @item exhaustive, 0
7858 Set exhaustive search
7859 @item less, 1
7860 Set less exhaustive search.
7861 @end table
7862 Default value is @samp{exhaustive}.
7863
7864 @item filename
7865 If set then a detailed log of the motion search is written to the
7866 specified file.
7867
7868 @end table
7869
7870 @section despill
7871
7872 Remove unwanted contamination of foreground colors, caused by reflected color of
7873 greenscreen or bluescreen.
7874
7875 This filter accepts the following options:
7876
7877 @table @option
7878 @item type
7879 Set what type of despill to use.
7880
7881 @item mix
7882 Set how spillmap will be generated.
7883
7884 @item expand
7885 Set how much to get rid of still remaining spill.
7886
7887 @item red
7888 Controls amount of red in spill area.
7889
7890 @item green
7891 Controls amount of green in spill area.
7892 Should be -1 for greenscreen.
7893
7894 @item blue
7895 Controls amount of blue in spill area.
7896 Should be -1 for bluescreen.
7897
7898 @item brightness
7899 Controls brightness of spill area, preserving colors.
7900
7901 @item alpha
7902 Modify alpha from generated spillmap.
7903 @end table
7904
7905 @section detelecine
7906
7907 Apply an exact inverse of the telecine operation. It requires a predefined
7908 pattern specified using the pattern option which must be the same as that passed
7909 to the telecine filter.
7910
7911 This filter accepts the following options:
7912
7913 @table @option
7914 @item first_field
7915 @table @samp
7916 @item top, t
7917 top field first
7918 @item bottom, b
7919 bottom field first
7920 The default value is @code{top}.
7921 @end table
7922
7923 @item pattern
7924 A string of numbers representing the pulldown pattern you wish to apply.
7925 The default value is @code{23}.
7926
7927 @item start_frame
7928 A number representing position of the first frame with respect to the telecine
7929 pattern. This is to be used if the stream is cut. The default value is @code{0}.
7930 @end table
7931
7932 @section dilation
7933
7934 Apply dilation effect to the video.
7935
7936 This filter replaces the pixel by the local(3x3) maximum.
7937
7938 It accepts the following options:
7939
7940 @table @option
7941 @item threshold0
7942 @item threshold1
7943 @item threshold2
7944 @item threshold3
7945 Limit the maximum change for each plane, default is 65535.
7946 If 0, plane will remain unchanged.
7947
7948 @item coordinates
7949 Flag which specifies the pixel to refer to. Default is 255 i.e. all eight
7950 pixels are used.
7951
7952 Flags to local 3x3 coordinates maps like this:
7953
7954     1 2 3
7955     4   5
7956     6 7 8
7957 @end table
7958
7959 @section displace
7960
7961 Displace pixels as indicated by second and third input stream.
7962
7963 It takes three input streams and outputs one stream, the first input is the
7964 source, and second and third input are displacement maps.
7965
7966 The second input specifies how much to displace pixels along the
7967 x-axis, while the third input specifies how much to displace pixels
7968 along the y-axis.
7969 If one of displacement map streams terminates, last frame from that
7970 displacement map will be used.
7971
7972 Note that once generated, displacements maps can be reused over and over again.
7973
7974 A description of the accepted options follows.
7975
7976 @table @option
7977 @item edge
7978 Set displace behavior for pixels that are out of range.
7979
7980 Available values are:
7981 @table @samp
7982 @item blank
7983 Missing pixels are replaced by black pixels.
7984
7985 @item smear
7986 Adjacent pixels will spread out to replace missing pixels.
7987
7988 @item wrap
7989 Out of range pixels are wrapped so they point to pixels of other side.
7990
7991 @item mirror
7992 Out of range pixels will be replaced with mirrored pixels.
7993 @end table
7994 Default is @samp{smear}.
7995
7996 @end table
7997
7998 @subsection Examples
7999
8000 @itemize
8001 @item
8002 Add ripple effect to rgb input of video size hd720:
8003 @example
8004 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
8005 @end example
8006
8007 @item
8008 Add wave effect to rgb input of video size hd720:
8009 @example
8010 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
8011 @end example
8012 @end itemize
8013
8014 @section drawbox
8015
8016 Draw a colored box on the input image.
8017
8018 It accepts the following parameters:
8019
8020 @table @option
8021 @item x
8022 @item y
8023 The expressions which specify the top left corner coordinates of the box. It defaults to 0.
8024
8025 @item width, w
8026 @item height, h
8027 The expressions which specify the width and height of the box; if 0 they are interpreted as
8028 the input width and height. It defaults to 0.
8029
8030 @item color, c
8031 Specify the color of the box to write. For the general syntax of this option,
8032 check the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}. If the special
8033 value @code{invert} is used, the box edge color is the same as the
8034 video with inverted luma.
8035
8036 @item thickness, t
8037 The expression which sets the thickness of the box edge.
8038 A value of @code{fill} will create a filled box. Default value is @code{3}.
8039
8040 See below for the list of accepted constants.
8041
8042 @item replace
8043 Applicable if the input has alpha. With value @code{1}, the pixels of the painted box
8044 will overwrite the video's color and alpha pixels.
8045 Default is @code{0}, which composites the box onto the input, leaving the video's alpha intact.
8046 @end table
8047
8048 The parameters for @var{x}, @var{y}, @var{w} and @var{h} and @var{t} are expressions containing the
8049 following constants:
8050
8051 @table @option
8052 @item dar
8053 The input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}.
8054
8055 @item hsub
8056 @item vsub
8057 horizontal and vertical chroma subsample values. For example for the
8058 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
8059
8060 @item in_h, ih
8061 @item in_w, iw
8062 The input width and height.
8063
8064 @item sar
8065 The input sample aspect ratio.
8066
8067 @item x
8068 @item y
8069 The x and y offset coordinates where the box is drawn.
8070
8071 @item w
8072 @item h
8073 The width and height of the drawn box.
8074
8075 @item t
8076 The thickness of the drawn box.
8077
8078 These constants allow the @var{x}, @var{y}, @var{w}, @var{h} and @var{t} expressions to refer to
8079 each other, so you may for example specify @code{y=x/dar} or @code{h=w/dar}.
8080
8081 @end table
8082
8083 @subsection Examples
8084
8085 @itemize
8086 @item
8087 Draw a black box around the edge of the input image:
8088 @example
8089 drawbox
8090 @end example
8091
8092 @item
8093 Draw a box with color red and an opacity of 50%:
8094 @example
8095 drawbox=10:20:200:60:red@@0.5
8096 @end example
8097
8098 The previous example can be specified as:
8099 @example
8100 drawbox=x=10:y=20:w=200:h=60:color=red@@0.5
8101 @end example
8102
8103 @item
8104 Fill the box with pink color:
8105 @example
8106 drawbox=x=10:y=10:w=100:h=100:color=pink@@0.5:t=fill
8107 @end example
8108
8109 @item
8110 Draw a 2-pixel red 2.40:1 mask:
8111 @example
8112 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
8113 @end example
8114 @end itemize
8115
8116 @section drawgrid
8117
8118 Draw a grid on the input image.
8119
8120 It accepts the following parameters:
8121
8122 @table @option
8123 @item x
8124 @item y
8125 The expressions which specify the coordinates of some point of grid intersection (meant to configure offset). Both default to 0.
8126
8127 @item width, w
8128 @item height, h
8129 The expressions which specify the width and height of the grid cell, if 0 they are interpreted as the
8130 input width and height, respectively, minus @code{thickness}, so image gets
8131 framed. Default to 0.
8132
8133 @item color, c
8134 Specify the color of the grid. For the general syntax of this option,
8135 check the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}. If the special
8136 value @code{invert} is used, the grid color is the same as the
8137 video with inverted luma.
8138
8139 @item thickness, t
8140 The expression which sets the thickness of the grid line. Default value is @code{1}.
8141
8142 See below for the list of accepted constants.
8143
8144 @item replace
8145 Applicable if the input has alpha. With @code{1} the pixels of the painted grid
8146 will overwrite the video's color and alpha pixels.
8147 Default is @code{0}, which composites the grid onto the input, leaving the video's alpha intact.
8148 @end table
8149
8150 The parameters for @var{x}, @var{y}, @var{w} and @var{h} and @var{t} are expressions containing the
8151 following constants:
8152
8153 @table @option
8154 @item dar
8155 The input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}.
8156
8157 @item hsub
8158 @item vsub
8159 horizontal and vertical chroma subsample values. For example for the
8160 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
8161
8162 @item in_h, ih
8163 @item in_w, iw
8164 The input grid cell width and height.
8165
8166 @item sar
8167 The input sample aspect ratio.
8168
8169 @item x
8170 @item y
8171 The x and y coordinates of some point of grid intersection (meant to configure offset).
8172
8173 @item w
8174 @item h
8175 The width and height of the drawn cell.
8176
8177 @item t
8178 The thickness of the drawn cell.
8179
8180 These constants allow the @var{x}, @var{y}, @var{w}, @var{h} and @var{t} expressions to refer to
8181 each other, so you may for example specify @code{y=x/dar} or @code{h=w/dar}.
8182
8183 @end table
8184
8185 @subsection Examples
8186
8187 @itemize
8188 @item
8189 Draw a grid with cell 100x100 pixels, thickness 2 pixels, with color red and an opacity of 50%:
8190 @example
8191 drawgrid=width=100:height=100:thickness=2:color=red@@0.5
8192 @end example
8193
8194 @item
8195 Draw a white 3x3 grid with an opacity of 50%:
8196 @example
8197 drawgrid=w=iw/3:h=ih/3:t=2:c=white@@0.5
8198 @end example
8199 @end itemize
8200
8201 @anchor{drawtext}
8202 @section drawtext
8203
8204 Draw a text string or text from a specified file on top of a video, using the
8205 libfreetype library.
8206
8207 To enable compilation of this filter, you need to configure FFmpeg with
8208 @code{--enable-libfreetype}.
8209 To enable default font fallback and the @var{font} option you need to
8210 configure FFmpeg with @code{--enable-libfontconfig}.
8211 To enable the @var{text_shaping} option, you need to configure FFmpeg with
8212 @code{--enable-libfribidi}.
8213
8214 @subsection Syntax
8215
8216 It accepts the following parameters:
8217
8218 @table @option
8219
8220 @item box
8221 Used to draw a box around text using the background color.
8222 The value must be either 1 (enable) or 0 (disable).
8223 The default value of @var{box} is 0.
8224
8225 @item boxborderw
8226 Set the width of the border to be drawn around the box using @var{boxcolor}.
8227 The default value of @var{boxborderw} is 0.
8228
8229 @item boxcolor
8230 The color to be used for drawing box around text. For the syntax of this
8231 option, check the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
8232
8233 The default value of @var{boxcolor} is "white".
8234
8235 @item line_spacing
8236 Set the line spacing in pixels of the border to be drawn around the box using @var{box}.
8237 The default value of @var{line_spacing} is 0.
8238
8239 @item borderw
8240 Set the width of the border to be drawn around the text using @var{bordercolor}.
8241 The default value of @var{borderw} is 0.
8242
8243 @item bordercolor
8244 Set the color to be used for drawing border around text. For the syntax of this
8245 option, check the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
8246
8247 The default value of @var{bordercolor} is "black".
8248
8249 @item expansion
8250 Select how the @var{text} is expanded. Can be either @code{none},
8251 @code{strftime} (deprecated) or
8252 @code{normal} (default). See the @ref{drawtext_expansion, Text expansion} section
8253 below for details.
8254
8255 @item basetime
8256 Set a start time for the count. Value is in microseconds. Only applied
8257 in the deprecated strftime expansion mode. To emulate in normal expansion
8258 mode use the @code{pts} function, supplying the start time (in seconds)
8259 as the second argument.
8260
8261 @item fix_bounds
8262 If true, check and fix text coords to avoid clipping.
8263
8264 @item fontcolor
8265 The color to be used for drawing fonts. For the syntax of this option, check
8266 the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
8267
8268 The default value of @var{fontcolor} is "black".
8269
8270 @item fontcolor_expr
8271 String which is expanded the same way as @var{text} to obtain dynamic
8272 @var{fontcolor} value. By default this option has empty value and is not
8273 processed. When this option is set, it overrides @var{fontcolor} option.
8274
8275 @item font
8276 The font family to be used for drawing text. By default Sans.
8277
8278 @item fontfile
8279 The font file to be used for drawing text. The path must be included.
8280 This parameter is mandatory if the fontconfig support is disabled.
8281
8282 @item alpha
8283 Draw the text applying alpha blending. The value can
8284 be a number between 0.0 and 1.0.
8285 The expression accepts the same variables @var{x, y} as well.
8286 The default value is 1.
8287 Please see @var{fontcolor_expr}.
8288
8289 @item fontsize
8290 The font size to be used for drawing text.
8291 The default value of @var{fontsize} is 16.
8292
8293 @item text_shaping
8294 If set to 1, attempt to shape the text (for example, reverse the order of
8295 right-to-left text and join Arabic characters) before drawing it.
8296 Otherwise, just draw the text exactly as given.
8297 By default 1 (if supported).
8298
8299 @item ft_load_flags
8300 The flags to be used for loading the fonts.
8301
8302 The flags map the corresponding flags supported by libfreetype, and are
8303 a combination of the following values:
8304 @table @var
8305 @item default
8306 @item no_scale
8307 @item no_hinting
8308 @item render
8309 @item no_bitmap
8310 @item vertical_layout
8311 @item force_autohint
8312 @item crop_bitmap
8313 @item pedantic
8314 @item ignore_global_advance_width
8315 @item no_recurse
8316 @item ignore_transform
8317 @item monochrome
8318 @item linear_design
8319 @item no_autohint
8320 @end table
8321
8322 Default value is "default".
8323
8324 For more information consult the documentation for the FT_LOAD_*
8325 libfreetype flags.
8326
8327 @item shadowcolor
8328 The color to be used for drawing a shadow behind the drawn text. For the
8329 syntax of this option, check the @ref{color syntax,,"Color" section in the
8330 ffmpeg-utils manual,ffmpeg-utils}.
8331
8332 The default value of @var{shadowcolor} is "black".
8333
8334 @item shadowx
8335 @item shadowy
8336 The x and y offsets for the text shadow position with respect to the
8337 position of the text. They can be either positive or negative
8338 values. The default value for both is "0".
8339
8340 @item start_number
8341 The starting frame number for the n/frame_num variable. The default value
8342 is "0".
8343
8344 @item tabsize
8345 The size in number of spaces to use for rendering the tab.
8346 Default value is 4.
8347
8348 @item timecode
8349 Set the initial timecode representation in "hh:mm:ss[:;.]ff"
8350 format. It can be used with or without text parameter. @var{timecode_rate}
8351 option must be specified.
8352
8353 @item timecode_rate, rate, r
8354 Set the timecode frame rate (timecode only). Value will be rounded to nearest
8355 integer. Minimum value is "1".
8356 Drop-frame timecode is supported for frame rates 30 & 60.
8357
8358 @item tc24hmax
8359 If set to 1, the output of the timecode option will wrap around at 24 hours.
8360 Default is 0 (disabled).
8361
8362 @item text
8363 The text string to be drawn. The text must be a sequence of UTF-8
8364 encoded characters.
8365 This parameter is mandatory if no file is specified with the parameter
8366 @var{textfile}.
8367
8368 @item textfile
8369 A text file containing text to be drawn. The text must be a sequence
8370 of UTF-8 encoded characters.
8371
8372 This parameter is mandatory if no text string is specified with the
8373 parameter @var{text}.
8374
8375 If both @var{text} and @var{textfile} are specified, an error is thrown.
8376
8377 @item reload
8378 If set to 1, the @var{textfile} will be reloaded before each frame.
8379 Be sure to update it atomically, or it may be read partially, or even fail.
8380
8381 @item x
8382 @item y
8383 The expressions which specify the offsets where text will be drawn
8384 within the video frame. They are relative to the top/left border of the
8385 output image.
8386
8387 The default value of @var{x} and @var{y} is "0".
8388
8389 See below for the list of accepted constants and functions.
8390 @end table
8391
8392 The parameters for @var{x} and @var{y} are expressions containing the
8393 following constants and functions:
8394
8395 @table @option
8396 @item dar
8397 input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}
8398
8399 @item hsub
8400 @item vsub
8401 horizontal and vertical chroma subsample values. For example for the
8402 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
8403
8404 @item line_h, lh
8405 the height of each text line
8406
8407 @item main_h, h, H
8408 the input height
8409
8410 @item main_w, w, W
8411 the input width
8412
8413 @item max_glyph_a, ascent
8414 the maximum distance from the baseline to the highest/upper grid
8415 coordinate used to place a glyph outline point, for all the rendered
8416 glyphs.
8417 It is a positive value, due to the grid's orientation with the Y axis
8418 upwards.
8419
8420 @item max_glyph_d, descent
8421 the maximum distance from the baseline to the lowest grid coordinate
8422 used to place a glyph outline point, for all the rendered glyphs.
8423 This is a negative value, due to the grid's orientation, with the Y axis
8424 upwards.
8425
8426 @item max_glyph_h
8427 maximum glyph height, that is the maximum height for all the glyphs
8428 contained in the rendered text, it is equivalent to @var{ascent} -
8429 @var{descent}.
8430
8431 @item max_glyph_w
8432 maximum glyph width, that is the maximum width for all the glyphs
8433 contained in the rendered text
8434
8435 @item n
8436 the number of input frame, starting from 0
8437
8438 @item rand(min, max)
8439 return a random number included between @var{min} and @var{max}
8440
8441 @item sar
8442 The input sample aspect ratio.
8443
8444 @item t
8445 timestamp expressed in seconds, NAN if the input timestamp is unknown
8446
8447 @item text_h, th
8448 the height of the rendered text
8449
8450 @item text_w, tw
8451 the width of the rendered text
8452
8453 @item x
8454 @item y
8455 the x and y offset coordinates where the text is drawn.
8456
8457 These parameters allow the @var{x} and @var{y} expressions to refer
8458 each other, so you can for example specify @code{y=x/dar}.
8459 @end table
8460
8461 @anchor{drawtext_expansion}
8462 @subsection Text expansion
8463
8464 If @option{expansion} is set to @code{strftime},
8465 the filter recognizes strftime() sequences in the provided text and
8466 expands them accordingly. Check the documentation of strftime(). This
8467 feature is deprecated.
8468
8469 If @option{expansion} is set to @code{none}, the text is printed verbatim.
8470
8471 If @option{expansion} is set to @code{normal} (which is the default),
8472 the following expansion mechanism is used.
8473
8474 The backslash character @samp{\}, followed by any character, always expands to
8475 the second character.
8476
8477 Sequences of the form @code{%@{...@}} are expanded. The text between the
8478 braces is a function name, possibly followed by arguments separated by ':'.
8479 If the arguments contain special characters or delimiters (':' or '@}'),
8480 they should be escaped.
8481
8482 Note that they probably must also be escaped as the value for the
8483 @option{text} option in the filter argument string and as the filter
8484 argument in the filtergraph description, and possibly also for the shell,
8485 that makes up to four levels of escaping; using a text file avoids these
8486 problems.
8487
8488 The following functions are available:
8489
8490 @table @command
8491
8492 @item expr, e
8493 The expression evaluation result.
8494
8495 It must take one argument specifying the expression to be evaluated,
8496 which accepts the same constants and functions as the @var{x} and
8497 @var{y} values. Note that not all constants should be used, for
8498 example the text size is not known when evaluating the expression, so
8499 the constants @var{text_w} and @var{text_h} will have an undefined
8500 value.
8501
8502 @item expr_int_format, eif
8503 Evaluate the expression's value and output as formatted integer.
8504
8505 The first argument is the expression to be evaluated, just as for the @var{expr} function.
8506 The second argument specifies the output format. Allowed values are @samp{x},
8507 @samp{X}, @samp{d} and @samp{u}. They are treated exactly as in the
8508 @code{printf} function.
8509 The third parameter is optional and sets the number of positions taken by the output.
8510 It can be used to add padding with zeros from the left.
8511
8512 @item gmtime
8513 The time at which the filter is running, expressed in UTC.
8514 It can accept an argument: a strftime() format string.
8515
8516 @item localtime
8517 The time at which the filter is running, expressed in the local time zone.
8518 It can accept an argument: a strftime() format string.
8519
8520 @item metadata
8521 Frame metadata. Takes one or two arguments.
8522
8523 The first argument is mandatory and specifies the metadata key.
8524
8525 The second argument is optional and specifies a default value, used when the
8526 metadata key is not found or empty.
8527
8528 @item n, frame_num
8529 The frame number, starting from 0.
8530
8531 @item pict_type
8532 A 1 character description of the current picture type.
8533
8534 @item pts
8535 The timestamp of the current frame.
8536 It can take up to three arguments.
8537
8538 The first argument is the format of the timestamp; it defaults to @code{flt}
8539 for seconds as a decimal number with microsecond accuracy; @code{hms} stands
8540 for a formatted @var{[-]HH:MM:SS.mmm} timestamp with millisecond accuracy.
8541 @code{gmtime} stands for the timestamp of the frame formatted as UTC time;
8542 @code{localtime} stands for the timestamp of the frame formatted as
8543 local time zone time.
8544
8545 The second argument is an offset added to the timestamp.
8546
8547 If the format is set to @code{hms}, a third argument @code{24HH} may be
8548 supplied to present the hour part of the formatted timestamp in 24h format
8549 (00-23).
8550
8551 If the format is set to @code{localtime} or @code{gmtime},
8552 a third argument may be supplied: a strftime() format string.
8553 By default, @var{YYYY-MM-DD HH:MM:SS} format will be used.
8554 @end table
8555
8556 @subsection Examples
8557
8558 @itemize
8559 @item
8560 Draw "Test Text" with font FreeSerif, using the default values for the
8561 optional parameters.
8562
8563 @example
8564 drawtext="fontfile=/usr/share/fonts/truetype/freefont/FreeSerif.ttf: text='Test Text'"
8565 @end example
8566
8567 @item
8568 Draw 'Test Text' with font FreeSerif of size 24 at position x=100
8569 and y=50 (counting from the top-left corner of the screen), text is
8570 yellow with a red box around it. Both the text and the box have an
8571 opacity of 20%.
8572
8573 @example
8574 drawtext="fontfile=/usr/share/fonts/truetype/freefont/FreeSerif.ttf: text='Test Text':\
8575           x=100: y=50: fontsize=24: fontcolor=yellow@@0.2: box=1: boxcolor=red@@0.2"
8576 @end example
8577
8578 Note that the double quotes are not necessary if spaces are not used
8579 within the parameter list.
8580
8581 @item
8582 Show the text at the center of the video frame:
8583 @example
8584 drawtext="fontsize=30:fontfile=FreeSerif.ttf:text='hello world':x=(w-text_w)/2:y=(h-text_h)/2"
8585 @end example
8586
8587 @item
8588 Show the text at a random position, switching to a new position every 30 seconds:
8589 @example
8590 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)"
8591 @end example
8592
8593 @item
8594 Show a text line sliding from right to left in the last row of the video
8595 frame. The file @file{LONG_LINE} is assumed to contain a single line
8596 with no newlines.
8597 @example
8598 drawtext="fontsize=15:fontfile=FreeSerif.ttf:text=LONG_LINE:y=h-line_h:x=-50*t"
8599 @end example
8600
8601 @item
8602 Show the content of file @file{CREDITS} off the bottom of the frame and scroll up.
8603 @example
8604 drawtext="fontsize=20:fontfile=FreeSerif.ttf:textfile=CREDITS:y=h-20*t"
8605 @end example
8606
8607 @item
8608 Draw a single green letter "g", at the center of the input video.
8609 The glyph baseline is placed at half screen height.
8610 @example
8611 drawtext="fontsize=60:fontfile=FreeSerif.ttf:fontcolor=green:text=g:x=(w-max_glyph_w)/2:y=h/2-ascent"
8612 @end example
8613
8614 @item
8615 Show text for 1 second every 3 seconds:
8616 @example
8617 drawtext="fontfile=FreeSerif.ttf:fontcolor=white:x=100:y=x/dar:enable=lt(mod(t\,3)\,1):text='blink'"
8618 @end example
8619
8620 @item
8621 Use fontconfig to set the font. Note that the colons need to be escaped.
8622 @example
8623 drawtext='fontfile=Linux Libertine O-40\:style=Semibold:text=FFmpeg'
8624 @end example
8625
8626 @item
8627 Print the date of a real-time encoding (see strftime(3)):
8628 @example
8629 drawtext='fontfile=FreeSans.ttf:text=%@{localtime\:%a %b %d %Y@}'
8630 @end example
8631
8632 @item
8633 Show text fading in and out (appearing/disappearing):
8634 @example
8635 #!/bin/sh
8636 DS=1.0 # display start
8637 DE=10.0 # display end
8638 FID=1.5 # fade in duration
8639 FOD=5 # fade out duration
8640 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 @}"
8641 @end example
8642
8643 @item
8644 Horizontally align multiple separate texts. Note that @option{max_glyph_a}
8645 and the @option{fontsize} value are included in the @option{y} offset.
8646 @example
8647 drawtext=fontfile=FreeSans.ttf:text=DOG:fontsize=24:x=10:y=20+24-max_glyph_a,
8648 drawtext=fontfile=FreeSans.ttf:text=cow:fontsize=24:x=80:y=20+24-max_glyph_a
8649 @end example
8650
8651 @end itemize
8652
8653 For more information about libfreetype, check:
8654 @url{http://www.freetype.org/}.
8655
8656 For more information about fontconfig, check:
8657 @url{http://freedesktop.org/software/fontconfig/fontconfig-user.html}.
8658
8659 For more information about libfribidi, check:
8660 @url{http://fribidi.org/}.
8661
8662 @section edgedetect
8663
8664 Detect and draw edges. The filter uses the Canny Edge Detection algorithm.
8665
8666 The filter accepts the following options:
8667
8668 @table @option
8669 @item low
8670 @item high
8671 Set low and high threshold values used by the Canny thresholding
8672 algorithm.
8673
8674 The high threshold selects the "strong" edge pixels, which are then
8675 connected through 8-connectivity with the "weak" edge pixels selected
8676 by the low threshold.
8677
8678 @var{low} and @var{high} threshold values must be chosen in the range
8679 [0,1], and @var{low} should be lesser or equal to @var{high}.
8680
8681 Default value for @var{low} is @code{20/255}, and default value for @var{high}
8682 is @code{50/255}.
8683
8684 @item mode
8685 Define the drawing mode.
8686
8687 @table @samp
8688 @item wires
8689 Draw white/gray wires on black background.
8690
8691 @item colormix
8692 Mix the colors to create a paint/cartoon effect.
8693
8694 @item canny
8695 Apply Canny edge detector on all selected planes.
8696 @end table
8697 Default value is @var{wires}.
8698
8699 @item planes
8700 Select planes for filtering. By default all available planes are filtered.
8701 @end table
8702
8703 @subsection Examples
8704
8705 @itemize
8706 @item
8707 Standard edge detection with custom values for the hysteresis thresholding:
8708 @example
8709 edgedetect=low=0.1:high=0.4
8710 @end example
8711
8712 @item
8713 Painting effect without thresholding:
8714 @example
8715 edgedetect=mode=colormix:high=0
8716 @end example
8717 @end itemize
8718
8719 @section eq
8720 Set brightness, contrast, saturation and approximate gamma adjustment.
8721
8722 The filter accepts the following options:
8723
8724 @table @option
8725 @item contrast
8726 Set the contrast expression. The value must be a float value in range
8727 @code{-2.0} to @code{2.0}. The default value is "1".
8728
8729 @item brightness
8730 Set the brightness expression. The value must be a float value in
8731 range @code{-1.0} to @code{1.0}. The default value is "0".
8732
8733 @item saturation
8734 Set the saturation expression. The value must be a float in
8735 range @code{0.0} to @code{3.0}. The default value is "1".
8736
8737 @item gamma
8738 Set the gamma expression. The value must be a float in range
8739 @code{0.1} to @code{10.0}.  The default value is "1".
8740
8741 @item gamma_r
8742 Set the gamma expression for red. The value must be a float in
8743 range @code{0.1} to @code{10.0}. The default value is "1".
8744
8745 @item gamma_g
8746 Set the gamma expression for green. The value must be a float in range
8747 @code{0.1} to @code{10.0}. The default value is "1".
8748
8749 @item gamma_b
8750 Set the gamma expression for blue. The value must be a float in range
8751 @code{0.1} to @code{10.0}. The default value is "1".
8752
8753 @item gamma_weight
8754 Set the gamma weight expression. It can be used to reduce the effect
8755 of a high gamma value on bright image areas, e.g. keep them from
8756 getting overamplified and just plain white. The value must be a float
8757 in range @code{0.0} to @code{1.0}. A value of @code{0.0} turns the
8758 gamma correction all the way down while @code{1.0} leaves it at its
8759 full strength. Default is "1".
8760
8761 @item eval
8762 Set when the expressions for brightness, contrast, saturation and
8763 gamma expressions are evaluated.
8764
8765 It accepts the following values:
8766 @table @samp
8767 @item init
8768 only evaluate expressions once during the filter initialization or
8769 when a command is processed
8770
8771 @item frame
8772 evaluate expressions for each incoming frame
8773 @end table
8774
8775 Default value is @samp{init}.
8776 @end table
8777
8778 The expressions accept the following parameters:
8779 @table @option
8780 @item n
8781 frame count of the input frame starting from 0
8782
8783 @item pos
8784 byte position of the corresponding packet in the input file, NAN if
8785 unspecified
8786
8787 @item r
8788 frame rate of the input video, NAN if the input frame rate is unknown
8789
8790 @item t
8791 timestamp expressed in seconds, NAN if the input timestamp is unknown
8792 @end table
8793
8794 @subsection Commands
8795 The filter supports the following commands:
8796
8797 @table @option
8798 @item contrast
8799 Set the contrast expression.
8800
8801 @item brightness
8802 Set the brightness expression.
8803
8804 @item saturation
8805 Set the saturation expression.
8806
8807 @item gamma
8808 Set the gamma expression.
8809
8810 @item gamma_r
8811 Set the gamma_r expression.
8812
8813 @item gamma_g
8814 Set gamma_g expression.
8815
8816 @item gamma_b
8817 Set gamma_b expression.
8818
8819 @item gamma_weight
8820 Set gamma_weight expression.
8821
8822 The command accepts the same syntax of the corresponding option.
8823
8824 If the specified expression is not valid, it is kept at its current
8825 value.
8826
8827 @end table
8828
8829 @section erosion
8830
8831 Apply erosion effect to the video.
8832
8833 This filter replaces the pixel by the local(3x3) minimum.
8834
8835 It accepts the following options:
8836
8837 @table @option
8838 @item threshold0
8839 @item threshold1
8840 @item threshold2
8841 @item threshold3
8842 Limit the maximum change for each plane, default is 65535.
8843 If 0, plane will remain unchanged.
8844
8845 @item coordinates
8846 Flag which specifies the pixel to refer to. Default is 255 i.e. all eight
8847 pixels are used.
8848
8849 Flags to local 3x3 coordinates maps like this:
8850
8851     1 2 3
8852     4   5
8853     6 7 8
8854 @end table
8855
8856 @section extractplanes
8857
8858 Extract color channel components from input video stream into
8859 separate grayscale video streams.
8860
8861 The filter accepts the following option:
8862
8863 @table @option
8864 @item planes
8865 Set plane(s) to extract.
8866
8867 Available values for planes are:
8868 @table @samp
8869 @item y
8870 @item u
8871 @item v
8872 @item a
8873 @item r
8874 @item g
8875 @item b
8876 @end table
8877
8878 Choosing planes not available in the input will result in an error.
8879 That means you cannot select @code{r}, @code{g}, @code{b} planes
8880 with @code{y}, @code{u}, @code{v} planes at same time.
8881 @end table
8882
8883 @subsection Examples
8884
8885 @itemize
8886 @item
8887 Extract luma, u and v color channel component from input video frame
8888 into 3 grayscale outputs:
8889 @example
8890 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
8891 @end example
8892 @end itemize
8893
8894 @section elbg
8895
8896 Apply a posterize effect using the ELBG (Enhanced LBG) algorithm.
8897
8898 For each input image, the filter will compute the optimal mapping from
8899 the input to the output given the codebook length, that is the number
8900 of distinct output colors.
8901
8902 This filter accepts the following options.
8903
8904 @table @option
8905 @item codebook_length, l
8906 Set codebook length. The value must be a positive integer, and
8907 represents the number of distinct output colors. Default value is 256.
8908
8909 @item nb_steps, n
8910 Set the maximum number of iterations to apply for computing the optimal
8911 mapping. The higher the value the better the result and the higher the
8912 computation time. Default value is 1.
8913
8914 @item seed, s
8915 Set a random seed, must be an integer included between 0 and
8916 UINT32_MAX. If not specified, or if explicitly set to -1, the filter
8917 will try to use a good random seed on a best effort basis.
8918
8919 @item pal8
8920 Set pal8 output pixel format. This option does not work with codebook
8921 length greater than 256.
8922 @end table
8923
8924 @section entropy
8925
8926 Measure graylevel entropy in histogram of color channels of video frames.
8927
8928 It accepts the following parameters:
8929
8930 @table @option
8931 @item mode
8932 Can be either @var{normal} or @var{diff}. Default is @var{normal}.
8933
8934 @var{diff} mode measures entropy of histogram delta values, absolute differences
8935 between neighbour histogram values.
8936 @end table
8937
8938 @section fade
8939
8940 Apply a fade-in/out effect to the input video.
8941
8942 It accepts the following parameters:
8943
8944 @table @option
8945 @item type, t
8946 The effect type can be either "in" for a fade-in, or "out" for a fade-out
8947 effect.
8948 Default is @code{in}.
8949
8950 @item start_frame, s
8951 Specify the number of the frame to start applying the fade
8952 effect at. Default is 0.
8953
8954 @item nb_frames, n
8955 The number of frames that the fade effect lasts. At the end of the
8956 fade-in effect, the output video will have the same intensity as the input video.
8957 At the end of the fade-out transition, the output video will be filled with the
8958 selected @option{color}.
8959 Default is 25.
8960
8961 @item alpha
8962 If set to 1, fade only alpha channel, if one exists on the input.
8963 Default value is 0.
8964
8965 @item start_time, st
8966 Specify the timestamp (in seconds) of the frame to start to apply the fade
8967 effect. If both start_frame and start_time are specified, the fade will start at
8968 whichever comes last.  Default is 0.
8969
8970 @item duration, d
8971 The number of seconds for which the fade effect has to last. At the end of the
8972 fade-in effect the output video will have the same intensity as the input video,
8973 at the end of the fade-out transition the output video will be filled with the
8974 selected @option{color}.
8975 If both duration and nb_frames are specified, duration is used. Default is 0
8976 (nb_frames is used by default).
8977
8978 @item color, c
8979 Specify the color of the fade. Default is "black".
8980 @end table
8981
8982 @subsection Examples
8983
8984 @itemize
8985 @item
8986 Fade in the first 30 frames of video:
8987 @example
8988 fade=in:0:30
8989 @end example
8990
8991 The command above is equivalent to:
8992 @example
8993 fade=t=in:s=0:n=30
8994 @end example
8995
8996 @item
8997 Fade out the last 45 frames of a 200-frame video:
8998 @example
8999 fade=out:155:45
9000 fade=type=out:start_frame=155:nb_frames=45
9001 @end example
9002
9003 @item
9004 Fade in the first 25 frames and fade out the last 25 frames of a 1000-frame video:
9005 @example
9006 fade=in:0:25, fade=out:975:25
9007 @end example
9008
9009 @item
9010 Make the first 5 frames yellow, then fade in from frame 5-24:
9011 @example
9012 fade=in:5:20:color=yellow
9013 @end example
9014
9015 @item
9016 Fade in alpha over first 25 frames of video:
9017 @example
9018 fade=in:0:25:alpha=1
9019 @end example
9020
9021 @item
9022 Make the first 5.5 seconds black, then fade in for 0.5 seconds:
9023 @example
9024 fade=t=in:st=5.5:d=0.5
9025 @end example
9026
9027 @end itemize
9028
9029 @section fftfilt
9030 Apply arbitrary expressions to samples in frequency domain
9031
9032 @table @option
9033 @item dc_Y
9034 Adjust the dc value (gain) of the luma plane of the image. The filter
9035 accepts an integer value in range @code{0} to @code{1000}. The default
9036 value is set to @code{0}.
9037
9038 @item dc_U
9039 Adjust the dc value (gain) of the 1st chroma plane of the image. The
9040 filter accepts an integer value in range @code{0} to @code{1000}. The
9041 default value is set to @code{0}.
9042
9043 @item dc_V
9044 Adjust the dc value (gain) of the 2nd chroma plane of the image. The
9045 filter accepts an integer value in range @code{0} to @code{1000}. The
9046 default value is set to @code{0}.
9047
9048 @item weight_Y
9049 Set the frequency domain weight expression for the luma plane.
9050
9051 @item weight_U
9052 Set the frequency domain weight expression for the 1st chroma plane.
9053
9054 @item weight_V
9055 Set the frequency domain weight expression for the 2nd chroma plane.
9056
9057 @item eval
9058 Set when the expressions are evaluated.
9059
9060 It accepts the following values:
9061 @table @samp
9062 @item init
9063 Only evaluate expressions once during the filter initialization.
9064
9065 @item frame
9066 Evaluate expressions for each incoming frame.
9067 @end table
9068
9069 Default value is @samp{init}.
9070
9071 The filter accepts the following variables:
9072 @item X
9073 @item Y
9074 The coordinates of the current sample.
9075
9076 @item W
9077 @item H
9078 The width and height of the image.
9079
9080 @item N
9081 The number of input frame, starting from 0.
9082 @end table
9083
9084 @subsection Examples
9085
9086 @itemize
9087 @item
9088 High-pass:
9089 @example
9090 fftfilt=dc_Y=128:weight_Y='squish(1-(Y+X)/100)'
9091 @end example
9092
9093 @item
9094 Low-pass:
9095 @example
9096 fftfilt=dc_Y=0:weight_Y='squish((Y+X)/100-1)'
9097 @end example
9098
9099 @item
9100 Sharpen:
9101 @example
9102 fftfilt=dc_Y=0:weight_Y='1+squish(1-(Y+X)/100)'
9103 @end example
9104
9105 @item
9106 Blur:
9107 @example
9108 fftfilt=dc_Y=0:weight_Y='exp(-4 * ((Y+X)/(W+H)))'
9109 @end example
9110
9111 @end itemize
9112
9113 @section fftdnoiz
9114 Denoise frames using 3D FFT (frequency domain filtering).
9115
9116 The filter accepts the following options:
9117
9118 @table @option
9119 @item sigma
9120 Set the noise sigma constant. This sets denoising strength.
9121 Default value is 1. Allowed range is from 0 to 30.
9122 Using very high sigma with low overlap may give blocking artifacts.
9123
9124 @item amount
9125 Set amount of denoising. By default all detected noise is reduced.
9126 Default value is 1. Allowed range is from 0 to 1.
9127
9128 @item block
9129 Set size of block, Default is 4, can be 3, 4, 5 or 6.
9130 Actual size of block in pixels is 2 to power of @var{block}, so by default
9131 block size in pixels is 2^4 which is 16.
9132
9133 @item overlap
9134 Set block overlap. Default is 0.5. Allowed range is from 0.2 to 0.8.
9135
9136 @item prev
9137 Set number of previous frames to use for denoising. By default is set to 0.
9138
9139 @item next
9140 Set number of next frames to to use for denoising. By default is set to 0.
9141
9142 @item planes
9143 Set planes which will be filtered, by default are all available filtered
9144 except alpha.
9145 @end table
9146
9147 @section field
9148
9149 Extract a single field from an interlaced image using stride
9150 arithmetic to avoid wasting CPU time. The output frames are marked as
9151 non-interlaced.
9152
9153 The filter accepts the following options:
9154
9155 @table @option
9156 @item type
9157 Specify whether to extract the top (if the value is @code{0} or
9158 @code{top}) or the bottom field (if the value is @code{1} or
9159 @code{bottom}).
9160 @end table
9161
9162 @section fieldhint
9163
9164 Create new frames by copying the top and bottom fields from surrounding frames
9165 supplied as numbers by the hint file.
9166
9167 @table @option
9168 @item hint
9169 Set file containing hints: absolute/relative frame numbers.
9170
9171 There must be one line for each frame in a clip. Each line must contain two
9172 numbers separated by the comma, optionally followed by @code{-} or @code{+}.
9173 Numbers supplied on each line of file can not be out of [N-1,N+1] where N
9174 is current frame number for @code{absolute} mode or out of [-1, 1] range
9175 for @code{relative} mode. First number tells from which frame to pick up top
9176 field and second number tells from which frame to pick up bottom field.
9177
9178 If optionally followed by @code{+} output frame will be marked as interlaced,
9179 else if followed by @code{-} output frame will be marked as progressive, else
9180 it will be marked same as input frame.
9181 If line starts with @code{#} or @code{;} that line is skipped.
9182
9183 @item mode
9184 Can be item @code{absolute} or @code{relative}. Default is @code{absolute}.
9185 @end table
9186
9187 Example of first several lines of @code{hint} file for @code{relative} mode:
9188 @example
9189 0,0 - # first frame
9190 1,0 - # second frame, use third's frame top field and second's frame bottom field
9191 1,0 - # third frame, use fourth's frame top field and third's frame bottom field
9192 1,0 -
9193 0,0 -
9194 0,0 -
9195 1,0 -
9196 1,0 -
9197 1,0 -
9198 0,0 -
9199 0,0 -
9200 1,0 -
9201 1,0 -
9202 1,0 -
9203 0,0 -
9204 @end example
9205
9206 @section fieldmatch
9207
9208 Field matching filter for inverse telecine. It is meant to reconstruct the
9209 progressive frames from a telecined stream. The filter does not drop duplicated
9210 frames, so to achieve a complete inverse telecine @code{fieldmatch} needs to be
9211 followed by a decimation filter such as @ref{decimate} in the filtergraph.
9212
9213 The separation of the field matching and the decimation is notably motivated by
9214 the possibility of inserting a de-interlacing filter fallback between the two.
9215 If the source has mixed telecined and real interlaced content,
9216 @code{fieldmatch} will not be able to match fields for the interlaced parts.
9217 But these remaining combed frames will be marked as interlaced, and thus can be
9218 de-interlaced by a later filter such as @ref{yadif} before decimation.
9219
9220 In addition to the various configuration options, @code{fieldmatch} can take an
9221 optional second stream, activated through the @option{ppsrc} option. If
9222 enabled, the frames reconstruction will be based on the fields and frames from
9223 this second stream. This allows the first input to be pre-processed in order to
9224 help the various algorithms of the filter, while keeping the output lossless
9225 (assuming the fields are matched properly). Typically, a field-aware denoiser,
9226 or brightness/contrast adjustments can help.
9227
9228 Note that this filter uses the same algorithms as TIVTC/TFM (AviSynth project)
9229 and VIVTC/VFM (VapourSynth project). The later is a light clone of TFM from
9230 which @code{fieldmatch} is based on. While the semantic and usage are very
9231 close, some behaviour and options names can differ.
9232
9233 The @ref{decimate} filter currently only works for constant frame rate input.
9234 If your input has mixed telecined (30fps) and progressive content with a lower
9235 framerate like 24fps use the following filterchain to produce the necessary cfr
9236 stream: @code{dejudder,fps=30000/1001,fieldmatch,decimate}.
9237
9238 The filter accepts the following options:
9239
9240 @table @option
9241 @item order
9242 Specify the assumed field order of the input stream. Available values are:
9243
9244 @table @samp
9245 @item auto
9246 Auto detect parity (use FFmpeg's internal parity value).
9247 @item bff
9248 Assume bottom field first.
9249 @item tff
9250 Assume top field first.
9251 @end table
9252
9253 Note that it is sometimes recommended not to trust the parity announced by the
9254 stream.
9255
9256 Default value is @var{auto}.
9257
9258 @item mode
9259 Set the matching mode or strategy to use. @option{pc} mode is the safest in the
9260 sense that it won't risk creating jerkiness due to duplicate frames when
9261 possible, but if there are bad edits or blended fields it will end up
9262 outputting combed frames when a good match might actually exist. On the other
9263 hand, @option{pcn_ub} mode is the most risky in terms of creating jerkiness,
9264 but will almost always find a good frame if there is one. The other values are
9265 all somewhere in between @option{pc} and @option{pcn_ub} in terms of risking
9266 jerkiness and creating duplicate frames versus finding good matches in sections
9267 with bad edits, orphaned fields, blended fields, etc.
9268
9269 More details about p/c/n/u/b are available in @ref{p/c/n/u/b meaning} section.
9270
9271 Available values are:
9272
9273 @table @samp
9274 @item pc
9275 2-way matching (p/c)
9276 @item pc_n
9277 2-way matching, and trying 3rd match if still combed (p/c + n)
9278 @item pc_u
9279 2-way matching, and trying 3rd match (same order) if still combed (p/c + u)
9280 @item pc_n_ub
9281 2-way matching, trying 3rd match if still combed, and trying 4th/5th matches if
9282 still combed (p/c + n + u/b)
9283 @item pcn
9284 3-way matching (p/c/n)
9285 @item pcn_ub
9286 3-way matching, and trying 4th/5th matches if all 3 of the original matches are
9287 detected as combed (p/c/n + u/b)
9288 @end table
9289
9290 The parenthesis at the end indicate the matches that would be used for that
9291 mode assuming @option{order}=@var{tff} (and @option{field} on @var{auto} or
9292 @var{top}).
9293
9294 In terms of speed @option{pc} mode is by far the fastest and @option{pcn_ub} is
9295 the slowest.
9296
9297 Default value is @var{pc_n}.
9298
9299 @item ppsrc
9300 Mark the main input stream as a pre-processed input, and enable the secondary
9301 input stream as the clean source to pick the fields from. See the filter
9302 introduction for more details. It is similar to the @option{clip2} feature from
9303 VFM/TFM.
9304
9305 Default value is @code{0} (disabled).
9306
9307 @item field
9308 Set the field to match from. It is recommended to set this to the same value as
9309 @option{order} unless you experience matching failures with that setting. In
9310 certain circumstances changing the field that is used to match from can have a
9311 large impact on matching performance. Available values are:
9312
9313 @table @samp
9314 @item auto
9315 Automatic (same value as @option{order}).
9316 @item bottom
9317 Match from the bottom field.
9318 @item top
9319 Match from the top field.
9320 @end table
9321
9322 Default value is @var{auto}.
9323
9324 @item mchroma
9325 Set whether or not chroma is included during the match comparisons. In most
9326 cases it is recommended to leave this enabled. You should set this to @code{0}
9327 only if your clip has bad chroma problems such as heavy rainbowing or other
9328 artifacts. Setting this to @code{0} could also be used to speed things up at
9329 the cost of some accuracy.
9330
9331 Default value is @code{1}.
9332
9333 @item y0
9334 @item y1
9335 These define an exclusion band which excludes the lines between @option{y0} and
9336 @option{y1} from being included in the field matching decision. An exclusion
9337 band can be used to ignore subtitles, a logo, or other things that may
9338 interfere with the matching. @option{y0} sets the starting scan line and
9339 @option{y1} sets the ending line; all lines in between @option{y0} and
9340 @option{y1} (including @option{y0} and @option{y1}) will be ignored. Setting
9341 @option{y0} and @option{y1} to the same value will disable the feature.
9342 @option{y0} and @option{y1} defaults to @code{0}.
9343
9344 @item scthresh
9345 Set the scene change detection threshold as a percentage of maximum change on
9346 the luma plane. Good values are in the @code{[8.0, 14.0]} range. Scene change
9347 detection is only relevant in case @option{combmatch}=@var{sc}.  The range for
9348 @option{scthresh} is @code{[0.0, 100.0]}.
9349
9350 Default value is @code{12.0}.
9351
9352 @item combmatch
9353 When @option{combatch} is not @var{none}, @code{fieldmatch} will take into
9354 account the combed scores of matches when deciding what match to use as the
9355 final match. Available values are:
9356
9357 @table @samp
9358 @item none
9359 No final matching based on combed scores.
9360 @item sc
9361 Combed scores are only used when a scene change is detected.
9362 @item full
9363 Use combed scores all the time.
9364 @end table
9365
9366 Default is @var{sc}.
9367
9368 @item combdbg
9369 Force @code{fieldmatch} to calculate the combed metrics for certain matches and
9370 print them. This setting is known as @option{micout} in TFM/VFM vocabulary.
9371 Available values are:
9372
9373 @table @samp
9374 @item none
9375 No forced calculation.
9376 @item pcn
9377 Force p/c/n calculations.
9378 @item pcnub
9379 Force p/c/n/u/b calculations.
9380 @end table
9381
9382 Default value is @var{none}.
9383
9384 @item cthresh
9385 This is the area combing threshold used for combed frame detection. This
9386 essentially controls how "strong" or "visible" combing must be to be detected.
9387 Larger values mean combing must be more visible and smaller values mean combing
9388 can be less visible or strong and still be detected. Valid settings are from
9389 @code{-1} (every pixel will be detected as combed) to @code{255} (no pixel will
9390 be detected as combed). This is basically a pixel difference value. A good
9391 range is @code{[8, 12]}.
9392
9393 Default value is @code{9}.
9394
9395 @item chroma
9396 Sets whether or not chroma is considered in the combed frame decision.  Only
9397 disable this if your source has chroma problems (rainbowing, etc.) that are
9398 causing problems for the combed frame detection with chroma enabled. Actually,
9399 using @option{chroma}=@var{0} is usually more reliable, except for the case
9400 where there is chroma only combing in the source.
9401
9402 Default value is @code{0}.
9403
9404 @item blockx
9405 @item blocky
9406 Respectively set the x-axis and y-axis size of the window used during combed
9407 frame detection. This has to do with the size of the area in which
9408 @option{combpel} pixels are required to be detected as combed for a frame to be
9409 declared combed. See the @option{combpel} parameter description for more info.
9410 Possible values are any number that is a power of 2 starting at 4 and going up
9411 to 512.
9412
9413 Default value is @code{16}.
9414
9415 @item combpel
9416 The number of combed pixels inside any of the @option{blocky} by
9417 @option{blockx} size blocks on the frame for the frame to be detected as
9418 combed. While @option{cthresh} controls how "visible" the combing must be, this
9419 setting controls "how much" combing there must be in any localized area (a
9420 window defined by the @option{blockx} and @option{blocky} settings) on the
9421 frame. Minimum value is @code{0} and maximum is @code{blocky x blockx} (at
9422 which point no frames will ever be detected as combed). This setting is known
9423 as @option{MI} in TFM/VFM vocabulary.
9424
9425 Default value is @code{80}.
9426 @end table
9427
9428 @anchor{p/c/n/u/b meaning}
9429 @subsection p/c/n/u/b meaning
9430
9431 @subsubsection p/c/n
9432
9433 We assume the following telecined stream:
9434
9435 @example
9436 Top fields:     1 2 2 3 4
9437 Bottom fields:  1 2 3 4 4
9438 @end example
9439
9440 The numbers correspond to the progressive frame the fields relate to. Here, the
9441 first two frames are progressive, the 3rd and 4th are combed, and so on.
9442
9443 When @code{fieldmatch} is configured to run a matching from bottom
9444 (@option{field}=@var{bottom}) this is how this input stream get transformed:
9445
9446 @example
9447 Input stream:
9448                 T     1 2 2 3 4
9449                 B     1 2 3 4 4   <-- matching reference
9450
9451 Matches:              c c n n c
9452
9453 Output stream:
9454                 T     1 2 3 4 4
9455                 B     1 2 3 4 4
9456 @end example
9457
9458 As a result of the field matching, we can see that some frames get duplicated.
9459 To perform a complete inverse telecine, you need to rely on a decimation filter
9460 after this operation. See for instance the @ref{decimate} filter.
9461
9462 The same operation now matching from top fields (@option{field}=@var{top})
9463 looks like this:
9464
9465 @example
9466 Input stream:
9467                 T     1 2 2 3 4   <-- matching reference
9468                 B     1 2 3 4 4
9469
9470 Matches:              c c p p c
9471
9472 Output stream:
9473                 T     1 2 2 3 4
9474                 B     1 2 2 3 4
9475 @end example
9476
9477 In these examples, we can see what @var{p}, @var{c} and @var{n} mean;
9478 basically, they refer to the frame and field of the opposite parity:
9479
9480 @itemize
9481 @item @var{p} matches the field of the opposite parity in the previous frame
9482 @item @var{c} matches the field of the opposite parity in the current frame
9483 @item @var{n} matches the field of the opposite parity in the next frame
9484 @end itemize
9485
9486 @subsubsection u/b
9487
9488 The @var{u} and @var{b} matching are a bit special in the sense that they match
9489 from the opposite parity flag. In the following examples, we assume that we are
9490 currently matching the 2nd frame (Top:2, bottom:2). According to the match, a
9491 'x' is placed above and below each matched fields.
9492
9493 With bottom matching (@option{field}=@var{bottom}):
9494 @example
9495 Match:           c         p           n          b          u
9496
9497                  x       x               x        x          x
9498   Top          1 2 2     1 2 2       1 2 2      1 2 2      1 2 2
9499   Bottom       1 2 3     1 2 3       1 2 3      1 2 3      1 2 3
9500                  x         x           x        x              x
9501
9502 Output frames:
9503                  2          1          2          2          2
9504                  2          2          2          1          3
9505 @end example
9506
9507 With top matching (@option{field}=@var{top}):
9508 @example
9509 Match:           c         p           n          b          u
9510
9511                  x         x           x        x              x
9512   Top          1 2 2     1 2 2       1 2 2      1 2 2      1 2 2
9513   Bottom       1 2 3     1 2 3       1 2 3      1 2 3      1 2 3
9514                  x       x               x        x          x
9515
9516 Output frames:
9517                  2          2          2          1          2
9518                  2          1          3          2          2
9519 @end example
9520
9521 @subsection Examples
9522
9523 Simple IVTC of a top field first telecined stream:
9524 @example
9525 fieldmatch=order=tff:combmatch=none, decimate
9526 @end example
9527
9528 Advanced IVTC, with fallback on @ref{yadif} for still combed frames:
9529 @example
9530 fieldmatch=order=tff:combmatch=full, yadif=deint=interlaced, decimate
9531 @end example
9532
9533 @section fieldorder
9534
9535 Transform the field order of the input video.
9536
9537 It accepts the following parameters:
9538
9539 @table @option
9540
9541 @item order
9542 The output field order. Valid values are @var{tff} for top field first or @var{bff}
9543 for bottom field first.
9544 @end table
9545
9546 The default value is @samp{tff}.
9547
9548 The transformation is done by shifting the picture content up or down
9549 by one line, and filling the remaining line with appropriate picture content.
9550 This method is consistent with most broadcast field order converters.
9551
9552 If the input video is not flagged as being interlaced, or it is already
9553 flagged as being of the required output field order, then this filter does
9554 not alter the incoming video.
9555
9556 It is very useful when converting to or from PAL DV material,
9557 which is bottom field first.
9558
9559 For example:
9560 @example
9561 ffmpeg -i in.vob -vf "fieldorder=bff" out.dv
9562 @end example
9563
9564 @section fifo, afifo
9565
9566 Buffer input images and send them when they are requested.
9567
9568 It is mainly useful when auto-inserted by the libavfilter
9569 framework.
9570
9571 It does not take parameters.
9572
9573 @section fillborders
9574
9575 Fill borders of the input video, without changing video stream dimensions.
9576 Sometimes video can have garbage at the four edges and you may not want to
9577 crop video input to keep size multiple of some number.
9578
9579 This filter accepts the following options:
9580
9581 @table @option
9582 @item left
9583 Number of pixels to fill from left border.
9584
9585 @item right
9586 Number of pixels to fill from right border.
9587
9588 @item top
9589 Number of pixels to fill from top border.
9590
9591 @item bottom
9592 Number of pixels to fill from bottom border.
9593
9594 @item mode
9595 Set fill mode.
9596
9597 It accepts the following values:
9598 @table @samp
9599 @item smear
9600 fill pixels using outermost pixels
9601
9602 @item mirror
9603 fill pixels using mirroring
9604
9605 @item fixed
9606 fill pixels with constant value
9607 @end table
9608
9609 Default is @var{smear}.
9610
9611 @item color
9612 Set color for pixels in fixed mode. Default is @var{black}.
9613 @end table
9614
9615 @section find_rect
9616
9617 Find a rectangular object
9618
9619 It accepts the following options:
9620
9621 @table @option
9622 @item object
9623 Filepath of the object image, needs to be in gray8.
9624
9625 @item threshold
9626 Detection threshold, default is 0.5.
9627
9628 @item mipmaps
9629 Number of mipmaps, default is 3.
9630
9631 @item xmin, ymin, xmax, ymax
9632 Specifies the rectangle in which to search.
9633 @end table
9634
9635 @subsection Examples
9636
9637 @itemize
9638 @item
9639 Generate a representative palette of a given video using @command{ffmpeg}:
9640 @example
9641 ffmpeg -i file.ts -vf find_rect=newref.pgm,cover_rect=cover.jpg:mode=cover new.mkv
9642 @end example
9643 @end itemize
9644
9645 @section cover_rect
9646
9647 Cover a rectangular object
9648
9649 It accepts the following options:
9650
9651 @table @option
9652 @item cover
9653 Filepath of the optional cover image, needs to be in yuv420.
9654
9655 @item mode
9656 Set covering mode.
9657
9658 It accepts the following values:
9659 @table @samp
9660 @item cover
9661 cover it by the supplied image
9662 @item blur
9663 cover it by interpolating the surrounding pixels
9664 @end table
9665
9666 Default value is @var{blur}.
9667 @end table
9668
9669 @subsection Examples
9670
9671 @itemize
9672 @item
9673 Generate a representative palette of a given video using @command{ffmpeg}:
9674 @example
9675 ffmpeg -i file.ts -vf find_rect=newref.pgm,cover_rect=cover.jpg:mode=cover new.mkv
9676 @end example
9677 @end itemize
9678
9679 @section floodfill
9680
9681 Flood area with values of same pixel components with another values.
9682
9683 It accepts the following options:
9684 @table @option
9685 @item x
9686 Set pixel x coordinate.
9687
9688 @item y
9689 Set pixel y coordinate.
9690
9691 @item s0
9692 Set source #0 component value.
9693
9694 @item s1
9695 Set source #1 component value.
9696
9697 @item s2
9698 Set source #2 component value.
9699
9700 @item s3
9701 Set source #3 component value.
9702
9703 @item d0
9704 Set destination #0 component value.
9705
9706 @item d1
9707 Set destination #1 component value.
9708
9709 @item d2
9710 Set destination #2 component value.
9711
9712 @item d3
9713 Set destination #3 component value.
9714 @end table
9715
9716 @anchor{format}
9717 @section format
9718
9719 Convert the input video to one of the specified pixel formats.
9720 Libavfilter will try to pick one that is suitable as input to
9721 the next filter.
9722
9723 It accepts the following parameters:
9724 @table @option
9725
9726 @item pix_fmts
9727 A '|'-separated list of pixel format names, such as
9728 "pix_fmts=yuv420p|monow|rgb24".
9729
9730 @end table
9731
9732 @subsection Examples
9733
9734 @itemize
9735 @item
9736 Convert the input video to the @var{yuv420p} format
9737 @example
9738 format=pix_fmts=yuv420p
9739 @end example
9740
9741 Convert the input video to any of the formats in the list
9742 @example
9743 format=pix_fmts=yuv420p|yuv444p|yuv410p
9744 @end example
9745 @end itemize
9746
9747 @anchor{fps}
9748 @section fps
9749
9750 Convert the video to specified constant frame rate by duplicating or dropping
9751 frames as necessary.
9752
9753 It accepts the following parameters:
9754 @table @option
9755
9756 @item fps
9757 The desired output frame rate. The default is @code{25}.
9758
9759 @item start_time
9760 Assume the first PTS should be the given value, in seconds. This allows for
9761 padding/trimming at the start of stream. By default, no assumption is made
9762 about the first frame's expected PTS, so no padding or trimming is done.
9763 For example, this could be set to 0 to pad the beginning with duplicates of
9764 the first frame if a video stream starts after the audio stream or to trim any
9765 frames with a negative PTS.
9766
9767 @item round
9768 Timestamp (PTS) rounding method.
9769
9770 Possible values are:
9771 @table @option
9772 @item zero
9773 round towards 0
9774 @item inf
9775 round away from 0
9776 @item down
9777 round towards -infinity
9778 @item up
9779 round towards +infinity
9780 @item near
9781 round to nearest
9782 @end table
9783 The default is @code{near}.
9784
9785 @item eof_action
9786 Action performed when reading the last frame.
9787
9788 Possible values are:
9789 @table @option
9790 @item round
9791 Use same timestamp rounding method as used for other frames.
9792 @item pass
9793 Pass through last frame if input duration has not been reached yet.
9794 @end table
9795 The default is @code{round}.
9796
9797 @end table
9798
9799 Alternatively, the options can be specified as a flat string:
9800 @var{fps}[:@var{start_time}[:@var{round}]].
9801
9802 See also the @ref{setpts} filter.
9803
9804 @subsection Examples
9805
9806 @itemize
9807 @item
9808 A typical usage in order to set the fps to 25:
9809 @example
9810 fps=fps=25
9811 @end example
9812
9813 @item
9814 Sets the fps to 24, using abbreviation and rounding method to round to nearest:
9815 @example
9816 fps=fps=film:round=near
9817 @end example
9818 @end itemize
9819
9820 @section framepack
9821
9822 Pack two different video streams into a stereoscopic video, setting proper
9823 metadata on supported codecs. The two views should have the same size and
9824 framerate and processing will stop when the shorter video ends. Please note
9825 that you may conveniently adjust view properties with the @ref{scale} and
9826 @ref{fps} filters.
9827
9828 It accepts the following parameters:
9829 @table @option
9830
9831 @item format
9832 The desired packing format. Supported values are:
9833
9834 @table @option
9835
9836 @item sbs
9837 The views are next to each other (default).
9838
9839 @item tab
9840 The views are on top of each other.
9841
9842 @item lines
9843 The views are packed by line.
9844
9845 @item columns
9846 The views are packed by column.
9847
9848 @item frameseq
9849 The views are temporally interleaved.
9850
9851 @end table
9852
9853 @end table
9854
9855 Some examples:
9856
9857 @example
9858 # Convert left and right views into a frame-sequential video
9859 ffmpeg -i LEFT -i RIGHT -filter_complex framepack=frameseq OUTPUT
9860
9861 # Convert views into a side-by-side video with the same output resolution as the input
9862 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
9863 @end example
9864
9865 @section framerate
9866
9867 Change the frame rate by interpolating new video output frames from the source
9868 frames.
9869
9870 This filter is not designed to function correctly with interlaced media. If
9871 you wish to change the frame rate of interlaced media then you are required
9872 to deinterlace before this filter and re-interlace after this filter.
9873
9874 A description of the accepted options follows.
9875
9876 @table @option
9877 @item fps
9878 Specify the output frames per second. This option can also be specified
9879 as a value alone. The default is @code{50}.
9880
9881 @item interp_start
9882 Specify the start of a range where the output frame will be created as a
9883 linear interpolation of two frames. The range is [@code{0}-@code{255}],
9884 the default is @code{15}.
9885
9886 @item interp_end
9887 Specify the end of a range where the output frame will be created as a
9888 linear interpolation of two frames. The range is [@code{0}-@code{255}],
9889 the default is @code{240}.
9890
9891 @item scene
9892 Specify the level at which a scene change is detected as a value between
9893 0 and 100 to indicate a new scene; a low value reflects a low
9894 probability for the current frame to introduce a new scene, while a higher
9895 value means the current frame is more likely to be one.
9896 The default is @code{8.2}.
9897
9898 @item flags
9899 Specify flags influencing the filter process.
9900
9901 Available value for @var{flags} is:
9902
9903 @table @option
9904 @item scene_change_detect, scd
9905 Enable scene change detection using the value of the option @var{scene}.
9906 This flag is enabled by default.
9907 @end table
9908 @end table
9909
9910 @section framestep
9911
9912 Select one frame every N-th frame.
9913
9914 This filter accepts the following option:
9915 @table @option
9916 @item step
9917 Select frame after every @code{step} frames.
9918 Allowed values are positive integers higher than 0. Default value is @code{1}.
9919 @end table
9920
9921 @anchor{frei0r}
9922 @section frei0r
9923
9924 Apply a frei0r effect to the input video.
9925
9926 To enable the compilation of this filter, you need to install the frei0r
9927 header and configure FFmpeg with @code{--enable-frei0r}.
9928
9929 It accepts the following parameters:
9930
9931 @table @option
9932
9933 @item filter_name
9934 The name of the frei0r effect to load. If the environment variable
9935 @env{FREI0R_PATH} is defined, the frei0r effect is searched for in each of the
9936 directories specified by the colon-separated list in @env{FREI0R_PATH}.
9937 Otherwise, the standard frei0r paths are searched, in this order:
9938 @file{HOME/.frei0r-1/lib/}, @file{/usr/local/lib/frei0r-1/},
9939 @file{/usr/lib/frei0r-1/}.
9940
9941 @item filter_params
9942 A '|'-separated list of parameters to pass to the frei0r effect.
9943
9944 @end table
9945
9946 A frei0r effect parameter can be a boolean (its value is either
9947 "y" or "n"), a double, a color (specified as
9948 @var{R}/@var{G}/@var{B}, where @var{R}, @var{G}, and @var{B} are floating point
9949 numbers between 0.0 and 1.0, inclusive) or a color description as specified in the
9950 @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils},
9951 a position (specified as @var{X}/@var{Y}, where
9952 @var{X} and @var{Y} are floating point numbers) and/or a string.
9953
9954 The number and types of parameters depend on the loaded effect. If an
9955 effect parameter is not specified, the default value is set.
9956
9957 @subsection Examples
9958
9959 @itemize
9960 @item
9961 Apply the distort0r effect, setting the first two double parameters:
9962 @example
9963 frei0r=filter_name=distort0r:filter_params=0.5|0.01
9964 @end example
9965
9966 @item
9967 Apply the colordistance effect, taking a color as the first parameter:
9968 @example
9969 frei0r=colordistance:0.2/0.3/0.4
9970 frei0r=colordistance:violet
9971 frei0r=colordistance:0x112233
9972 @end example
9973
9974 @item
9975 Apply the perspective effect, specifying the top left and top right image
9976 positions:
9977 @example
9978 frei0r=perspective:0.2/0.2|0.8/0.2
9979 @end example
9980 @end itemize
9981
9982 For more information, see
9983 @url{http://frei0r.dyne.org}
9984
9985 @section fspp
9986
9987 Apply fast and simple postprocessing. It is a faster version of @ref{spp}.
9988
9989 It splits (I)DCT into horizontal/vertical passes. Unlike the simple post-
9990 processing filter, one of them is performed once per block, not per pixel.
9991 This allows for much higher speed.
9992
9993 The filter accepts the following options:
9994
9995 @table @option
9996 @item quality
9997 Set quality. This option defines the number of levels for averaging. It accepts
9998 an integer in the range 4-5. Default value is @code{4}.
9999
10000 @item qp
10001 Force a constant quantization parameter. It accepts an integer in range 0-63.
10002 If not set, the filter will use the QP from the video stream (if available).
10003
10004 @item strength
10005 Set filter strength. It accepts an integer in range -15 to 32. Lower values mean
10006 more details but also more artifacts, while higher values make the image smoother
10007 but also blurrier. Default value is @code{0} âˆ’ PSNR optimal.
10008
10009 @item use_bframe_qp
10010 Enable the use of the QP from the B-Frames if set to @code{1}. Using this
10011 option may cause flicker since the B-Frames have often larger QP. Default is
10012 @code{0} (not enabled).
10013
10014 @end table
10015
10016 @section gblur
10017
10018 Apply Gaussian blur filter.
10019
10020 The filter accepts the following options:
10021
10022 @table @option
10023 @item sigma
10024 Set horizontal sigma, standard deviation of Gaussian blur. Default is @code{0.5}.
10025
10026 @item steps
10027 Set number of steps for Gaussian approximation. Defauls is @code{1}.
10028
10029 @item planes
10030 Set which planes to filter. By default all planes are filtered.
10031
10032 @item sigmaV
10033 Set vertical sigma, if negative it will be same as @code{sigma}.
10034 Default is @code{-1}.
10035 @end table
10036
10037 @section geq
10038
10039 The filter accepts the following options:
10040
10041 @table @option
10042 @item lum_expr, lum
10043 Set the luminance expression.
10044 @item cb_expr, cb
10045 Set the chrominance blue expression.
10046 @item cr_expr, cr
10047 Set the chrominance red expression.
10048 @item alpha_expr, a
10049 Set the alpha expression.
10050 @item red_expr, r
10051 Set the red expression.
10052 @item green_expr, g
10053 Set the green expression.
10054 @item blue_expr, b
10055 Set the blue expression.
10056 @end table
10057
10058 The colorspace is selected according to the specified options. If one
10059 of the @option{lum_expr}, @option{cb_expr}, or @option{cr_expr}
10060 options is specified, the filter will automatically select a YCbCr
10061 colorspace. If one of the @option{red_expr}, @option{green_expr}, or
10062 @option{blue_expr} options is specified, it will select an RGB
10063 colorspace.
10064
10065 If one of the chrominance expression is not defined, it falls back on the other
10066 one. If no alpha expression is specified it will evaluate to opaque value.
10067 If none of chrominance expressions are specified, they will evaluate
10068 to the luminance expression.
10069
10070 The expressions can use the following variables and functions:
10071
10072 @table @option
10073 @item N
10074 The sequential number of the filtered frame, starting from @code{0}.
10075
10076 @item X
10077 @item Y
10078 The coordinates of the current sample.
10079
10080 @item W
10081 @item H
10082 The width and height of the image.
10083
10084 @item SW
10085 @item SH
10086 Width and height scale depending on the currently filtered plane. It is the
10087 ratio between the corresponding luma plane number of pixels and the current
10088 plane ones. E.g. for YUV4:2:0 the values are @code{1,1} for the luma plane, and
10089 @code{0.5,0.5} for chroma planes.
10090
10091 @item T
10092 Time of the current frame, expressed in seconds.
10093
10094 @item p(x, y)
10095 Return the value of the pixel at location (@var{x},@var{y}) of the current
10096 plane.
10097
10098 @item lum(x, y)
10099 Return the value of the pixel at location (@var{x},@var{y}) of the luminance
10100 plane.
10101
10102 @item cb(x, y)
10103 Return the value of the pixel at location (@var{x},@var{y}) of the
10104 blue-difference chroma plane. Return 0 if there is no such plane.
10105
10106 @item cr(x, y)
10107 Return the value of the pixel at location (@var{x},@var{y}) of the
10108 red-difference chroma plane. Return 0 if there is no such plane.
10109
10110 @item r(x, y)
10111 @item g(x, y)
10112 @item b(x, y)
10113 Return the value of the pixel at location (@var{x},@var{y}) of the
10114 red/green/blue component. Return 0 if there is no such component.
10115
10116 @item alpha(x, y)
10117 Return the value of the pixel at location (@var{x},@var{y}) of the alpha
10118 plane. Return 0 if there is no such plane.
10119 @end table
10120
10121 For functions, if @var{x} and @var{y} are outside the area, the value will be
10122 automatically clipped to the closer edge.
10123
10124 @subsection Examples
10125
10126 @itemize
10127 @item
10128 Flip the image horizontally:
10129 @example
10130 geq=p(W-X\,Y)
10131 @end example
10132
10133 @item
10134 Generate a bidimensional sine wave, with angle @code{PI/3} and a
10135 wavelength of 100 pixels:
10136 @example
10137 geq=128 + 100*sin(2*(PI/100)*(cos(PI/3)*(X-50*T) + sin(PI/3)*Y)):128:128
10138 @end example
10139
10140 @item
10141 Generate a fancy enigmatic moving light:
10142 @example
10143 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
10144 @end example
10145
10146 @item
10147 Generate a quick emboss effect:
10148 @example
10149 format=gray,geq=lum_expr='(p(X,Y)+(256-p(X-4,Y-4)))/2'
10150 @end example
10151
10152 @item
10153 Modify RGB components depending on pixel position:
10154 @example
10155 geq=r='X/W*r(X,Y)':g='(1-X/W)*g(X,Y)':b='(H-Y)/H*b(X,Y)'
10156 @end example
10157
10158 @item
10159 Create a radial gradient that is the same size as the input (also see
10160 the @ref{vignette} filter):
10161 @example
10162 geq=lum=255*gauss((X/W-0.5)*3)*gauss((Y/H-0.5)*3)/gauss(0)/gauss(0),format=gray
10163 @end example
10164 @end itemize
10165
10166 @section gradfun
10167
10168 Fix the banding artifacts that are sometimes introduced into nearly flat
10169 regions by truncation to 8-bit color depth.
10170 Interpolate the gradients that should go where the bands are, and
10171 dither them.
10172
10173 It is designed for playback only.  Do not use it prior to
10174 lossy compression, because compression tends to lose the dither and
10175 bring back the bands.
10176
10177 It accepts the following parameters:
10178
10179 @table @option
10180
10181 @item strength
10182 The maximum amount by which the filter will change any one pixel. This is also
10183 the threshold for detecting nearly flat regions. Acceptable values range from
10184 .51 to 64; the default value is 1.2. Out-of-range values will be clipped to the
10185 valid range.
10186
10187 @item radius
10188 The neighborhood to fit the gradient to. A larger radius makes for smoother
10189 gradients, but also prevents the filter from modifying the pixels near detailed
10190 regions. Acceptable values are 8-32; the default value is 16. Out-of-range
10191 values will be clipped to the valid range.
10192
10193 @end table
10194
10195 Alternatively, the options can be specified as a flat string:
10196 @var{strength}[:@var{radius}]
10197
10198 @subsection Examples
10199
10200 @itemize
10201 @item
10202 Apply the filter with a @code{3.5} strength and radius of @code{8}:
10203 @example
10204 gradfun=3.5:8
10205 @end example
10206
10207 @item
10208 Specify radius, omitting the strength (which will fall-back to the default
10209 value):
10210 @example
10211 gradfun=radius=8
10212 @end example
10213
10214 @end itemize
10215
10216 @section greyedge
10217 A color constancy variation filter which estimates scene illumination via grey edge algorithm
10218 and corrects the scene colors accordingly.
10219
10220 See: @url{https://staff.science.uva.nl/th.gevers/pub/GeversTIP07.pdf}
10221
10222 The filter accepts the following options:
10223
10224 @table @option
10225 @item difford
10226 The order of differentiation to be applied on the scene. Must be chosen in the range
10227 [0,2] and default value is 1.
10228
10229 @item minknorm
10230 The Minkowski parameter to be used for calculating the Minkowski distance. Must
10231 be chosen in the range [0,20] and default value is 1. Set to 0 for getting
10232 max value instead of calculating Minkowski distance.
10233
10234 @item sigma
10235 The standard deviation of Gaussian blur to be applied on the scene. Must be
10236 chosen in the range [0,1024.0] and default value = 1. floor( @var{sigma} * break_off_sigma(3) )
10237 can't be euqal to 0 if @var{difford} is greater than 0.
10238 @end table
10239
10240 @subsection Examples
10241 @itemize
10242
10243 @item
10244 Grey Edge:
10245 @example
10246 greyedge=difford=1:minknorm=5:sigma=2
10247 @end example
10248
10249 @item
10250 Max Edge:
10251 @example
10252 greyedge=difford=1:minknorm=0:sigma=2
10253 @end example
10254
10255 @end itemize
10256
10257 @anchor{haldclut}
10258 @section haldclut
10259
10260 Apply a Hald CLUT to a video stream.
10261
10262 First input is the video stream to process, and second one is the Hald CLUT.
10263 The Hald CLUT input can be a simple picture or a complete video stream.
10264
10265 The filter accepts the following options:
10266
10267 @table @option
10268 @item shortest
10269 Force termination when the shortest input terminates. Default is @code{0}.
10270 @item repeatlast
10271 Continue applying the last CLUT after the end of the stream. A value of
10272 @code{0} disable the filter after the last frame of the CLUT is reached.
10273 Default is @code{1}.
10274 @end table
10275
10276 @code{haldclut} also has the same interpolation options as @ref{lut3d} (both
10277 filters share the same internals).
10278
10279 More information about the Hald CLUT can be found on Eskil Steenberg's website
10280 (Hald CLUT author) at @url{http://www.quelsolaar.com/technology/clut.html}.
10281
10282 @subsection Workflow examples
10283
10284 @subsubsection Hald CLUT video stream
10285
10286 Generate an identity Hald CLUT stream altered with various effects:
10287 @example
10288 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
10289 @end example
10290
10291 Note: make sure you use a lossless codec.
10292
10293 Then use it with @code{haldclut} to apply it on some random stream:
10294 @example
10295 ffmpeg -f lavfi -i mandelbrot -i clut.nut -filter_complex '[0][1] haldclut' -t 20 mandelclut.mkv
10296 @end example
10297
10298 The Hald CLUT will be applied to the 10 first seconds (duration of
10299 @file{clut.nut}), then the latest picture of that CLUT stream will be applied
10300 to the remaining frames of the @code{mandelbrot} stream.
10301
10302 @subsubsection Hald CLUT with preview
10303
10304 A Hald CLUT is supposed to be a squared image of @code{Level*Level*Level} by
10305 @code{Level*Level*Level} pixels. For a given Hald CLUT, FFmpeg will select the
10306 biggest possible square starting at the top left of the picture. The remaining
10307 padding pixels (bottom or right) will be ignored. This area can be used to add
10308 a preview of the Hald CLUT.
10309
10310 Typically, the following generated Hald CLUT will be supported by the
10311 @code{haldclut} filter:
10312
10313 @example
10314 ffmpeg -f lavfi -i @ref{haldclutsrc}=8 -vf "
10315    pad=iw+320 [padded_clut];
10316    smptebars=s=320x256, split [a][b];
10317    [padded_clut][a] overlay=W-320:h, curves=color_negative [main];
10318    [main][b] overlay=W-320" -frames:v 1 clut.png
10319 @end example
10320
10321 It contains the original and a preview of the effect of the CLUT: SMPTE color
10322 bars are displayed on the right-top, and below the same color bars processed by
10323 the color changes.
10324
10325 Then, the effect of this Hald CLUT can be visualized with:
10326 @example
10327 ffplay input.mkv -vf "movie=clut.png, [in] haldclut"
10328 @end example
10329
10330 @section hflip
10331
10332 Flip the input video horizontally.
10333
10334 For example, to horizontally flip the input video with @command{ffmpeg}:
10335 @example
10336 ffmpeg -i in.avi -vf "hflip" out.avi
10337 @end example
10338
10339 @section histeq
10340 This filter applies a global color histogram equalization on a
10341 per-frame basis.
10342
10343 It can be used to correct video that has a compressed range of pixel
10344 intensities.  The filter redistributes the pixel intensities to
10345 equalize their distribution across the intensity range. It may be
10346 viewed as an "automatically adjusting contrast filter". This filter is
10347 useful only for correcting degraded or poorly captured source
10348 video.
10349
10350 The filter accepts the following options:
10351
10352 @table @option
10353 @item strength
10354 Determine the amount of equalization to be applied.  As the strength
10355 is reduced, the distribution of pixel intensities more-and-more
10356 approaches that of the input frame. The value must be a float number
10357 in the range [0,1] and defaults to 0.200.
10358
10359 @item intensity
10360 Set the maximum intensity that can generated and scale the output
10361 values appropriately.  The strength should be set as desired and then
10362 the intensity can be limited if needed to avoid washing-out. The value
10363 must be a float number in the range [0,1] and defaults to 0.210.
10364
10365 @item antibanding
10366 Set the antibanding level. If enabled the filter will randomly vary
10367 the luminance of output pixels by a small amount to avoid banding of
10368 the histogram. Possible values are @code{none}, @code{weak} or
10369 @code{strong}. It defaults to @code{none}.
10370 @end table
10371
10372 @section histogram
10373
10374 Compute and draw a color distribution histogram for the input video.
10375
10376 The computed histogram is a representation of the color component
10377 distribution in an image.
10378
10379 Standard histogram displays the color components distribution in an image.
10380 Displays color graph for each color component. Shows distribution of
10381 the Y, U, V, A or R, G, B components, depending on input format, in the
10382 current frame. Below each graph a color component scale meter is shown.
10383
10384 The filter accepts the following options:
10385
10386 @table @option
10387 @item level_height
10388 Set height of level. Default value is @code{200}.
10389 Allowed range is [50, 2048].
10390
10391 @item scale_height
10392 Set height of color scale. Default value is @code{12}.
10393 Allowed range is [0, 40].
10394
10395 @item display_mode
10396 Set display mode.
10397 It accepts the following values:
10398 @table @samp
10399 @item stack
10400 Per color component graphs are placed below each other.
10401
10402 @item parade
10403 Per color component graphs are placed side by side.
10404
10405 @item overlay
10406 Presents information identical to that in the @code{parade}, except
10407 that the graphs representing color components are superimposed directly
10408 over one another.
10409 @end table
10410 Default is @code{stack}.
10411
10412 @item levels_mode
10413 Set mode. Can be either @code{linear}, or @code{logarithmic}.
10414 Default is @code{linear}.
10415
10416 @item components
10417 Set what color components to display.
10418 Default is @code{7}.
10419
10420 @item fgopacity
10421 Set foreground opacity. Default is @code{0.7}.
10422
10423 @item bgopacity
10424 Set background opacity. Default is @code{0.5}.
10425 @end table
10426
10427 @subsection Examples
10428
10429 @itemize
10430
10431 @item
10432 Calculate and draw histogram:
10433 @example
10434 ffplay -i input -vf histogram
10435 @end example
10436
10437 @end itemize
10438
10439 @anchor{hqdn3d}
10440 @section hqdn3d
10441
10442 This is a high precision/quality 3d denoise filter. It aims to reduce
10443 image noise, producing smooth images and making still images really
10444 still. It should enhance compressibility.
10445
10446 It accepts the following optional parameters:
10447
10448 @table @option
10449 @item luma_spatial
10450 A non-negative floating point number which specifies spatial luma strength.
10451 It defaults to 4.0.
10452
10453 @item chroma_spatial
10454 A non-negative floating point number which specifies spatial chroma strength.
10455 It defaults to 3.0*@var{luma_spatial}/4.0.
10456
10457 @item luma_tmp
10458 A floating point number which specifies luma temporal strength. It defaults to
10459 6.0*@var{luma_spatial}/4.0.
10460
10461 @item chroma_tmp
10462 A floating point number which specifies chroma temporal strength. It defaults to
10463 @var{luma_tmp}*@var{chroma_spatial}/@var{luma_spatial}.
10464 @end table
10465
10466 @section hwdownload
10467
10468 Download hardware frames to system memory.
10469
10470 The input must be in hardware frames, and the output a non-hardware format.
10471 Not all formats will be supported on the output - it may be necessary to insert
10472 an additional @option{format} filter immediately following in the graph to get
10473 the output in a supported format.
10474
10475 @section hwmap
10476
10477 Map hardware frames to system memory or to another device.
10478
10479 This filter has several different modes of operation; which one is used depends
10480 on the input and output formats:
10481 @itemize
10482 @item
10483 Hardware frame input, normal frame output
10484
10485 Map the input frames to system memory and pass them to the output.  If the
10486 original hardware frame is later required (for example, after overlaying
10487 something else on part of it), the @option{hwmap} filter can be used again
10488 in the next mode to retrieve it.
10489 @item
10490 Normal frame input, hardware frame output
10491
10492 If the input is actually a software-mapped hardware frame, then unmap it -
10493 that is, return the original hardware frame.
10494
10495 Otherwise, a device must be provided.  Create new hardware surfaces on that
10496 device for the output, then map them back to the software format at the input
10497 and give those frames to the preceding filter.  This will then act like the
10498 @option{hwupload} filter, but may be able to avoid an additional copy when
10499 the input is already in a compatible format.
10500 @item
10501 Hardware frame input and output
10502
10503 A device must be supplied for the output, either directly or with the
10504 @option{derive_device} option.  The input and output devices must be of
10505 different types and compatible - the exact meaning of this is
10506 system-dependent, but typically it means that they must refer to the same
10507 underlying hardware context (for example, refer to the same graphics card).
10508
10509 If the input frames were originally created on the output device, then unmap
10510 to retrieve the original frames.
10511
10512 Otherwise, map the frames to the output device - create new hardware frames
10513 on the output corresponding to the frames on the input.
10514 @end itemize
10515
10516 The following additional parameters are accepted:
10517
10518 @table @option
10519 @item mode
10520 Set the frame mapping mode.  Some combination of:
10521 @table @var
10522 @item read
10523 The mapped frame should be readable.
10524 @item write
10525 The mapped frame should be writeable.
10526 @item overwrite
10527 The mapping will always overwrite the entire frame.
10528
10529 This may improve performance in some cases, as the original contents of the
10530 frame need not be loaded.
10531 @item direct
10532 The mapping must not involve any copying.
10533
10534 Indirect mappings to copies of frames are created in some cases where either
10535 direct mapping is not possible or it would have unexpected properties.
10536 Setting this flag ensures that the mapping is direct and will fail if that is
10537 not possible.
10538 @end table
10539 Defaults to @var{read+write} if not specified.
10540
10541 @item derive_device @var{type}
10542 Rather than using the device supplied at initialisation, instead derive a new
10543 device of type @var{type} from the device the input frames exist on.
10544
10545 @item reverse
10546 In a hardware to hardware mapping, map in reverse - create frames in the sink
10547 and map them back to the source.  This may be necessary in some cases where
10548 a mapping in one direction is required but only the opposite direction is
10549 supported by the devices being used.
10550
10551 This option is dangerous - it may break the preceding filter in undefined
10552 ways if there are any additional constraints on that filter's output.
10553 Do not use it without fully understanding the implications of its use.
10554 @end table
10555
10556 @section hwupload
10557
10558 Upload system memory frames to hardware surfaces.
10559
10560 The device to upload to must be supplied when the filter is initialised.  If
10561 using ffmpeg, select the appropriate device with the @option{-filter_hw_device}
10562 option.
10563
10564 @anchor{hwupload_cuda}
10565 @section hwupload_cuda
10566
10567 Upload system memory frames to a CUDA device.
10568
10569 It accepts the following optional parameters:
10570
10571 @table @option
10572 @item device
10573 The number of the CUDA device to use
10574 @end table
10575
10576 @section hqx
10577
10578 Apply a high-quality magnification filter designed for pixel art. This filter
10579 was originally created by Maxim Stepin.
10580
10581 It accepts the following option:
10582
10583 @table @option
10584 @item n
10585 Set the scaling dimension: @code{2} for @code{hq2x}, @code{3} for
10586 @code{hq3x} and @code{4} for @code{hq4x}.
10587 Default is @code{3}.
10588 @end table
10589
10590 @section hstack
10591 Stack input videos horizontally.
10592
10593 All streams must be of same pixel format and of same height.
10594
10595 Note that this filter is faster than using @ref{overlay} and @ref{pad} filter
10596 to create same output.
10597
10598 The filter accept the following option:
10599
10600 @table @option
10601 @item inputs
10602 Set number of input streams. Default is 2.
10603
10604 @item shortest
10605 If set to 1, force the output to terminate when the shortest input
10606 terminates. Default value is 0.
10607 @end table
10608
10609 @section hue
10610
10611 Modify the hue and/or the saturation of the input.
10612
10613 It accepts the following parameters:
10614
10615 @table @option
10616 @item h
10617 Specify the hue angle as a number of degrees. It accepts an expression,
10618 and defaults to "0".
10619
10620 @item s
10621 Specify the saturation in the [-10,10] range. It accepts an expression and
10622 defaults to "1".
10623
10624 @item H
10625 Specify the hue angle as a number of radians. It accepts an
10626 expression, and defaults to "0".
10627
10628 @item b
10629 Specify the brightness in the [-10,10] range. It accepts an expression and
10630 defaults to "0".
10631 @end table
10632
10633 @option{h} and @option{H} are mutually exclusive, and can't be
10634 specified at the same time.
10635
10636 The @option{b}, @option{h}, @option{H} and @option{s} option values are
10637 expressions containing the following constants:
10638
10639 @table @option
10640 @item n
10641 frame count of the input frame starting from 0
10642
10643 @item pts
10644 presentation timestamp of the input frame expressed in time base units
10645
10646 @item r
10647 frame rate of the input video, NAN if the input frame rate is unknown
10648
10649 @item t
10650 timestamp expressed in seconds, NAN if the input timestamp is unknown
10651
10652 @item tb
10653 time base of the input video
10654 @end table
10655
10656 @subsection Examples
10657
10658 @itemize
10659 @item
10660 Set the hue to 90 degrees and the saturation to 1.0:
10661 @example
10662 hue=h=90:s=1
10663 @end example
10664
10665 @item
10666 Same command but expressing the hue in radians:
10667 @example
10668 hue=H=PI/2:s=1
10669 @end example
10670
10671 @item
10672 Rotate hue and make the saturation swing between 0
10673 and 2 over a period of 1 second:
10674 @example
10675 hue="H=2*PI*t: s=sin(2*PI*t)+1"
10676 @end example
10677
10678 @item
10679 Apply a 3 seconds saturation fade-in effect starting at 0:
10680 @example
10681 hue="s=min(t/3\,1)"
10682 @end example
10683
10684 The general fade-in expression can be written as:
10685 @example
10686 hue="s=min(0\, max((t-START)/DURATION\, 1))"
10687 @end example
10688
10689 @item
10690 Apply a 3 seconds saturation fade-out effect starting at 5 seconds:
10691 @example
10692 hue="s=max(0\, min(1\, (8-t)/3))"
10693 @end example
10694
10695 The general fade-out expression can be written as:
10696 @example
10697 hue="s=max(0\, min(1\, (START+DURATION-t)/DURATION))"
10698 @end example
10699
10700 @end itemize
10701
10702 @subsection Commands
10703
10704 This filter supports the following commands:
10705 @table @option
10706 @item b
10707 @item s
10708 @item h
10709 @item H
10710 Modify the hue and/or the saturation and/or brightness of the input video.
10711 The command accepts the same syntax of the corresponding option.
10712
10713 If the specified expression is not valid, it is kept at its current
10714 value.
10715 @end table
10716
10717 @section hysteresis
10718
10719 Grow first stream into second stream by connecting components.
10720 This makes it possible to build more robust edge masks.
10721
10722 This filter accepts the following options:
10723
10724 @table @option
10725 @item planes
10726 Set which planes will be processed as bitmap, unprocessed planes will be
10727 copied from first stream.
10728 By default value 0xf, all planes will be processed.
10729
10730 @item threshold
10731 Set threshold which is used in filtering. If pixel component value is higher than
10732 this value filter algorithm for connecting components is activated.
10733 By default value is 0.
10734 @end table
10735
10736 @section idet
10737
10738 Detect video interlacing type.
10739
10740 This filter tries to detect if the input frames are interlaced, progressive,
10741 top or bottom field first. It will also try to detect fields that are
10742 repeated between adjacent frames (a sign of telecine).
10743
10744 Single frame detection considers only immediately adjacent frames when classifying each frame.
10745 Multiple frame detection incorporates the classification history of previous frames.
10746
10747 The filter will log these metadata values:
10748
10749 @table @option
10750 @item single.current_frame
10751 Detected type of current frame using single-frame detection. One of:
10752 ``tff'' (top field first), ``bff'' (bottom field first),
10753 ``progressive'', or ``undetermined''
10754
10755 @item single.tff
10756 Cumulative number of frames detected as top field first using single-frame detection.
10757
10758 @item multiple.tff
10759 Cumulative number of frames detected as top field first using multiple-frame detection.
10760
10761 @item single.bff
10762 Cumulative number of frames detected as bottom field first using single-frame detection.
10763
10764 @item multiple.current_frame
10765 Detected type of current frame using multiple-frame detection. One of:
10766 ``tff'' (top field first), ``bff'' (bottom field first),
10767 ``progressive'', or ``undetermined''
10768
10769 @item multiple.bff
10770 Cumulative number of frames detected as bottom field first using multiple-frame detection.
10771
10772 @item single.progressive
10773 Cumulative number of frames detected as progressive using single-frame detection.
10774
10775 @item multiple.progressive
10776 Cumulative number of frames detected as progressive using multiple-frame detection.
10777
10778 @item single.undetermined
10779 Cumulative number of frames that could not be classified using single-frame detection.
10780
10781 @item multiple.undetermined
10782 Cumulative number of frames that could not be classified using multiple-frame detection.
10783
10784 @item repeated.current_frame
10785 Which field in the current frame is repeated from the last. One of ``neither'', ``top'', or ``bottom''.
10786
10787 @item repeated.neither
10788 Cumulative number of frames with no repeated field.
10789
10790 @item repeated.top
10791 Cumulative number of frames with the top field repeated from the previous frame's top field.
10792
10793 @item repeated.bottom
10794 Cumulative number of frames with the bottom field repeated from the previous frame's bottom field.
10795 @end table
10796
10797 The filter accepts the following options:
10798
10799 @table @option
10800 @item intl_thres
10801 Set interlacing threshold.
10802 @item prog_thres
10803 Set progressive threshold.
10804 @item rep_thres
10805 Threshold for repeated field detection.
10806 @item half_life
10807 Number of frames after which a given frame's contribution to the
10808 statistics is halved (i.e., it contributes only 0.5 to its
10809 classification). The default of 0 means that all frames seen are given
10810 full weight of 1.0 forever.
10811 @item analyze_interlaced_flag
10812 When this is not 0 then idet will use the specified number of frames to determine
10813 if the interlaced flag is accurate, it will not count undetermined frames.
10814 If the flag is found to be accurate it will be used without any further
10815 computations, if it is found to be inaccurate it will be cleared without any
10816 further computations. This allows inserting the idet filter as a low computational
10817 method to clean up the interlaced flag
10818 @end table
10819
10820 @section il
10821
10822 Deinterleave or interleave fields.
10823
10824 This filter allows one to process interlaced images fields without
10825 deinterlacing them. Deinterleaving splits the input frame into 2
10826 fields (so called half pictures). Odd lines are moved to the top
10827 half of the output image, even lines to the bottom half.
10828 You can process (filter) them independently and then re-interleave them.
10829
10830 The filter accepts the following options:
10831
10832 @table @option
10833 @item luma_mode, l
10834 @item chroma_mode, c
10835 @item alpha_mode, a
10836 Available values for @var{luma_mode}, @var{chroma_mode} and
10837 @var{alpha_mode} are:
10838
10839 @table @samp
10840 @item none
10841 Do nothing.
10842
10843 @item deinterleave, d
10844 Deinterleave fields, placing one above the other.
10845
10846 @item interleave, i
10847 Interleave fields. Reverse the effect of deinterleaving.
10848 @end table
10849 Default value is @code{none}.
10850
10851 @item luma_swap, ls
10852 @item chroma_swap, cs
10853 @item alpha_swap, as
10854 Swap luma/chroma/alpha fields. Exchange even & odd lines. Default value is @code{0}.
10855 @end table
10856
10857 @section inflate
10858
10859 Apply inflate effect to the video.
10860
10861 This filter replaces the pixel by the local(3x3) average by taking into account
10862 only values higher than the pixel.
10863
10864 It accepts the following options:
10865
10866 @table @option
10867 @item threshold0
10868 @item threshold1
10869 @item threshold2
10870 @item threshold3
10871 Limit the maximum change for each plane, default is 65535.
10872 If 0, plane will remain unchanged.
10873 @end table
10874
10875 @section interlace
10876
10877 Simple interlacing filter from progressive contents. This interleaves upper (or
10878 lower) lines from odd frames with lower (or upper) lines from even frames,
10879 halving the frame rate and preserving image height.
10880
10881 @example
10882    Original        Original             New Frame
10883    Frame 'j'      Frame 'j+1'             (tff)
10884   ==========      ===========       ==================
10885     Line 0  -------------------->    Frame 'j' Line 0
10886     Line 1          Line 1  ---->   Frame 'j+1' Line 1
10887     Line 2 --------------------->    Frame 'j' Line 2
10888     Line 3          Line 3  ---->   Frame 'j+1' Line 3
10889      ...             ...                   ...
10890 New Frame + 1 will be generated by Frame 'j+2' and Frame 'j+3' and so on
10891 @end example
10892
10893 It accepts the following optional parameters:
10894
10895 @table @option
10896 @item scan
10897 This determines whether the interlaced frame is taken from the even
10898 (tff - default) or odd (bff) lines of the progressive frame.
10899
10900 @item lowpass
10901 Vertical lowpass filter to avoid twitter interlacing and
10902 reduce moire patterns.
10903
10904 @table @samp
10905 @item 0, off
10906 Disable vertical lowpass filter
10907
10908 @item 1, linear
10909 Enable linear filter (default)
10910
10911 @item 2, complex
10912 Enable complex filter. This will slightly less reduce twitter and moire
10913 but better retain detail and subjective sharpness impression.
10914
10915 @end table
10916 @end table
10917
10918 @section kerndeint
10919
10920 Deinterlace input video by applying Donald Graft's adaptive kernel
10921 deinterling. Work on interlaced parts of a video to produce
10922 progressive frames.
10923
10924 The description of the accepted parameters follows.
10925
10926 @table @option
10927 @item thresh
10928 Set the threshold which affects the filter's tolerance when
10929 determining if a pixel line must be processed. It must be an integer
10930 in the range [0,255] and defaults to 10. A value of 0 will result in
10931 applying the process on every pixels.
10932
10933 @item map
10934 Paint pixels exceeding the threshold value to white if set to 1.
10935 Default is 0.
10936
10937 @item order
10938 Set the fields order. Swap fields if set to 1, leave fields alone if
10939 0. Default is 0.
10940
10941 @item sharp
10942 Enable additional sharpening if set to 1. Default is 0.
10943
10944 @item twoway
10945 Enable twoway sharpening if set to 1. Default is 0.
10946 @end table
10947
10948 @subsection Examples
10949
10950 @itemize
10951 @item
10952 Apply default values:
10953 @example
10954 kerndeint=thresh=10:map=0:order=0:sharp=0:twoway=0
10955 @end example
10956
10957 @item
10958 Enable additional sharpening:
10959 @example
10960 kerndeint=sharp=1
10961 @end example
10962
10963 @item
10964 Paint processed pixels in white:
10965 @example
10966 kerndeint=map=1
10967 @end example
10968 @end itemize
10969
10970 @section lenscorrection
10971
10972 Correct radial lens distortion
10973
10974 This filter can be used to correct for radial distortion as can result from the use
10975 of wide angle lenses, and thereby re-rectify the image. To find the right parameters
10976 one can use tools available for example as part of opencv or simply trial-and-error.
10977 To use opencv use the calibration sample (under samples/cpp) from the opencv sources
10978 and extract the k1 and k2 coefficients from the resulting matrix.
10979
10980 Note that effectively the same filter is available in the open-source tools Krita and
10981 Digikam from the KDE project.
10982
10983 In contrast to the @ref{vignette} filter, which can also be used to compensate lens errors,
10984 this filter corrects the distortion of the image, whereas @ref{vignette} corrects the
10985 brightness distribution, so you may want to use both filters together in certain
10986 cases, though you will have to take care of ordering, i.e. whether vignetting should
10987 be applied before or after lens correction.
10988
10989 @subsection Options
10990
10991 The filter accepts the following options:
10992
10993 @table @option
10994 @item cx
10995 Relative x-coordinate of the focal point of the image, and thereby the center of the
10996 distortion. This value has a range [0,1] and is expressed as fractions of the image
10997 width. Default is 0.5.
10998 @item cy
10999 Relative y-coordinate of the focal point of the image, and thereby the center of the
11000 distortion. This value has a range [0,1] and is expressed as fractions of the image
11001 height. Default is 0.5.
11002 @item k1
11003 Coefficient of the quadratic correction term. This value has a range [-1,1]. 0 means
11004 no correction. Default is 0.
11005 @item k2
11006 Coefficient of the double quadratic correction term. This value has a range [-1,1].
11007 0 means no correction. Default is 0.
11008 @end table
11009
11010 The formula that generates the correction is:
11011
11012 @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)
11013
11014 where @var{r_0} is halve of the image diagonal and @var{r_src} and @var{r_tgt} are the
11015 distances from the focal point in the source and target images, respectively.
11016
11017 @section lensfun
11018
11019 Apply lens correction via the lensfun library (@url{http://lensfun.sourceforge.net/}).
11020
11021 The @code{lensfun} filter requires the camera make, camera model, and lens model
11022 to apply the lens correction. The filter will load the lensfun database and
11023 query it to find the corresponding camera and lens entries in the database. As
11024 long as these entries can be found with the given options, the filter can
11025 perform corrections on frames. Note that incomplete strings will result in the
11026 filter choosing the best match with the given options, and the filter will
11027 output the chosen camera and lens models (logged with level "info"). You must
11028 provide the make, camera model, and lens model as they are required.
11029
11030 The filter accepts the following options:
11031
11032 @table @option
11033 @item make
11034 The make of the camera (for example, "Canon"). This option is required.
11035
11036 @item model
11037 The model of the camera (for example, "Canon EOS 100D"). This option is
11038 required.
11039
11040 @item lens_model
11041 The model of the lens (for example, "Canon EF-S 18-55mm f/3.5-5.6 IS STM"). This
11042 option is required.
11043
11044 @item mode
11045 The type of correction to apply. The following values are valid options:
11046
11047 @table @samp
11048 @item vignetting
11049 Enables fixing lens vignetting.
11050
11051 @item geometry
11052 Enables fixing lens geometry. This is the default.
11053
11054 @item subpixel
11055 Enables fixing chromatic aberrations.
11056
11057 @item vig_geo
11058 Enables fixing lens vignetting and lens geometry.
11059
11060 @item vig_subpixel
11061 Enables fixing lens vignetting and chromatic aberrations.
11062
11063 @item distortion
11064 Enables fixing both lens geometry and chromatic aberrations.
11065
11066 @item all
11067 Enables all possible corrections.
11068
11069 @end table
11070 @item focal_length
11071 The focal length of the image/video (zoom; expected constant for video). For
11072 example, a 18--55mm lens has focal length range of [18--55], so a value in that
11073 range should be chosen when using that lens. Default 18.
11074
11075 @item aperture
11076 The aperture of the image/video (expected constant for video). Note that
11077 aperture is only used for vignetting correction. Default 3.5.
11078
11079 @item focus_distance
11080 The focus distance of the image/video (expected constant for video). Note that
11081 focus distance is only used for vignetting and only slightly affects the
11082 vignetting correction process. If unknown, leave it at the default value (which
11083 is 1000).
11084
11085 @item target_geometry
11086 The target geometry of the output image/video. The following values are valid
11087 options:
11088
11089 @table @samp
11090 @item rectilinear (default)
11091 @item fisheye
11092 @item panoramic
11093 @item equirectangular
11094 @item fisheye_orthographic
11095 @item fisheye_stereographic
11096 @item fisheye_equisolid
11097 @item fisheye_thoby
11098 @end table
11099 @item reverse
11100 Apply the reverse of image correction (instead of correcting distortion, apply
11101 it).
11102
11103 @item interpolation
11104 The type of interpolation used when correcting distortion. The following values
11105 are valid options:
11106
11107 @table @samp
11108 @item nearest
11109 @item linear (default)
11110 @item lanczos
11111 @end table
11112 @end table
11113
11114 @subsection Examples
11115
11116 @itemize
11117 @item
11118 Apply lens correction with make "Canon", camera model "Canon EOS 100D", and lens
11119 model "Canon EF-S 18-55mm f/3.5-5.6 IS STM" with focal length of "18" and
11120 aperture of "8.0".
11121
11122 @example
11123 ffmpeg -i input.mov -vf lensfun=make=Canon:model="Canon EOS 100D":lens_model="Canon EF-S 18-55mm f/3.5-5.6 IS STM":focal_length=18:aperture=8 -c:v h264 -b:v 8000k output.mov
11124 @end example
11125
11126 @item
11127 Apply the same as before, but only for the first 5 seconds of video.
11128
11129 @example
11130 ffmpeg -i input.mov -vf lensfun=make=Canon:model="Canon EOS 100D":lens_model="Canon EF-S 18-55mm f/3.5-5.6 IS STM":focal_length=18:aperture=8:enable='lte(t\,5)' -c:v h264 -b:v 8000k output.mov
11131 @end example
11132
11133 @end itemize
11134
11135 @section libvmaf
11136
11137 Obtain the VMAF (Video Multi-Method Assessment Fusion)
11138 score between two input videos.
11139
11140 The obtained VMAF score is printed through the logging system.
11141
11142 It requires Netflix's vmaf library (libvmaf) as a pre-requisite.
11143 After installing the library it can be enabled using:
11144 @code{./configure --enable-libvmaf --enable-version3}.
11145 If no model path is specified it uses the default model: @code{vmaf_v0.6.1.pkl}.
11146
11147 The filter has following options:
11148
11149 @table @option
11150 @item model_path
11151 Set the model path which is to be used for SVM.
11152 Default value: @code{"vmaf_v0.6.1.pkl"}
11153
11154 @item log_path
11155 Set the file path to be used to store logs.
11156
11157 @item log_fmt
11158 Set the format of the log file (xml or json).
11159
11160 @item enable_transform
11161 Enables transform for computing vmaf.
11162
11163 @item phone_model
11164 Invokes the phone model which will generate VMAF scores higher than in the
11165 regular model, which is more suitable for laptop, TV, etc. viewing conditions.
11166
11167 @item psnr
11168 Enables computing psnr along with vmaf.
11169
11170 @item ssim
11171 Enables computing ssim along with vmaf.
11172
11173 @item ms_ssim
11174 Enables computing ms_ssim along with vmaf.
11175
11176 @item pool
11177 Set the pool method (mean, min or harmonic mean) to be used for computing vmaf.
11178
11179 @item n_threads
11180 Set number of threads to be used when computing vmaf.
11181
11182 @item n_subsample
11183 Set interval for frame subsampling used when computing vmaf.
11184
11185 @item enable_conf_interval
11186 Enables confidence interval.
11187 @end table
11188
11189 This filter also supports the @ref{framesync} options.
11190
11191 On the below examples the input file @file{main.mpg} being processed is
11192 compared with the reference file @file{ref.mpg}.
11193
11194 @example
11195 ffmpeg -i main.mpg -i ref.mpg -lavfi libvmaf -f null -
11196 @end example
11197
11198 Example with options:
11199 @example
11200 ffmpeg -i main.mpg -i ref.mpg -lavfi libvmaf="psnr=1:enable-transform=1" -f null -
11201 @end example
11202
11203 @section limiter
11204
11205 Limits the pixel components values to the specified range [min, max].
11206
11207 The filter accepts the following options:
11208
11209 @table @option
11210 @item min
11211 Lower bound. Defaults to the lowest allowed value for the input.
11212
11213 @item max
11214 Upper bound. Defaults to the highest allowed value for the input.
11215
11216 @item planes
11217 Specify which planes will be processed. Defaults to all available.
11218 @end table
11219
11220 @section loop
11221
11222 Loop video frames.
11223
11224 The filter accepts the following options:
11225
11226 @table @option
11227 @item loop
11228 Set the number of loops. Setting this value to -1 will result in infinite loops.
11229 Default is 0.
11230
11231 @item size
11232 Set maximal size in number of frames. Default is 0.
11233
11234 @item start
11235 Set first frame of loop. Default is 0.
11236 @end table
11237
11238 @section lut1d
11239
11240 Apply a 1D LUT to an input video.
11241
11242 The filter accepts the following options:
11243
11244 @table @option
11245 @item file
11246 Set the 1D LUT file name.
11247
11248 Currently supported formats:
11249 @table @samp
11250 @item cube
11251 Iridas
11252 @end table
11253
11254 @item interp
11255 Select interpolation mode.
11256
11257 Available values are:
11258
11259 @table @samp
11260 @item nearest
11261 Use values from the nearest defined point.
11262 @item linear
11263 Interpolate values using the linear interpolation.
11264 @item cubic
11265 Interpolate values using the cubic interpolation.
11266 @end table
11267 @end table
11268
11269 @anchor{lut3d}
11270 @section lut3d
11271
11272 Apply a 3D LUT to an input video.
11273
11274 The filter accepts the following options:
11275
11276 @table @option
11277 @item file
11278 Set the 3D LUT file name.
11279
11280 Currently supported formats:
11281 @table @samp
11282 @item 3dl
11283 AfterEffects
11284 @item cube
11285 Iridas
11286 @item dat
11287 DaVinci
11288 @item m3d
11289 Pandora
11290 @end table
11291 @item interp
11292 Select interpolation mode.
11293
11294 Available values are:
11295
11296 @table @samp
11297 @item nearest
11298 Use values from the nearest defined point.
11299 @item trilinear
11300 Interpolate values using the 8 points defining a cube.
11301 @item tetrahedral
11302 Interpolate values using a tetrahedron.
11303 @end table
11304 @end table
11305
11306 This filter also supports the @ref{framesync} options.
11307
11308 @section lumakey
11309
11310 Turn certain luma values into transparency.
11311
11312 The filter accepts the following options:
11313
11314 @table @option
11315 @item threshold
11316 Set the luma which will be used as base for transparency.
11317 Default value is @code{0}.
11318
11319 @item tolerance
11320 Set the range of luma values to be keyed out.
11321 Default value is @code{0}.
11322
11323 @item softness
11324 Set the range of softness. Default value is @code{0}.
11325 Use this to control gradual transition from zero to full transparency.
11326 @end table
11327
11328 @section lut, lutrgb, lutyuv
11329
11330 Compute a look-up table for binding each pixel component input value
11331 to an output value, and apply it to the input video.
11332
11333 @var{lutyuv} applies a lookup table to a YUV input video, @var{lutrgb}
11334 to an RGB input video.
11335
11336 These filters accept the following parameters:
11337 @table @option
11338 @item c0
11339 set first pixel component expression
11340 @item c1
11341 set second pixel component expression
11342 @item c2
11343 set third pixel component expression
11344 @item c3
11345 set fourth pixel component expression, corresponds to the alpha component
11346
11347 @item r
11348 set red component expression
11349 @item g
11350 set green component expression
11351 @item b
11352 set blue component expression
11353 @item a
11354 alpha component expression
11355
11356 @item y
11357 set Y/luminance component expression
11358 @item u
11359 set U/Cb component expression
11360 @item v
11361 set V/Cr component expression
11362 @end table
11363
11364 Each of them specifies the expression to use for computing the lookup table for
11365 the corresponding pixel component values.
11366
11367 The exact component associated to each of the @var{c*} options depends on the
11368 format in input.
11369
11370 The @var{lut} filter requires either YUV or RGB pixel formats in input,
11371 @var{lutrgb} requires RGB pixel formats in input, and @var{lutyuv} requires YUV.
11372
11373 The expressions can contain the following constants and functions:
11374
11375 @table @option
11376 @item w
11377 @item h
11378 The input width and height.
11379
11380 @item val
11381 The input value for the pixel component.
11382
11383 @item clipval
11384 The input value, clipped to the @var{minval}-@var{maxval} range.
11385
11386 @item maxval
11387 The maximum value for the pixel component.
11388
11389 @item minval
11390 The minimum value for the pixel component.
11391
11392 @item negval
11393 The negated value for the pixel component value, clipped to the
11394 @var{minval}-@var{maxval} range; it corresponds to the expression
11395 "maxval-clipval+minval".
11396
11397 @item clip(val)
11398 The computed value in @var{val}, clipped to the
11399 @var{minval}-@var{maxval} range.
11400
11401 @item gammaval(gamma)
11402 The computed gamma correction value of the pixel component value,
11403 clipped to the @var{minval}-@var{maxval} range. It corresponds to the
11404 expression
11405 "pow((clipval-minval)/(maxval-minval)\,@var{gamma})*(maxval-minval)+minval"
11406
11407 @end table
11408
11409 All expressions default to "val".
11410
11411 @subsection Examples
11412
11413 @itemize
11414 @item
11415 Negate input video:
11416 @example
11417 lutrgb="r=maxval+minval-val:g=maxval+minval-val:b=maxval+minval-val"
11418 lutyuv="y=maxval+minval-val:u=maxval+minval-val:v=maxval+minval-val"
11419 @end example
11420
11421 The above is the same as:
11422 @example
11423 lutrgb="r=negval:g=negval:b=negval"
11424 lutyuv="y=negval:u=negval:v=negval"
11425 @end example
11426
11427 @item
11428 Negate luminance:
11429 @example
11430 lutyuv=y=negval
11431 @end example
11432
11433 @item
11434 Remove chroma components, turning the video into a graytone image:
11435 @example
11436 lutyuv="u=128:v=128"
11437 @end example
11438
11439 @item
11440 Apply a luma burning effect:
11441 @example
11442 lutyuv="y=2*val"
11443 @end example
11444
11445 @item
11446 Remove green and blue components:
11447 @example
11448 lutrgb="g=0:b=0"
11449 @end example
11450
11451 @item
11452 Set a constant alpha channel value on input:
11453 @example
11454 format=rgba,lutrgb=a="maxval-minval/2"
11455 @end example
11456
11457 @item
11458 Correct luminance gamma by a factor of 0.5:
11459 @example
11460 lutyuv=y=gammaval(0.5)
11461 @end example
11462
11463 @item
11464 Discard least significant bits of luma:
11465 @example
11466 lutyuv=y='bitand(val, 128+64+32)'
11467 @end example
11468
11469 @item
11470 Technicolor like effect:
11471 @example
11472 lutyuv=u='(val-maxval/2)*2+maxval/2':v='(val-maxval/2)*2+maxval/2'
11473 @end example
11474 @end itemize
11475
11476 @section lut2, tlut2
11477
11478 The @code{lut2} filter takes two input streams and outputs one
11479 stream.
11480
11481 The @code{tlut2} (time lut2) filter takes two consecutive frames
11482 from one single stream.
11483
11484 This filter accepts the following parameters:
11485 @table @option
11486 @item c0
11487 set first pixel component expression
11488 @item c1
11489 set second pixel component expression
11490 @item c2
11491 set third pixel component expression
11492 @item c3
11493 set fourth pixel component expression, corresponds to the alpha component
11494 @end table
11495
11496 Each of them specifies the expression to use for computing the lookup table for
11497 the corresponding pixel component values.
11498
11499 The exact component associated to each of the @var{c*} options depends on the
11500 format in inputs.
11501
11502 The expressions can contain the following constants:
11503
11504 @table @option
11505 @item w
11506 @item h
11507 The input width and height.
11508
11509 @item x
11510 The first input value for the pixel component.
11511
11512 @item y
11513 The second input value for the pixel component.
11514
11515 @item bdx
11516 The first input video bit depth.
11517
11518 @item bdy
11519 The second input video bit depth.
11520 @end table
11521
11522 All expressions default to "x".
11523
11524 @subsection Examples
11525
11526 @itemize
11527 @item
11528 Highlight differences between two RGB video streams:
11529 @example
11530 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)'
11531 @end example
11532
11533 @item
11534 Highlight differences between two YUV video streams:
11535 @example
11536 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)'
11537 @end example
11538
11539 @item
11540 Show max difference between two video streams:
11541 @example
11542 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)))'
11543 @end example
11544 @end itemize
11545
11546 @section maskedclamp
11547
11548 Clamp the first input stream with the second input and third input stream.
11549
11550 Returns the value of first stream to be between second input
11551 stream - @code{undershoot} and third input stream + @code{overshoot}.
11552
11553 This filter accepts the following options:
11554 @table @option
11555 @item undershoot
11556 Default value is @code{0}.
11557
11558 @item overshoot
11559 Default value is @code{0}.
11560
11561 @item planes
11562 Set which planes will be processed as bitmap, unprocessed planes will be
11563 copied from first stream.
11564 By default value 0xf, all planes will be processed.
11565 @end table
11566
11567 @section maskedmerge
11568
11569 Merge the first input stream with the second input stream using per pixel
11570 weights in the third input stream.
11571
11572 A value of 0 in the third stream pixel component means that pixel component
11573 from first stream is returned unchanged, while maximum value (eg. 255 for
11574 8-bit videos) means that pixel component from second stream is returned
11575 unchanged. Intermediate values define the amount of merging between both
11576 input stream's pixel components.
11577
11578 This filter accepts the following options:
11579 @table @option
11580 @item planes
11581 Set which planes will be processed as bitmap, unprocessed planes will be
11582 copied from first stream.
11583 By default value 0xf, all planes will be processed.
11584 @end table
11585
11586 @section mcdeint
11587
11588 Apply motion-compensation deinterlacing.
11589
11590 It needs one field per frame as input and must thus be used together
11591 with yadif=1/3 or equivalent.
11592
11593 This filter accepts the following options:
11594 @table @option
11595 @item mode
11596 Set the deinterlacing mode.
11597
11598 It accepts one of the following values:
11599 @table @samp
11600 @item fast
11601 @item medium
11602 @item slow
11603 use iterative motion estimation
11604 @item extra_slow
11605 like @samp{slow}, but use multiple reference frames.
11606 @end table
11607 Default value is @samp{fast}.
11608
11609 @item parity
11610 Set the picture field parity assumed for the input video. It must be
11611 one of the following values:
11612
11613 @table @samp
11614 @item 0, tff
11615 assume top field first
11616 @item 1, bff
11617 assume bottom field first
11618 @end table
11619
11620 Default value is @samp{bff}.
11621
11622 @item qp
11623 Set per-block quantization parameter (QP) used by the internal
11624 encoder.
11625
11626 Higher values should result in a smoother motion vector field but less
11627 optimal individual vectors. Default value is 1.
11628 @end table
11629
11630 @section mergeplanes
11631
11632 Merge color channel components from several video streams.
11633
11634 The filter accepts up to 4 input streams, and merge selected input
11635 planes to the output video.
11636
11637 This filter accepts the following options:
11638 @table @option
11639 @item mapping
11640 Set input to output plane mapping. Default is @code{0}.
11641
11642 The mappings is specified as a bitmap. It should be specified as a
11643 hexadecimal number in the form 0xAa[Bb[Cc[Dd]]]. 'Aa' describes the
11644 mapping for the first plane of the output stream. 'A' sets the number of
11645 the input stream to use (from 0 to 3), and 'a' the plane number of the
11646 corresponding input to use (from 0 to 3). The rest of the mappings is
11647 similar, 'Bb' describes the mapping for the output stream second
11648 plane, 'Cc' describes the mapping for the output stream third plane and
11649 'Dd' describes the mapping for the output stream fourth plane.
11650
11651 @item format
11652 Set output pixel format. Default is @code{yuva444p}.
11653 @end table
11654
11655 @subsection Examples
11656
11657 @itemize
11658 @item
11659 Merge three gray video streams of same width and height into single video stream:
11660 @example
11661 [a0][a1][a2]mergeplanes=0x001020:yuv444p
11662 @end example
11663
11664 @item
11665 Merge 1st yuv444p stream and 2nd gray video stream into yuva444p video stream:
11666 @example
11667 [a0][a1]mergeplanes=0x00010210:yuva444p
11668 @end example
11669
11670 @item
11671 Swap Y and A plane in yuva444p stream:
11672 @example
11673 format=yuva444p,mergeplanes=0x03010200:yuva444p
11674 @end example
11675
11676 @item
11677 Swap U and V plane in yuv420p stream:
11678 @example
11679 format=yuv420p,mergeplanes=0x000201:yuv420p
11680 @end example
11681
11682 @item
11683 Cast a rgb24 clip to yuv444p:
11684 @example
11685 format=rgb24,mergeplanes=0x000102:yuv444p
11686 @end example
11687 @end itemize
11688
11689 @section mestimate
11690
11691 Estimate and export motion vectors using block matching algorithms.
11692 Motion vectors are stored in frame side data to be used by other filters.
11693
11694 This filter accepts the following options:
11695 @table @option
11696 @item method
11697 Specify the motion estimation method. Accepts one of the following values:
11698
11699 @table @samp
11700 @item esa
11701 Exhaustive search algorithm.
11702 @item tss
11703 Three step search algorithm.
11704 @item tdls
11705 Two dimensional logarithmic search algorithm.
11706 @item ntss
11707 New three step search algorithm.
11708 @item fss
11709 Four step search algorithm.
11710 @item ds
11711 Diamond search algorithm.
11712 @item hexbs
11713 Hexagon-based search algorithm.
11714 @item epzs
11715 Enhanced predictive zonal search algorithm.
11716 @item umh
11717 Uneven multi-hexagon search algorithm.
11718 @end table
11719 Default value is @samp{esa}.
11720
11721 @item mb_size
11722 Macroblock size. Default @code{16}.
11723
11724 @item search_param
11725 Search parameter. Default @code{7}.
11726 @end table
11727
11728 @section midequalizer
11729
11730 Apply Midway Image Equalization effect using two video streams.
11731
11732 Midway Image Equalization adjusts a pair of images to have the same
11733 histogram, while maintaining their dynamics as much as possible. It's
11734 useful for e.g. matching exposures from a pair of stereo cameras.
11735
11736 This filter has two inputs and one output, which must be of same pixel format, but
11737 may be of different sizes. The output of filter is first input adjusted with
11738 midway histogram of both inputs.
11739
11740 This filter accepts the following option:
11741
11742 @table @option
11743 @item planes
11744 Set which planes to process. Default is @code{15}, which is all available planes.
11745 @end table
11746
11747 @section minterpolate
11748
11749 Convert the video to specified frame rate using motion interpolation.
11750
11751 This filter accepts the following options:
11752 @table @option
11753 @item fps
11754 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}.
11755
11756 @item mi_mode
11757 Motion interpolation mode. Following values are accepted:
11758 @table @samp
11759 @item dup
11760 Duplicate previous or next frame for interpolating new ones.
11761 @item blend
11762 Blend source frames. Interpolated frame is mean of previous and next frames.
11763 @item mci
11764 Motion compensated interpolation. Following options are effective when this mode is selected:
11765
11766 @table @samp
11767 @item mc_mode
11768 Motion compensation mode. Following values are accepted:
11769 @table @samp
11770 @item obmc
11771 Overlapped block motion compensation.
11772 @item aobmc
11773 Adaptive overlapped block motion compensation. Window weighting coefficients are controlled adaptively according to the reliabilities of the neighboring motion vectors to reduce oversmoothing.
11774 @end table
11775 Default mode is @samp{obmc}.
11776
11777 @item me_mode
11778 Motion estimation mode. Following values are accepted:
11779 @table @samp
11780 @item bidir
11781 Bidirectional motion estimation. Motion vectors are estimated for each source frame in both forward and backward directions.
11782 @item bilat
11783 Bilateral motion estimation. Motion vectors are estimated directly for interpolated frame.
11784 @end table
11785 Default mode is @samp{bilat}.
11786
11787 @item me
11788 The algorithm to be used for motion estimation. Following values are accepted:
11789 @table @samp
11790 @item esa
11791 Exhaustive search algorithm.
11792 @item tss
11793 Three step search algorithm.
11794 @item tdls
11795 Two dimensional logarithmic search algorithm.
11796 @item ntss
11797 New three step search algorithm.
11798 @item fss
11799 Four step search algorithm.
11800 @item ds
11801 Diamond search algorithm.
11802 @item hexbs
11803 Hexagon-based search algorithm.
11804 @item epzs
11805 Enhanced predictive zonal search algorithm.
11806 @item umh
11807 Uneven multi-hexagon search algorithm.
11808 @end table
11809 Default algorithm is @samp{epzs}.
11810
11811 @item mb_size
11812 Macroblock size. Default @code{16}.
11813
11814 @item search_param
11815 Motion estimation search parameter. Default @code{32}.
11816
11817 @item vsbmc
11818 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).
11819 @end table
11820 @end table
11821
11822 @item scd
11823 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:
11824 @table @samp
11825 @item none
11826 Disable scene change detection.
11827 @item fdiff
11828 Frame difference. Corresponding pixel values are compared and if it satisfies @var{scd_threshold} scene change is detected.
11829 @end table
11830 Default method is @samp{fdiff}.
11831
11832 @item scd_threshold
11833 Scene change detection threshold. Default is @code{5.0}.
11834 @end table
11835
11836 @section mix
11837
11838 Mix several video input streams into one video stream.
11839
11840 A description of the accepted options follows.
11841
11842 @table @option
11843 @item nb_inputs
11844 The number of inputs. If unspecified, it defaults to 2.
11845
11846 @item weights
11847 Specify weight of each input video stream as sequence.
11848 Each weight is separated by space. If number of weights
11849 is smaller than number of @var{frames} last specified
11850 weight will be used for all remaining unset weights.
11851
11852 @item scale
11853 Specify scale, if it is set it will be multiplied with sum
11854 of each weight multiplied with pixel values to give final destination
11855 pixel value. By default @var{scale} is auto scaled to sum of weights.
11856
11857 @item duration
11858 Specify how end of stream is determined.
11859 @table @samp
11860 @item longest
11861 The duration of the longest input. (default)
11862
11863 @item shortest
11864 The duration of the shortest input.
11865
11866 @item first
11867 The duration of the first input.
11868 @end table
11869 @end table
11870
11871 @section mpdecimate
11872
11873 Drop frames that do not differ greatly from the previous frame in
11874 order to reduce frame rate.
11875
11876 The main use of this filter is for very-low-bitrate encoding
11877 (e.g. streaming over dialup modem), but it could in theory be used for
11878 fixing movies that were inverse-telecined incorrectly.
11879
11880 A description of the accepted options follows.
11881
11882 @table @option
11883 @item max
11884 Set the maximum number of consecutive frames which can be dropped (if
11885 positive), or the minimum interval between dropped frames (if
11886 negative). If the value is 0, the frame is dropped disregarding the
11887 number of previous sequentially dropped frames.
11888
11889 Default value is 0.
11890
11891 @item hi
11892 @item lo
11893 @item frac
11894 Set the dropping threshold values.
11895
11896 Values for @option{hi} and @option{lo} are for 8x8 pixel blocks and
11897 represent actual pixel value differences, so a threshold of 64
11898 corresponds to 1 unit of difference for each pixel, or the same spread
11899 out differently over the block.
11900
11901 A frame is a candidate for dropping if no 8x8 blocks differ by more
11902 than a threshold of @option{hi}, and if no more than @option{frac} blocks (1
11903 meaning the whole image) differ by more than a threshold of @option{lo}.
11904
11905 Default value for @option{hi} is 64*12, default value for @option{lo} is
11906 64*5, and default value for @option{frac} is 0.33.
11907 @end table
11908
11909
11910 @section negate
11911
11912 Negate (invert) the input video.
11913
11914 It accepts the following option:
11915
11916 @table @option
11917
11918 @item negate_alpha
11919 With value 1, it negates the alpha component, if present. Default value is 0.
11920 @end table
11921
11922 @anchor{nlmeans}
11923 @section nlmeans
11924
11925 Denoise frames using Non-Local Means algorithm.
11926
11927 Each pixel is adjusted by looking for other pixels with similar contexts. This
11928 context similarity is defined by comparing their surrounding patches of size
11929 @option{p}x@option{p}. Patches are searched in an area of @option{r}x@option{r}
11930 around the pixel.
11931
11932 Note that the research area defines centers for patches, which means some
11933 patches will be made of pixels outside that research area.
11934
11935 The filter accepts the following options.
11936
11937 @table @option
11938 @item s
11939 Set denoising strength.
11940
11941 @item p
11942 Set patch size.
11943
11944 @item pc
11945 Same as @option{p} but for chroma planes.
11946
11947 The default value is @var{0} and means automatic.
11948
11949 @item r
11950 Set research size.
11951
11952 @item rc
11953 Same as @option{r} but for chroma planes.
11954
11955 The default value is @var{0} and means automatic.
11956 @end table
11957
11958 @section nnedi
11959
11960 Deinterlace video using neural network edge directed interpolation.
11961
11962 This filter accepts the following options:
11963
11964 @table @option
11965 @item weights
11966 Mandatory option, without binary file filter can not work.
11967 Currently file can be found here:
11968 https://github.com/dubhater/vapoursynth-nnedi3/blob/master/src/nnedi3_weights.bin
11969
11970 @item deint
11971 Set which frames to deinterlace, by default it is @code{all}.
11972 Can be @code{all} or @code{interlaced}.
11973
11974 @item field
11975 Set mode of operation.
11976
11977 Can be one of the following:
11978
11979 @table @samp
11980 @item af
11981 Use frame flags, both fields.
11982 @item a
11983 Use frame flags, single field.
11984 @item t
11985 Use top field only.
11986 @item b
11987 Use bottom field only.
11988 @item tf
11989 Use both fields, top first.
11990 @item bf
11991 Use both fields, bottom first.
11992 @end table
11993
11994 @item planes
11995 Set which planes to process, by default filter process all frames.
11996
11997 @item nsize
11998 Set size of local neighborhood around each pixel, used by the predictor neural
11999 network.
12000
12001 Can be one of the following:
12002
12003 @table @samp
12004 @item s8x6
12005 @item s16x6
12006 @item s32x6
12007 @item s48x6
12008 @item s8x4
12009 @item s16x4
12010 @item s32x4
12011 @end table
12012
12013 @item nns
12014 Set the number of neurons in predictor neural network.
12015 Can be one of the following:
12016
12017 @table @samp
12018 @item n16
12019 @item n32
12020 @item n64
12021 @item n128
12022 @item n256
12023 @end table
12024
12025 @item qual
12026 Controls the number of different neural network predictions that are blended
12027 together to compute the final output value. Can be @code{fast}, default or
12028 @code{slow}.
12029
12030 @item etype
12031 Set which set of weights to use in the predictor.
12032 Can be one of the following:
12033
12034 @table @samp
12035 @item a
12036 weights trained to minimize absolute error
12037 @item s
12038 weights trained to minimize squared error
12039 @end table
12040
12041 @item pscrn
12042 Controls whether or not the prescreener neural network is used to decide
12043 which pixels should be processed by the predictor neural network and which
12044 can be handled by simple cubic interpolation.
12045 The prescreener is trained to know whether cubic interpolation will be
12046 sufficient for a pixel or whether it should be predicted by the predictor nn.
12047 The computational complexity of the prescreener nn is much less than that of
12048 the predictor nn. Since most pixels can be handled by cubic interpolation,
12049 using the prescreener generally results in much faster processing.
12050 The prescreener is pretty accurate, so the difference between using it and not
12051 using it is almost always unnoticeable.
12052
12053 Can be one of the following:
12054
12055 @table @samp
12056 @item none
12057 @item original
12058 @item new
12059 @end table
12060
12061 Default is @code{new}.
12062
12063 @item fapprox
12064 Set various debugging flags.
12065 @end table
12066
12067 @section noformat
12068
12069 Force libavfilter not to use any of the specified pixel formats for the
12070 input to the next filter.
12071
12072 It accepts the following parameters:
12073 @table @option
12074
12075 @item pix_fmts
12076 A '|'-separated list of pixel format names, such as
12077 pix_fmts=yuv420p|monow|rgb24".
12078
12079 @end table
12080
12081 @subsection Examples
12082
12083 @itemize
12084 @item
12085 Force libavfilter to use a format different from @var{yuv420p} for the
12086 input to the vflip filter:
12087 @example
12088 noformat=pix_fmts=yuv420p,vflip
12089 @end example
12090
12091 @item
12092 Convert the input video to any of the formats not contained in the list:
12093 @example
12094 noformat=yuv420p|yuv444p|yuv410p
12095 @end example
12096 @end itemize
12097
12098 @section noise
12099
12100 Add noise on video input frame.
12101
12102 The filter accepts the following options:
12103
12104 @table @option
12105 @item all_seed
12106 @item c0_seed
12107 @item c1_seed
12108 @item c2_seed
12109 @item c3_seed
12110 Set noise seed for specific pixel component or all pixel components in case
12111 of @var{all_seed}. Default value is @code{123457}.
12112
12113 @item all_strength, alls
12114 @item c0_strength, c0s
12115 @item c1_strength, c1s
12116 @item c2_strength, c2s
12117 @item c3_strength, c3s
12118 Set noise strength for specific pixel component or all pixel components in case
12119 @var{all_strength}. Default value is @code{0}. Allowed range is [0, 100].
12120
12121 @item all_flags, allf
12122 @item c0_flags, c0f
12123 @item c1_flags, c1f
12124 @item c2_flags, c2f
12125 @item c3_flags, c3f
12126 Set pixel component flags or set flags for all components if @var{all_flags}.
12127 Available values for component flags are:
12128 @table @samp
12129 @item a
12130 averaged temporal noise (smoother)
12131 @item p
12132 mix random noise with a (semi)regular pattern
12133 @item t
12134 temporal noise (noise pattern changes between frames)
12135 @item u
12136 uniform noise (gaussian otherwise)
12137 @end table
12138 @end table
12139
12140 @subsection Examples
12141
12142 Add temporal and uniform noise to input video:
12143 @example
12144 noise=alls=20:allf=t+u
12145 @end example
12146
12147 @section normalize
12148
12149 Normalize RGB video (aka histogram stretching, contrast stretching).
12150 See: https://en.wikipedia.org/wiki/Normalization_(image_processing)
12151
12152 For each channel of each frame, the filter computes the input range and maps
12153 it linearly to the user-specified output range. The output range defaults
12154 to the full dynamic range from pure black to pure white.
12155
12156 Temporal smoothing can be used on the input range to reduce flickering (rapid
12157 changes in brightness) caused when small dark or bright objects enter or leave
12158 the scene. This is similar to the auto-exposure (automatic gain control) on a
12159 video camera, and, like a video camera, it may cause a period of over- or
12160 under-exposure of the video.
12161
12162 The R,G,B channels can be normalized independently, which may cause some
12163 color shifting, or linked together as a single channel, which prevents
12164 color shifting. Linked normalization preserves hue. Independent normalization
12165 does not, so it can be used to remove some color casts. Independent and linked
12166 normalization can be combined in any ratio.
12167
12168 The normalize filter accepts the following options:
12169
12170 @table @option
12171 @item blackpt
12172 @item whitept
12173 Colors which define the output range. The minimum input value is mapped to
12174 the @var{blackpt}. The maximum input value is mapped to the @var{whitept}.
12175 The defaults are black and white respectively. Specifying white for
12176 @var{blackpt} and black for @var{whitept} will give color-inverted,
12177 normalized video. Shades of grey can be used to reduce the dynamic range
12178 (contrast). Specifying saturated colors here can create some interesting
12179 effects.
12180
12181 @item smoothing
12182 The number of previous frames to use for temporal smoothing. The input range
12183 of each channel is smoothed using a rolling average over the current frame
12184 and the @var{smoothing} previous frames. The default is 0 (no temporal
12185 smoothing).
12186
12187 @item independence
12188 Controls the ratio of independent (color shifting) channel normalization to
12189 linked (color preserving) normalization. 0.0 is fully linked, 1.0 is fully
12190 independent. Defaults to 1.0 (fully independent).
12191
12192 @item strength
12193 Overall strength of the filter. 1.0 is full strength. 0.0 is a rather
12194 expensive no-op. Defaults to 1.0 (full strength).
12195
12196 @end table
12197
12198 @subsection Examples
12199
12200 Stretch video contrast to use the full dynamic range, with no temporal
12201 smoothing; may flicker depending on the source content:
12202 @example
12203 normalize=blackpt=black:whitept=white:smoothing=0
12204 @end example
12205
12206 As above, but with 50 frames of temporal smoothing; flicker should be
12207 reduced, depending on the source content:
12208 @example
12209 normalize=blackpt=black:whitept=white:smoothing=50
12210 @end example
12211
12212 As above, but with hue-preserving linked channel normalization:
12213 @example
12214 normalize=blackpt=black:whitept=white:smoothing=50:independence=0
12215 @end example
12216
12217 As above, but with half strength:
12218 @example
12219 normalize=blackpt=black:whitept=white:smoothing=50:independence=0:strength=0.5
12220 @end example
12221
12222 Map the darkest input color to red, the brightest input color to cyan:
12223 @example
12224 normalize=blackpt=red:whitept=cyan
12225 @end example
12226
12227 @section null
12228
12229 Pass the video source unchanged to the output.
12230
12231 @section ocr
12232 Optical Character Recognition
12233
12234 This filter uses Tesseract for optical character recognition. To enable
12235 compilation of this filter, you need to configure FFmpeg with
12236 @code{--enable-libtesseract}.
12237
12238 It accepts the following options:
12239
12240 @table @option
12241 @item datapath
12242 Set datapath to tesseract data. Default is to use whatever was
12243 set at installation.
12244
12245 @item language
12246 Set language, default is "eng".
12247
12248 @item whitelist
12249 Set character whitelist.
12250
12251 @item blacklist
12252 Set character blacklist.
12253 @end table
12254
12255 The filter exports recognized text as the frame metadata @code{lavfi.ocr.text}.
12256
12257 @section ocv
12258
12259 Apply a video transform using libopencv.
12260
12261 To enable this filter, install the libopencv library and headers and
12262 configure FFmpeg with @code{--enable-libopencv}.
12263
12264 It accepts the following parameters:
12265
12266 @table @option
12267
12268 @item filter_name
12269 The name of the libopencv filter to apply.
12270
12271 @item filter_params
12272 The parameters to pass to the libopencv filter. If not specified, the default
12273 values are assumed.
12274
12275 @end table
12276
12277 Refer to the official libopencv documentation for more precise
12278 information:
12279 @url{http://docs.opencv.org/master/modules/imgproc/doc/filtering.html}
12280
12281 Several libopencv filters are supported; see the following subsections.
12282
12283 @anchor{dilate}
12284 @subsection dilate
12285
12286 Dilate an image by using a specific structuring element.
12287 It corresponds to the libopencv function @code{cvDilate}.
12288
12289 It accepts the parameters: @var{struct_el}|@var{nb_iterations}.
12290
12291 @var{struct_el} represents a structuring element, and has the syntax:
12292 @var{cols}x@var{rows}+@var{anchor_x}x@var{anchor_y}/@var{shape}
12293
12294 @var{cols} and @var{rows} represent the number of columns and rows of
12295 the structuring element, @var{anchor_x} and @var{anchor_y} the anchor
12296 point, and @var{shape} the shape for the structuring element. @var{shape}
12297 must be "rect", "cross", "ellipse", or "custom".
12298
12299 If the value for @var{shape} is "custom", it must be followed by a
12300 string of the form "=@var{filename}". The file with name
12301 @var{filename} is assumed to represent a binary image, with each
12302 printable character corresponding to a bright pixel. When a custom
12303 @var{shape} is used, @var{cols} and @var{rows} are ignored, the number
12304 or columns and rows of the read file are assumed instead.
12305
12306 The default value for @var{struct_el} is "3x3+0x0/rect".
12307
12308 @var{nb_iterations} specifies the number of times the transform is
12309 applied to the image, and defaults to 1.
12310
12311 Some examples:
12312 @example
12313 # Use the default values
12314 ocv=dilate
12315
12316 # Dilate using a structuring element with a 5x5 cross, iterating two times
12317 ocv=filter_name=dilate:filter_params=5x5+2x2/cross|2
12318
12319 # Read the shape from the file diamond.shape, iterating two times.
12320 # The file diamond.shape may contain a pattern of characters like this
12321 #   *
12322 #  ***
12323 # *****
12324 #  ***
12325 #   *
12326 # The specified columns and rows are ignored
12327 # but the anchor point coordinates are not
12328 ocv=dilate:0x0+2x2/custom=diamond.shape|2
12329 @end example
12330
12331 @subsection erode
12332
12333 Erode an image by using a specific structuring element.
12334 It corresponds to the libopencv function @code{cvErode}.
12335
12336 It accepts the parameters: @var{struct_el}:@var{nb_iterations},
12337 with the same syntax and semantics as the @ref{dilate} filter.
12338
12339 @subsection smooth
12340
12341 Smooth the input video.
12342
12343 The filter takes the following parameters:
12344 @var{type}|@var{param1}|@var{param2}|@var{param3}|@var{param4}.
12345
12346 @var{type} is the type of smooth filter to apply, and must be one of
12347 the following values: "blur", "blur_no_scale", "median", "gaussian",
12348 or "bilateral". The default value is "gaussian".
12349
12350 The meaning of @var{param1}, @var{param2}, @var{param3}, and @var{param4}
12351 depend on the smooth type. @var{param1} and
12352 @var{param2} accept integer positive values or 0. @var{param3} and
12353 @var{param4} accept floating point values.
12354
12355 The default value for @var{param1} is 3. The default value for the
12356 other parameters is 0.
12357
12358 These parameters correspond to the parameters assigned to the
12359 libopencv function @code{cvSmooth}.
12360
12361 @section oscilloscope
12362
12363 2D Video Oscilloscope.
12364
12365 Useful to measure spatial impulse, step responses, chroma delays, etc.
12366
12367 It accepts the following parameters:
12368
12369 @table @option
12370 @item x
12371 Set scope center x position.
12372
12373 @item y
12374 Set scope center y position.
12375
12376 @item s
12377 Set scope size, relative to frame diagonal.
12378
12379 @item t
12380 Set scope tilt/rotation.
12381
12382 @item o
12383 Set trace opacity.
12384
12385 @item tx
12386 Set trace center x position.
12387
12388 @item ty
12389 Set trace center y position.
12390
12391 @item tw
12392 Set trace width, relative to width of frame.
12393
12394 @item th
12395 Set trace height, relative to height of frame.
12396
12397 @item c
12398 Set which components to trace. By default it traces first three components.
12399
12400 @item g
12401 Draw trace grid. By default is enabled.
12402
12403 @item st
12404 Draw some statistics. By default is enabled.
12405
12406 @item sc
12407 Draw scope. By default is enabled.
12408 @end table
12409
12410 @subsection Examples
12411
12412 @itemize
12413 @item
12414 Inspect full first row of video frame.
12415 @example
12416 oscilloscope=x=0.5:y=0:s=1
12417 @end example
12418
12419 @item
12420 Inspect full last row of video frame.
12421 @example
12422 oscilloscope=x=0.5:y=1:s=1
12423 @end example
12424
12425 @item
12426 Inspect full 5th line of video frame of height 1080.
12427 @example
12428 oscilloscope=x=0.5:y=5/1080:s=1
12429 @end example
12430
12431 @item
12432 Inspect full last column of video frame.
12433 @example
12434 oscilloscope=x=1:y=0.5:s=1:t=1
12435 @end example
12436
12437 @end itemize
12438
12439 @anchor{overlay}
12440 @section overlay
12441
12442 Overlay one video on top of another.
12443
12444 It takes two inputs and has one output. The first input is the "main"
12445 video on which the second input is overlaid.
12446
12447 It accepts the following parameters:
12448
12449 A description of the accepted options follows.
12450
12451 @table @option
12452 @item x
12453 @item y
12454 Set the expression for the x and y coordinates of the overlaid video
12455 on the main video. Default value is "0" for both expressions. In case
12456 the expression is invalid, it is set to a huge value (meaning that the
12457 overlay will not be displayed within the output visible area).
12458
12459 @item eof_action
12460 See @ref{framesync}.
12461
12462 @item eval
12463 Set when the expressions for @option{x}, and @option{y} are evaluated.
12464
12465 It accepts the following values:
12466 @table @samp
12467 @item init
12468 only evaluate expressions once during the filter initialization or
12469 when a command is processed
12470
12471 @item frame
12472 evaluate expressions for each incoming frame
12473 @end table
12474
12475 Default value is @samp{frame}.
12476
12477 @item shortest
12478 See @ref{framesync}.
12479
12480 @item format
12481 Set the format for the output video.
12482
12483 It accepts the following values:
12484 @table @samp
12485 @item yuv420
12486 force YUV420 output
12487
12488 @item yuv422
12489 force YUV422 output
12490
12491 @item yuv444
12492 force YUV444 output
12493
12494 @item rgb
12495 force packed RGB output
12496
12497 @item gbrp
12498 force planar RGB output
12499
12500 @item auto
12501 automatically pick format
12502 @end table
12503
12504 Default value is @samp{yuv420}.
12505
12506 @item repeatlast
12507 See @ref{framesync}.
12508
12509 @item alpha
12510 Set format of alpha of the overlaid video, it can be @var{straight} or
12511 @var{premultiplied}. Default is @var{straight}.
12512 @end table
12513
12514 The @option{x}, and @option{y} expressions can contain the following
12515 parameters.
12516
12517 @table @option
12518 @item main_w, W
12519 @item main_h, H
12520 The main input width and height.
12521
12522 @item overlay_w, w
12523 @item overlay_h, h
12524 The overlay input width and height.
12525
12526 @item x
12527 @item y
12528 The computed values for @var{x} and @var{y}. They are evaluated for
12529 each new frame.
12530
12531 @item hsub
12532 @item vsub
12533 horizontal and vertical chroma subsample values of the output
12534 format. For example for the pixel format "yuv422p" @var{hsub} is 2 and
12535 @var{vsub} is 1.
12536
12537 @item n
12538 the number of input frame, starting from 0
12539
12540 @item pos
12541 the position in the file of the input frame, NAN if unknown
12542
12543 @item t
12544 The timestamp, expressed in seconds. It's NAN if the input timestamp is unknown.
12545
12546 @end table
12547
12548 This filter also supports the @ref{framesync} options.
12549
12550 Note that the @var{n}, @var{pos}, @var{t} variables are available only
12551 when evaluation is done @emph{per frame}, and will evaluate to NAN
12552 when @option{eval} is set to @samp{init}.
12553
12554 Be aware that frames are taken from each input video in timestamp
12555 order, hence, if their initial timestamps differ, it is a good idea
12556 to pass the two inputs through a @var{setpts=PTS-STARTPTS} filter to
12557 have them begin in the same zero timestamp, as the example for
12558 the @var{movie} filter does.
12559
12560 You can chain together more overlays but you should test the
12561 efficiency of such approach.
12562
12563 @subsection Commands
12564
12565 This filter supports the following commands:
12566 @table @option
12567 @item x
12568 @item y
12569 Modify the x and y of the overlay input.
12570 The command accepts the same syntax of the corresponding option.
12571
12572 If the specified expression is not valid, it is kept at its current
12573 value.
12574 @end table
12575
12576 @subsection Examples
12577
12578 @itemize
12579 @item
12580 Draw the overlay at 10 pixels from the bottom right corner of the main
12581 video:
12582 @example
12583 overlay=main_w-overlay_w-10:main_h-overlay_h-10
12584 @end example
12585
12586 Using named options the example above becomes:
12587 @example
12588 overlay=x=main_w-overlay_w-10:y=main_h-overlay_h-10
12589 @end example
12590
12591 @item
12592 Insert a transparent PNG logo in the bottom left corner of the input,
12593 using the @command{ffmpeg} tool with the @code{-filter_complex} option:
12594 @example
12595 ffmpeg -i input -i logo -filter_complex 'overlay=10:main_h-overlay_h-10' output
12596 @end example
12597
12598 @item
12599 Insert 2 different transparent PNG logos (second logo on bottom
12600 right corner) using the @command{ffmpeg} tool:
12601 @example
12602 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
12603 @end example
12604
12605 @item
12606 Add a transparent color layer on top of the main video; @code{WxH}
12607 must specify the size of the main input to the overlay filter:
12608 @example
12609 color=color=red@@.3:size=WxH [over]; [in][over] overlay [out]
12610 @end example
12611
12612 @item
12613 Play an original video and a filtered version (here with the deshake
12614 filter) side by side using the @command{ffplay} tool:
12615 @example
12616 ffplay input.avi -vf 'split[a][b]; [a]pad=iw*2:ih[src]; [b]deshake[filt]; [src][filt]overlay=w'
12617 @end example
12618
12619 The above command is the same as:
12620 @example
12621 ffplay input.avi -vf 'split[b], pad=iw*2[src], [b]deshake, [src]overlay=w'
12622 @end example
12623
12624 @item
12625 Make a sliding overlay appearing from the left to the right top part of the
12626 screen starting since time 2:
12627 @example
12628 overlay=x='if(gte(t,2), -w+(t-2)*20, NAN)':y=0
12629 @end example
12630
12631 @item
12632 Compose output by putting two input videos side to side:
12633 @example
12634 ffmpeg -i left.avi -i right.avi -filter_complex "
12635 nullsrc=size=200x100 [background];
12636 [0:v] setpts=PTS-STARTPTS, scale=100x100 [left];
12637 [1:v] setpts=PTS-STARTPTS, scale=100x100 [right];
12638 [background][left]       overlay=shortest=1       [background+left];
12639 [background+left][right] overlay=shortest=1:x=100 [left+right]
12640 "
12641 @end example
12642
12643 @item
12644 Mask 10-20 seconds of a video by applying the delogo filter to a section
12645 @example
12646 ffmpeg -i test.avi -codec:v:0 wmv2 -ar 11025 -b:v 9000k
12647 -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]'
12648 masked.avi
12649 @end example
12650
12651 @item
12652 Chain several overlays in cascade:
12653 @example
12654 nullsrc=s=200x200 [bg];
12655 testsrc=s=100x100, split=4 [in0][in1][in2][in3];
12656 [in0] lutrgb=r=0, [bg]   overlay=0:0     [mid0];
12657 [in1] lutrgb=g=0, [mid0] overlay=100:0   [mid1];
12658 [in2] lutrgb=b=0, [mid1] overlay=0:100   [mid2];
12659 [in3] null,       [mid2] overlay=100:100 [out0]
12660 @end example
12661
12662 @end itemize
12663
12664 @section owdenoise
12665
12666 Apply Overcomplete Wavelet denoiser.
12667
12668 The filter accepts the following options:
12669
12670 @table @option
12671 @item depth
12672 Set depth.
12673
12674 Larger depth values will denoise lower frequency components more, but
12675 slow down filtering.
12676
12677 Must be an int in the range 8-16, default is @code{8}.
12678
12679 @item luma_strength, ls
12680 Set luma strength.
12681
12682 Must be a double value in the range 0-1000, default is @code{1.0}.
12683
12684 @item chroma_strength, cs
12685 Set chroma strength.
12686
12687 Must be a double value in the range 0-1000, default is @code{1.0}.
12688 @end table
12689
12690 @anchor{pad}
12691 @section pad
12692
12693 Add paddings to the input image, and place the original input at the
12694 provided @var{x}, @var{y} coordinates.
12695
12696 It accepts the following parameters:
12697
12698 @table @option
12699 @item width, w
12700 @item height, h
12701 Specify an expression for the size of the output image with the
12702 paddings added. If the value for @var{width} or @var{height} is 0, the
12703 corresponding input size is used for the output.
12704
12705 The @var{width} expression can reference the value set by the
12706 @var{height} expression, and vice versa.
12707
12708 The default value of @var{width} and @var{height} is 0.
12709
12710 @item x
12711 @item y
12712 Specify the offsets to place the input image at within the padded area,
12713 with respect to the top/left border of the output image.
12714
12715 The @var{x} expression can reference the value set by the @var{y}
12716 expression, and vice versa.
12717
12718 The default value of @var{x} and @var{y} is 0.
12719
12720 If @var{x} or @var{y} evaluate to a negative number, they'll be changed
12721 so the input image is centered on the padded area.
12722
12723 @item color
12724 Specify the color of the padded area. For the syntax of this option,
12725 check the @ref{color syntax,,"Color" section in the ffmpeg-utils
12726 manual,ffmpeg-utils}.
12727
12728 The default value of @var{color} is "black".
12729
12730 @item eval
12731 Specify when to evaluate  @var{width}, @var{height}, @var{x} and @var{y} expression.
12732
12733 It accepts the following values:
12734
12735 @table @samp
12736 @item init
12737 Only evaluate expressions once during the filter initialization or when
12738 a command is processed.
12739
12740 @item frame
12741 Evaluate expressions for each incoming frame.
12742
12743 @end table
12744
12745 Default value is @samp{init}.
12746
12747 @item aspect
12748 Pad to aspect instead to a resolution.
12749
12750 @end table
12751
12752 The value for the @var{width}, @var{height}, @var{x}, and @var{y}
12753 options are expressions containing the following constants:
12754
12755 @table @option
12756 @item in_w
12757 @item in_h
12758 The input video width and height.
12759
12760 @item iw
12761 @item ih
12762 These are the same as @var{in_w} and @var{in_h}.
12763
12764 @item out_w
12765 @item out_h
12766 The output width and height (the size of the padded area), as
12767 specified by the @var{width} and @var{height} expressions.
12768
12769 @item ow
12770 @item oh
12771 These are the same as @var{out_w} and @var{out_h}.
12772
12773 @item x
12774 @item y
12775 The x and y offsets as specified by the @var{x} and @var{y}
12776 expressions, or NAN if not yet specified.
12777
12778 @item a
12779 same as @var{iw} / @var{ih}
12780
12781 @item sar
12782 input sample aspect ratio
12783
12784 @item dar
12785 input display aspect ratio, it is the same as (@var{iw} / @var{ih}) * @var{sar}
12786
12787 @item hsub
12788 @item vsub
12789 The horizontal and vertical chroma subsample values. For example for the
12790 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
12791 @end table
12792
12793 @subsection Examples
12794
12795 @itemize
12796 @item
12797 Add paddings with the color "violet" to the input video. The output video
12798 size is 640x480, and the top-left corner of the input video is placed at
12799 column 0, row 40
12800 @example
12801 pad=640:480:0:40:violet
12802 @end example
12803
12804 The example above is equivalent to the following command:
12805 @example
12806 pad=width=640:height=480:x=0:y=40:color=violet
12807 @end example
12808
12809 @item
12810 Pad the input to get an output with dimensions increased by 3/2,
12811 and put the input video at the center of the padded area:
12812 @example
12813 pad="3/2*iw:3/2*ih:(ow-iw)/2:(oh-ih)/2"
12814 @end example
12815
12816 @item
12817 Pad the input to get a squared output with size equal to the maximum
12818 value between the input width and height, and put the input video at
12819 the center of the padded area:
12820 @example
12821 pad="max(iw\,ih):ow:(ow-iw)/2:(oh-ih)/2"
12822 @end example
12823
12824 @item
12825 Pad the input to get a final w/h ratio of 16:9:
12826 @example
12827 pad="ih*16/9:ih:(ow-iw)/2:(oh-ih)/2"
12828 @end example
12829
12830 @item
12831 In case of anamorphic video, in order to set the output display aspect
12832 correctly, it is necessary to use @var{sar} in the expression,
12833 according to the relation:
12834 @example
12835 (ih * X / ih) * sar = output_dar
12836 X = output_dar / sar
12837 @end example
12838
12839 Thus the previous example needs to be modified to:
12840 @example
12841 pad="ih*16/9/sar:ih:(ow-iw)/2:(oh-ih)/2"
12842 @end example
12843
12844 @item
12845 Double the output size and put the input video in the bottom-right
12846 corner of the output padded area:
12847 @example
12848 pad="2*iw:2*ih:ow-iw:oh-ih"
12849 @end example
12850 @end itemize
12851
12852 @anchor{palettegen}
12853 @section palettegen
12854
12855 Generate one palette for a whole video stream.
12856
12857 It accepts the following options:
12858
12859 @table @option
12860 @item max_colors
12861 Set the maximum number of colors to quantize in the palette.
12862 Note: the palette will still contain 256 colors; the unused palette entries
12863 will be black.
12864
12865 @item reserve_transparent
12866 Create a palette of 255 colors maximum and reserve the last one for
12867 transparency. Reserving the transparency color is useful for GIF optimization.
12868 If not set, the maximum of colors in the palette will be 256. You probably want
12869 to disable this option for a standalone image.
12870 Set by default.
12871
12872 @item transparency_color
12873 Set the color that will be used as background for transparency.
12874
12875 @item stats_mode
12876 Set statistics mode.
12877
12878 It accepts the following values:
12879 @table @samp
12880 @item full
12881 Compute full frame histograms.
12882 @item diff
12883 Compute histograms only for the part that differs from previous frame. This
12884 might be relevant to give more importance to the moving part of your input if
12885 the background is static.
12886 @item single
12887 Compute new histogram for each frame.
12888 @end table
12889
12890 Default value is @var{full}.
12891 @end table
12892
12893 The filter also exports the frame metadata @code{lavfi.color_quant_ratio}
12894 (@code{nb_color_in / nb_color_out}) which you can use to evaluate the degree of
12895 color quantization of the palette. This information is also visible at
12896 @var{info} logging level.
12897
12898 @subsection Examples
12899
12900 @itemize
12901 @item
12902 Generate a representative palette of a given video using @command{ffmpeg}:
12903 @example
12904 ffmpeg -i input.mkv -vf palettegen palette.png
12905 @end example
12906 @end itemize
12907
12908 @section paletteuse
12909
12910 Use a palette to downsample an input video stream.
12911
12912 The filter takes two inputs: one video stream and a palette. The palette must
12913 be a 256 pixels image.
12914
12915 It accepts the following options:
12916
12917 @table @option
12918 @item dither
12919 Select dithering mode. Available algorithms are:
12920 @table @samp
12921 @item bayer
12922 Ordered 8x8 bayer dithering (deterministic)
12923 @item heckbert
12924 Dithering as defined by Paul Heckbert in 1982 (simple error diffusion).
12925 Note: this dithering is sometimes considered "wrong" and is included as a
12926 reference.
12927 @item floyd_steinberg
12928 Floyd and Steingberg dithering (error diffusion)
12929 @item sierra2
12930 Frankie Sierra dithering v2 (error diffusion)
12931 @item sierra2_4a
12932 Frankie Sierra dithering v2 "Lite" (error diffusion)
12933 @end table
12934
12935 Default is @var{sierra2_4a}.
12936
12937 @item bayer_scale
12938 When @var{bayer} dithering is selected, this option defines the scale of the
12939 pattern (how much the crosshatch pattern is visible). A low value means more
12940 visible pattern for less banding, and higher value means less visible pattern
12941 at the cost of more banding.
12942
12943 The option must be an integer value in the range [0,5]. Default is @var{2}.
12944
12945 @item diff_mode
12946 If set, define the zone to process
12947
12948 @table @samp
12949 @item rectangle
12950 Only the changing rectangle will be reprocessed. This is similar to GIF
12951 cropping/offsetting compression mechanism. This option can be useful for speed
12952 if only a part of the image is changing, and has use cases such as limiting the
12953 scope of the error diffusal @option{dither} to the rectangle that bounds the
12954 moving scene (it leads to more deterministic output if the scene doesn't change
12955 much, and as a result less moving noise and better GIF compression).
12956 @end table
12957
12958 Default is @var{none}.
12959
12960 @item new
12961 Take new palette for each output frame.
12962
12963 @item alpha_threshold
12964 Sets the alpha threshold for transparency. Alpha values above this threshold
12965 will be treated as completely opaque, and values below this threshold will be
12966 treated as completely transparent.
12967
12968 The option must be an integer value in the range [0,255]. Default is @var{128}.
12969 @end table
12970
12971 @subsection Examples
12972
12973 @itemize
12974 @item
12975 Use a palette (generated for example with @ref{palettegen}) to encode a GIF
12976 using @command{ffmpeg}:
12977 @example
12978 ffmpeg -i input.mkv -i palette.png -lavfi paletteuse output.gif
12979 @end example
12980 @end itemize
12981
12982 @section perspective
12983
12984 Correct perspective of video not recorded perpendicular to the screen.
12985
12986 A description of the accepted parameters follows.
12987
12988 @table @option
12989 @item x0
12990 @item y0
12991 @item x1
12992 @item y1
12993 @item x2
12994 @item y2
12995 @item x3
12996 @item y3
12997 Set coordinates expression for top left, top right, bottom left and bottom right corners.
12998 Default values are @code{0:0:W:0:0:H:W:H} with which perspective will remain unchanged.
12999 If the @code{sense} option is set to @code{source}, then the specified points will be sent
13000 to the corners of the destination. If the @code{sense} option is set to @code{destination},
13001 then the corners of the source will be sent to the specified coordinates.
13002
13003 The expressions can use the following variables:
13004
13005 @table @option
13006 @item W
13007 @item H
13008 the width and height of video frame.
13009 @item in
13010 Input frame count.
13011 @item on
13012 Output frame count.
13013 @end table
13014
13015 @item interpolation
13016 Set interpolation for perspective correction.
13017
13018 It accepts the following values:
13019 @table @samp
13020 @item linear
13021 @item cubic
13022 @end table
13023
13024 Default value is @samp{linear}.
13025
13026 @item sense
13027 Set interpretation of coordinate options.
13028
13029 It accepts the following values:
13030 @table @samp
13031 @item 0, source
13032
13033 Send point in the source specified by the given coordinates to
13034 the corners of the destination.
13035
13036 @item 1, destination
13037
13038 Send the corners of the source to the point in the destination specified
13039 by the given coordinates.
13040
13041 Default value is @samp{source}.
13042 @end table
13043
13044 @item eval
13045 Set when the expressions for coordinates @option{x0,y0,...x3,y3} are evaluated.
13046
13047 It accepts the following values:
13048 @table @samp
13049 @item init
13050 only evaluate expressions once during the filter initialization or
13051 when a command is processed
13052
13053 @item frame
13054 evaluate expressions for each incoming frame
13055 @end table
13056
13057 Default value is @samp{init}.
13058 @end table
13059
13060 @section phase
13061
13062 Delay interlaced video by one field time so that the field order changes.
13063
13064 The intended use is to fix PAL movies that have been captured with the
13065 opposite field order to the film-to-video transfer.
13066
13067 A description of the accepted parameters follows.
13068
13069 @table @option
13070 @item mode
13071 Set phase mode.
13072
13073 It accepts the following values:
13074 @table @samp
13075 @item t
13076 Capture field order top-first, transfer bottom-first.
13077 Filter will delay the bottom field.
13078
13079 @item b
13080 Capture field order bottom-first, transfer top-first.
13081 Filter will delay the top field.
13082
13083 @item p
13084 Capture and transfer with the same field order. This mode only exists
13085 for the documentation of the other options to refer to, but if you
13086 actually select it, the filter will faithfully do nothing.
13087
13088 @item a
13089 Capture field order determined automatically by field flags, transfer
13090 opposite.
13091 Filter selects among @samp{t} and @samp{b} modes on a frame by frame
13092 basis using field flags. If no field information is available,
13093 then this works just like @samp{u}.
13094
13095 @item u
13096 Capture unknown or varying, transfer opposite.
13097 Filter selects among @samp{t} and @samp{b} on a frame by frame basis by
13098 analyzing the images and selecting the alternative that produces best
13099 match between the fields.
13100
13101 @item T
13102 Capture top-first, transfer unknown or varying.
13103 Filter selects among @samp{t} and @samp{p} using image analysis.
13104
13105 @item B
13106 Capture bottom-first, transfer unknown or varying.
13107 Filter selects among @samp{b} and @samp{p} using image analysis.
13108
13109 @item A
13110 Capture determined by field flags, transfer unknown or varying.
13111 Filter selects among @samp{t}, @samp{b} and @samp{p} using field flags and
13112 image analysis. If no field information is available, then this works just
13113 like @samp{U}. This is the default mode.
13114
13115 @item U
13116 Both capture and transfer unknown or varying.
13117 Filter selects among @samp{t}, @samp{b} and @samp{p} using image analysis only.
13118 @end table
13119 @end table
13120
13121 @section pixdesctest
13122
13123 Pixel format descriptor test filter, mainly useful for internal
13124 testing. The output video should be equal to the input video.
13125
13126 For example:
13127 @example
13128 format=monow, pixdesctest
13129 @end example
13130
13131 can be used to test the monowhite pixel format descriptor definition.
13132
13133 @section pixscope
13134
13135 Display sample values of color channels. Mainly useful for checking color
13136 and levels. Minimum supported resolution is 640x480.
13137
13138 The filters accept the following options:
13139
13140 @table @option
13141 @item x
13142 Set scope X position, relative offset on X axis.
13143
13144 @item y
13145 Set scope Y position, relative offset on Y axis.
13146
13147 @item w
13148 Set scope width.
13149
13150 @item h
13151 Set scope height.
13152
13153 @item o
13154 Set window opacity. This window also holds statistics about pixel area.
13155
13156 @item wx
13157 Set window X position, relative offset on X axis.
13158
13159 @item wy
13160 Set window Y position, relative offset on Y axis.
13161 @end table
13162
13163 @section pp
13164
13165 Enable the specified chain of postprocessing subfilters using libpostproc. This
13166 library should be automatically selected with a GPL build (@code{--enable-gpl}).
13167 Subfilters must be separated by '/' and can be disabled by prepending a '-'.
13168 Each subfilter and some options have a short and a long name that can be used
13169 interchangeably, i.e. dr/dering are the same.
13170
13171 The filters accept the following options:
13172
13173 @table @option
13174 @item subfilters
13175 Set postprocessing subfilters string.
13176 @end table
13177
13178 All subfilters share common options to determine their scope:
13179
13180 @table @option
13181 @item a/autoq
13182 Honor the quality commands for this subfilter.
13183
13184 @item c/chrom
13185 Do chrominance filtering, too (default).
13186
13187 @item y/nochrom
13188 Do luminance filtering only (no chrominance).
13189
13190 @item n/noluma
13191 Do chrominance filtering only (no luminance).
13192 @end table
13193
13194 These options can be appended after the subfilter name, separated by a '|'.
13195
13196 Available subfilters are:
13197
13198 @table @option
13199 @item hb/hdeblock[|difference[|flatness]]
13200 Horizontal deblocking filter
13201 @table @option
13202 @item difference
13203 Difference factor where higher values mean more deblocking (default: @code{32}).
13204 @item flatness
13205 Flatness threshold where lower values mean more deblocking (default: @code{39}).
13206 @end table
13207
13208 @item vb/vdeblock[|difference[|flatness]]
13209 Vertical deblocking filter
13210 @table @option
13211 @item difference
13212 Difference factor where higher values mean more deblocking (default: @code{32}).
13213 @item flatness
13214 Flatness threshold where lower values mean more deblocking (default: @code{39}).
13215 @end table
13216
13217 @item ha/hadeblock[|difference[|flatness]]
13218 Accurate horizontal deblocking filter
13219 @table @option
13220 @item difference
13221 Difference factor where higher values mean more deblocking (default: @code{32}).
13222 @item flatness
13223 Flatness threshold where lower values mean more deblocking (default: @code{39}).
13224 @end table
13225
13226 @item va/vadeblock[|difference[|flatness]]
13227 Accurate vertical deblocking filter
13228 @table @option
13229 @item difference
13230 Difference factor where higher values mean more deblocking (default: @code{32}).
13231 @item flatness
13232 Flatness threshold where lower values mean more deblocking (default: @code{39}).
13233 @end table
13234 @end table
13235
13236 The horizontal and vertical deblocking filters share the difference and
13237 flatness values so you cannot set different horizontal and vertical
13238 thresholds.
13239
13240 @table @option
13241 @item h1/x1hdeblock
13242 Experimental horizontal deblocking filter
13243
13244 @item v1/x1vdeblock
13245 Experimental vertical deblocking filter
13246
13247 @item dr/dering
13248 Deringing filter
13249
13250 @item tn/tmpnoise[|threshold1[|threshold2[|threshold3]]], temporal noise reducer
13251 @table @option
13252 @item threshold1
13253 larger -> stronger filtering
13254 @item threshold2
13255 larger -> stronger filtering
13256 @item threshold3
13257 larger -> stronger filtering
13258 @end table
13259
13260 @item al/autolevels[:f/fullyrange], automatic brightness / contrast correction
13261 @table @option
13262 @item f/fullyrange
13263 Stretch luminance to @code{0-255}.
13264 @end table
13265
13266 @item lb/linblenddeint
13267 Linear blend deinterlacing filter that deinterlaces the given block by
13268 filtering all lines with a @code{(1 2 1)} filter.
13269
13270 @item li/linipoldeint
13271 Linear interpolating deinterlacing filter that deinterlaces the given block by
13272 linearly interpolating every second line.
13273
13274 @item ci/cubicipoldeint
13275 Cubic interpolating deinterlacing filter deinterlaces the given block by
13276 cubically interpolating every second line.
13277
13278 @item md/mediandeint
13279 Median deinterlacing filter that deinterlaces the given block by applying a
13280 median filter to every second line.
13281
13282 @item fd/ffmpegdeint
13283 FFmpeg deinterlacing filter that deinterlaces the given block by filtering every
13284 second line with a @code{(-1 4 2 4 -1)} filter.
13285
13286 @item l5/lowpass5
13287 Vertically applied FIR lowpass deinterlacing filter that deinterlaces the given
13288 block by filtering all lines with a @code{(-1 2 6 2 -1)} filter.
13289
13290 @item fq/forceQuant[|quantizer]
13291 Overrides the quantizer table from the input with the constant quantizer you
13292 specify.
13293 @table @option
13294 @item quantizer
13295 Quantizer to use
13296 @end table
13297
13298 @item de/default
13299 Default pp filter combination (@code{hb|a,vb|a,dr|a})
13300
13301 @item fa/fast
13302 Fast pp filter combination (@code{h1|a,v1|a,dr|a})
13303
13304 @item ac
13305 High quality pp filter combination (@code{ha|a|128|7,va|a,dr|a})
13306 @end table
13307
13308 @subsection Examples
13309
13310 @itemize
13311 @item
13312 Apply horizontal and vertical deblocking, deringing and automatic
13313 brightness/contrast:
13314 @example
13315 pp=hb/vb/dr/al
13316 @end example
13317
13318 @item
13319 Apply default filters without brightness/contrast correction:
13320 @example
13321 pp=de/-al
13322 @end example
13323
13324 @item
13325 Apply default filters and temporal denoiser:
13326 @example
13327 pp=default/tmpnoise|1|2|3
13328 @end example
13329
13330 @item
13331 Apply deblocking on luminance only, and switch vertical deblocking on or off
13332 automatically depending on available CPU time:
13333 @example
13334 pp=hb|y/vb|a
13335 @end example
13336 @end itemize
13337
13338 @section pp7
13339 Apply Postprocessing filter 7. It is variant of the @ref{spp} filter,
13340 similar to spp = 6 with 7 point DCT, where only the center sample is
13341 used after IDCT.
13342
13343 The filter accepts the following options:
13344
13345 @table @option
13346 @item qp
13347 Force a constant quantization parameter. It accepts an integer in range
13348 0 to 63. If not set, the filter will use the QP from the video stream
13349 (if available).
13350
13351 @item mode
13352 Set thresholding mode. Available modes are:
13353
13354 @table @samp
13355 @item hard
13356 Set hard thresholding.
13357 @item soft
13358 Set soft thresholding (better de-ringing effect, but likely blurrier).
13359 @item medium
13360 Set medium thresholding (good results, default).
13361 @end table
13362 @end table
13363
13364 @section premultiply
13365 Apply alpha premultiply effect to input video stream using first plane
13366 of second stream as alpha.
13367
13368 Both streams must have same dimensions and same pixel format.
13369
13370 The filter accepts the following option:
13371
13372 @table @option
13373 @item planes
13374 Set which planes will be processed, unprocessed planes will be copied.
13375 By default value 0xf, all planes will be processed.
13376
13377 @item inplace
13378 Do not require 2nd input for processing, instead use alpha plane from input stream.
13379 @end table
13380
13381 @section prewitt
13382 Apply prewitt operator to input video stream.
13383
13384 The filter accepts the following option:
13385
13386 @table @option
13387 @item planes
13388 Set which planes will be processed, unprocessed planes will be copied.
13389 By default value 0xf, all planes will be processed.
13390
13391 @item scale
13392 Set value which will be multiplied with filtered result.
13393
13394 @item delta
13395 Set value which will be added to filtered result.
13396 @end table
13397
13398 @anchor{program_opencl}
13399 @section program_opencl
13400
13401 Filter video using an OpenCL program.
13402
13403 @table @option
13404
13405 @item source
13406 OpenCL program source file.
13407
13408 @item kernel
13409 Kernel name in program.
13410
13411 @item inputs
13412 Number of inputs to the filter.  Defaults to 1.
13413
13414 @item size, s
13415 Size of output frames.  Defaults to the same as the first input.
13416
13417 @end table
13418
13419 The program source file must contain a kernel function with the given name,
13420 which will be run once for each plane of the output.  Each run on a plane
13421 gets enqueued as a separate 2D global NDRange with one work-item for each
13422 pixel to be generated.  The global ID offset for each work-item is therefore
13423 the coordinates of a pixel in the destination image.
13424
13425 The kernel function needs to take the following arguments:
13426 @itemize
13427 @item
13428 Destination image, @var{__write_only image2d_t}.
13429
13430 This image will become the output; the kernel should write all of it.
13431 @item
13432 Frame index, @var{unsigned int}.
13433
13434 This is a counter starting from zero and increasing by one for each frame.
13435 @item
13436 Source images, @var{__read_only image2d_t}.
13437
13438 These are the most recent images on each input.  The kernel may read from
13439 them to generate the output, but they can't be written to.
13440 @end itemize
13441
13442 Example programs:
13443
13444 @itemize
13445 @item
13446 Copy the input to the output (output must be the same size as the input).
13447 @verbatim
13448 __kernel void copy(__write_only image2d_t destination,
13449                    unsigned int index,
13450                    __read_only  image2d_t source)
13451 {
13452     const sampler_t sampler = CLK_NORMALIZED_COORDS_FALSE;
13453
13454     int2 location = (int2)(get_global_id(0), get_global_id(1));
13455
13456     float4 value = read_imagef(source, sampler, location);
13457
13458     write_imagef(destination, location, value);
13459 }
13460 @end verbatim
13461
13462 @item
13463 Apply a simple transformation, rotating the input by an amount increasing
13464 with the index counter.  Pixel values are linearly interpolated by the
13465 sampler, and the output need not have the same dimensions as the input.
13466 @verbatim
13467 __kernel void rotate_image(__write_only image2d_t dst,
13468                            unsigned int index,
13469                            __read_only  image2d_t src)
13470 {
13471     const sampler_t sampler = (CLK_NORMALIZED_COORDS_FALSE |
13472                                CLK_FILTER_LINEAR);
13473
13474     float angle = (float)index / 100.0f;
13475
13476     float2 dst_dim = convert_float2(get_image_dim(dst));
13477     float2 src_dim = convert_float2(get_image_dim(src));
13478
13479     float2 dst_cen = dst_dim / 2.0f;
13480     float2 src_cen = src_dim / 2.0f;
13481
13482     int2   dst_loc = (int2)(get_global_id(0), get_global_id(1));
13483
13484     float2 dst_pos = convert_float2(dst_loc) - dst_cen;
13485     float2 src_pos = {
13486         cos(angle) * dst_pos.x - sin(angle) * dst_pos.y,
13487         sin(angle) * dst_pos.x + cos(angle) * dst_pos.y
13488     };
13489     src_pos = src_pos * src_dim / dst_dim;
13490
13491     float2 src_loc = src_pos + src_cen;
13492
13493     if (src_loc.x < 0.0f      || src_loc.y < 0.0f ||
13494         src_loc.x > src_dim.x || src_loc.y > src_dim.y)
13495         write_imagef(dst, dst_loc, 0.5f);
13496     else
13497         write_imagef(dst, dst_loc, read_imagef(src, sampler, src_loc));
13498 }
13499 @end verbatim
13500
13501 @item
13502 Blend two inputs together, with the amount of each input used varying
13503 with the index counter.
13504 @verbatim
13505 __kernel void blend_images(__write_only image2d_t dst,
13506                            unsigned int index,
13507                            __read_only  image2d_t src1,
13508                            __read_only  image2d_t src2)
13509 {
13510     const sampler_t sampler = (CLK_NORMALIZED_COORDS_FALSE |
13511                                CLK_FILTER_LINEAR);
13512
13513     float blend = (cos((float)index / 50.0f) + 1.0f) / 2.0f;
13514
13515     int2  dst_loc = (int2)(get_global_id(0), get_global_id(1));
13516     int2 src1_loc = dst_loc * get_image_dim(src1) / get_image_dim(dst);
13517     int2 src2_loc = dst_loc * get_image_dim(src2) / get_image_dim(dst);
13518
13519     float4 val1 = read_imagef(src1, sampler, src1_loc);
13520     float4 val2 = read_imagef(src2, sampler, src2_loc);
13521
13522     write_imagef(dst, dst_loc, val1 * blend + val2 * (1.0f - blend));
13523 }
13524 @end verbatim
13525
13526 @end itemize
13527
13528 @section pseudocolor
13529
13530 Alter frame colors in video with pseudocolors.
13531
13532 This filter accept the following options:
13533
13534 @table @option
13535 @item c0
13536 set pixel first component expression
13537
13538 @item c1
13539 set pixel second component expression
13540
13541 @item c2
13542 set pixel third component expression
13543
13544 @item c3
13545 set pixel fourth component expression, corresponds to the alpha component
13546
13547 @item i
13548 set component to use as base for altering colors
13549 @end table
13550
13551 Each of them specifies the expression to use for computing the lookup table for
13552 the corresponding pixel component values.
13553
13554 The expressions can contain the following constants and functions:
13555
13556 @table @option
13557 @item w
13558 @item h
13559 The input width and height.
13560
13561 @item val
13562 The input value for the pixel component.
13563
13564 @item ymin, umin, vmin, amin
13565 The minimum allowed component value.
13566
13567 @item ymax, umax, vmax, amax
13568 The maximum allowed component value.
13569 @end table
13570
13571 All expressions default to "val".
13572
13573 @subsection Examples
13574
13575 @itemize
13576 @item
13577 Change too high luma values to gradient:
13578 @example
13579 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'"
13580 @end example
13581 @end itemize
13582
13583 @section psnr
13584
13585 Obtain the average, maximum and minimum PSNR (Peak Signal to Noise
13586 Ratio) between two input videos.
13587
13588 This filter takes in input two input videos, the first input is
13589 considered the "main" source and is passed unchanged to the
13590 output. The second input is used as a "reference" video for computing
13591 the PSNR.
13592
13593 Both video inputs must have the same resolution and pixel format for
13594 this filter to work correctly. Also it assumes that both inputs
13595 have the same number of frames, which are compared one by one.
13596
13597 The obtained average PSNR is printed through the logging system.
13598
13599 The filter stores the accumulated MSE (mean squared error) of each
13600 frame, and at the end of the processing it is averaged across all frames
13601 equally, and the following formula is applied to obtain the PSNR:
13602
13603 @example
13604 PSNR = 10*log10(MAX^2/MSE)
13605 @end example
13606
13607 Where MAX is the average of the maximum values of each component of the
13608 image.
13609
13610 The description of the accepted parameters follows.
13611
13612 @table @option
13613 @item stats_file, f
13614 If specified the filter will use the named file to save the PSNR of
13615 each individual frame. When filename equals "-" the data is sent to
13616 standard output.
13617
13618 @item stats_version
13619 Specifies which version of the stats file format to use. Details of
13620 each format are written below.
13621 Default value is 1.
13622
13623 @item stats_add_max
13624 Determines whether the max value is output to the stats log.
13625 Default value is 0.
13626 Requires stats_version >= 2. If this is set and stats_version < 2,
13627 the filter will return an error.
13628 @end table
13629
13630 This filter also supports the @ref{framesync} options.
13631
13632 The file printed if @var{stats_file} is selected, contains a sequence of
13633 key/value pairs of the form @var{key}:@var{value} for each compared
13634 couple of frames.
13635
13636 If a @var{stats_version} greater than 1 is specified, a header line precedes
13637 the list of per-frame-pair stats, with key value pairs following the frame
13638 format with the following parameters:
13639
13640 @table @option
13641 @item psnr_log_version
13642 The version of the log file format. Will match @var{stats_version}.
13643
13644 @item fields
13645 A comma separated list of the per-frame-pair parameters included in
13646 the log.
13647 @end table
13648
13649 A description of each shown per-frame-pair parameter follows:
13650
13651 @table @option
13652 @item n
13653 sequential number of the input frame, starting from 1
13654
13655 @item mse_avg
13656 Mean Square Error pixel-by-pixel average difference of the compared
13657 frames, averaged over all the image components.
13658
13659 @item mse_y, mse_u, mse_v, mse_r, mse_g, mse_b, mse_a
13660 Mean Square Error pixel-by-pixel average difference of the compared
13661 frames for the component specified by the suffix.
13662
13663 @item psnr_y, psnr_u, psnr_v, psnr_r, psnr_g, psnr_b, psnr_a
13664 Peak Signal to Noise ratio of the compared frames for the component
13665 specified by the suffix.
13666
13667 @item max_avg, max_y, max_u, max_v
13668 Maximum allowed value for each channel, and average over all
13669 channels.
13670 @end table
13671
13672 For example:
13673 @example
13674 movie=ref_movie.mpg, setpts=PTS-STARTPTS [main];
13675 [main][ref] psnr="stats_file=stats.log" [out]
13676 @end example
13677
13678 On this example the input file being processed is compared with the
13679 reference file @file{ref_movie.mpg}. The PSNR of each individual frame
13680 is stored in @file{stats.log}.
13681
13682 @anchor{pullup}
13683 @section pullup
13684
13685 Pulldown reversal (inverse telecine) filter, capable of handling mixed
13686 hard-telecine, 24000/1001 fps progressive, and 30000/1001 fps progressive
13687 content.
13688
13689 The pullup filter is designed to take advantage of future context in making
13690 its decisions. This filter is stateless in the sense that it does not lock
13691 onto a pattern to follow, but it instead looks forward to the following
13692 fields in order to identify matches and rebuild progressive frames.
13693
13694 To produce content with an even framerate, insert the fps filter after
13695 pullup, use @code{fps=24000/1001} if the input frame rate is 29.97fps,
13696 @code{fps=24} for 30fps and the (rare) telecined 25fps input.
13697
13698 The filter accepts the following options:
13699
13700 @table @option
13701 @item jl
13702 @item jr
13703 @item jt
13704 @item jb
13705 These options set the amount of "junk" to ignore at the left, right, top, and
13706 bottom of the image, respectively. Left and right are in units of 8 pixels,
13707 while top and bottom are in units of 2 lines.
13708 The default is 8 pixels on each side.
13709
13710 @item sb
13711 Set the strict breaks. Setting this option to 1 will reduce the chances of
13712 filter generating an occasional mismatched frame, but it may also cause an
13713 excessive number of frames to be dropped during high motion sequences.
13714 Conversely, setting it to -1 will make filter match fields more easily.
13715 This may help processing of video where there is slight blurring between
13716 the fields, but may also cause there to be interlaced frames in the output.
13717 Default value is @code{0}.
13718
13719 @item mp
13720 Set the metric plane to use. It accepts the following values:
13721 @table @samp
13722 @item l
13723 Use luma plane.
13724
13725 @item u
13726 Use chroma blue plane.
13727
13728 @item v
13729 Use chroma red plane.
13730 @end table
13731
13732 This option may be set to use chroma plane instead of the default luma plane
13733 for doing filter's computations. This may improve accuracy on very clean
13734 source material, but more likely will decrease accuracy, especially if there
13735 is chroma noise (rainbow effect) or any grayscale video.
13736 The main purpose of setting @option{mp} to a chroma plane is to reduce CPU
13737 load and make pullup usable in realtime on slow machines.
13738 @end table
13739
13740 For best results (without duplicated frames in the output file) it is
13741 necessary to change the output frame rate. For example, to inverse
13742 telecine NTSC input:
13743 @example
13744 ffmpeg -i input -vf pullup -r 24000/1001 ...
13745 @end example
13746
13747 @section qp
13748
13749 Change video quantization parameters (QP).
13750
13751 The filter accepts the following option:
13752
13753 @table @option
13754 @item qp
13755 Set expression for quantization parameter.
13756 @end table
13757
13758 The expression is evaluated through the eval API and can contain, among others,
13759 the following constants:
13760
13761 @table @var
13762 @item known
13763 1 if index is not 129, 0 otherwise.
13764
13765 @item qp
13766 Sequential index starting from -129 to 128.
13767 @end table
13768
13769 @subsection Examples
13770
13771 @itemize
13772 @item
13773 Some equation like:
13774 @example
13775 qp=2+2*sin(PI*qp)
13776 @end example
13777 @end itemize
13778
13779 @section random
13780
13781 Flush video frames from internal cache of frames into a random order.
13782 No frame is discarded.
13783 Inspired by @ref{frei0r} nervous filter.
13784
13785 @table @option
13786 @item frames
13787 Set size in number of frames of internal cache, in range from @code{2} to
13788 @code{512}. Default is @code{30}.
13789
13790 @item seed
13791 Set seed for random number generator, must be an integer included between
13792 @code{0} and @code{UINT32_MAX}. If not specified, or if explicitly set to
13793 less than @code{0}, the filter will try to use a good random seed on a
13794 best effort basis.
13795 @end table
13796
13797 @section readeia608
13798
13799 Read closed captioning (EIA-608) information from the top lines of a video frame.
13800
13801 This filter adds frame metadata for @code{lavfi.readeia608.X.cc} and
13802 @code{lavfi.readeia608.X.line}, where @code{X} is the number of the identified line
13803 with EIA-608 data (starting from 0). A description of each metadata value follows:
13804
13805 @table @option
13806 @item lavfi.readeia608.X.cc
13807 The two bytes stored as EIA-608 data (printed in hexadecimal).
13808
13809 @item lavfi.readeia608.X.line
13810 The number of the line on which the EIA-608 data was identified and read.
13811 @end table
13812
13813 This filter accepts the following options:
13814
13815 @table @option
13816 @item scan_min
13817 Set the line to start scanning for EIA-608 data. Default is @code{0}.
13818
13819 @item scan_max
13820 Set the line to end scanning for EIA-608 data. Default is @code{29}.
13821
13822 @item mac
13823 Set minimal acceptable amplitude change for sync codes detection.
13824 Default is @code{0.2}. Allowed range is @code{[0.001 - 1]}.
13825
13826 @item spw
13827 Set the ratio of width reserved for sync code detection.
13828 Default is @code{0.27}. Allowed range is @code{[0.01 - 0.7]}.
13829
13830 @item mhd
13831 Set the max peaks height difference for sync code detection.
13832 Default is @code{0.1}. Allowed range is @code{[0.0 - 0.5]}.
13833
13834 @item mpd
13835 Set max peaks period difference for sync code detection.
13836 Default is @code{0.1}. Allowed range is @code{[0.0 - 0.5]}.
13837
13838 @item msd
13839 Set the first two max start code bits differences.
13840 Default is @code{0.02}. Allowed range is @code{[0.0 - 0.5]}.
13841
13842 @item bhd
13843 Set the minimum ratio of bits height compared to 3rd start code bit.
13844 Default is @code{0.75}. Allowed range is @code{[0.01 - 1]}.
13845
13846 @item th_w
13847 Set the white color threshold. Default is @code{0.35}. Allowed range is @code{[0.1 - 1]}.
13848
13849 @item th_b
13850 Set the black color threshold. Default is @code{0.15}. Allowed range is @code{[0.0 - 0.5]}.
13851
13852 @item chp
13853 Enable checking the parity bit. In the event of a parity error, the filter will output
13854 @code{0x00} for that character. Default is false.
13855 @end table
13856
13857 @subsection Examples
13858
13859 @itemize
13860 @item
13861 Output a csv with presentation time and the first two lines of identified EIA-608 captioning data.
13862 @example
13863 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
13864 @end example
13865 @end itemize
13866
13867 @section readvitc
13868
13869 Read vertical interval timecode (VITC) information from the top lines of a
13870 video frame.
13871
13872 The filter adds frame metadata key @code{lavfi.readvitc.tc_str} with the
13873 timecode value, if a valid timecode has been detected. Further metadata key
13874 @code{lavfi.readvitc.found} is set to 0/1 depending on whether
13875 timecode data has been found or not.
13876
13877 This filter accepts the following options:
13878
13879 @table @option
13880 @item scan_max
13881 Set the maximum number of lines to scan for VITC data. If the value is set to
13882 @code{-1} the full video frame is scanned. Default is @code{45}.
13883
13884 @item thr_b
13885 Set the luma threshold for black. Accepts float numbers in the range [0.0,1.0],
13886 default value is @code{0.2}. The value must be equal or less than @code{thr_w}.
13887
13888 @item thr_w
13889 Set the luma threshold for white. Accepts float numbers in the range [0.0,1.0],
13890 default value is @code{0.6}. The value must be equal or greater than @code{thr_b}.
13891 @end table
13892
13893 @subsection Examples
13894
13895 @itemize
13896 @item
13897 Detect and draw VITC data onto the video frame; if no valid VITC is detected,
13898 draw @code{--:--:--:--} as a placeholder:
13899 @example
13900 ffmpeg -i input.avi -filter:v 'readvitc,drawtext=fontfile=FreeMono.ttf:text=%@{metadata\\:lavfi.readvitc.tc_str\\:--\\\\\\:--\\\\\\:--\\\\\\:--@}:x=(w-tw)/2:y=400-ascent'
13901 @end example
13902 @end itemize
13903
13904 @section remap
13905
13906 Remap pixels using 2nd: Xmap and 3rd: Ymap input video stream.
13907
13908 Destination pixel at position (X, Y) will be picked from source (x, y) position
13909 where x = Xmap(X, Y) and y = Ymap(X, Y). If mapping values are out of range, zero
13910 value for pixel will be used for destination pixel.
13911
13912 Xmap and Ymap input video streams must be of same dimensions. Output video stream
13913 will have Xmap/Ymap video stream dimensions.
13914 Xmap and Ymap input video streams are 16bit depth, single channel.
13915
13916 @section removegrain
13917
13918 The removegrain filter is a spatial denoiser for progressive video.
13919
13920 @table @option
13921 @item m0
13922 Set mode for the first plane.
13923
13924 @item m1
13925 Set mode for the second plane.
13926
13927 @item m2
13928 Set mode for the third plane.
13929
13930 @item m3
13931 Set mode for the fourth plane.
13932 @end table
13933
13934 Range of mode is from 0 to 24. Description of each mode follows:
13935
13936 @table @var
13937 @item 0
13938 Leave input plane unchanged. Default.
13939
13940 @item 1
13941 Clips the pixel with the minimum and maximum of the 8 neighbour pixels.
13942
13943 @item 2
13944 Clips the pixel with the second minimum and maximum of the 8 neighbour pixels.
13945
13946 @item 3
13947 Clips the pixel with the third minimum and maximum of the 8 neighbour pixels.
13948
13949 @item 4
13950 Clips the pixel with the fourth minimum and maximum of the 8 neighbour pixels.
13951 This is equivalent to a median filter.
13952
13953 @item 5
13954 Line-sensitive clipping giving the minimal change.
13955
13956 @item 6
13957 Line-sensitive clipping, intermediate.
13958
13959 @item 7
13960 Line-sensitive clipping, intermediate.
13961
13962 @item 8
13963 Line-sensitive clipping, intermediate.
13964
13965 @item 9
13966 Line-sensitive clipping on a line where the neighbours pixels are the closest.
13967
13968 @item 10
13969 Replaces the target pixel with the closest neighbour.
13970
13971 @item 11
13972 [1 2 1] horizontal and vertical kernel blur.
13973
13974 @item 12
13975 Same as mode 11.
13976
13977 @item 13
13978 Bob mode, interpolates top field from the line where the neighbours
13979 pixels are the closest.
13980
13981 @item 14
13982 Bob mode, interpolates bottom field from the line where the neighbours
13983 pixels are the closest.
13984
13985 @item 15
13986 Bob mode, interpolates top field. Same as 13 but with a more complicated
13987 interpolation formula.
13988
13989 @item 16
13990 Bob mode, interpolates bottom field. Same as 14 but with a more complicated
13991 interpolation formula.
13992
13993 @item 17
13994 Clips the pixel with the minimum and maximum of respectively the maximum and
13995 minimum of each pair of opposite neighbour pixels.
13996
13997 @item 18
13998 Line-sensitive clipping using opposite neighbours whose greatest distance from
13999 the current pixel is minimal.
14000
14001 @item 19
14002 Replaces the pixel with the average of its 8 neighbours.
14003
14004 @item 20
14005 Averages the 9 pixels ([1 1 1] horizontal and vertical blur).
14006
14007 @item 21
14008 Clips pixels using the averages of opposite neighbour.
14009
14010 @item 22
14011 Same as mode 21 but simpler and faster.
14012
14013 @item 23
14014 Small edge and halo removal, but reputed useless.
14015
14016 @item 24
14017 Similar as 23.
14018 @end table
14019
14020 @section removelogo
14021
14022 Suppress a TV station logo, using an image file to determine which
14023 pixels comprise the logo. It works by filling in the pixels that
14024 comprise the logo with neighboring pixels.
14025
14026 The filter accepts the following options:
14027
14028 @table @option
14029 @item filename, f
14030 Set the filter bitmap file, which can be any image format supported by
14031 libavformat. The width and height of the image file must match those of the
14032 video stream being processed.
14033 @end table
14034
14035 Pixels in the provided bitmap image with a value of zero are not
14036 considered part of the logo, non-zero pixels are considered part of
14037 the logo. If you use white (255) for the logo and black (0) for the
14038 rest, you will be safe. For making the filter bitmap, it is
14039 recommended to take a screen capture of a black frame with the logo
14040 visible, and then using a threshold filter followed by the erode
14041 filter once or twice.
14042
14043 If needed, little splotches can be fixed manually. Remember that if
14044 logo pixels are not covered, the filter quality will be much
14045 reduced. Marking too many pixels as part of the logo does not hurt as
14046 much, but it will increase the amount of blurring needed to cover over
14047 the image and will destroy more information than necessary, and extra
14048 pixels will slow things down on a large logo.
14049
14050 @section repeatfields
14051
14052 This filter uses the repeat_field flag from the Video ES headers and hard repeats
14053 fields based on its value.
14054
14055 @section reverse
14056
14057 Reverse a video clip.
14058
14059 Warning: This filter requires memory to buffer the entire clip, so trimming
14060 is suggested.
14061
14062 @subsection Examples
14063
14064 @itemize
14065 @item
14066 Take the first 5 seconds of a clip, and reverse it.
14067 @example
14068 trim=end=5,reverse
14069 @end example
14070 @end itemize
14071
14072 @section roberts
14073 Apply roberts cross operator to input video stream.
14074
14075 The filter accepts the following option:
14076
14077 @table @option
14078 @item planes
14079 Set which planes will be processed, unprocessed planes will be copied.
14080 By default value 0xf, all planes will be processed.
14081
14082 @item scale
14083 Set value which will be multiplied with filtered result.
14084
14085 @item delta
14086 Set value which will be added to filtered result.
14087 @end table
14088
14089 @section rotate
14090
14091 Rotate video by an arbitrary angle expressed in radians.
14092
14093 The filter accepts the following options:
14094
14095 A description of the optional parameters follows.
14096 @table @option
14097 @item angle, a
14098 Set an expression for the angle by which to rotate the input video
14099 clockwise, expressed as a number of radians. A negative value will
14100 result in a counter-clockwise rotation. By default it is set to "0".
14101
14102 This expression is evaluated for each frame.
14103
14104 @item out_w, ow
14105 Set the output width expression, default value is "iw".
14106 This expression is evaluated just once during configuration.
14107
14108 @item out_h, oh
14109 Set the output height expression, default value is "ih".
14110 This expression is evaluated just once during configuration.
14111
14112 @item bilinear
14113 Enable bilinear interpolation if set to 1, a value of 0 disables
14114 it. Default value is 1.
14115
14116 @item fillcolor, c
14117 Set the color used to fill the output area not covered by the rotated
14118 image. For the general syntax of this option, check the
14119 @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
14120 If the special value "none" is selected then no
14121 background is printed (useful for example if the background is never shown).
14122
14123 Default value is "black".
14124 @end table
14125
14126 The expressions for the angle and the output size can contain the
14127 following constants and functions:
14128
14129 @table @option
14130 @item n
14131 sequential number of the input frame, starting from 0. It is always NAN
14132 before the first frame is filtered.
14133
14134 @item t
14135 time in seconds of the input frame, it is set to 0 when the filter is
14136 configured. It is always NAN before the first frame is filtered.
14137
14138 @item hsub
14139 @item vsub
14140 horizontal and vertical chroma subsample values. For example for the
14141 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
14142
14143 @item in_w, iw
14144 @item in_h, ih
14145 the input video width and height
14146
14147 @item out_w, ow
14148 @item out_h, oh
14149 the output width and height, that is the size of the padded area as
14150 specified by the @var{width} and @var{height} expressions
14151
14152 @item rotw(a)
14153 @item roth(a)
14154 the minimal width/height required for completely containing the input
14155 video rotated by @var{a} radians.
14156
14157 These are only available when computing the @option{out_w} and
14158 @option{out_h} expressions.
14159 @end table
14160
14161 @subsection Examples
14162
14163 @itemize
14164 @item
14165 Rotate the input by PI/6 radians clockwise:
14166 @example
14167 rotate=PI/6
14168 @end example
14169
14170 @item
14171 Rotate the input by PI/6 radians counter-clockwise:
14172 @example
14173 rotate=-PI/6
14174 @end example
14175
14176 @item
14177 Rotate the input by 45 degrees clockwise:
14178 @example
14179 rotate=45*PI/180
14180 @end example
14181
14182 @item
14183 Apply a constant rotation with period T, starting from an angle of PI/3:
14184 @example
14185 rotate=PI/3+2*PI*t/T
14186 @end example
14187
14188 @item
14189 Make the input video rotation oscillating with a period of T
14190 seconds and an amplitude of A radians:
14191 @example
14192 rotate=A*sin(2*PI/T*t)
14193 @end example
14194
14195 @item
14196 Rotate the video, output size is chosen so that the whole rotating
14197 input video is always completely contained in the output:
14198 @example
14199 rotate='2*PI*t:ow=hypot(iw,ih):oh=ow'
14200 @end example
14201
14202 @item
14203 Rotate the video, reduce the output size so that no background is ever
14204 shown:
14205 @example
14206 rotate=2*PI*t:ow='min(iw,ih)/sqrt(2)':oh=ow:c=none
14207 @end example
14208 @end itemize
14209
14210 @subsection Commands
14211
14212 The filter supports the following commands:
14213
14214 @table @option
14215 @item a, angle
14216 Set the angle expression.
14217 The command accepts the same syntax of the corresponding option.
14218
14219 If the specified expression is not valid, it is kept at its current
14220 value.
14221 @end table
14222
14223 @section sab
14224
14225 Apply Shape Adaptive Blur.
14226
14227 The filter accepts the following options:
14228
14229 @table @option
14230 @item luma_radius, lr
14231 Set luma blur filter strength, must be a value in range 0.1-4.0, default
14232 value is 1.0. A greater value will result in a more blurred image, and
14233 in slower processing.
14234
14235 @item luma_pre_filter_radius, lpfr
14236 Set luma pre-filter radius, must be a value in the 0.1-2.0 range, default
14237 value is 1.0.
14238
14239 @item luma_strength, ls
14240 Set luma maximum difference between pixels to still be considered, must
14241 be a value in the 0.1-100.0 range, default value is 1.0.
14242
14243 @item chroma_radius, cr
14244 Set chroma blur filter strength, must be a value in range -0.9-4.0. A
14245 greater value will result in a more blurred image, and in slower
14246 processing.
14247
14248 @item chroma_pre_filter_radius, cpfr
14249 Set chroma pre-filter radius, must be a value in the -0.9-2.0 range.
14250
14251 @item chroma_strength, cs
14252 Set chroma maximum difference between pixels to still be considered,
14253 must be a value in the -0.9-100.0 range.
14254 @end table
14255
14256 Each chroma option value, if not explicitly specified, is set to the
14257 corresponding luma option value.
14258
14259 @anchor{scale}
14260 @section scale
14261
14262 Scale (resize) the input video, using the libswscale library.
14263
14264 The scale filter forces the output display aspect ratio to be the same
14265 of the input, by changing the output sample aspect ratio.
14266
14267 If the input image format is different from the format requested by
14268 the next filter, the scale filter will convert the input to the
14269 requested format.
14270
14271 @subsection Options
14272 The filter accepts the following options, or any of the options
14273 supported by the libswscale scaler.
14274
14275 See @ref{scaler_options,,the ffmpeg-scaler manual,ffmpeg-scaler} for
14276 the complete list of scaler options.
14277
14278 @table @option
14279 @item width, w
14280 @item height, h
14281 Set the output video dimension expression. Default value is the input
14282 dimension.
14283
14284 If the @var{width} or @var{w} value is 0, the input width is used for
14285 the output. If the @var{height} or @var{h} value is 0, the input height
14286 is used for the output.
14287
14288 If one and only one of the values is -n with n >= 1, the scale filter
14289 will use a value that maintains the aspect ratio of the input image,
14290 calculated from the other specified dimension. After that it will,
14291 however, make sure that the calculated dimension is divisible by n and
14292 adjust the value if necessary.
14293
14294 If both values are -n with n >= 1, the behavior will be identical to
14295 both values being set to 0 as previously detailed.
14296
14297 See below for the list of accepted constants for use in the dimension
14298 expression.
14299
14300 @item eval
14301 Specify when to evaluate @var{width} and @var{height} expression. It accepts the following values:
14302
14303 @table @samp
14304 @item init
14305 Only evaluate expressions once during the filter initialization or when a command is processed.
14306
14307 @item frame
14308 Evaluate expressions for each incoming frame.
14309
14310 @end table
14311
14312 Default value is @samp{init}.
14313
14314
14315 @item interl
14316 Set the interlacing mode. It accepts the following values:
14317
14318 @table @samp
14319 @item 1
14320 Force interlaced aware scaling.
14321
14322 @item 0
14323 Do not apply interlaced scaling.
14324
14325 @item -1
14326 Select interlaced aware scaling depending on whether the source frames
14327 are flagged as interlaced or not.
14328 @end table
14329
14330 Default value is @samp{0}.
14331
14332 @item flags
14333 Set libswscale scaling flags. See
14334 @ref{sws_flags,,the ffmpeg-scaler manual,ffmpeg-scaler} for the
14335 complete list of values. If not explicitly specified the filter applies
14336 the default flags.
14337
14338
14339 @item param0, param1
14340 Set libswscale input parameters for scaling algorithms that need them. See
14341 @ref{sws_params,,the ffmpeg-scaler manual,ffmpeg-scaler} for the
14342 complete documentation. If not explicitly specified the filter applies
14343 empty parameters.
14344
14345
14346
14347 @item size, s
14348 Set the video size. For the syntax of this option, check the
14349 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
14350
14351 @item in_color_matrix
14352 @item out_color_matrix
14353 Set in/output YCbCr color space type.
14354
14355 This allows the autodetected value to be overridden as well as allows forcing
14356 a specific value used for the output and encoder.
14357
14358 If not specified, the color space type depends on the pixel format.
14359
14360 Possible values:
14361
14362 @table @samp
14363 @item auto
14364 Choose automatically.
14365
14366 @item bt709
14367 Format conforming to International Telecommunication Union (ITU)
14368 Recommendation BT.709.
14369
14370 @item fcc
14371 Set color space conforming to the United States Federal Communications
14372 Commission (FCC) Code of Federal Regulations (CFR) Title 47 (2003) 73.682 (a).
14373
14374 @item bt601
14375 Set color space conforming to:
14376
14377 @itemize
14378 @item
14379 ITU Radiocommunication Sector (ITU-R) Recommendation BT.601
14380
14381 @item
14382 ITU-R Rec. BT.470-6 (1998) Systems B, B1, and G
14383
14384 @item
14385 Society of Motion Picture and Television Engineers (SMPTE) ST 170:2004
14386
14387 @end itemize
14388
14389 @item smpte240m
14390 Set color space conforming to SMPTE ST 240:1999.
14391 @end table
14392
14393 @item in_range
14394 @item out_range
14395 Set in/output YCbCr sample range.
14396
14397 This allows the autodetected value to be overridden as well as allows forcing
14398 a specific value used for the output and encoder. If not specified, the
14399 range depends on the pixel format. Possible values:
14400
14401 @table @samp
14402 @item auto/unknown
14403 Choose automatically.
14404
14405 @item jpeg/full/pc
14406 Set full range (0-255 in case of 8-bit luma).
14407
14408 @item mpeg/limited/tv
14409 Set "MPEG" range (16-235 in case of 8-bit luma).
14410 @end table
14411
14412 @item force_original_aspect_ratio
14413 Enable decreasing or increasing output video width or height if necessary to
14414 keep the original aspect ratio. Possible values:
14415
14416 @table @samp
14417 @item disable
14418 Scale the video as specified and disable this feature.
14419
14420 @item decrease
14421 The output video dimensions will automatically be decreased if needed.
14422
14423 @item increase
14424 The output video dimensions will automatically be increased if needed.
14425
14426 @end table
14427
14428 One useful instance of this option is that when you know a specific device's
14429 maximum allowed resolution, you can use this to limit the output video to
14430 that, while retaining the aspect ratio. For example, device A allows
14431 1280x720 playback, and your video is 1920x800. Using this option (set it to
14432 decrease) and specifying 1280x720 to the command line makes the output
14433 1280x533.
14434
14435 Please note that this is a different thing than specifying -1 for @option{w}
14436 or @option{h}, you still need to specify the output resolution for this option
14437 to work.
14438
14439 @end table
14440
14441 The values of the @option{w} and @option{h} options are expressions
14442 containing the following constants:
14443
14444 @table @var
14445 @item in_w
14446 @item in_h
14447 The input width and height
14448
14449 @item iw
14450 @item ih
14451 These are the same as @var{in_w} and @var{in_h}.
14452
14453 @item out_w
14454 @item out_h
14455 The output (scaled) width and height
14456
14457 @item ow
14458 @item oh
14459 These are the same as @var{out_w} and @var{out_h}
14460
14461 @item a
14462 The same as @var{iw} / @var{ih}
14463
14464 @item sar
14465 input sample aspect ratio
14466
14467 @item dar
14468 The input display aspect ratio. Calculated from @code{(iw / ih) * sar}.
14469
14470 @item hsub
14471 @item vsub
14472 horizontal and vertical input chroma subsample values. For example for the
14473 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
14474
14475 @item ohsub
14476 @item ovsub
14477 horizontal and vertical output chroma subsample values. For example for the
14478 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
14479 @end table
14480
14481 @subsection Examples
14482
14483 @itemize
14484 @item
14485 Scale the input video to a size of 200x100
14486 @example
14487 scale=w=200:h=100
14488 @end example
14489
14490 This is equivalent to:
14491 @example
14492 scale=200:100
14493 @end example
14494
14495 or:
14496 @example
14497 scale=200x100
14498 @end example
14499
14500 @item
14501 Specify a size abbreviation for the output size:
14502 @example
14503 scale=qcif
14504 @end example
14505
14506 which can also be written as:
14507 @example
14508 scale=size=qcif
14509 @end example
14510
14511 @item
14512 Scale the input to 2x:
14513 @example
14514 scale=w=2*iw:h=2*ih
14515 @end example
14516
14517 @item
14518 The above is the same as:
14519 @example
14520 scale=2*in_w:2*in_h
14521 @end example
14522
14523 @item
14524 Scale the input to 2x with forced interlaced scaling:
14525 @example
14526 scale=2*iw:2*ih:interl=1
14527 @end example
14528
14529 @item
14530 Scale the input to half size:
14531 @example
14532 scale=w=iw/2:h=ih/2
14533 @end example
14534
14535 @item
14536 Increase the width, and set the height to the same size:
14537 @example
14538 scale=3/2*iw:ow
14539 @end example
14540
14541 @item
14542 Seek Greek harmony:
14543 @example
14544 scale=iw:1/PHI*iw
14545 scale=ih*PHI:ih
14546 @end example
14547
14548 @item
14549 Increase the height, and set the width to 3/2 of the height:
14550 @example
14551 scale=w=3/2*oh:h=3/5*ih
14552 @end example
14553
14554 @item
14555 Increase the size, making the size a multiple of the chroma
14556 subsample values:
14557 @example
14558 scale="trunc(3/2*iw/hsub)*hsub:trunc(3/2*ih/vsub)*vsub"
14559 @end example
14560
14561 @item
14562 Increase the width to a maximum of 500 pixels,
14563 keeping the same aspect ratio as the input:
14564 @example
14565 scale=w='min(500\, iw*3/2):h=-1'
14566 @end example
14567
14568 @item
14569 Make pixels square by combining scale and setsar:
14570 @example
14571 scale='trunc(ih*dar):ih',setsar=1/1
14572 @end example
14573
14574 @item
14575 Make pixels square by combining scale and setsar,
14576 making sure the resulting resolution is even (required by some codecs):
14577 @example
14578 scale='trunc(ih*dar/2)*2:trunc(ih/2)*2',setsar=1/1
14579 @end example
14580 @end itemize
14581
14582 @subsection Commands
14583
14584 This filter supports the following commands:
14585 @table @option
14586 @item width, w
14587 @item height, h
14588 Set the output video dimension expression.
14589 The command accepts the same syntax of the corresponding option.
14590
14591 If the specified expression is not valid, it is kept at its current
14592 value.
14593 @end table
14594
14595 @section scale_npp
14596
14597 Use the NVIDIA Performance Primitives (libnpp) to perform scaling and/or pixel
14598 format conversion on CUDA video frames. Setting the output width and height
14599 works in the same way as for the @var{scale} filter.
14600
14601 The following additional options are accepted:
14602 @table @option
14603 @item format
14604 The pixel format of the output CUDA frames. If set to the string "same" (the
14605 default), the input format will be kept. Note that automatic format negotiation
14606 and conversion is not yet supported for hardware frames
14607
14608 @item interp_algo
14609 The interpolation algorithm used for resizing. One of the following:
14610 @table @option
14611 @item nn
14612 Nearest neighbour.
14613
14614 @item linear
14615 @item cubic
14616 @item cubic2p_bspline
14617 2-parameter cubic (B=1, C=0)
14618
14619 @item cubic2p_catmullrom
14620 2-parameter cubic (B=0, C=1/2)
14621
14622 @item cubic2p_b05c03
14623 2-parameter cubic (B=1/2, C=3/10)
14624
14625 @item super
14626 Supersampling
14627
14628 @item lanczos
14629 @end table
14630
14631 @end table
14632
14633 @section scale2ref
14634
14635 Scale (resize) the input video, based on a reference video.
14636
14637 See the scale filter for available options, scale2ref supports the same but
14638 uses the reference video instead of the main input as basis. scale2ref also
14639 supports the following additional constants for the @option{w} and
14640 @option{h} options:
14641
14642 @table @var
14643 @item main_w
14644 @item main_h
14645 The main input video's width and height
14646
14647 @item main_a
14648 The same as @var{main_w} / @var{main_h}
14649
14650 @item main_sar
14651 The main input video's sample aspect ratio
14652
14653 @item main_dar, mdar
14654 The main input video's display aspect ratio. Calculated from
14655 @code{(main_w / main_h) * main_sar}.
14656
14657 @item main_hsub
14658 @item main_vsub
14659 The main input video's horizontal and vertical chroma subsample values.
14660 For example for the pixel format "yuv422p" @var{hsub} is 2 and @var{vsub}
14661 is 1.
14662 @end table
14663
14664 @subsection Examples
14665
14666 @itemize
14667 @item
14668 Scale a subtitle stream (b) to match the main video (a) in size before overlaying
14669 @example
14670 'scale2ref[b][a];[a][b]overlay'
14671 @end example
14672 @end itemize
14673
14674 @anchor{selectivecolor}
14675 @section selectivecolor
14676
14677 Adjust cyan, magenta, yellow and black (CMYK) to certain ranges of colors (such
14678 as "reds", "yellows", "greens", "cyans", ...). The adjustment range is defined
14679 by the "purity" of the color (that is, how saturated it already is).
14680
14681 This filter is similar to the Adobe Photoshop Selective Color tool.
14682
14683 The filter accepts the following options:
14684
14685 @table @option
14686 @item correction_method
14687 Select color correction method.
14688
14689 Available values are:
14690 @table @samp
14691 @item absolute
14692 Specified adjustments are applied "as-is" (added/subtracted to original pixel
14693 component value).
14694 @item relative
14695 Specified adjustments are relative to the original component value.
14696 @end table
14697 Default is @code{absolute}.
14698 @item reds
14699 Adjustments for red pixels (pixels where the red component is the maximum)
14700 @item yellows
14701 Adjustments for yellow pixels (pixels where the blue component is the minimum)
14702 @item greens
14703 Adjustments for green pixels (pixels where the green component is the maximum)
14704 @item cyans
14705 Adjustments for cyan pixels (pixels where the red component is the minimum)
14706 @item blues
14707 Adjustments for blue pixels (pixels where the blue component is the maximum)
14708 @item magentas
14709 Adjustments for magenta pixels (pixels where the green component is the minimum)
14710 @item whites
14711 Adjustments for white pixels (pixels where all components are greater than 128)
14712 @item neutrals
14713 Adjustments for all pixels except pure black and pure white
14714 @item blacks
14715 Adjustments for black pixels (pixels where all components are lesser than 128)
14716 @item psfile
14717 Specify a Photoshop selective color file (@code{.asv}) to import the settings from.
14718 @end table
14719
14720 All the adjustment settings (@option{reds}, @option{yellows}, ...) accept up to
14721 4 space separated floating point adjustment values in the [-1,1] range,
14722 respectively to adjust the amount of cyan, magenta, yellow and black for the
14723 pixels of its range.
14724
14725 @subsection Examples
14726
14727 @itemize
14728 @item
14729 Increase cyan by 50% and reduce yellow by 33% in every green areas, and
14730 increase magenta by 27% in blue areas:
14731 @example
14732 selectivecolor=greens=.5 0 -.33 0:blues=0 .27
14733 @end example
14734
14735 @item
14736 Use a Photoshop selective color preset:
14737 @example
14738 selectivecolor=psfile=MySelectiveColorPresets/Misty.asv
14739 @end example
14740 @end itemize
14741
14742 @anchor{separatefields}
14743 @section separatefields
14744
14745 The @code{separatefields} takes a frame-based video input and splits
14746 each frame into its components fields, producing a new half height clip
14747 with twice the frame rate and twice the frame count.
14748
14749 This filter use field-dominance information in frame to decide which
14750 of each pair of fields to place first in the output.
14751 If it gets it wrong use @ref{setfield} filter before @code{separatefields} filter.
14752
14753 @section setdar, setsar
14754
14755 The @code{setdar} filter sets the Display Aspect Ratio for the filter
14756 output video.
14757
14758 This is done by changing the specified Sample (aka Pixel) Aspect
14759 Ratio, according to the following equation:
14760 @example
14761 @var{DAR} = @var{HORIZONTAL_RESOLUTION} / @var{VERTICAL_RESOLUTION} * @var{SAR}
14762 @end example
14763
14764 Keep in mind that the @code{setdar} filter does not modify the pixel
14765 dimensions of the video frame. Also, the display aspect ratio set by
14766 this filter may be changed by later filters in the filterchain,
14767 e.g. in case of scaling or if another "setdar" or a "setsar" filter is
14768 applied.
14769
14770 The @code{setsar} filter sets the Sample (aka Pixel) Aspect Ratio for
14771 the filter output video.
14772
14773 Note that as a consequence of the application of this filter, the
14774 output display aspect ratio will change according to the equation
14775 above.
14776
14777 Keep in mind that the sample aspect ratio set by the @code{setsar}
14778 filter may be changed by later filters in the filterchain, e.g. if
14779 another "setsar" or a "setdar" filter is applied.
14780
14781 It accepts the following parameters:
14782
14783 @table @option
14784 @item r, ratio, dar (@code{setdar} only), sar (@code{setsar} only)
14785 Set the aspect ratio used by the filter.
14786
14787 The parameter can be a floating point number string, an expression, or
14788 a string of the form @var{num}:@var{den}, where @var{num} and
14789 @var{den} are the numerator and denominator of the aspect ratio. If
14790 the parameter is not specified, it is assumed the value "0".
14791 In case the form "@var{num}:@var{den}" is used, the @code{:} character
14792 should be escaped.
14793
14794 @item max
14795 Set the maximum integer value to use for expressing numerator and
14796 denominator when reducing the expressed aspect ratio to a rational.
14797 Default value is @code{100}.
14798
14799 @end table
14800
14801 The parameter @var{sar} is an expression containing
14802 the following constants:
14803
14804 @table @option
14805 @item E, PI, PHI
14806 These are approximated values for the mathematical constants e
14807 (Euler's number), pi (Greek pi), and phi (the golden ratio).
14808
14809 @item w, h
14810 The input width and height.
14811
14812 @item a
14813 These are the same as @var{w} / @var{h}.
14814
14815 @item sar
14816 The input sample aspect ratio.
14817
14818 @item dar
14819 The input display aspect ratio. It is the same as
14820 (@var{w} / @var{h}) * @var{sar}.
14821
14822 @item hsub, vsub
14823 Horizontal and vertical chroma subsample values. For example, for the
14824 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
14825 @end table
14826
14827 @subsection Examples
14828
14829 @itemize
14830
14831 @item
14832 To change the display aspect ratio to 16:9, specify one of the following:
14833 @example
14834 setdar=dar=1.77777
14835 setdar=dar=16/9
14836 @end example
14837
14838 @item
14839 To change the sample aspect ratio to 10:11, specify:
14840 @example
14841 setsar=sar=10/11
14842 @end example
14843
14844 @item
14845 To set a display aspect ratio of 16:9, and specify a maximum integer value of
14846 1000 in the aspect ratio reduction, use the command:
14847 @example
14848 setdar=ratio=16/9:max=1000
14849 @end example
14850
14851 @end itemize
14852
14853 @anchor{setfield}
14854 @section setfield
14855
14856 Force field for the output video frame.
14857
14858 The @code{setfield} filter marks the interlace type field for the
14859 output frames. It does not change the input frame, but only sets the
14860 corresponding property, which affects how the frame is treated by
14861 following filters (e.g. @code{fieldorder} or @code{yadif}).
14862
14863 The filter accepts the following options:
14864
14865 @table @option
14866
14867 @item mode
14868 Available values are:
14869
14870 @table @samp
14871 @item auto
14872 Keep the same field property.
14873
14874 @item bff
14875 Mark the frame as bottom-field-first.
14876
14877 @item tff
14878 Mark the frame as top-field-first.
14879
14880 @item prog
14881 Mark the frame as progressive.
14882 @end table
14883 @end table
14884
14885 @section showinfo
14886
14887 Show a line containing various information for each input video frame.
14888 The input video is not modified.
14889
14890 The shown line contains a sequence of key/value pairs of the form
14891 @var{key}:@var{value}.
14892
14893 The following values are shown in the output:
14894
14895 @table @option
14896 @item n
14897 The (sequential) number of the input frame, starting from 0.
14898
14899 @item pts
14900 The Presentation TimeStamp of the input frame, expressed as a number of
14901 time base units. The time base unit depends on the filter input pad.
14902
14903 @item pts_time
14904 The Presentation TimeStamp of the input frame, expressed as a number of
14905 seconds.
14906
14907 @item pos
14908 The position of the frame in the input stream, or -1 if this information is
14909 unavailable and/or meaningless (for example in case of synthetic video).
14910
14911 @item fmt
14912 The pixel format name.
14913
14914 @item sar
14915 The sample aspect ratio of the input frame, expressed in the form
14916 @var{num}/@var{den}.
14917
14918 @item s
14919 The size of the input frame. For the syntax of this option, check the
14920 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
14921
14922 @item i
14923 The type of interlaced mode ("P" for "progressive", "T" for top field first, "B"
14924 for bottom field first).
14925
14926 @item iskey
14927 This is 1 if the frame is a key frame, 0 otherwise.
14928
14929 @item type
14930 The picture type of the input frame ("I" for an I-frame, "P" for a
14931 P-frame, "B" for a B-frame, or "?" for an unknown type).
14932 Also refer to the documentation of the @code{AVPictureType} enum and of
14933 the @code{av_get_picture_type_char} function defined in
14934 @file{libavutil/avutil.h}.
14935
14936 @item checksum
14937 The Adler-32 checksum (printed in hexadecimal) of all the planes of the input frame.
14938
14939 @item plane_checksum
14940 The Adler-32 checksum (printed in hexadecimal) of each plane of the input frame,
14941 expressed in the form "[@var{c0} @var{c1} @var{c2} @var{c3}]".
14942 @end table
14943
14944 @section showpalette
14945
14946 Displays the 256 colors palette of each frame. This filter is only relevant for
14947 @var{pal8} pixel format frames.
14948
14949 It accepts the following option:
14950
14951 @table @option
14952 @item s
14953 Set the size of the box used to represent one palette color entry. Default is
14954 @code{30} (for a @code{30x30} pixel box).
14955 @end table
14956
14957 @section shuffleframes
14958
14959 Reorder and/or duplicate and/or drop video frames.
14960
14961 It accepts the following parameters:
14962
14963 @table @option
14964 @item mapping
14965 Set the destination indexes of input frames.
14966 This is space or '|' separated list of indexes that maps input frames to output
14967 frames. Number of indexes also sets maximal value that each index may have.
14968 '-1' index have special meaning and that is to drop frame.
14969 @end table
14970
14971 The first frame has the index 0. The default is to keep the input unchanged.
14972
14973 @subsection Examples
14974
14975 @itemize
14976 @item
14977 Swap second and third frame of every three frames of the input:
14978 @example
14979 ffmpeg -i INPUT -vf "shuffleframes=0 2 1" OUTPUT
14980 @end example
14981
14982 @item
14983 Swap 10th and 1st frame of every ten frames of the input:
14984 @example
14985 ffmpeg -i INPUT -vf "shuffleframes=9 1 2 3 4 5 6 7 8 0" OUTPUT
14986 @end example
14987 @end itemize
14988
14989 @section shuffleplanes
14990
14991 Reorder and/or duplicate video planes.
14992
14993 It accepts the following parameters:
14994
14995 @table @option
14996
14997 @item map0
14998 The index of the input plane to be used as the first output plane.
14999
15000 @item map1
15001 The index of the input plane to be used as the second output plane.
15002
15003 @item map2
15004 The index of the input plane to be used as the third output plane.
15005
15006 @item map3
15007 The index of the input plane to be used as the fourth output plane.
15008
15009 @end table
15010
15011 The first plane has the index 0. The default is to keep the input unchanged.
15012
15013 @subsection Examples
15014
15015 @itemize
15016 @item
15017 Swap the second and third planes of the input:
15018 @example
15019 ffmpeg -i INPUT -vf shuffleplanes=0:2:1:3 OUTPUT
15020 @end example
15021 @end itemize
15022
15023 @anchor{signalstats}
15024 @section signalstats
15025 Evaluate various visual metrics that assist in determining issues associated
15026 with the digitization of analog video media.
15027
15028 By default the filter will log these metadata values:
15029
15030 @table @option
15031 @item YMIN
15032 Display the minimal Y value contained within the input frame. Expressed in
15033 range of [0-255].
15034
15035 @item YLOW
15036 Display the Y value at the 10% percentile within the input frame. Expressed in
15037 range of [0-255].
15038
15039 @item YAVG
15040 Display the average Y value within the input frame. Expressed in range of
15041 [0-255].
15042
15043 @item YHIGH
15044 Display the Y value at the 90% percentile within the input frame. Expressed in
15045 range of [0-255].
15046
15047 @item YMAX
15048 Display the maximum Y value contained within the input frame. Expressed in
15049 range of [0-255].
15050
15051 @item UMIN
15052 Display the minimal U value contained within the input frame. Expressed in
15053 range of [0-255].
15054
15055 @item ULOW
15056 Display the U value at the 10% percentile within the input frame. Expressed in
15057 range of [0-255].
15058
15059 @item UAVG
15060 Display the average U value within the input frame. Expressed in range of
15061 [0-255].
15062
15063 @item UHIGH
15064 Display the U value at the 90% percentile within the input frame. Expressed in
15065 range of [0-255].
15066
15067 @item UMAX
15068 Display the maximum U value contained within the input frame. Expressed in
15069 range of [0-255].
15070
15071 @item VMIN
15072 Display the minimal V value contained within the input frame. Expressed in
15073 range of [0-255].
15074
15075 @item VLOW
15076 Display the V value at the 10% percentile within the input frame. Expressed in
15077 range of [0-255].
15078
15079 @item VAVG
15080 Display the average V value within the input frame. Expressed in range of
15081 [0-255].
15082
15083 @item VHIGH
15084 Display the V value at the 90% percentile within the input frame. Expressed in
15085 range of [0-255].
15086
15087 @item VMAX
15088 Display the maximum V value contained within the input frame. Expressed in
15089 range of [0-255].
15090
15091 @item SATMIN
15092 Display the minimal saturation value contained within the input frame.
15093 Expressed in range of [0-~181.02].
15094
15095 @item SATLOW
15096 Display the saturation value at the 10% percentile within the input frame.
15097 Expressed in range of [0-~181.02].
15098
15099 @item SATAVG
15100 Display the average saturation value within the input frame. Expressed in range
15101 of [0-~181.02].
15102
15103 @item SATHIGH
15104 Display the saturation value at the 90% percentile within the input frame.
15105 Expressed in range of [0-~181.02].
15106
15107 @item SATMAX
15108 Display the maximum saturation value contained within the input frame.
15109 Expressed in range of [0-~181.02].
15110
15111 @item HUEMED
15112 Display the median value for hue within the input frame. Expressed in range of
15113 [0-360].
15114
15115 @item HUEAVG
15116 Display the average value for hue within the input frame. Expressed in range of
15117 [0-360].
15118
15119 @item YDIF
15120 Display the average of sample value difference between all values of the Y
15121 plane in the current frame and corresponding values of the previous input frame.
15122 Expressed in range of [0-255].
15123
15124 @item UDIF
15125 Display the average of sample value difference between all values of the U
15126 plane in the current frame and corresponding values of the previous input frame.
15127 Expressed in range of [0-255].
15128
15129 @item VDIF
15130 Display the average of sample value difference between all values of the V
15131 plane in the current frame and corresponding values of the previous input frame.
15132 Expressed in range of [0-255].
15133
15134 @item YBITDEPTH
15135 Display bit depth of Y plane in current frame.
15136 Expressed in range of [0-16].
15137
15138 @item UBITDEPTH
15139 Display bit depth of U plane in current frame.
15140 Expressed in range of [0-16].
15141
15142 @item VBITDEPTH
15143 Display bit depth of V plane in current frame.
15144 Expressed in range of [0-16].
15145 @end table
15146
15147 The filter accepts the following options:
15148
15149 @table @option
15150 @item stat
15151 @item out
15152
15153 @option{stat} specify an additional form of image analysis.
15154 @option{out} output video with the specified type of pixel highlighted.
15155
15156 Both options accept the following values:
15157
15158 @table @samp
15159 @item tout
15160 Identify @var{temporal outliers} pixels. A @var{temporal outlier} is a pixel
15161 unlike the neighboring pixels of the same field. Examples of temporal outliers
15162 include the results of video dropouts, head clogs, or tape tracking issues.
15163
15164 @item vrep
15165 Identify @var{vertical line repetition}. Vertical line repetition includes
15166 similar rows of pixels within a frame. In born-digital video vertical line
15167 repetition is common, but this pattern is uncommon in video digitized from an
15168 analog source. When it occurs in video that results from the digitization of an
15169 analog source it can indicate concealment from a dropout compensator.
15170
15171 @item brng
15172 Identify pixels that fall outside of legal broadcast range.
15173 @end table
15174
15175 @item color, c
15176 Set the highlight color for the @option{out} option. The default color is
15177 yellow.
15178 @end table
15179
15180 @subsection Examples
15181
15182 @itemize
15183 @item
15184 Output data of various video metrics:
15185 @example
15186 ffprobe -f lavfi movie=example.mov,signalstats="stat=tout+vrep+brng" -show_frames
15187 @end example
15188
15189 @item
15190 Output specific data about the minimum and maximum values of the Y plane per frame:
15191 @example
15192 ffprobe -f lavfi movie=example.mov,signalstats -show_entries frame_tags=lavfi.signalstats.YMAX,lavfi.signalstats.YMIN
15193 @end example
15194
15195 @item
15196 Playback video while highlighting pixels that are outside of broadcast range in red.
15197 @example
15198 ffplay example.mov -vf signalstats="out=brng:color=red"
15199 @end example
15200
15201 @item
15202 Playback video with signalstats metadata drawn over the frame.
15203 @example
15204 ffplay example.mov -vf signalstats=stat=brng+vrep+tout,drawtext=fontfile=FreeSerif.ttf:textfile=signalstat_drawtext.txt
15205 @end example
15206
15207 The contents of signalstat_drawtext.txt used in the command are:
15208 @example
15209 time %@{pts:hms@}
15210 Y (%@{metadata:lavfi.signalstats.YMIN@}-%@{metadata:lavfi.signalstats.YMAX@})
15211 U (%@{metadata:lavfi.signalstats.UMIN@}-%@{metadata:lavfi.signalstats.UMAX@})
15212 V (%@{metadata:lavfi.signalstats.VMIN@}-%@{metadata:lavfi.signalstats.VMAX@})
15213 saturation maximum: %@{metadata:lavfi.signalstats.SATMAX@}
15214
15215 @end example
15216 @end itemize
15217
15218 @anchor{signature}
15219 @section signature
15220
15221 Calculates the MPEG-7 Video Signature. The filter can handle more than one
15222 input. In this case the matching between the inputs can be calculated additionally.
15223 The filter always passes through the first input. The signature of each stream can
15224 be written into a file.
15225
15226 It accepts the following options:
15227
15228 @table @option
15229 @item detectmode
15230 Enable or disable the matching process.
15231
15232 Available values are:
15233
15234 @table @samp
15235 @item off
15236 Disable the calculation of a matching (default).
15237 @item full
15238 Calculate the matching for the whole video and output whether the whole video
15239 matches or only parts.
15240 @item fast
15241 Calculate only until a matching is found or the video ends. Should be faster in
15242 some cases.
15243 @end table
15244
15245 @item nb_inputs
15246 Set the number of inputs. The option value must be a non negative integer.
15247 Default value is 1.
15248
15249 @item filename
15250 Set the path to which the output is written. If there is more than one input,
15251 the path must be a prototype, i.e. must contain %d or %0nd (where n is a positive
15252 integer), that will be replaced with the input number. If no filename is
15253 specified, no output will be written. This is the default.
15254
15255 @item format
15256 Choose the output format.
15257
15258 Available values are:
15259
15260 @table @samp
15261 @item binary
15262 Use the specified binary representation (default).
15263 @item xml
15264 Use the specified xml representation.
15265 @end table
15266
15267 @item th_d
15268 Set threshold to detect one word as similar. The option value must be an integer
15269 greater than zero. The default value is 9000.
15270
15271 @item th_dc
15272 Set threshold to detect all words as similar. The option value must be an integer
15273 greater than zero. The default value is 60000.
15274
15275 @item th_xh
15276 Set threshold to detect frames as similar. The option value must be an integer
15277 greater than zero. The default value is 116.
15278
15279 @item th_di
15280 Set the minimum length of a sequence in frames to recognize it as matching
15281 sequence. The option value must be a non negative integer value.
15282 The default value is 0.
15283
15284 @item th_it
15285 Set the minimum relation, that matching frames to all frames must have.
15286 The option value must be a double value between 0 and 1. The default value is 0.5.
15287 @end table
15288
15289 @subsection Examples
15290
15291 @itemize
15292 @item
15293 To calculate the signature of an input video and store it in signature.bin:
15294 @example
15295 ffmpeg -i input.mkv -vf signature=filename=signature.bin -map 0:v -f null -
15296 @end example
15297
15298 @item
15299 To detect whether two videos match and store the signatures in XML format in
15300 signature0.xml and signature1.xml:
15301 @example
15302 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 -
15303 @end example
15304
15305 @end itemize
15306
15307 @anchor{smartblur}
15308 @section smartblur
15309
15310 Blur the input video without impacting the outlines.
15311
15312 It accepts the following options:
15313
15314 @table @option
15315 @item luma_radius, lr
15316 Set the luma radius. The option value must be a float number in
15317 the range [0.1,5.0] that specifies the variance of the gaussian filter
15318 used to blur the image (slower if larger). Default value is 1.0.
15319
15320 @item luma_strength, ls
15321 Set the luma strength. The option value must be a float number
15322 in the range [-1.0,1.0] that configures the blurring. A value included
15323 in [0.0,1.0] will blur the image whereas a value included in
15324 [-1.0,0.0] will sharpen the image. Default value is 1.0.
15325
15326 @item luma_threshold, lt
15327 Set the luma threshold used as a coefficient to determine
15328 whether a pixel should be blurred or not. The option value must be an
15329 integer in the range [-30,30]. A value of 0 will filter all the image,
15330 a value included in [0,30] will filter flat areas and a value included
15331 in [-30,0] will filter edges. Default value is 0.
15332
15333 @item chroma_radius, cr
15334 Set the chroma radius. The option value must be a float number in
15335 the range [0.1,5.0] that specifies the variance of the gaussian filter
15336 used to blur the image (slower if larger). Default value is @option{luma_radius}.
15337
15338 @item chroma_strength, cs
15339 Set the chroma strength. The option value must be a float number
15340 in the range [-1.0,1.0] that configures the blurring. A value included
15341 in [0.0,1.0] will blur the image whereas a value included in
15342 [-1.0,0.0] will sharpen the image. Default value is @option{luma_strength}.
15343
15344 @item chroma_threshold, ct
15345 Set the chroma threshold used as a coefficient to determine
15346 whether a pixel should be blurred or not. The option value must be an
15347 integer in the range [-30,30]. A value of 0 will filter all the image,
15348 a value included in [0,30] will filter flat areas and a value included
15349 in [-30,0] will filter edges. Default value is @option{luma_threshold}.
15350 @end table
15351
15352 If a chroma option is not explicitly set, the corresponding luma value
15353 is set.
15354
15355 @section ssim
15356
15357 Obtain the SSIM (Structural SImilarity Metric) between two input videos.
15358
15359 This filter takes in input two input videos, the first input is
15360 considered the "main" source and is passed unchanged to the
15361 output. The second input is used as a "reference" video for computing
15362 the SSIM.
15363
15364 Both video inputs must have the same resolution and pixel format for
15365 this filter to work correctly. Also it assumes that both inputs
15366 have the same number of frames, which are compared one by one.
15367
15368 The filter stores the calculated SSIM of each frame.
15369
15370 The description of the accepted parameters follows.
15371
15372 @table @option
15373 @item stats_file, f
15374 If specified the filter will use the named file to save the SSIM of
15375 each individual frame. When filename equals "-" the data is sent to
15376 standard output.
15377 @end table
15378
15379 The file printed if @var{stats_file} is selected, contains a sequence of
15380 key/value pairs of the form @var{key}:@var{value} for each compared
15381 couple of frames.
15382
15383 A description of each shown parameter follows:
15384
15385 @table @option
15386 @item n
15387 sequential number of the input frame, starting from 1
15388
15389 @item Y, U, V, R, G, B
15390 SSIM of the compared frames for the component specified by the suffix.
15391
15392 @item All
15393 SSIM of the compared frames for the whole frame.
15394
15395 @item dB
15396 Same as above but in dB representation.
15397 @end table
15398
15399 This filter also supports the @ref{framesync} options.
15400
15401 For example:
15402 @example
15403 movie=ref_movie.mpg, setpts=PTS-STARTPTS [main];
15404 [main][ref] ssim="stats_file=stats.log" [out]
15405 @end example
15406
15407 On this example the input file being processed is compared with the
15408 reference file @file{ref_movie.mpg}. The SSIM of each individual frame
15409 is stored in @file{stats.log}.
15410
15411 Another example with both psnr and ssim at same time:
15412 @example
15413 ffmpeg -i main.mpg -i ref.mpg -lavfi  "ssim;[0:v][1:v]psnr" -f null -
15414 @end example
15415
15416 @section stereo3d
15417
15418 Convert between different stereoscopic image formats.
15419
15420 The filters accept the following options:
15421
15422 @table @option
15423 @item in
15424 Set stereoscopic image format of input.
15425
15426 Available values for input image formats are:
15427 @table @samp
15428 @item sbsl
15429 side by side parallel (left eye left, right eye right)
15430
15431 @item sbsr
15432 side by side crosseye (right eye left, left eye right)
15433
15434 @item sbs2l
15435 side by side parallel with half width resolution
15436 (left eye left, right eye right)
15437
15438 @item sbs2r
15439 side by side crosseye with half width resolution
15440 (right eye left, left eye right)
15441
15442 @item abl
15443 above-below (left eye above, right eye below)
15444
15445 @item abr
15446 above-below (right eye above, left eye below)
15447
15448 @item ab2l
15449 above-below with half height resolution
15450 (left eye above, right eye below)
15451
15452 @item ab2r
15453 above-below with half height resolution
15454 (right eye above, left eye below)
15455
15456 @item al
15457 alternating frames (left eye first, right eye second)
15458
15459 @item ar
15460 alternating frames (right eye first, left eye second)
15461
15462 @item irl
15463 interleaved rows (left eye has top row, right eye starts on next row)
15464
15465 @item irr
15466 interleaved rows (right eye has top row, left eye starts on next row)
15467
15468 @item icl
15469 interleaved columns, left eye first
15470
15471 @item icr
15472 interleaved columns, right eye first
15473
15474 Default value is @samp{sbsl}.
15475 @end table
15476
15477 @item out
15478 Set stereoscopic image format of output.
15479
15480 @table @samp
15481 @item sbsl
15482 side by side parallel (left eye left, right eye right)
15483
15484 @item sbsr
15485 side by side crosseye (right eye left, left eye right)
15486
15487 @item sbs2l
15488 side by side parallel with half width resolution
15489 (left eye left, right eye right)
15490
15491 @item sbs2r
15492 side by side crosseye with half width resolution
15493 (right eye left, left eye right)
15494
15495 @item abl
15496 above-below (left eye above, right eye below)
15497
15498 @item abr
15499 above-below (right eye above, left eye below)
15500
15501 @item ab2l
15502 above-below with half height resolution
15503 (left eye above, right eye below)
15504
15505 @item ab2r
15506 above-below with half height resolution
15507 (right eye above, left eye below)
15508
15509 @item al
15510 alternating frames (left eye first, right eye second)
15511
15512 @item ar
15513 alternating frames (right eye first, left eye second)
15514
15515 @item irl
15516 interleaved rows (left eye has top row, right eye starts on next row)
15517
15518 @item irr
15519 interleaved rows (right eye has top row, left eye starts on next row)
15520
15521 @item arbg
15522 anaglyph red/blue gray
15523 (red filter on left eye, blue filter on right eye)
15524
15525 @item argg
15526 anaglyph red/green gray
15527 (red filter on left eye, green filter on right eye)
15528
15529 @item arcg
15530 anaglyph red/cyan gray
15531 (red filter on left eye, cyan filter on right eye)
15532
15533 @item arch
15534 anaglyph red/cyan half colored
15535 (red filter on left eye, cyan filter on right eye)
15536
15537 @item arcc
15538 anaglyph red/cyan color
15539 (red filter on left eye, cyan filter on right eye)
15540
15541 @item arcd
15542 anaglyph red/cyan color optimized with the least squares projection of dubois
15543 (red filter on left eye, cyan filter on right eye)
15544
15545 @item agmg
15546 anaglyph green/magenta gray
15547 (green filter on left eye, magenta filter on right eye)
15548
15549 @item agmh
15550 anaglyph green/magenta half colored
15551 (green filter on left eye, magenta filter on right eye)
15552
15553 @item agmc
15554 anaglyph green/magenta colored
15555 (green filter on left eye, magenta filter on right eye)
15556
15557 @item agmd
15558 anaglyph green/magenta color optimized with the least squares projection of dubois
15559 (green filter on left eye, magenta filter on right eye)
15560
15561 @item aybg
15562 anaglyph yellow/blue gray
15563 (yellow filter on left eye, blue filter on right eye)
15564
15565 @item aybh
15566 anaglyph yellow/blue half colored
15567 (yellow filter on left eye, blue filter on right eye)
15568
15569 @item aybc
15570 anaglyph yellow/blue colored
15571 (yellow filter on left eye, blue filter on right eye)
15572
15573 @item aybd
15574 anaglyph yellow/blue color optimized with the least squares projection of dubois
15575 (yellow filter on left eye, blue filter on right eye)
15576
15577 @item ml
15578 mono output (left eye only)
15579
15580 @item mr
15581 mono output (right eye only)
15582
15583 @item chl
15584 checkerboard, left eye first
15585
15586 @item chr
15587 checkerboard, right eye first
15588
15589 @item icl
15590 interleaved columns, left eye first
15591
15592 @item icr
15593 interleaved columns, right eye first
15594
15595 @item hdmi
15596 HDMI frame pack
15597 @end table
15598
15599 Default value is @samp{arcd}.
15600 @end table
15601
15602 @subsection Examples
15603
15604 @itemize
15605 @item
15606 Convert input video from side by side parallel to anaglyph yellow/blue dubois:
15607 @example
15608 stereo3d=sbsl:aybd
15609 @end example
15610
15611 @item
15612 Convert input video from above below (left eye above, right eye below) to side by side crosseye.
15613 @example
15614 stereo3d=abl:sbsr
15615 @end example
15616 @end itemize
15617
15618 @section streamselect, astreamselect
15619 Select video or audio streams.
15620
15621 The filter accepts the following options:
15622
15623 @table @option
15624 @item inputs
15625 Set number of inputs. Default is 2.
15626
15627 @item map
15628 Set input indexes to remap to outputs.
15629 @end table
15630
15631 @subsection Commands
15632
15633 The @code{streamselect} and @code{astreamselect} filter supports the following
15634 commands:
15635
15636 @table @option
15637 @item map
15638 Set input indexes to remap to outputs.
15639 @end table
15640
15641 @subsection Examples
15642
15643 @itemize
15644 @item
15645 Select first 5 seconds 1st stream and rest of time 2nd stream:
15646 @example
15647 sendcmd='5.0 streamselect map 1',streamselect=inputs=2:map=0
15648 @end example
15649
15650 @item
15651 Same as above, but for audio:
15652 @example
15653 asendcmd='5.0 astreamselect map 1',astreamselect=inputs=2:map=0
15654 @end example
15655 @end itemize
15656
15657 @section sobel
15658 Apply sobel operator to input video stream.
15659
15660 The filter accepts the following option:
15661
15662 @table @option
15663 @item planes
15664 Set which planes will be processed, unprocessed planes will be copied.
15665 By default value 0xf, all planes will be processed.
15666
15667 @item scale
15668 Set value which will be multiplied with filtered result.
15669
15670 @item delta
15671 Set value which will be added to filtered result.
15672 @end table
15673
15674 @anchor{spp}
15675 @section spp
15676
15677 Apply a simple postprocessing filter that compresses and decompresses the image
15678 at several (or - in the case of @option{quality} level @code{6} - all) shifts
15679 and average the results.
15680
15681 The filter accepts the following options:
15682
15683 @table @option
15684 @item quality
15685 Set quality. This option defines the number of levels for averaging. It accepts
15686 an integer in the range 0-6. If set to @code{0}, the filter will have no
15687 effect. A value of @code{6} means the higher quality. For each increment of
15688 that value the speed drops by a factor of approximately 2.  Default value is
15689 @code{3}.
15690
15691 @item qp
15692 Force a constant quantization parameter. If not set, the filter will use the QP
15693 from the video stream (if available).
15694
15695 @item mode
15696 Set thresholding mode. Available modes are:
15697
15698 @table @samp
15699 @item hard
15700 Set hard thresholding (default).
15701 @item soft
15702 Set soft thresholding (better de-ringing effect, but likely blurrier).
15703 @end table
15704
15705 @item use_bframe_qp
15706 Enable the use of the QP from the B-Frames if set to @code{1}. Using this
15707 option may cause flicker since the B-Frames have often larger QP. Default is
15708 @code{0} (not enabled).
15709 @end table
15710
15711 @section sr
15712
15713 Scale the input by applying one of the super-resolution methods based on
15714 convolutional neural networks. Supported models:
15715
15716 @itemize
15717 @item
15718 Super-Resolution Convolutional Neural Network model (SRCNN).
15719 See @url{https://arxiv.org/abs/1501.00092}.
15720
15721 @item
15722 Efficient Sub-Pixel Convolutional Neural Network model (ESPCN).
15723 See @url{https://arxiv.org/abs/1609.05158}.
15724 @end itemize
15725
15726 Training scripts as well as scripts for model generation are provided in
15727 the repository at @url{https://github.com/HighVoltageRocknRoll/sr.git}.
15728
15729 The filter accepts the following options:
15730
15731 @table @option
15732 @item dnn_backend
15733 Specify which DNN backend to use for model loading and execution. This option accepts
15734 the following values:
15735
15736 @table @samp
15737 @item native
15738 Native implementation of DNN loading and execution.
15739
15740 @item tensorflow
15741 TensorFlow backend. To enable this backend you
15742 need to install the TensorFlow for C library (see
15743 @url{https://www.tensorflow.org/install/install_c}) and configure FFmpeg with
15744 @code{--enable-libtensorflow}
15745 @end table
15746
15747 Default value is @samp{native}.
15748
15749 @item model
15750 Set path to model file specifying network architecture and its parameters.
15751 Note that different backends use different file formats. TensorFlow backend
15752 can load files for both formats, while native backend can load files for only
15753 its format.
15754
15755 @item scale_factor
15756 Set scale factor for SRCNN model. Allowed values are @code{2}, @code{3} and @code{4}.
15757 Default value is @code{2}. Scale factor is necessary for SRCNN model, because it accepts
15758 input upscaled using bicubic upscaling with proper scale factor.
15759 @end table
15760
15761 @anchor{subtitles}
15762 @section subtitles
15763
15764 Draw subtitles on top of input video using the libass library.
15765
15766 To enable compilation of this filter you need to configure FFmpeg with
15767 @code{--enable-libass}. This filter also requires a build with libavcodec and
15768 libavformat to convert the passed subtitles file to ASS (Advanced Substation
15769 Alpha) subtitles format.
15770
15771 The filter accepts the following options:
15772
15773 @table @option
15774 @item filename, f
15775 Set the filename of the subtitle file to read. It must be specified.
15776
15777 @item original_size
15778 Specify the size of the original video, the video for which the ASS file
15779 was composed. For the syntax of this option, check the
15780 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
15781 Due to a misdesign in ASS aspect ratio arithmetic, this is necessary to
15782 correctly scale the fonts if the aspect ratio has been changed.
15783
15784 @item fontsdir
15785 Set a directory path containing fonts that can be used by the filter.
15786 These fonts will be used in addition to whatever the font provider uses.
15787
15788 @item alpha
15789 Process alpha channel, by default alpha channel is untouched.
15790
15791 @item charenc
15792 Set subtitles input character encoding. @code{subtitles} filter only. Only
15793 useful if not UTF-8.
15794
15795 @item stream_index, si
15796 Set subtitles stream index. @code{subtitles} filter only.
15797
15798 @item force_style
15799 Override default style or script info parameters of the subtitles. It accepts a
15800 string containing ASS style format @code{KEY=VALUE} couples separated by ",".
15801 @end table
15802
15803 If the first key is not specified, it is assumed that the first value
15804 specifies the @option{filename}.
15805
15806 For example, to render the file @file{sub.srt} on top of the input
15807 video, use the command:
15808 @example
15809 subtitles=sub.srt
15810 @end example
15811
15812 which is equivalent to:
15813 @example
15814 subtitles=filename=sub.srt
15815 @end example
15816
15817 To render the default subtitles stream from file @file{video.mkv}, use:
15818 @example
15819 subtitles=video.mkv
15820 @end example
15821
15822 To render the second subtitles stream from that file, use:
15823 @example
15824 subtitles=video.mkv:si=1
15825 @end example
15826
15827 To make the subtitles stream from @file{sub.srt} appear in 80% transparent blue
15828 @code{DejaVu Serif}, use:
15829 @example
15830 subtitles=sub.srt:force_style='FontName=DejaVu Serif,PrimaryColour=&HCCFF0000'
15831 @end example
15832
15833 @section super2xsai
15834
15835 Scale the input by 2x and smooth using the Super2xSaI (Scale and
15836 Interpolate) pixel art scaling algorithm.
15837
15838 Useful for enlarging pixel art images without reducing sharpness.
15839
15840 @section swaprect
15841
15842 Swap two rectangular objects in video.
15843
15844 This filter accepts the following options:
15845
15846 @table @option
15847 @item w
15848 Set object width.
15849
15850 @item h
15851 Set object height.
15852
15853 @item x1
15854 Set 1st rect x coordinate.
15855
15856 @item y1
15857 Set 1st rect y coordinate.
15858
15859 @item x2
15860 Set 2nd rect x coordinate.
15861
15862 @item y2
15863 Set 2nd rect y coordinate.
15864
15865 All expressions are evaluated once for each frame.
15866 @end table
15867
15868 The all options are expressions containing the following constants:
15869
15870 @table @option
15871 @item w
15872 @item h
15873 The input width and height.
15874
15875 @item a
15876 same as @var{w} / @var{h}
15877
15878 @item sar
15879 input sample aspect ratio
15880
15881 @item dar
15882 input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}
15883
15884 @item n
15885 The number of the input frame, starting from 0.
15886
15887 @item t
15888 The timestamp expressed in seconds. It's NAN if the input timestamp is unknown.
15889
15890 @item pos
15891 the position in the file of the input frame, NAN if unknown
15892 @end table
15893
15894 @section swapuv
15895 Swap U & V plane.
15896
15897 @section telecine
15898
15899 Apply telecine process to the video.
15900
15901 This filter accepts the following options:
15902
15903 @table @option
15904 @item first_field
15905 @table @samp
15906 @item top, t
15907 top field first
15908 @item bottom, b
15909 bottom field first
15910 The default value is @code{top}.
15911 @end table
15912
15913 @item pattern
15914 A string of numbers representing the pulldown pattern you wish to apply.
15915 The default value is @code{23}.
15916 @end table
15917
15918 @example
15919 Some typical patterns:
15920
15921 NTSC output (30i):
15922 27.5p: 32222
15923 24p: 23 (classic)
15924 24p: 2332 (preferred)
15925 20p: 33
15926 18p: 334
15927 16p: 3444
15928
15929 PAL output (25i):
15930 27.5p: 12222
15931 24p: 222222222223 ("Euro pulldown")
15932 16.67p: 33
15933 16p: 33333334
15934 @end example
15935
15936 @section threshold
15937
15938 Apply threshold effect to video stream.
15939
15940 This filter needs four video streams to perform thresholding.
15941 First stream is stream we are filtering.
15942 Second stream is holding threshold values, third stream is holding min values,
15943 and last, fourth stream is holding max values.
15944
15945 The filter accepts the following option:
15946
15947 @table @option
15948 @item planes
15949 Set which planes will be processed, unprocessed planes will be copied.
15950 By default value 0xf, all planes will be processed.
15951 @end table
15952
15953 For example if first stream pixel's component value is less then threshold value
15954 of pixel component from 2nd threshold stream, third stream value will picked,
15955 otherwise fourth stream pixel component value will be picked.
15956
15957 Using color source filter one can perform various types of thresholding:
15958
15959 @subsection Examples
15960
15961 @itemize
15962 @item
15963 Binary threshold, using gray color as threshold:
15964 @example
15965 ffmpeg -i 320x240.avi -f lavfi -i color=gray -f lavfi -i color=black -f lavfi -i color=white -lavfi threshold output.avi
15966 @end example
15967
15968 @item
15969 Inverted binary threshold, using gray color as threshold:
15970 @example
15971 ffmpeg -i 320x240.avi -f lavfi -i color=gray -f lavfi -i color=white -f lavfi -i color=black -lavfi threshold output.avi
15972 @end example
15973
15974 @item
15975 Truncate binary threshold, using gray color as threshold:
15976 @example
15977 ffmpeg -i 320x240.avi -f lavfi -i color=gray -i 320x240.avi -f lavfi -i color=gray -lavfi threshold output.avi
15978 @end example
15979
15980 @item
15981 Threshold to zero, using gray color as threshold:
15982 @example
15983 ffmpeg -i 320x240.avi -f lavfi -i color=gray -f lavfi -i color=white -i 320x240.avi -lavfi threshold output.avi
15984 @end example
15985
15986 @item
15987 Inverted threshold to zero, using gray color as threshold:
15988 @example
15989 ffmpeg -i 320x240.avi -f lavfi -i color=gray -i 320x240.avi -f lavfi -i color=white -lavfi threshold output.avi
15990 @end example
15991 @end itemize
15992
15993 @section thumbnail
15994 Select the most representative frame in a given sequence of consecutive frames.
15995
15996 The filter accepts the following options:
15997
15998 @table @option
15999 @item n
16000 Set the frames batch size to analyze; in a set of @var{n} frames, the filter
16001 will pick one of them, and then handle the next batch of @var{n} frames until
16002 the end. Default is @code{100}.
16003 @end table
16004
16005 Since the filter keeps track of the whole frames sequence, a bigger @var{n}
16006 value will result in a higher memory usage, so a high value is not recommended.
16007
16008 @subsection Examples
16009
16010 @itemize
16011 @item
16012 Extract one picture each 50 frames:
16013 @example
16014 thumbnail=50
16015 @end example
16016
16017 @item
16018 Complete example of a thumbnail creation with @command{ffmpeg}:
16019 @example
16020 ffmpeg -i in.avi -vf thumbnail,scale=300:200 -frames:v 1 out.png
16021 @end example
16022 @end itemize
16023
16024 @section tile
16025
16026 Tile several successive frames together.
16027
16028 The filter accepts the following options:
16029
16030 @table @option
16031
16032 @item layout
16033 Set the grid size (i.e. the number of lines and columns). For the syntax of
16034 this option, check the
16035 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
16036
16037 @item nb_frames
16038 Set the maximum number of frames to render in the given area. It must be less
16039 than or equal to @var{w}x@var{h}. The default value is @code{0}, meaning all
16040 the area will be used.
16041
16042 @item margin
16043 Set the outer border margin in pixels.
16044
16045 @item padding
16046 Set the inner border thickness (i.e. the number of pixels between frames). For
16047 more advanced padding options (such as having different values for the edges),
16048 refer to the pad video filter.
16049
16050 @item color
16051 Specify the color of the unused area. For the syntax of this option, check the
16052 @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
16053 The default value of @var{color} is "black".
16054
16055 @item overlap
16056 Set the number of frames to overlap when tiling several successive frames together.
16057 The value must be between @code{0} and @var{nb_frames - 1}.
16058
16059 @item init_padding
16060 Set the number of frames to initially be empty before displaying first output frame.
16061 This controls how soon will one get first output frame.
16062 The value must be between @code{0} and @var{nb_frames - 1}.
16063 @end table
16064
16065 @subsection Examples
16066
16067 @itemize
16068 @item
16069 Produce 8x8 PNG tiles of all keyframes (@option{-skip_frame nokey}) in a movie:
16070 @example
16071 ffmpeg -skip_frame nokey -i file.avi -vf 'scale=128:72,tile=8x8' -an -vsync 0 keyframes%03d.png
16072 @end example
16073 The @option{-vsync 0} is necessary to prevent @command{ffmpeg} from
16074 duplicating each output frame to accommodate the originally detected frame
16075 rate.
16076
16077 @item
16078 Display @code{5} pictures in an area of @code{3x2} frames,
16079 with @code{7} pixels between them, and @code{2} pixels of initial margin, using
16080 mixed flat and named options:
16081 @example
16082 tile=3x2:nb_frames=5:padding=7:margin=2
16083 @end example
16084 @end itemize
16085
16086 @section tinterlace
16087
16088 Perform various types of temporal field interlacing.
16089
16090 Frames are counted starting from 1, so the first input frame is
16091 considered odd.
16092
16093 The filter accepts the following options:
16094
16095 @table @option
16096
16097 @item mode
16098 Specify the mode of the interlacing. This option can also be specified
16099 as a value alone. See below for a list of values for this option.
16100
16101 Available values are:
16102
16103 @table @samp
16104 @item merge, 0
16105 Move odd frames into the upper field, even into the lower field,
16106 generating a double height frame at half frame rate.
16107 @example
16108  ------> time
16109 Input:
16110 Frame 1         Frame 2         Frame 3         Frame 4
16111
16112 11111           22222           33333           44444
16113 11111           22222           33333           44444
16114 11111           22222           33333           44444
16115 11111           22222           33333           44444
16116
16117 Output:
16118 11111                           33333
16119 22222                           44444
16120 11111                           33333
16121 22222                           44444
16122 11111                           33333
16123 22222                           44444
16124 11111                           33333
16125 22222                           44444
16126 @end example
16127
16128 @item drop_even, 1
16129 Only output odd frames, even frames are dropped, generating a frame with
16130 unchanged height at half frame rate.
16131
16132 @example
16133  ------> time
16134 Input:
16135 Frame 1         Frame 2         Frame 3         Frame 4
16136
16137 11111           22222           33333           44444
16138 11111           22222           33333           44444
16139 11111           22222           33333           44444
16140 11111           22222           33333           44444
16141
16142 Output:
16143 11111                           33333
16144 11111                           33333
16145 11111                           33333
16146 11111                           33333
16147 @end example
16148
16149 @item drop_odd, 2
16150 Only output even frames, odd frames are dropped, generating a frame with
16151 unchanged height at half frame rate.
16152
16153 @example
16154  ------> time
16155 Input:
16156 Frame 1         Frame 2         Frame 3         Frame 4
16157
16158 11111           22222           33333           44444
16159 11111           22222           33333           44444
16160 11111           22222           33333           44444
16161 11111           22222           33333           44444
16162
16163 Output:
16164                 22222                           44444
16165                 22222                           44444
16166                 22222                           44444
16167                 22222                           44444
16168 @end example
16169
16170 @item pad, 3
16171 Expand each frame to full height, but pad alternate lines with black,
16172 generating a frame with double height at the same input frame rate.
16173
16174 @example
16175  ------> time
16176 Input:
16177 Frame 1         Frame 2         Frame 3         Frame 4
16178
16179 11111           22222           33333           44444
16180 11111           22222           33333           44444
16181 11111           22222           33333           44444
16182 11111           22222           33333           44444
16183
16184 Output:
16185 11111           .....           33333           .....
16186 .....           22222           .....           44444
16187 11111           .....           33333           .....
16188 .....           22222           .....           44444
16189 11111           .....           33333           .....
16190 .....           22222           .....           44444
16191 11111           .....           33333           .....
16192 .....           22222           .....           44444
16193 @end example
16194
16195
16196 @item interleave_top, 4
16197 Interleave the upper field from odd frames with the lower field from
16198 even frames, generating a frame with unchanged height at half frame rate.
16199
16200 @example
16201  ------> time
16202 Input:
16203 Frame 1         Frame 2         Frame 3         Frame 4
16204
16205 11111<-         22222           33333<-         44444
16206 11111           22222<-         33333           44444<-
16207 11111<-         22222           33333<-         44444
16208 11111           22222<-         33333           44444<-
16209
16210 Output:
16211 11111                           33333
16212 22222                           44444
16213 11111                           33333
16214 22222                           44444
16215 @end example
16216
16217
16218 @item interleave_bottom, 5
16219 Interleave the lower field from odd frames with the upper field from
16220 even frames, generating a frame with unchanged height at half frame rate.
16221
16222 @example
16223  ------> time
16224 Input:
16225 Frame 1         Frame 2         Frame 3         Frame 4
16226
16227 11111           22222<-         33333           44444<-
16228 11111<-         22222           33333<-         44444
16229 11111           22222<-         33333           44444<-
16230 11111<-         22222           33333<-         44444
16231
16232 Output:
16233 22222                           44444
16234 11111                           33333
16235 22222                           44444
16236 11111                           33333
16237 @end example
16238
16239
16240 @item interlacex2, 6
16241 Double frame rate with unchanged height. Frames are inserted each
16242 containing the second temporal field from the previous input frame and
16243 the first temporal field from the next input frame. This mode relies on
16244 the top_field_first flag. Useful for interlaced video displays with no
16245 field synchronisation.
16246
16247 @example
16248  ------> time
16249 Input:
16250 Frame 1         Frame 2         Frame 3         Frame 4
16251
16252 11111           22222           33333           44444
16253  11111           22222           33333           44444
16254 11111           22222           33333           44444
16255  11111           22222           33333           44444
16256
16257 Output:
16258 11111   22222   22222   33333   33333   44444   44444
16259  11111   11111   22222   22222   33333   33333   44444
16260 11111   22222   22222   33333   33333   44444   44444
16261  11111   11111   22222   22222   33333   33333   44444
16262 @end example
16263
16264
16265 @item mergex2, 7
16266 Move odd frames into the upper field, even into the lower field,
16267 generating a double height frame at same frame rate.
16268
16269 @example
16270  ------> time
16271 Input:
16272 Frame 1         Frame 2         Frame 3         Frame 4
16273
16274 11111           22222           33333           44444
16275 11111           22222           33333           44444
16276 11111           22222           33333           44444
16277 11111           22222           33333           44444
16278
16279 Output:
16280 11111           33333           33333           55555
16281 22222           22222           44444           44444
16282 11111           33333           33333           55555
16283 22222           22222           44444           44444
16284 11111           33333           33333           55555
16285 22222           22222           44444           44444
16286 11111           33333           33333           55555
16287 22222           22222           44444           44444
16288 @end example
16289
16290 @end table
16291
16292 Numeric values are deprecated but are accepted for backward
16293 compatibility reasons.
16294
16295 Default mode is @code{merge}.
16296
16297 @item flags
16298 Specify flags influencing the filter process.
16299
16300 Available value for @var{flags} is:
16301
16302 @table @option
16303 @item low_pass_filter, vlfp
16304 Enable linear vertical low-pass filtering in the filter.
16305 Vertical low-pass filtering is required when creating an interlaced
16306 destination from a progressive source which contains high-frequency
16307 vertical detail. Filtering will reduce interlace 'twitter' and Moire
16308 patterning.
16309
16310 @item complex_filter, cvlfp
16311 Enable complex vertical low-pass filtering.
16312 This will slightly less reduce interlace 'twitter' and Moire
16313 patterning but better retain detail and subjective sharpness impression.
16314
16315 @end table
16316
16317 Vertical low-pass filtering can only be enabled for @option{mode}
16318 @var{interleave_top} and @var{interleave_bottom}.
16319
16320 @end table
16321
16322 @section tmix
16323
16324 Mix successive video frames.
16325
16326 A description of the accepted options follows.
16327
16328 @table @option
16329 @item frames
16330 The number of successive frames to mix. If unspecified, it defaults to 3.
16331
16332 @item weights
16333 Specify weight of each input video frame.
16334 Each weight is separated by space. If number of weights is smaller than
16335 number of @var{frames} last specified weight will be used for all remaining
16336 unset weights.
16337
16338 @item scale
16339 Specify scale, if it is set it will be multiplied with sum
16340 of each weight multiplied with pixel values to give final destination
16341 pixel value. By default @var{scale} is auto scaled to sum of weights.
16342 @end table
16343
16344 @subsection Examples
16345
16346 @itemize
16347 @item
16348 Average 7 successive frames:
16349 @example
16350 tmix=frames=7:weights="1 1 1 1 1 1 1"
16351 @end example
16352
16353 @item
16354 Apply simple temporal convolution:
16355 @example
16356 tmix=frames=3:weights="-1 3 -1"
16357 @end example
16358
16359 @item
16360 Similar as above but only showing temporal differences:
16361 @example
16362 tmix=frames=3:weights="-1 2 -1":scale=1
16363 @end example
16364 @end itemize
16365
16366 @section tonemap
16367 Tone map colors from different dynamic ranges.
16368
16369 This filter expects data in single precision floating point, as it needs to
16370 operate on (and can output) out-of-range values. Another filter, such as
16371 @ref{zscale}, is needed to convert the resulting frame to a usable format.
16372
16373 The tonemapping algorithms implemented only work on linear light, so input
16374 data should be linearized beforehand (and possibly correctly tagged).
16375
16376 @example
16377 ffmpeg -i INPUT -vf zscale=transfer=linear,tonemap=clip,zscale=transfer=bt709,format=yuv420p OUTPUT
16378 @end example
16379
16380 @subsection Options
16381 The filter accepts the following options.
16382
16383 @table @option
16384 @item tonemap
16385 Set the tone map algorithm to use.
16386
16387 Possible values are:
16388 @table @var
16389 @item none
16390 Do not apply any tone map, only desaturate overbright pixels.
16391
16392 @item clip
16393 Hard-clip any out-of-range values. Use it for perfect color accuracy for
16394 in-range values, while distorting out-of-range values.
16395
16396 @item linear
16397 Stretch the entire reference gamut to a linear multiple of the display.
16398
16399 @item gamma
16400 Fit a logarithmic transfer between the tone curves.
16401
16402 @item reinhard
16403 Preserve overall image brightness with a simple curve, using nonlinear
16404 contrast, which results in flattening details and degrading color accuracy.
16405
16406 @item hable
16407 Preserve both dark and bright details better than @var{reinhard}, at the cost
16408 of slightly darkening everything. Use it when detail preservation is more
16409 important than color and brightness accuracy.
16410
16411 @item mobius
16412 Smoothly map out-of-range values, while retaining contrast and colors for
16413 in-range material as much as possible. Use it when color accuracy is more
16414 important than detail preservation.
16415 @end table
16416
16417 Default is none.
16418
16419 @item param
16420 Tune the tone mapping algorithm.
16421
16422 This affects the following algorithms:
16423 @table @var
16424 @item none
16425 Ignored.
16426
16427 @item linear
16428 Specifies the scale factor to use while stretching.
16429 Default to 1.0.
16430
16431 @item gamma
16432 Specifies the exponent of the function.
16433 Default to 1.8.
16434
16435 @item clip
16436 Specify an extra linear coefficient to multiply into the signal before clipping.
16437 Default to 1.0.
16438
16439 @item reinhard
16440 Specify the local contrast coefficient at the display peak.
16441 Default to 0.5, which means that in-gamut values will be about half as bright
16442 as when clipping.
16443
16444 @item hable
16445 Ignored.
16446
16447 @item mobius
16448 Specify the transition point from linear to mobius transform. Every value
16449 below this point is guaranteed to be mapped 1:1. The higher the value, the
16450 more accurate the result will be, at the cost of losing bright details.
16451 Default to 0.3, which due to the steep initial slope still preserves in-range
16452 colors fairly accurately.
16453 @end table
16454
16455 @item desat
16456 Apply desaturation for highlights that exceed this level of brightness. The
16457 higher the parameter, the more color information will be preserved. This
16458 setting helps prevent unnaturally blown-out colors for super-highlights, by
16459 (smoothly) turning into white instead. This makes images feel more natural,
16460 at the cost of reducing information about out-of-range colors.
16461
16462 The default of 2.0 is somewhat conservative and will mostly just apply to
16463 skies or directly sunlit surfaces. A setting of 0.0 disables this option.
16464
16465 This option works only if the input frame has a supported color tag.
16466
16467 @item peak
16468 Override signal/nominal/reference peak with this value. Useful when the
16469 embedded peak information in display metadata is not reliable or when tone
16470 mapping from a lower range to a higher range.
16471 @end table
16472
16473 @anchor{transpose}
16474 @section transpose
16475
16476 Transpose rows with columns in the input video and optionally flip it.
16477
16478 It accepts the following parameters:
16479
16480 @table @option
16481
16482 @item dir
16483 Specify the transposition direction.
16484
16485 Can assume the following values:
16486 @table @samp
16487 @item 0, 4, cclock_flip
16488 Rotate by 90 degrees counterclockwise and vertically flip (default), that is:
16489 @example
16490 L.R     L.l
16491 . . ->  . .
16492 l.r     R.r
16493 @end example
16494
16495 @item 1, 5, clock
16496 Rotate by 90 degrees clockwise, that is:
16497 @example
16498 L.R     l.L
16499 . . ->  . .
16500 l.r     r.R
16501 @end example
16502
16503 @item 2, 6, cclock
16504 Rotate by 90 degrees counterclockwise, that is:
16505 @example
16506 L.R     R.r
16507 . . ->  . .
16508 l.r     L.l
16509 @end example
16510
16511 @item 3, 7, clock_flip
16512 Rotate by 90 degrees clockwise and vertically flip, that is:
16513 @example
16514 L.R     r.R
16515 . . ->  . .
16516 l.r     l.L
16517 @end example
16518 @end table
16519
16520 For values between 4-7, the transposition is only done if the input
16521 video geometry is portrait and not landscape. These values are
16522 deprecated, the @code{passthrough} option should be used instead.
16523
16524 Numerical values are deprecated, and should be dropped in favor of
16525 symbolic constants.
16526
16527 @item passthrough
16528 Do not apply the transposition if the input geometry matches the one
16529 specified by the specified value. It accepts the following values:
16530 @table @samp
16531 @item none
16532 Always apply transposition.
16533 @item portrait
16534 Preserve portrait geometry (when @var{height} >= @var{width}).
16535 @item landscape
16536 Preserve landscape geometry (when @var{width} >= @var{height}).
16537 @end table
16538
16539 Default value is @code{none}.
16540 @end table
16541
16542 For example to rotate by 90 degrees clockwise and preserve portrait
16543 layout:
16544 @example
16545 transpose=dir=1:passthrough=portrait
16546 @end example
16547
16548 The command above can also be specified as:
16549 @example
16550 transpose=1:portrait
16551 @end example
16552
16553 @section transpose_npp
16554
16555 Transpose rows with columns in the input video and optionally flip it.
16556 For more in depth examples see the @ref{transpose} video filter, which shares mostly the same options.
16557
16558 It accepts the following parameters:
16559
16560 @table @option
16561
16562 @item dir
16563 Specify the transposition direction.
16564
16565 Can assume the following values:
16566 @table @samp
16567 @item cclock_flip
16568 Rotate by 90 degrees counterclockwise and vertically flip. (default)
16569
16570 @item clock
16571 Rotate by 90 degrees clockwise.
16572
16573 @item cclock
16574 Rotate by 90 degrees counterclockwise.
16575
16576 @item clock_flip
16577 Rotate by 90 degrees clockwise and vertically flip.
16578 @end table
16579
16580 @item passthrough
16581 Do not apply the transposition if the input geometry matches the one
16582 specified by the specified value. It accepts the following values:
16583 @table @samp
16584 @item none
16585 Always apply transposition. (default)
16586 @item portrait
16587 Preserve portrait geometry (when @var{height} >= @var{width}).
16588 @item landscape
16589 Preserve landscape geometry (when @var{width} >= @var{height}).
16590 @end table
16591
16592 @end table
16593
16594 @section trim
16595 Trim the input so that the output contains one continuous subpart of the input.
16596
16597 It accepts the following parameters:
16598 @table @option
16599 @item start
16600 Specify the time of the start of the kept section, i.e. the frame with the
16601 timestamp @var{start} will be the first frame in the output.
16602
16603 @item end
16604 Specify the time of the first frame that will be dropped, i.e. the frame
16605 immediately preceding the one with the timestamp @var{end} will be the last
16606 frame in the output.
16607
16608 @item start_pts
16609 This is the same as @var{start}, except this option sets the start timestamp
16610 in timebase units instead of seconds.
16611
16612 @item end_pts
16613 This is the same as @var{end}, except this option sets the end timestamp
16614 in timebase units instead of seconds.
16615
16616 @item duration
16617 The maximum duration of the output in seconds.
16618
16619 @item start_frame
16620 The number of the first frame that should be passed to the output.
16621
16622 @item end_frame
16623 The number of the first frame that should be dropped.
16624 @end table
16625
16626 @option{start}, @option{end}, and @option{duration} are expressed as time
16627 duration specifications; see
16628 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
16629 for the accepted syntax.
16630
16631 Note that the first two sets of the start/end options and the @option{duration}
16632 option look at the frame timestamp, while the _frame variants simply count the
16633 frames that pass through the filter. Also note that this filter does not modify
16634 the timestamps. If you wish for the output timestamps to start at zero, insert a
16635 setpts filter after the trim filter.
16636
16637 If multiple start or end options are set, this filter tries to be greedy and
16638 keep all the frames that match at least one of the specified constraints. To keep
16639 only the part that matches all the constraints at once, chain multiple trim
16640 filters.
16641
16642 The defaults are such that all the input is kept. So it is possible to set e.g.
16643 just the end values to keep everything before the specified time.
16644
16645 Examples:
16646 @itemize
16647 @item
16648 Drop everything except the second minute of input:
16649 @example
16650 ffmpeg -i INPUT -vf trim=60:120
16651 @end example
16652
16653 @item
16654 Keep only the first second:
16655 @example
16656 ffmpeg -i INPUT -vf trim=duration=1
16657 @end example
16658
16659 @end itemize
16660
16661 @section unpremultiply
16662 Apply alpha unpremultiply effect to input video stream using first plane
16663 of second stream as alpha.
16664
16665 Both streams must have same dimensions and same pixel format.
16666
16667 The filter accepts the following option:
16668
16669 @table @option
16670 @item planes
16671 Set which planes will be processed, unprocessed planes will be copied.
16672 By default value 0xf, all planes will be processed.
16673
16674 If the format has 1 or 2 components, then luma is bit 0.
16675 If the format has 3 or 4 components:
16676 for RGB formats bit 0 is green, bit 1 is blue and bit 2 is red;
16677 for YUV formats bit 0 is luma, bit 1 is chroma-U and bit 2 is chroma-V.
16678 If present, the alpha channel is always the last bit.
16679
16680 @item inplace
16681 Do not require 2nd input for processing, instead use alpha plane from input stream.
16682 @end table
16683
16684 @anchor{unsharp}
16685 @section unsharp
16686
16687 Sharpen or blur the input video.
16688
16689 It accepts the following parameters:
16690
16691 @table @option
16692 @item luma_msize_x, lx
16693 Set the luma matrix horizontal size. It must be an odd integer between
16694 3 and 23. The default value is 5.
16695
16696 @item luma_msize_y, ly
16697 Set the luma matrix vertical size. It must be an odd integer between 3
16698 and 23. The default value is 5.
16699
16700 @item luma_amount, la
16701 Set the luma effect strength. It must be a floating point number, reasonable
16702 values lay between -1.5 and 1.5.
16703
16704 Negative values will blur the input video, while positive values will
16705 sharpen it, a value of zero will disable the effect.
16706
16707 Default value is 1.0.
16708
16709 @item chroma_msize_x, cx
16710 Set the chroma matrix horizontal size. It must be an odd integer
16711 between 3 and 23. The default value is 5.
16712
16713 @item chroma_msize_y, cy
16714 Set the chroma matrix vertical size. It must be an odd integer
16715 between 3 and 23. The default value is 5.
16716
16717 @item chroma_amount, ca
16718 Set the chroma effect strength. It must be a floating point number, reasonable
16719 values lay between -1.5 and 1.5.
16720
16721 Negative values will blur the input video, while positive values will
16722 sharpen it, a value of zero will disable the effect.
16723
16724 Default value is 0.0.
16725
16726 @end table
16727
16728 All parameters are optional and default to the equivalent of the
16729 string '5:5:1.0:5:5:0.0'.
16730
16731 @subsection Examples
16732
16733 @itemize
16734 @item
16735 Apply strong luma sharpen effect:
16736 @example
16737 unsharp=luma_msize_x=7:luma_msize_y=7:luma_amount=2.5
16738 @end example
16739
16740 @item
16741 Apply a strong blur of both luma and chroma parameters:
16742 @example
16743 unsharp=7:7:-2:7:7:-2
16744 @end example
16745 @end itemize
16746
16747 @section uspp
16748
16749 Apply ultra slow/simple postprocessing filter that compresses and decompresses
16750 the image at several (or - in the case of @option{quality} level @code{8} - all)
16751 shifts and average the results.
16752
16753 The way this differs from the behavior of spp is that uspp actually encodes &
16754 decodes each case with libavcodec Snow, whereas spp uses a simplified intra only 8x8
16755 DCT similar to MJPEG.
16756
16757 The filter accepts the following options:
16758
16759 @table @option
16760 @item quality
16761 Set quality. This option defines the number of levels for averaging. It accepts
16762 an integer in the range 0-8. If set to @code{0}, the filter will have no
16763 effect. A value of @code{8} means the higher quality. For each increment of
16764 that value the speed drops by a factor of approximately 2.  Default value is
16765 @code{3}.
16766
16767 @item qp
16768 Force a constant quantization parameter. If not set, the filter will use the QP
16769 from the video stream (if available).
16770 @end table
16771
16772 @section vaguedenoiser
16773
16774 Apply a wavelet based denoiser.
16775
16776 It transforms each frame from the video input into the wavelet domain,
16777 using Cohen-Daubechies-Feauveau 9/7. Then it applies some filtering to
16778 the obtained coefficients. It does an inverse wavelet transform after.
16779 Due to wavelet properties, it should give a nice smoothed result, and
16780 reduced noise, without blurring picture features.
16781
16782 This filter accepts the following options:
16783
16784 @table @option
16785 @item threshold
16786 The filtering strength. The higher, the more filtered the video will be.
16787 Hard thresholding can use a higher threshold than soft thresholding
16788 before the video looks overfiltered. Default value is 2.
16789
16790 @item method
16791 The filtering method the filter will use.
16792
16793 It accepts the following values:
16794 @table @samp
16795 @item hard
16796 All values under the threshold will be zeroed.
16797
16798 @item soft
16799 All values under the threshold will be zeroed. All values above will be
16800 reduced by the threshold.
16801
16802 @item garrote
16803 Scales or nullifies coefficients - intermediary between (more) soft and
16804 (less) hard thresholding.
16805 @end table
16806
16807 Default is garrote.
16808
16809 @item nsteps
16810 Number of times, the wavelet will decompose the picture. Picture can't
16811 be decomposed beyond a particular point (typically, 8 for a 640x480
16812 frame - as 2^9 = 512 > 480). Valid values are integers between 1 and 32. Default value is 6.
16813
16814 @item percent
16815 Partial of full denoising (limited coefficients shrinking), from 0 to 100. Default value is 85.
16816
16817 @item planes
16818 A list of the planes to process. By default all planes are processed.
16819 @end table
16820
16821 @section vectorscope
16822
16823 Display 2 color component values in the two dimensional graph (which is called
16824 a vectorscope).
16825
16826 This filter accepts the following options:
16827
16828 @table @option
16829 @item mode, m
16830 Set vectorscope mode.
16831
16832 It accepts the following values:
16833 @table @samp
16834 @item gray
16835 Gray values are displayed on graph, higher brightness means more pixels have
16836 same component color value on location in graph. This is the default mode.
16837
16838 @item color
16839 Gray values are displayed on graph. Surrounding pixels values which are not
16840 present in video frame are drawn in gradient of 2 color components which are
16841 set by option @code{x} and @code{y}. The 3rd color component is static.
16842
16843 @item color2
16844 Actual color components values present in video frame are displayed on graph.
16845
16846 @item color3
16847 Similar as color2 but higher frequency of same values @code{x} and @code{y}
16848 on graph increases value of another color component, which is luminance by
16849 default values of @code{x} and @code{y}.
16850
16851 @item color4
16852 Actual colors present in video frame are displayed on graph. If two different
16853 colors map to same position on graph then color with higher value of component
16854 not present in graph is picked.
16855
16856 @item color5
16857 Gray values are displayed on graph. Similar to @code{color} but with 3rd color
16858 component picked from radial gradient.
16859 @end table
16860
16861 @item x
16862 Set which color component will be represented on X-axis. Default is @code{1}.
16863
16864 @item y
16865 Set which color component will be represented on Y-axis. Default is @code{2}.
16866
16867 @item intensity, i
16868 Set intensity, used by modes: gray, color, color3 and color5 for increasing brightness
16869 of color component which represents frequency of (X, Y) location in graph.
16870
16871 @item envelope, e
16872 @table @samp
16873 @item none
16874 No envelope, this is default.
16875
16876 @item instant
16877 Instant envelope, even darkest single pixel will be clearly highlighted.
16878
16879 @item peak
16880 Hold maximum and minimum values presented in graph over time. This way you
16881 can still spot out of range values without constantly looking at vectorscope.
16882
16883 @item peak+instant
16884 Peak and instant envelope combined together.
16885 @end table
16886
16887 @item graticule, g
16888 Set what kind of graticule to draw.
16889 @table @samp
16890 @item none
16891 @item green
16892 @item color
16893 @end table
16894
16895 @item opacity, o
16896 Set graticule opacity.
16897
16898 @item flags, f
16899 Set graticule flags.
16900
16901 @table @samp
16902 @item white
16903 Draw graticule for white point.
16904
16905 @item black
16906 Draw graticule for black point.
16907
16908 @item name
16909 Draw color points short names.
16910 @end table
16911
16912 @item bgopacity, b
16913 Set background opacity.
16914
16915 @item lthreshold, l
16916 Set low threshold for color component not represented on X or Y axis.
16917 Values lower than this value will be ignored. Default is 0.
16918 Note this value is multiplied with actual max possible value one pixel component
16919 can have. So for 8-bit input and low threshold value of 0.1 actual threshold
16920 is 0.1 * 255 = 25.
16921
16922 @item hthreshold, h
16923 Set high threshold for color component not represented on X or Y axis.
16924 Values higher than this value will be ignored. Default is 1.
16925 Note this value is multiplied with actual max possible value one pixel component
16926 can have. So for 8-bit input and high threshold value of 0.9 actual threshold
16927 is 0.9 * 255 = 230.
16928
16929 @item colorspace, c
16930 Set what kind of colorspace to use when drawing graticule.
16931 @table @samp
16932 @item auto
16933 @item 601
16934 @item 709
16935 @end table
16936 Default is auto.
16937 @end table
16938
16939 @anchor{vidstabdetect}
16940 @section vidstabdetect
16941
16942 Analyze video stabilization/deshaking. Perform pass 1 of 2, see
16943 @ref{vidstabtransform} for pass 2.
16944
16945 This filter generates a file with relative translation and rotation
16946 transform information about subsequent frames, which is then used by
16947 the @ref{vidstabtransform} filter.
16948
16949 To enable compilation of this filter you need to configure FFmpeg with
16950 @code{--enable-libvidstab}.
16951
16952 This filter accepts the following options:
16953
16954 @table @option
16955 @item result
16956 Set the path to the file used to write the transforms information.
16957 Default value is @file{transforms.trf}.
16958
16959 @item shakiness
16960 Set how shaky the video is and how quick the camera is. It accepts an
16961 integer in the range 1-10, a value of 1 means little shakiness, a
16962 value of 10 means strong shakiness. Default value is 5.
16963
16964 @item accuracy
16965 Set the accuracy of the detection process. It must be a value in the
16966 range 1-15. A value of 1 means low accuracy, a value of 15 means high
16967 accuracy. Default value is 15.
16968
16969 @item stepsize
16970 Set stepsize of the search process. The region around minimum is
16971 scanned with 1 pixel resolution. Default value is 6.
16972
16973 @item mincontrast
16974 Set minimum contrast. Below this value a local measurement field is
16975 discarded. Must be a floating point value in the range 0-1. Default
16976 value is 0.3.
16977
16978 @item tripod
16979 Set reference frame number for tripod mode.
16980
16981 If enabled, the motion of the frames is compared to a reference frame
16982 in the filtered stream, identified by the specified number. The idea
16983 is to compensate all movements in a more-or-less static scene and keep
16984 the camera view absolutely still.
16985
16986 If set to 0, it is disabled. The frames are counted starting from 1.
16987
16988 @item show
16989 Show fields and transforms in the resulting frames. It accepts an
16990 integer in the range 0-2. Default value is 0, which disables any
16991 visualization.
16992 @end table
16993
16994 @subsection Examples
16995
16996 @itemize
16997 @item
16998 Use default values:
16999 @example
17000 vidstabdetect
17001 @end example
17002
17003 @item
17004 Analyze strongly shaky movie and put the results in file
17005 @file{mytransforms.trf}:
17006 @example
17007 vidstabdetect=shakiness=10:accuracy=15:result="mytransforms.trf"
17008 @end example
17009
17010 @item
17011 Visualize the result of internal transformations in the resulting
17012 video:
17013 @example
17014 vidstabdetect=show=1
17015 @end example
17016
17017 @item
17018 Analyze a video with medium shakiness using @command{ffmpeg}:
17019 @example
17020 ffmpeg -i input -vf vidstabdetect=shakiness=5:show=1 dummy.avi
17021 @end example
17022 @end itemize
17023
17024 @anchor{vidstabtransform}
17025 @section vidstabtransform
17026
17027 Video stabilization/deshaking: pass 2 of 2,
17028 see @ref{vidstabdetect} for pass 1.
17029
17030 Read a file with transform information for each frame and
17031 apply/compensate them. Together with the @ref{vidstabdetect}
17032 filter this can be used to deshake videos. See also
17033 @url{http://public.hronopik.de/vid.stab}. It is important to also use
17034 the @ref{unsharp} filter, see below.
17035
17036 To enable compilation of this filter you need to configure FFmpeg with
17037 @code{--enable-libvidstab}.
17038
17039 @subsection Options
17040
17041 @table @option
17042 @item input
17043 Set path to the file used to read the transforms. Default value is
17044 @file{transforms.trf}.
17045
17046 @item smoothing
17047 Set the number of frames (value*2 + 1) used for lowpass filtering the
17048 camera movements. Default value is 10.
17049
17050 For example a number of 10 means that 21 frames are used (10 in the
17051 past and 10 in the future) to smoothen the motion in the video. A
17052 larger value leads to a smoother video, but limits the acceleration of
17053 the camera (pan/tilt movements). 0 is a special case where a static
17054 camera is simulated.
17055
17056 @item optalgo
17057 Set the camera path optimization algorithm.
17058
17059 Accepted values are:
17060 @table @samp
17061 @item gauss
17062 gaussian kernel low-pass filter on camera motion (default)
17063 @item avg
17064 averaging on transformations
17065 @end table
17066
17067 @item maxshift
17068 Set maximal number of pixels to translate frames. Default value is -1,
17069 meaning no limit.
17070
17071 @item maxangle
17072 Set maximal angle in radians (degree*PI/180) to rotate frames. Default
17073 value is -1, meaning no limit.
17074
17075 @item crop
17076 Specify how to deal with borders that may be visible due to movement
17077 compensation.
17078
17079 Available values are:
17080 @table @samp
17081 @item keep
17082 keep image information from previous frame (default)
17083 @item black
17084 fill the border black
17085 @end table
17086
17087 @item invert
17088 Invert transforms if set to 1. Default value is 0.
17089
17090 @item relative
17091 Consider transforms as relative to previous frame if set to 1,
17092 absolute if set to 0. Default value is 0.
17093
17094 @item zoom
17095 Set percentage to zoom. A positive value will result in a zoom-in
17096 effect, a negative value in a zoom-out effect. Default value is 0 (no
17097 zoom).
17098
17099 @item optzoom
17100 Set optimal zooming to avoid borders.
17101
17102 Accepted values are:
17103 @table @samp
17104 @item 0
17105 disabled
17106 @item 1
17107 optimal static zoom value is determined (only very strong movements
17108 will lead to visible borders) (default)
17109 @item 2
17110 optimal adaptive zoom value is determined (no borders will be
17111 visible), see @option{zoomspeed}
17112 @end table
17113
17114 Note that the value given at zoom is added to the one calculated here.
17115
17116 @item zoomspeed
17117 Set percent to zoom maximally each frame (enabled when
17118 @option{optzoom} is set to 2). Range is from 0 to 5, default value is
17119 0.25.
17120
17121 @item interpol
17122 Specify type of interpolation.
17123
17124 Available values are:
17125 @table @samp
17126 @item no
17127 no interpolation
17128 @item linear
17129 linear only horizontal
17130 @item bilinear
17131 linear in both directions (default)
17132 @item bicubic
17133 cubic in both directions (slow)
17134 @end table
17135
17136 @item tripod
17137 Enable virtual tripod mode if set to 1, which is equivalent to
17138 @code{relative=0:smoothing=0}. Default value is 0.
17139
17140 Use also @code{tripod} option of @ref{vidstabdetect}.
17141
17142 @item debug
17143 Increase log verbosity if set to 1. Also the detected global motions
17144 are written to the temporary file @file{global_motions.trf}. Default
17145 value is 0.
17146 @end table
17147
17148 @subsection Examples
17149
17150 @itemize
17151 @item
17152 Use @command{ffmpeg} for a typical stabilization with default values:
17153 @example
17154 ffmpeg -i inp.mpeg -vf vidstabtransform,unsharp=5:5:0.8:3:3:0.4 inp_stabilized.mpeg
17155 @end example
17156
17157 Note the use of the @ref{unsharp} filter which is always recommended.
17158
17159 @item
17160 Zoom in a bit more and load transform data from a given file:
17161 @example
17162 vidstabtransform=zoom=5:input="mytransforms.trf"
17163 @end example
17164
17165 @item
17166 Smoothen the video even more:
17167 @example
17168 vidstabtransform=smoothing=30
17169 @end example
17170 @end itemize
17171
17172 @section vflip
17173
17174 Flip the input video vertically.
17175
17176 For example, to vertically flip a video with @command{ffmpeg}:
17177 @example
17178 ffmpeg -i in.avi -vf "vflip" out.avi
17179 @end example
17180
17181 @section vfrdet
17182
17183 Detect variable frame rate video.
17184
17185 This filter tries to detect if the input is variable or constant frame rate.
17186
17187 At end it will output number of frames detected as having variable delta pts,
17188 and ones with constant delta pts.
17189 If there was frames with variable delta, than it will also show min and max delta
17190 encountered.
17191
17192 @anchor{vignette}
17193 @section vignette
17194
17195 Make or reverse a natural vignetting effect.
17196
17197 The filter accepts the following options:
17198
17199 @table @option
17200 @item angle, a
17201 Set lens angle expression as a number of radians.
17202
17203 The value is clipped in the @code{[0,PI/2]} range.
17204
17205 Default value: @code{"PI/5"}
17206
17207 @item x0
17208 @item y0
17209 Set center coordinates expressions. Respectively @code{"w/2"} and @code{"h/2"}
17210 by default.
17211
17212 @item mode
17213 Set forward/backward mode.
17214
17215 Available modes are:
17216 @table @samp
17217 @item forward
17218 The larger the distance from the central point, the darker the image becomes.
17219
17220 @item backward
17221 The larger the distance from the central point, the brighter the image becomes.
17222 This can be used to reverse a vignette effect, though there is no automatic
17223 detection to extract the lens @option{angle} and other settings (yet). It can
17224 also be used to create a burning effect.
17225 @end table
17226
17227 Default value is @samp{forward}.
17228
17229 @item eval
17230 Set evaluation mode for the expressions (@option{angle}, @option{x0}, @option{y0}).
17231
17232 It accepts the following values:
17233 @table @samp
17234 @item init
17235 Evaluate expressions only once during the filter initialization.
17236
17237 @item frame
17238 Evaluate expressions for each incoming frame. This is way slower than the
17239 @samp{init} mode since it requires all the scalers to be re-computed, but it
17240 allows advanced dynamic expressions.
17241 @end table
17242
17243 Default value is @samp{init}.
17244
17245 @item dither
17246 Set dithering to reduce the circular banding effects. Default is @code{1}
17247 (enabled).
17248
17249 @item aspect
17250 Set vignette aspect. This setting allows one to adjust the shape of the vignette.
17251 Setting this value to the SAR of the input will make a rectangular vignetting
17252 following the dimensions of the video.
17253
17254 Default is @code{1/1}.
17255 @end table
17256
17257 @subsection Expressions
17258
17259 The @option{alpha}, @option{x0} and @option{y0} expressions can contain the
17260 following parameters.
17261
17262 @table @option
17263 @item w
17264 @item h
17265 input width and height
17266
17267 @item n
17268 the number of input frame, starting from 0
17269
17270 @item pts
17271 the PTS (Presentation TimeStamp) time of the filtered video frame, expressed in
17272 @var{TB} units, NAN if undefined
17273
17274 @item r
17275 frame rate of the input video, NAN if the input frame rate is unknown
17276
17277 @item t
17278 the PTS (Presentation TimeStamp) of the filtered video frame,
17279 expressed in seconds, NAN if undefined
17280
17281 @item tb
17282 time base of the input video
17283 @end table
17284
17285
17286 @subsection Examples
17287
17288 @itemize
17289 @item
17290 Apply simple strong vignetting effect:
17291 @example
17292 vignette=PI/4
17293 @end example
17294
17295 @item
17296 Make a flickering vignetting:
17297 @example
17298 vignette='PI/4+random(1)*PI/50':eval=frame
17299 @end example
17300
17301 @end itemize
17302
17303 @section vmafmotion
17304
17305 Obtain the average vmaf motion score of a video.
17306 It is one of the component filters of VMAF.
17307
17308 The obtained average motion score is printed through the logging system.
17309
17310 In the below example the input file @file{ref.mpg} is being processed and score
17311 is computed.
17312
17313 @example
17314 ffmpeg -i ref.mpg -lavfi vmafmotion -f null -
17315 @end example
17316
17317 @section vstack
17318 Stack input videos vertically.
17319
17320 All streams must be of same pixel format and of same width.
17321
17322 Note that this filter is faster than using @ref{overlay} and @ref{pad} filter
17323 to create same output.
17324
17325 The filter accept the following option:
17326
17327 @table @option
17328 @item inputs
17329 Set number of input streams. Default is 2.
17330
17331 @item shortest
17332 If set to 1, force the output to terminate when the shortest input
17333 terminates. Default value is 0.
17334 @end table
17335
17336 @section w3fdif
17337
17338 Deinterlace the input video ("w3fdif" stands for "Weston 3 Field
17339 Deinterlacing Filter").
17340
17341 Based on the process described by Martin Weston for BBC R&D, and
17342 implemented based on the de-interlace algorithm written by Jim
17343 Easterbrook for BBC R&D, the Weston 3 field deinterlacing filter
17344 uses filter coefficients calculated by BBC R&D.
17345
17346 There are two sets of filter coefficients, so called "simple":
17347 and "complex". Which set of filter coefficients is used can
17348 be set by passing an optional parameter:
17349
17350 @table @option
17351 @item filter
17352 Set the interlacing filter coefficients. Accepts one of the following values:
17353
17354 @table @samp
17355 @item simple
17356 Simple filter coefficient set.
17357 @item complex
17358 More-complex filter coefficient set.
17359 @end table
17360 Default value is @samp{complex}.
17361
17362 @item deint
17363 Specify which frames to deinterlace. Accept one of the following values:
17364
17365 @table @samp
17366 @item all
17367 Deinterlace all frames,
17368 @item interlaced
17369 Only deinterlace frames marked as interlaced.
17370 @end table
17371
17372 Default value is @samp{all}.
17373 @end table
17374
17375 @section waveform
17376 Video waveform monitor.
17377
17378 The waveform monitor plots color component intensity. By default luminance
17379 only. Each column of the waveform corresponds to a column of pixels in the
17380 source video.
17381
17382 It accepts the following options:
17383
17384 @table @option
17385 @item mode, m
17386 Can be either @code{row}, or @code{column}. Default is @code{column}.
17387 In row mode, the graph on the left side represents color component value 0 and
17388 the right side represents value = 255. In column mode, the top side represents
17389 color component value = 0 and bottom side represents value = 255.
17390
17391 @item intensity, i
17392 Set intensity. Smaller values are useful to find out how many values of the same
17393 luminance are distributed across input rows/columns.
17394 Default value is @code{0.04}. Allowed range is [0, 1].
17395
17396 @item mirror, r
17397 Set mirroring mode. @code{0} means unmirrored, @code{1} means mirrored.
17398 In mirrored mode, higher values will be represented on the left
17399 side for @code{row} mode and at the top for @code{column} mode. Default is
17400 @code{1} (mirrored).
17401
17402 @item display, d
17403 Set display mode.
17404 It accepts the following values:
17405 @table @samp
17406 @item overlay
17407 Presents information identical to that in the @code{parade}, except
17408 that the graphs representing color components are superimposed directly
17409 over one another.
17410
17411 This display mode makes it easier to spot relative differences or similarities
17412 in overlapping areas of the color components that are supposed to be identical,
17413 such as neutral whites, grays, or blacks.
17414
17415 @item stack
17416 Display separate graph for the color components side by side in
17417 @code{row} mode or one below the other in @code{column} mode.
17418
17419 @item parade
17420 Display separate graph for the color components side by side in
17421 @code{column} mode or one below the other in @code{row} mode.
17422
17423 Using this display mode makes it easy to spot color casts in the highlights
17424 and shadows of an image, by comparing the contours of the top and the bottom
17425 graphs of each waveform. Since whites, grays, and blacks are characterized
17426 by exactly equal amounts of red, green, and blue, neutral areas of the picture
17427 should display three waveforms of roughly equal width/height. If not, the
17428 correction is easy to perform by making level adjustments the three waveforms.
17429 @end table
17430 Default is @code{stack}.
17431
17432 @item components, c
17433 Set which color components to display. Default is 1, which means only luminance
17434 or red color component if input is in RGB colorspace. If is set for example to
17435 7 it will display all 3 (if) available color components.
17436
17437 @item envelope, e
17438 @table @samp
17439 @item none
17440 No envelope, this is default.
17441
17442 @item instant
17443 Instant envelope, minimum and maximum values presented in graph will be easily
17444 visible even with small @code{step} value.
17445
17446 @item peak
17447 Hold minimum and maximum values presented in graph across time. This way you
17448 can still spot out of range values without constantly looking at waveforms.
17449
17450 @item peak+instant
17451 Peak and instant envelope combined together.
17452 @end table
17453
17454 @item filter, f
17455 @table @samp
17456 @item lowpass
17457 No filtering, this is default.
17458
17459 @item flat
17460 Luma and chroma combined together.
17461
17462 @item aflat
17463 Similar as above, but shows difference between blue and red chroma.
17464
17465 @item xflat
17466 Similar as above, but use different colors.
17467
17468 @item chroma
17469 Displays only chroma.
17470
17471 @item color
17472 Displays actual color value on waveform.
17473
17474 @item acolor
17475 Similar as above, but with luma showing frequency of chroma values.
17476 @end table
17477
17478 @item graticule, g
17479 Set which graticule to display.
17480
17481 @table @samp
17482 @item none
17483 Do not display graticule.
17484
17485 @item green
17486 Display green graticule showing legal broadcast ranges.
17487
17488 @item orange
17489 Display orange graticule showing legal broadcast ranges.
17490 @end table
17491
17492 @item opacity, o
17493 Set graticule opacity.
17494
17495 @item flags, fl
17496 Set graticule flags.
17497
17498 @table @samp
17499 @item numbers
17500 Draw numbers above lines. By default enabled.
17501
17502 @item dots
17503 Draw dots instead of lines.
17504 @end table
17505
17506 @item scale, s
17507 Set scale used for displaying graticule.
17508
17509 @table @samp
17510 @item digital
17511 @item millivolts
17512 @item ire
17513 @end table
17514 Default is digital.
17515
17516 @item bgopacity, b
17517 Set background opacity.
17518 @end table
17519
17520 @section weave, doubleweave
17521
17522 The @code{weave} takes a field-based video input and join
17523 each two sequential fields into single frame, producing a new double
17524 height clip with half the frame rate and half the frame count.
17525
17526 The @code{doubleweave} works same as @code{weave} but without
17527 halving frame rate and frame count.
17528
17529 It accepts the following option:
17530
17531 @table @option
17532 @item first_field
17533 Set first field. Available values are:
17534
17535 @table @samp
17536 @item top, t
17537 Set the frame as top-field-first.
17538
17539 @item bottom, b
17540 Set the frame as bottom-field-first.
17541 @end table
17542 @end table
17543
17544 @subsection Examples
17545
17546 @itemize
17547 @item
17548 Interlace video using @ref{select} and @ref{separatefields} filter:
17549 @example
17550 separatefields,select=eq(mod(n,4),0)+eq(mod(n,4),3),weave
17551 @end example
17552 @end itemize
17553
17554 @section xbr
17555 Apply the xBR high-quality magnification filter which is designed for pixel
17556 art. It follows a set of edge-detection rules, see
17557 @url{https://forums.libretro.com/t/xbr-algorithm-tutorial/123}.
17558
17559 It accepts the following option:
17560
17561 @table @option
17562 @item n
17563 Set the scaling dimension: @code{2} for @code{2xBR}, @code{3} for
17564 @code{3xBR} and @code{4} for @code{4xBR}.
17565 Default is @code{3}.
17566 @end table
17567
17568 @anchor{yadif}
17569 @section yadif
17570
17571 Deinterlace the input video ("yadif" means "yet another deinterlacing
17572 filter").
17573
17574 It accepts the following parameters:
17575
17576
17577 @table @option
17578
17579 @item mode
17580 The interlacing mode to adopt. It accepts one of the following values:
17581
17582 @table @option
17583 @item 0, send_frame
17584 Output one frame for each frame.
17585 @item 1, send_field
17586 Output one frame for each field.
17587 @item 2, send_frame_nospatial
17588 Like @code{send_frame}, but it skips the spatial interlacing check.
17589 @item 3, send_field_nospatial
17590 Like @code{send_field}, but it skips the spatial interlacing check.
17591 @end table
17592
17593 The default value is @code{send_frame}.
17594
17595 @item parity
17596 The picture field parity assumed for the input interlaced video. It accepts one
17597 of the following values:
17598
17599 @table @option
17600 @item 0, tff
17601 Assume the top field is first.
17602 @item 1, bff
17603 Assume the bottom field is first.
17604 @item -1, auto
17605 Enable automatic detection of field parity.
17606 @end table
17607
17608 The default value is @code{auto}.
17609 If the interlacing is unknown or the decoder does not export this information,
17610 top field first will be assumed.
17611
17612 @item deint
17613 Specify which frames to deinterlace. Accept one of the following
17614 values:
17615
17616 @table @option
17617 @item 0, all
17618 Deinterlace all frames.
17619 @item 1, interlaced
17620 Only deinterlace frames marked as interlaced.
17621 @end table
17622
17623 The default value is @code{all}.
17624 @end table
17625
17626 @section zoompan
17627
17628 Apply Zoom & Pan effect.
17629
17630 This filter accepts the following options:
17631
17632 @table @option
17633 @item zoom, z
17634 Set the zoom expression. Default is 1.
17635
17636 @item x
17637 @item y
17638 Set the x and y expression. Default is 0.
17639
17640 @item d
17641 Set the duration expression in number of frames.
17642 This sets for how many number of frames effect will last for
17643 single input image.
17644
17645 @item s
17646 Set the output image size, default is 'hd720'.
17647
17648 @item fps
17649 Set the output frame rate, default is '25'.
17650 @end table
17651
17652 Each expression can contain the following constants:
17653
17654 @table @option
17655 @item in_w, iw
17656 Input width.
17657
17658 @item in_h, ih
17659 Input height.
17660
17661 @item out_w, ow
17662 Output width.
17663
17664 @item out_h, oh
17665 Output height.
17666
17667 @item in
17668 Input frame count.
17669
17670 @item on
17671 Output frame count.
17672
17673 @item x
17674 @item y
17675 Last calculated 'x' and 'y' position from 'x' and 'y' expression
17676 for current input frame.
17677
17678 @item px
17679 @item py
17680 'x' and 'y' of last output frame of previous input frame or 0 when there was
17681 not yet such frame (first input frame).
17682
17683 @item zoom
17684 Last calculated zoom from 'z' expression for current input frame.
17685
17686 @item pzoom
17687 Last calculated zoom of last output frame of previous input frame.
17688
17689 @item duration
17690 Number of output frames for current input frame. Calculated from 'd' expression
17691 for each input frame.
17692
17693 @item pduration
17694 number of output frames created for previous input frame
17695
17696 @item a
17697 Rational number: input width / input height
17698
17699 @item sar
17700 sample aspect ratio
17701
17702 @item dar
17703 display aspect ratio
17704
17705 @end table
17706
17707 @subsection Examples
17708
17709 @itemize
17710 @item
17711 Zoom-in up to 1.5 and pan at same time to some spot near center of picture:
17712 @example
17713 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
17714 @end example
17715
17716 @item
17717 Zoom-in up to 1.5 and pan always at center of picture:
17718 @example
17719 zoompan=z='min(zoom+0.0015,1.5)':d=700:x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)'
17720 @end example
17721
17722 @item
17723 Same as above but without pausing:
17724 @example
17725 zoompan=z='min(max(zoom,pzoom)+0.0015,1.5)':d=1:x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)'
17726 @end example
17727 @end itemize
17728
17729 @anchor{zscale}
17730 @section zscale
17731 Scale (resize) the input video, using the z.lib library:
17732 @url{https://github.com/sekrit-twc/zimg}. To enable compilation of this
17733 filter, you need to configure FFmpeg with @code{--enable-libzimg}.
17734
17735 The zscale filter forces the output display aspect ratio to be the same
17736 as the input, by changing the output sample aspect ratio.
17737
17738 If the input image format is different from the format requested by
17739 the next filter, the zscale filter will convert the input to the
17740 requested format.
17741
17742 @subsection Options
17743 The filter accepts the following options.
17744
17745 @table @option
17746 @item width, w
17747 @item height, h
17748 Set the output video dimension expression. Default value is the input
17749 dimension.
17750
17751 If the @var{width} or @var{w} value is 0, the input width is used for
17752 the output. If the @var{height} or @var{h} value is 0, the input height
17753 is used for the output.
17754
17755 If one and only one of the values is -n with n >= 1, the zscale filter
17756 will use a value that maintains the aspect ratio of the input image,
17757 calculated from the other specified dimension. After that it will,
17758 however, make sure that the calculated dimension is divisible by n and
17759 adjust the value if necessary.
17760
17761 If both values are -n with n >= 1, the behavior will be identical to
17762 both values being set to 0 as previously detailed.
17763
17764 See below for the list of accepted constants for use in the dimension
17765 expression.
17766
17767 @item size, s
17768 Set the video size. For the syntax of this option, check the
17769 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
17770
17771 @item dither, d
17772 Set the dither type.
17773
17774 Possible values are:
17775 @table @var
17776 @item none
17777 @item ordered
17778 @item random
17779 @item error_diffusion
17780 @end table
17781
17782 Default is none.
17783
17784 @item filter, f
17785 Set the resize filter type.
17786
17787 Possible values are:
17788 @table @var
17789 @item point
17790 @item bilinear
17791 @item bicubic
17792 @item spline16
17793 @item spline36
17794 @item lanczos
17795 @end table
17796
17797 Default is bilinear.
17798
17799 @item range, r
17800 Set the color range.
17801
17802 Possible values are:
17803 @table @var
17804 @item input
17805 @item limited
17806 @item full
17807 @end table
17808
17809 Default is same as input.
17810
17811 @item primaries, p
17812 Set the color primaries.
17813
17814 Possible values are:
17815 @table @var
17816 @item input
17817 @item 709
17818 @item unspecified
17819 @item 170m
17820 @item 240m
17821 @item 2020
17822 @end table
17823
17824 Default is same as input.
17825
17826 @item transfer, t
17827 Set the transfer characteristics.
17828
17829 Possible values are:
17830 @table @var
17831 @item input
17832 @item 709
17833 @item unspecified
17834 @item 601
17835 @item linear
17836 @item 2020_10
17837 @item 2020_12
17838 @item smpte2084
17839 @item iec61966-2-1
17840 @item arib-std-b67
17841 @end table
17842
17843 Default is same as input.
17844
17845 @item matrix, m
17846 Set the colorspace matrix.
17847
17848 Possible value are:
17849 @table @var
17850 @item input
17851 @item 709
17852 @item unspecified
17853 @item 470bg
17854 @item 170m
17855 @item 2020_ncl
17856 @item 2020_cl
17857 @end table
17858
17859 Default is same as input.
17860
17861 @item rangein, rin
17862 Set the input color range.
17863
17864 Possible values are:
17865 @table @var
17866 @item input
17867 @item limited
17868 @item full
17869 @end table
17870
17871 Default is same as input.
17872
17873 @item primariesin, pin
17874 Set the input color primaries.
17875
17876 Possible values are:
17877 @table @var
17878 @item input
17879 @item 709
17880 @item unspecified
17881 @item 170m
17882 @item 240m
17883 @item 2020
17884 @end table
17885
17886 Default is same as input.
17887
17888 @item transferin, tin
17889 Set the input transfer characteristics.
17890
17891 Possible values are:
17892 @table @var
17893 @item input
17894 @item 709
17895 @item unspecified
17896 @item 601
17897 @item linear
17898 @item 2020_10
17899 @item 2020_12
17900 @end table
17901
17902 Default is same as input.
17903
17904 @item matrixin, min
17905 Set the input colorspace matrix.
17906
17907 Possible value are:
17908 @table @var
17909 @item input
17910 @item 709
17911 @item unspecified
17912 @item 470bg
17913 @item 170m
17914 @item 2020_ncl
17915 @item 2020_cl
17916 @end table
17917
17918 @item chromal, c
17919 Set the output chroma location.
17920
17921 Possible values are:
17922 @table @var
17923 @item input
17924 @item left
17925 @item center
17926 @item topleft
17927 @item top
17928 @item bottomleft
17929 @item bottom
17930 @end table
17931
17932 @item chromalin, cin
17933 Set the input chroma location.
17934
17935 Possible values are:
17936 @table @var
17937 @item input
17938 @item left
17939 @item center
17940 @item topleft
17941 @item top
17942 @item bottomleft
17943 @item bottom
17944 @end table
17945
17946 @item npl
17947 Set the nominal peak luminance.
17948 @end table
17949
17950 The values of the @option{w} and @option{h} options are expressions
17951 containing the following constants:
17952
17953 @table @var
17954 @item in_w
17955 @item in_h
17956 The input width and height
17957
17958 @item iw
17959 @item ih
17960 These are the same as @var{in_w} and @var{in_h}.
17961
17962 @item out_w
17963 @item out_h
17964 The output (scaled) width and height
17965
17966 @item ow
17967 @item oh
17968 These are the same as @var{out_w} and @var{out_h}
17969
17970 @item a
17971 The same as @var{iw} / @var{ih}
17972
17973 @item sar
17974 input sample aspect ratio
17975
17976 @item dar
17977 The input display aspect ratio. Calculated from @code{(iw / ih) * sar}.
17978
17979 @item hsub
17980 @item vsub
17981 horizontal and vertical input chroma subsample values. For example for the
17982 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
17983
17984 @item ohsub
17985 @item ovsub
17986 horizontal and vertical output chroma subsample values. For example for the
17987 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
17988 @end table
17989
17990 @table @option
17991 @end table
17992
17993 @c man end VIDEO FILTERS
17994
17995 @chapter Video Sources
17996 @c man begin VIDEO SOURCES
17997
17998 Below is a description of the currently available video sources.
17999
18000 @section buffer
18001
18002 Buffer video frames, and make them available to the filter chain.
18003
18004 This source is mainly intended for a programmatic use, in particular
18005 through the interface defined in @file{libavfilter/vsrc_buffer.h}.
18006
18007 It accepts the following parameters:
18008
18009 @table @option
18010
18011 @item video_size
18012 Specify the size (width and height) of the buffered video frames. For the
18013 syntax of this option, check the
18014 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
18015
18016 @item width
18017 The input video width.
18018
18019 @item height
18020 The input video height.
18021
18022 @item pix_fmt
18023 A string representing the pixel format of the buffered video frames.
18024 It may be a number corresponding to a pixel format, or a pixel format
18025 name.
18026
18027 @item time_base
18028 Specify the timebase assumed by the timestamps of the buffered frames.
18029
18030 @item frame_rate
18031 Specify the frame rate expected for the video stream.
18032
18033 @item pixel_aspect, sar
18034 The sample (pixel) aspect ratio of the input video.
18035
18036 @item sws_param
18037 Specify the optional parameters to be used for the scale filter which
18038 is automatically inserted when an input change is detected in the
18039 input size or format.
18040
18041 @item hw_frames_ctx
18042 When using a hardware pixel format, this should be a reference to an
18043 AVHWFramesContext describing input frames.
18044 @end table
18045
18046 For example:
18047 @example
18048 buffer=width=320:height=240:pix_fmt=yuv410p:time_base=1/24:sar=1
18049 @end example
18050
18051 will instruct the source to accept video frames with size 320x240 and
18052 with format "yuv410p", assuming 1/24 as the timestamps timebase and
18053 square pixels (1:1 sample aspect ratio).
18054 Since the pixel format with name "yuv410p" corresponds to the number 6
18055 (check the enum AVPixelFormat definition in @file{libavutil/pixfmt.h}),
18056 this example corresponds to:
18057 @example
18058 buffer=size=320x240:pixfmt=6:time_base=1/24:pixel_aspect=1/1
18059 @end example
18060
18061 Alternatively, the options can be specified as a flat string, but this
18062 syntax is deprecated:
18063
18064 @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}]
18065
18066 @section cellauto
18067
18068 Create a pattern generated by an elementary cellular automaton.
18069
18070 The initial state of the cellular automaton can be defined through the
18071 @option{filename} and @option{pattern} options. If such options are
18072 not specified an initial state is created randomly.
18073
18074 At each new frame a new row in the video is filled with the result of
18075 the cellular automaton next generation. The behavior when the whole
18076 frame is filled is defined by the @option{scroll} option.
18077
18078 This source accepts the following options:
18079
18080 @table @option
18081 @item filename, f
18082 Read the initial cellular automaton state, i.e. the starting row, from
18083 the specified file.
18084 In the file, each non-whitespace character is considered an alive
18085 cell, a newline will terminate the row, and further characters in the
18086 file will be ignored.
18087
18088 @item pattern, p
18089 Read the initial cellular automaton state, i.e. the starting row, from
18090 the specified string.
18091
18092 Each non-whitespace character in the string is considered an alive
18093 cell, a newline will terminate the row, and further characters in the
18094 string will be ignored.
18095
18096 @item rate, r
18097 Set the video rate, that is the number of frames generated per second.
18098 Default is 25.
18099
18100 @item random_fill_ratio, ratio
18101 Set the random fill ratio for the initial cellular automaton row. It
18102 is a floating point number value ranging from 0 to 1, defaults to
18103 1/PHI.
18104
18105 This option is ignored when a file or a pattern is specified.
18106
18107 @item random_seed, seed
18108 Set the seed for filling randomly the initial row, must be an integer
18109 included between 0 and UINT32_MAX. If not specified, or if explicitly
18110 set to -1, the filter will try to use a good random seed on a best
18111 effort basis.
18112
18113 @item rule
18114 Set the cellular automaton rule, it is a number ranging from 0 to 255.
18115 Default value is 110.
18116
18117 @item size, s
18118 Set the size of the output video. For the syntax of this option, check the
18119 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
18120
18121 If @option{filename} or @option{pattern} is specified, the size is set
18122 by default to the width of the specified initial state row, and the
18123 height is set to @var{width} * PHI.
18124
18125 If @option{size} is set, it must contain the width of the specified
18126 pattern string, and the specified pattern will be centered in the
18127 larger row.
18128
18129 If a filename or a pattern string is not specified, the size value
18130 defaults to "320x518" (used for a randomly generated initial state).
18131
18132 @item scroll
18133 If set to 1, scroll the output upward when all the rows in the output
18134 have been already filled. If set to 0, the new generated row will be
18135 written over the top row just after the bottom row is filled.
18136 Defaults to 1.
18137
18138 @item start_full, full
18139 If set to 1, completely fill the output with generated rows before
18140 outputting the first frame.
18141 This is the default behavior, for disabling set the value to 0.
18142
18143 @item stitch
18144 If set to 1, stitch the left and right row edges together.
18145 This is the default behavior, for disabling set the value to 0.
18146 @end table
18147
18148 @subsection Examples
18149
18150 @itemize
18151 @item
18152 Read the initial state from @file{pattern}, and specify an output of
18153 size 200x400.
18154 @example
18155 cellauto=f=pattern:s=200x400
18156 @end example
18157
18158 @item
18159 Generate a random initial row with a width of 200 cells, with a fill
18160 ratio of 2/3:
18161 @example
18162 cellauto=ratio=2/3:s=200x200
18163 @end example
18164
18165 @item
18166 Create a pattern generated by rule 18 starting by a single alive cell
18167 centered on an initial row with width 100:
18168 @example
18169 cellauto=p=@@:s=100x400:full=0:rule=18
18170 @end example
18171
18172 @item
18173 Specify a more elaborated initial pattern:
18174 @example
18175 cellauto=p='@@@@ @@ @@@@':s=100x400:full=0:rule=18
18176 @end example
18177
18178 @end itemize
18179
18180 @anchor{coreimagesrc}
18181 @section coreimagesrc
18182 Video source generated on GPU using Apple's CoreImage API on OSX.
18183
18184 This video source is a specialized version of the @ref{coreimage} video filter.
18185 Use a core image generator at the beginning of the applied filterchain to
18186 generate the content.
18187
18188 The coreimagesrc video source accepts the following options:
18189 @table @option
18190 @item list_generators
18191 List all available generators along with all their respective options as well as
18192 possible minimum and maximum values along with the default values.
18193 @example
18194 list_generators=true
18195 @end example
18196
18197 @item size, s
18198 Specify the size of the sourced video. For the syntax of this option, check the
18199 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
18200 The default value is @code{320x240}.
18201
18202 @item rate, r
18203 Specify the frame rate of the sourced video, as the number of frames
18204 generated per second. It has to be a string in the format
18205 @var{frame_rate_num}/@var{frame_rate_den}, an integer number, a floating point
18206 number or a valid video frame rate abbreviation. The default value is
18207 "25".
18208
18209 @item sar
18210 Set the sample aspect ratio of the sourced video.
18211
18212 @item duration, d
18213 Set the duration of the sourced video. See
18214 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
18215 for the accepted syntax.
18216
18217 If not specified, or the expressed duration is negative, the video is
18218 supposed to be generated forever.
18219 @end table
18220
18221 Additionally, all options of the @ref{coreimage} video filter are accepted.
18222 A complete filterchain can be used for further processing of the
18223 generated input without CPU-HOST transfer. See @ref{coreimage} documentation
18224 and examples for details.
18225
18226 @subsection Examples
18227
18228 @itemize
18229
18230 @item
18231 Use CIQRCodeGenerator to create a QR code for the FFmpeg homepage,
18232 given as complete and escaped command-line for Apple's standard bash shell:
18233 @example
18234 ffmpeg -f lavfi -i coreimagesrc=s=100x100:filter=CIQRCodeGenerator@@inputMessage=https\\\\\://FFmpeg.org/@@inputCorrectionLevel=H -frames:v 1 QRCode.png
18235 @end example
18236 This example is equivalent to the QRCode example of @ref{coreimage} without the
18237 need for a nullsrc video source.
18238 @end itemize
18239
18240
18241 @section mandelbrot
18242
18243 Generate a Mandelbrot set fractal, and progressively zoom towards the
18244 point specified with @var{start_x} and @var{start_y}.
18245
18246 This source accepts the following options:
18247
18248 @table @option
18249
18250 @item end_pts
18251 Set the terminal pts value. Default value is 400.
18252
18253 @item end_scale
18254 Set the terminal scale value.
18255 Must be a floating point value. Default value is 0.3.
18256
18257 @item inner
18258 Set the inner coloring mode, that is the algorithm used to draw the
18259 Mandelbrot fractal internal region.
18260
18261 It shall assume one of the following values:
18262 @table @option
18263 @item black
18264 Set black mode.
18265 @item convergence
18266 Show time until convergence.
18267 @item mincol
18268 Set color based on point closest to the origin of the iterations.
18269 @item period
18270 Set period mode.
18271 @end table
18272
18273 Default value is @var{mincol}.
18274
18275 @item bailout
18276 Set the bailout value. Default value is 10.0.
18277
18278 @item maxiter
18279 Set the maximum of iterations performed by the rendering
18280 algorithm. Default value is 7189.
18281
18282 @item outer
18283 Set outer coloring mode.
18284 It shall assume one of following values:
18285 @table @option
18286 @item iteration_count
18287 Set iteration cound mode.
18288 @item normalized_iteration_count
18289 set normalized iteration count mode.
18290 @end table
18291 Default value is @var{normalized_iteration_count}.
18292
18293 @item rate, r
18294 Set frame rate, expressed as number of frames per second. Default
18295 value is "25".
18296
18297 @item size, s
18298 Set frame size. For the syntax of this option, check the @ref{video size syntax,,"Video
18299 size" section in the ffmpeg-utils manual,ffmpeg-utils}. Default value is "640x480".
18300
18301 @item start_scale
18302 Set the initial scale value. Default value is 3.0.
18303
18304 @item start_x
18305 Set the initial x position. Must be a floating point value between
18306 -100 and 100. Default value is -0.743643887037158704752191506114774.
18307
18308 @item start_y
18309 Set the initial y position. Must be a floating point value between
18310 -100 and 100. Default value is -0.131825904205311970493132056385139.
18311 @end table
18312
18313 @section mptestsrc
18314
18315 Generate various test patterns, as generated by the MPlayer test filter.
18316
18317 The size of the generated video is fixed, and is 256x256.
18318 This source is useful in particular for testing encoding features.
18319
18320 This source accepts the following options:
18321
18322 @table @option
18323
18324 @item rate, r
18325 Specify the frame rate of the sourced video, as the number of frames
18326 generated per second. It has to be a string in the format
18327 @var{frame_rate_num}/@var{frame_rate_den}, an integer number, a floating point
18328 number or a valid video frame rate abbreviation. The default value is
18329 "25".
18330
18331 @item duration, d
18332 Set the duration of the sourced video. See
18333 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
18334 for the accepted syntax.
18335
18336 If not specified, or the expressed duration is negative, the video is
18337 supposed to be generated forever.
18338
18339 @item test, t
18340
18341 Set the number or the name of the test to perform. Supported tests are:
18342 @table @option
18343 @item dc_luma
18344 @item dc_chroma
18345 @item freq_luma
18346 @item freq_chroma
18347 @item amp_luma
18348 @item amp_chroma
18349 @item cbp
18350 @item mv
18351 @item ring1
18352 @item ring2
18353 @item all
18354
18355 @end table
18356
18357 Default value is "all", which will cycle through the list of all tests.
18358 @end table
18359
18360 Some examples:
18361 @example
18362 mptestsrc=t=dc_luma
18363 @end example
18364
18365 will generate a "dc_luma" test pattern.
18366
18367 @section frei0r_src
18368
18369 Provide a frei0r source.
18370
18371 To enable compilation of this filter you need to install the frei0r
18372 header and configure FFmpeg with @code{--enable-frei0r}.
18373
18374 This source accepts the following parameters:
18375
18376 @table @option
18377
18378 @item size
18379 The size of the video to generate. For the syntax of this option, check the
18380 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
18381
18382 @item framerate
18383 The framerate of the generated video. It may be a string of the form
18384 @var{num}/@var{den} or a frame rate abbreviation.
18385
18386 @item filter_name
18387 The name to the frei0r source to load. For more information regarding frei0r and
18388 how to set the parameters, read the @ref{frei0r} section in the video filters
18389 documentation.
18390
18391 @item filter_params
18392 A '|'-separated list of parameters to pass to the frei0r source.
18393
18394 @end table
18395
18396 For example, to generate a frei0r partik0l source with size 200x200
18397 and frame rate 10 which is overlaid on the overlay filter main input:
18398 @example
18399 frei0r_src=size=200x200:framerate=10:filter_name=partik0l:filter_params=1234 [overlay]; [in][overlay] overlay
18400 @end example
18401
18402 @section life
18403
18404 Generate a life pattern.
18405
18406 This source is based on a generalization of John Conway's life game.
18407
18408 The sourced input represents a life grid, each pixel represents a cell
18409 which can be in one of two possible states, alive or dead. Every cell
18410 interacts with its eight neighbours, which are the cells that are
18411 horizontally, vertically, or diagonally adjacent.
18412
18413 At each interaction the grid evolves according to the adopted rule,
18414 which specifies the number of neighbor alive cells which will make a
18415 cell stay alive or born. The @option{rule} option allows one to specify
18416 the rule to adopt.
18417
18418 This source accepts the following options:
18419
18420 @table @option
18421 @item filename, f
18422 Set the file from which to read the initial grid state. In the file,
18423 each non-whitespace character is considered an alive cell, and newline
18424 is used to delimit the end of each row.
18425
18426 If this option is not specified, the initial grid is generated
18427 randomly.
18428
18429 @item rate, r
18430 Set the video rate, that is the number of frames generated per second.
18431 Default is 25.
18432
18433 @item random_fill_ratio, ratio
18434 Set the random fill ratio for the initial random grid. It is a
18435 floating point number value ranging from 0 to 1, defaults to 1/PHI.
18436 It is ignored when a file is specified.
18437
18438 @item random_seed, seed
18439 Set the seed for filling the initial random grid, must be an integer
18440 included between 0 and UINT32_MAX. If not specified, or if explicitly
18441 set to -1, the filter will try to use a good random seed on a best
18442 effort basis.
18443
18444 @item rule
18445 Set the life rule.
18446
18447 A rule can be specified with a code of the kind "S@var{NS}/B@var{NB}",
18448 where @var{NS} and @var{NB} are sequences of numbers in the range 0-8,
18449 @var{NS} specifies the number of alive neighbor cells which make a
18450 live cell stay alive, and @var{NB} the number of alive neighbor cells
18451 which make a dead cell to become alive (i.e. to "born").
18452 "s" and "b" can be used in place of "S" and "B", respectively.
18453
18454 Alternatively a rule can be specified by an 18-bits integer. The 9
18455 high order bits are used to encode the next cell state if it is alive
18456 for each number of neighbor alive cells, the low order bits specify
18457 the rule for "borning" new cells. Higher order bits encode for an
18458 higher number of neighbor cells.
18459 For example the number 6153 = @code{(12<<9)+9} specifies a stay alive
18460 rule of 12 and a born rule of 9, which corresponds to "S23/B03".
18461
18462 Default value is "S23/B3", which is the original Conway's game of life
18463 rule, and will keep a cell alive if it has 2 or 3 neighbor alive
18464 cells, and will born a new cell if there are three alive cells around
18465 a dead cell.
18466
18467 @item size, s
18468 Set the size of the output video. For the syntax of this option, check the
18469 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
18470
18471 If @option{filename} is specified, the size is set by default to the
18472 same size of the input file. If @option{size} is set, it must contain
18473 the size specified in the input file, and the initial grid defined in
18474 that file is centered in the larger resulting area.
18475
18476 If a filename is not specified, the size value defaults to "320x240"
18477 (used for a randomly generated initial grid).
18478
18479 @item stitch
18480 If set to 1, stitch the left and right grid edges together, and the
18481 top and bottom edges also. Defaults to 1.
18482
18483 @item mold
18484 Set cell mold speed. If set, a dead cell will go from @option{death_color} to
18485 @option{mold_color} with a step of @option{mold}. @option{mold} can have a
18486 value from 0 to 255.
18487
18488 @item life_color
18489 Set the color of living (or new born) cells.
18490
18491 @item death_color
18492 Set the color of dead cells. If @option{mold} is set, this is the first color
18493 used to represent a dead cell.
18494
18495 @item mold_color
18496 Set mold color, for definitely dead and moldy cells.
18497
18498 For the syntax of these 3 color options, check the @ref{color syntax,,"Color" section in the
18499 ffmpeg-utils manual,ffmpeg-utils}.
18500 @end table
18501
18502 @subsection Examples
18503
18504 @itemize
18505 @item
18506 Read a grid from @file{pattern}, and center it on a grid of size
18507 300x300 pixels:
18508 @example
18509 life=f=pattern:s=300x300
18510 @end example
18511
18512 @item
18513 Generate a random grid of size 200x200, with a fill ratio of 2/3:
18514 @example
18515 life=ratio=2/3:s=200x200
18516 @end example
18517
18518 @item
18519 Specify a custom rule for evolving a randomly generated grid:
18520 @example
18521 life=rule=S14/B34
18522 @end example
18523
18524 @item
18525 Full example with slow death effect (mold) using @command{ffplay}:
18526 @example
18527 ffplay -f lavfi life=s=300x200:mold=10:r=60:ratio=0.1:death_color=#C83232:life_color=#00ff00,scale=1200:800:flags=16
18528 @end example
18529 @end itemize
18530
18531 @anchor{allrgb}
18532 @anchor{allyuv}
18533 @anchor{color}
18534 @anchor{haldclutsrc}
18535 @anchor{nullsrc}
18536 @anchor{pal75bars}
18537 @anchor{pal100bars}
18538 @anchor{rgbtestsrc}
18539 @anchor{smptebars}
18540 @anchor{smptehdbars}
18541 @anchor{testsrc}
18542 @anchor{testsrc2}
18543 @anchor{yuvtestsrc}
18544 @section allrgb, allyuv, color, haldclutsrc, nullsrc, pal75bars, pal100bars, rgbtestsrc, smptebars, smptehdbars, testsrc, testsrc2, yuvtestsrc
18545
18546 The @code{allrgb} source returns frames of size 4096x4096 of all rgb colors.
18547
18548 The @code{allyuv} source returns frames of size 4096x4096 of all yuv colors.
18549
18550 The @code{color} source provides an uniformly colored input.
18551
18552 The @code{haldclutsrc} source provides an identity Hald CLUT. See also
18553 @ref{haldclut} filter.
18554
18555 The @code{nullsrc} source returns unprocessed video frames. It is
18556 mainly useful to be employed in analysis / debugging tools, or as the
18557 source for filters which ignore the input data.
18558
18559 The @code{pal75bars} source generates a color bars pattern, based on
18560 EBU PAL recommendations with 75% color levels.
18561
18562 The @code{pal100bars} source generates a color bars pattern, based on
18563 EBU PAL recommendations with 100% color levels.
18564
18565 The @code{rgbtestsrc} source generates an RGB test pattern useful for
18566 detecting RGB vs BGR issues. You should see a red, green and blue
18567 stripe from top to bottom.
18568
18569 The @code{smptebars} source generates a color bars pattern, based on
18570 the SMPTE Engineering Guideline EG 1-1990.
18571
18572 The @code{smptehdbars} source generates a color bars pattern, based on
18573 the SMPTE RP 219-2002.
18574
18575 The @code{testsrc} source generates a test video pattern, showing a
18576 color pattern, a scrolling gradient and a timestamp. This is mainly
18577 intended for testing purposes.
18578
18579 The @code{testsrc2} source is similar to testsrc, but supports more
18580 pixel formats instead of just @code{rgb24}. This allows using it as an
18581 input for other tests without requiring a format conversion.
18582
18583 The @code{yuvtestsrc} source generates an YUV test pattern. You should
18584 see a y, cb and cr stripe from top to bottom.
18585
18586 The sources accept the following parameters:
18587
18588 @table @option
18589
18590 @item level
18591 Specify the level of the Hald CLUT, only available in the @code{haldclutsrc}
18592 source. A level of @code{N} generates a picture of @code{N*N*N} by @code{N*N*N}
18593 pixels to be used as identity matrix for 3D lookup tables. Each component is
18594 coded on a @code{1/(N*N)} scale.
18595
18596 @item color, c
18597 Specify the color of the source, only available in the @code{color}
18598 source. For the syntax of this option, check the
18599 @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
18600
18601 @item size, s
18602 Specify the size of the sourced video. For the syntax of this option, check the
18603 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
18604 The default value is @code{320x240}.
18605
18606 This option is not available with the @code{allrgb}, @code{allyuv}, and
18607 @code{haldclutsrc} filters.
18608
18609 @item rate, r
18610 Specify the frame rate of the sourced video, as the number of frames
18611 generated per second. It has to be a string in the format
18612 @var{frame_rate_num}/@var{frame_rate_den}, an integer number, a floating point
18613 number or a valid video frame rate abbreviation. The default value is
18614 "25".
18615
18616 @item duration, d
18617 Set the duration of the sourced video. See
18618 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
18619 for the accepted syntax.
18620
18621 If not specified, or the expressed duration is negative, the video is
18622 supposed to be generated forever.
18623
18624 @item sar
18625 Set the sample aspect ratio of the sourced video.
18626
18627 @item alpha
18628 Specify the alpha (opacity) of the background, only available in the
18629 @code{testsrc2} source. The value must be between 0 (fully transparent) and
18630 255 (fully opaque, the default).
18631
18632 @item decimals, n
18633 Set the number of decimals to show in the timestamp, only available in the
18634 @code{testsrc} source.
18635
18636 The displayed timestamp value will correspond to the original
18637 timestamp value multiplied by the power of 10 of the specified
18638 value. Default value is 0.
18639 @end table
18640
18641 @subsection Examples
18642
18643 @itemize
18644 @item
18645 Generate a video with a duration of 5.3 seconds, with size
18646 176x144 and a frame rate of 10 frames per second:
18647 @example
18648 testsrc=duration=5.3:size=qcif:rate=10
18649 @end example
18650
18651 @item
18652 The following graph description will generate a red source
18653 with an opacity of 0.2, with size "qcif" and a frame rate of 10
18654 frames per second:
18655 @example
18656 color=c=red@@0.2:s=qcif:r=10
18657 @end example
18658
18659 @item
18660 If the input content is to be ignored, @code{nullsrc} can be used. The
18661 following command generates noise in the luminance plane by employing
18662 the @code{geq} filter:
18663 @example
18664 nullsrc=s=256x256, geq=random(1)*255:128:128
18665 @end example
18666 @end itemize
18667
18668 @subsection Commands
18669
18670 The @code{color} source supports the following commands:
18671
18672 @table @option
18673 @item c, color
18674 Set the color of the created image. Accepts the same syntax of the
18675 corresponding @option{color} option.
18676 @end table
18677
18678 @section openclsrc
18679
18680 Generate video using an OpenCL program.
18681
18682 @table @option
18683
18684 @item source
18685 OpenCL program source file.
18686
18687 @item kernel
18688 Kernel name in program.
18689
18690 @item size, s
18691 Size of frames to generate.  This must be set.
18692
18693 @item format
18694 Pixel format to use for the generated frames.  This must be set.
18695
18696 @item rate, r
18697 Number of frames generated every second.  Default value is '25'.
18698
18699 @end table
18700
18701 For details of how the program loading works, see the @ref{program_opencl}
18702 filter.
18703
18704 Example programs:
18705
18706 @itemize
18707 @item
18708 Generate a colour ramp by setting pixel values from the position of the pixel
18709 in the output image.  (Note that this will work with all pixel formats, but
18710 the generated output will not be the same.)
18711 @verbatim
18712 __kernel void ramp(__write_only image2d_t dst,
18713                    unsigned int index)
18714 {
18715     int2 loc = (int2)(get_global_id(0), get_global_id(1));
18716
18717     float4 val;
18718     val.xy = val.zw = convert_float2(loc) / convert_float2(get_image_dim(dst));
18719
18720     write_imagef(dst, loc, val);
18721 }
18722 @end verbatim
18723
18724 @item
18725 Generate a Sierpinski carpet pattern, panning by a single pixel each frame.
18726 @verbatim
18727 __kernel void sierpinski_carpet(__write_only image2d_t dst,
18728                                 unsigned int index)
18729 {
18730     int2 loc = (int2)(get_global_id(0), get_global_id(1));
18731
18732     float4 value = 0.0f;
18733     int x = loc.x + index;
18734     int y = loc.y + index;
18735     while (x > 0 || y > 0) {
18736         if (x % 3 == 1 && y % 3 == 1) {
18737             value = 1.0f;
18738             break;
18739         }
18740         x /= 3;
18741         y /= 3;
18742     }
18743
18744     write_imagef(dst, loc, value);
18745 }
18746 @end verbatim
18747
18748 @end itemize
18749
18750 @c man end VIDEO SOURCES
18751
18752 @chapter Video Sinks
18753 @c man begin VIDEO SINKS
18754
18755 Below is a description of the currently available video sinks.
18756
18757 @section buffersink
18758
18759 Buffer video frames, and make them available to the end of the filter
18760 graph.
18761
18762 This sink is mainly intended for programmatic use, in particular
18763 through the interface defined in @file{libavfilter/buffersink.h}
18764 or the options system.
18765
18766 It accepts a pointer to an AVBufferSinkContext structure, which
18767 defines the incoming buffers' formats, to be passed as the opaque
18768 parameter to @code{avfilter_init_filter} for initialization.
18769
18770 @section nullsink
18771
18772 Null video sink: do absolutely nothing with the input video. It is
18773 mainly useful as a template and for use in analysis / debugging
18774 tools.
18775
18776 @c man end VIDEO SINKS
18777
18778 @chapter Multimedia Filters
18779 @c man begin MULTIMEDIA FILTERS
18780
18781 Below is a description of the currently available multimedia filters.
18782
18783 @section abitscope
18784
18785 Convert input audio to a video output, displaying the audio bit scope.
18786
18787 The filter accepts the following options:
18788
18789 @table @option
18790 @item rate, r
18791 Set frame rate, expressed as number of frames per second. Default
18792 value is "25".
18793
18794 @item size, s
18795 Specify the video size for the output. For the syntax of this option, check the
18796 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
18797 Default value is @code{1024x256}.
18798
18799 @item colors
18800 Specify list of colors separated by space or by '|' which will be used to
18801 draw channels. Unrecognized or missing colors will be replaced
18802 by white color.
18803 @end table
18804
18805 @section ahistogram
18806
18807 Convert input audio to a video output, displaying the volume histogram.
18808
18809 The filter accepts the following options:
18810
18811 @table @option
18812 @item dmode
18813 Specify how histogram is calculated.
18814
18815 It accepts the following values:
18816 @table @samp
18817 @item single
18818 Use single histogram for all channels.
18819 @item separate
18820 Use separate histogram for each channel.
18821 @end table
18822 Default is @code{single}.
18823
18824 @item rate, r
18825 Set frame rate, expressed as number of frames per second. Default
18826 value is "25".
18827
18828 @item size, s
18829 Specify the video size for the output. For the syntax of this option, check the
18830 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
18831 Default value is @code{hd720}.
18832
18833 @item scale
18834 Set display scale.
18835
18836 It accepts the following values:
18837 @table @samp
18838 @item log
18839 logarithmic
18840 @item sqrt
18841 square root
18842 @item cbrt
18843 cubic root
18844 @item lin
18845 linear
18846 @item rlog
18847 reverse logarithmic
18848 @end table
18849 Default is @code{log}.
18850
18851 @item ascale
18852 Set amplitude scale.
18853
18854 It accepts the following values:
18855 @table @samp
18856 @item log
18857 logarithmic
18858 @item lin
18859 linear
18860 @end table
18861 Default is @code{log}.
18862
18863 @item acount
18864 Set how much frames to accumulate in histogram.
18865 Defauls is 1. Setting this to -1 accumulates all frames.
18866
18867 @item rheight
18868 Set histogram ratio of window height.
18869
18870 @item slide
18871 Set sonogram sliding.
18872
18873 It accepts the following values:
18874 @table @samp
18875 @item replace
18876 replace old rows with new ones.
18877 @item scroll
18878 scroll from top to bottom.
18879 @end table
18880 Default is @code{replace}.
18881 @end table
18882
18883 @section aphasemeter
18884
18885 Measures phase of input audio, which is exported as metadata @code{lavfi.aphasemeter.phase},
18886 representing mean phase of current audio frame. A video output can also be produced and is
18887 enabled by default. The audio is passed through as first output.
18888
18889 Audio will be rematrixed to stereo if it has a different channel layout. Phase value is in
18890 range @code{[-1, 1]} where @code{-1} means left and right channels are completely out of phase
18891 and @code{1} means channels are in phase.
18892
18893 The filter accepts the following options, all related to its video output:
18894
18895 @table @option
18896 @item rate, r
18897 Set the output frame rate. Default value is @code{25}.
18898
18899 @item size, s
18900 Set the video size for the output. For the syntax of this option, check the
18901 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
18902 Default value is @code{800x400}.
18903
18904 @item rc
18905 @item gc
18906 @item bc
18907 Specify the red, green, blue contrast. Default values are @code{2},
18908 @code{7} and @code{1}.
18909 Allowed range is @code{[0, 255]}.
18910
18911 @item mpc
18912 Set color which will be used for drawing median phase. If color is
18913 @code{none} which is default, no median phase value will be drawn.
18914
18915 @item video
18916 Enable video output. Default is enabled.
18917 @end table
18918
18919 @section avectorscope
18920
18921 Convert input audio to a video output, representing the audio vector
18922 scope.
18923
18924 The filter is used to measure the difference between channels of stereo
18925 audio stream. A monoaural signal, consisting of identical left and right
18926 signal, results in straight vertical line. Any stereo separation is visible
18927 as a deviation from this line, creating a Lissajous figure.
18928 If the straight (or deviation from it) but horizontal line appears this
18929 indicates that the left and right channels are out of phase.
18930
18931 The filter accepts the following options:
18932
18933 @table @option
18934 @item mode, m
18935 Set the vectorscope mode.
18936
18937 Available values are:
18938 @table @samp
18939 @item lissajous
18940 Lissajous rotated by 45 degrees.
18941
18942 @item lissajous_xy
18943 Same as above but not rotated.
18944
18945 @item polar
18946 Shape resembling half of circle.
18947 @end table
18948
18949 Default value is @samp{lissajous}.
18950
18951 @item size, s
18952 Set the video size for the output. For the syntax of this option, check the
18953 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
18954 Default value is @code{400x400}.
18955
18956 @item rate, r
18957 Set the output frame rate. Default value is @code{25}.
18958
18959 @item rc
18960 @item gc
18961 @item bc
18962 @item ac
18963 Specify the red, green, blue and alpha contrast. Default values are @code{40},
18964 @code{160}, @code{80} and @code{255}.
18965 Allowed range is @code{[0, 255]}.
18966
18967 @item rf
18968 @item gf
18969 @item bf
18970 @item af
18971 Specify the red, green, blue and alpha fade. Default values are @code{15},
18972 @code{10}, @code{5} and @code{5}.
18973 Allowed range is @code{[0, 255]}.
18974
18975 @item zoom
18976 Set the zoom factor. Default value is @code{1}. Allowed range is @code{[0, 10]}.
18977 Values lower than @var{1} will auto adjust zoom factor to maximal possible value.
18978
18979 @item draw
18980 Set the vectorscope drawing mode.
18981
18982 Available values are:
18983 @table @samp
18984 @item dot
18985 Draw dot for each sample.
18986
18987 @item line
18988 Draw line between previous and current sample.
18989 @end table
18990
18991 Default value is @samp{dot}.
18992
18993 @item scale
18994 Specify amplitude scale of audio samples.
18995
18996 Available values are:
18997 @table @samp
18998 @item lin
18999 Linear.
19000
19001 @item sqrt
19002 Square root.
19003
19004 @item cbrt
19005 Cubic root.
19006
19007 @item log
19008 Logarithmic.
19009 @end table
19010
19011 @item swap
19012 Swap left channel axis with right channel axis.
19013
19014 @item mirror
19015 Mirror axis.
19016
19017 @table @samp
19018 @item none
19019 No mirror.
19020
19021 @item x
19022 Mirror only x axis.
19023
19024 @item y
19025 Mirror only y axis.
19026
19027 @item xy
19028 Mirror both axis.
19029 @end table
19030
19031 @end table
19032
19033 @subsection Examples
19034
19035 @itemize
19036 @item
19037 Complete example using @command{ffplay}:
19038 @example
19039 ffplay -f lavfi 'amovie=input.mp3, asplit [a][out1];
19040              [a] avectorscope=zoom=1.3:rc=2:gc=200:bc=10:rf=1:gf=8:bf=7 [out0]'
19041 @end example
19042 @end itemize
19043
19044 @section bench, abench
19045
19046 Benchmark part of a filtergraph.
19047
19048 The filter accepts the following options:
19049
19050 @table @option
19051 @item action
19052 Start or stop a timer.
19053
19054 Available values are:
19055 @table @samp
19056 @item start
19057 Get the current time, set it as frame metadata (using the key
19058 @code{lavfi.bench.start_time}), and forward the frame to the next filter.
19059
19060 @item stop
19061 Get the current time and fetch the @code{lavfi.bench.start_time} metadata from
19062 the input frame metadata to get the time difference. Time difference, average,
19063 maximum and minimum time (respectively @code{t}, @code{avg}, @code{max} and
19064 @code{min}) are then printed. The timestamps are expressed in seconds.
19065 @end table
19066 @end table
19067
19068 @subsection Examples
19069
19070 @itemize
19071 @item
19072 Benchmark @ref{selectivecolor} filter:
19073 @example
19074 bench=start,selectivecolor=reds=-.2 .12 -.49,bench=stop
19075 @end example
19076 @end itemize
19077
19078 @section concat
19079
19080 Concatenate audio and video streams, joining them together one after the
19081 other.
19082
19083 The filter works on segments of synchronized video and audio streams. All
19084 segments must have the same number of streams of each type, and that will
19085 also be the number of streams at output.
19086
19087 The filter accepts the following options:
19088
19089 @table @option
19090
19091 @item n
19092 Set the number of segments. Default is 2.
19093
19094 @item v
19095 Set the number of output video streams, that is also the number of video
19096 streams in each segment. Default is 1.
19097
19098 @item a
19099 Set the number of output audio streams, that is also the number of audio
19100 streams in each segment. Default is 0.
19101
19102 @item unsafe
19103 Activate unsafe mode: do not fail if segments have a different format.
19104
19105 @end table
19106
19107 The filter has @var{v}+@var{a} outputs: first @var{v} video outputs, then
19108 @var{a} audio outputs.
19109
19110 There are @var{n}x(@var{v}+@var{a}) inputs: first the inputs for the first
19111 segment, in the same order as the outputs, then the inputs for the second
19112 segment, etc.
19113
19114 Related streams do not always have exactly the same duration, for various
19115 reasons including codec frame size or sloppy authoring. For that reason,
19116 related synchronized streams (e.g. a video and its audio track) should be
19117 concatenated at once. The concat filter will use the duration of the longest
19118 stream in each segment (except the last one), and if necessary pad shorter
19119 audio streams with silence.
19120
19121 For this filter to work correctly, all segments must start at timestamp 0.
19122
19123 All corresponding streams must have the same parameters in all segments; the
19124 filtering system will automatically select a common pixel format for video
19125 streams, and a common sample format, sample rate and channel layout for
19126 audio streams, but other settings, such as resolution, must be converted
19127 explicitly by the user.
19128
19129 Different frame rates are acceptable but will result in variable frame rate
19130 at output; be sure to configure the output file to handle it.
19131
19132 @subsection Examples
19133
19134 @itemize
19135 @item
19136 Concatenate an opening, an episode and an ending, all in bilingual version
19137 (video in stream 0, audio in streams 1 and 2):
19138 @example
19139 ffmpeg -i opening.mkv -i episode.mkv -i ending.mkv -filter_complex \
19140   '[0:0] [0:1] [0:2] [1:0] [1:1] [1:2] [2:0] [2:1] [2:2]
19141    concat=n=3:v=1:a=2 [v] [a1] [a2]' \
19142   -map '[v]' -map '[a1]' -map '[a2]' output.mkv
19143 @end example
19144
19145 @item
19146 Concatenate two parts, handling audio and video separately, using the
19147 (a)movie sources, and adjusting the resolution:
19148 @example
19149 movie=part1.mp4, scale=512:288 [v1] ; amovie=part1.mp4 [a1] ;
19150 movie=part2.mp4, scale=512:288 [v2] ; amovie=part2.mp4 [a2] ;
19151 [v1] [v2] concat [outv] ; [a1] [a2] concat=v=0:a=1 [outa]
19152 @end example
19153 Note that a desync will happen at the stitch if the audio and video streams
19154 do not have exactly the same duration in the first file.
19155
19156 @end itemize
19157
19158 @subsection Commands
19159
19160 This filter supports the following commands:
19161 @table @option
19162 @item next
19163 Close the current segment and step to the next one
19164 @end table
19165
19166 @section drawgraph, adrawgraph
19167
19168 Draw a graph using input video or audio metadata.
19169
19170 It accepts the following parameters:
19171
19172 @table @option
19173 @item m1
19174 Set 1st frame metadata key from which metadata values will be used to draw a graph.
19175
19176 @item fg1
19177 Set 1st foreground color expression.
19178
19179 @item m2
19180 Set 2nd frame metadata key from which metadata values will be used to draw a graph.
19181
19182 @item fg2
19183 Set 2nd foreground color expression.
19184
19185 @item m3
19186 Set 3rd frame metadata key from which metadata values will be used to draw a graph.
19187
19188 @item fg3
19189 Set 3rd foreground color expression.
19190
19191 @item m4
19192 Set 4th frame metadata key from which metadata values will be used to draw a graph.
19193
19194 @item fg4
19195 Set 4th foreground color expression.
19196
19197 @item min
19198 Set minimal value of metadata value.
19199
19200 @item max
19201 Set maximal value of metadata value.
19202
19203 @item bg
19204 Set graph background color. Default is white.
19205
19206 @item mode
19207 Set graph mode.
19208
19209 Available values for mode is:
19210 @table @samp
19211 @item bar
19212 @item dot
19213 @item line
19214 @end table
19215
19216 Default is @code{line}.
19217
19218 @item slide
19219 Set slide mode.
19220
19221 Available values for slide is:
19222 @table @samp
19223 @item frame
19224 Draw new frame when right border is reached.
19225
19226 @item replace
19227 Replace old columns with new ones.
19228
19229 @item scroll
19230 Scroll from right to left.
19231
19232 @item rscroll
19233 Scroll from left to right.
19234
19235 @item picture
19236 Draw single picture.
19237 @end table
19238
19239 Default is @code{frame}.
19240
19241 @item size
19242 Set size of graph video. For the syntax of this option, check the
19243 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
19244 The default value is @code{900x256}.
19245
19246 The foreground color expressions can use the following variables:
19247 @table @option
19248 @item MIN
19249 Minimal value of metadata value.
19250
19251 @item MAX
19252 Maximal value of metadata value.
19253
19254 @item VAL
19255 Current metadata key value.
19256 @end table
19257
19258 The color is defined as 0xAABBGGRR.
19259 @end table
19260
19261 Example using metadata from @ref{signalstats} filter:
19262 @example
19263 signalstats,drawgraph=lavfi.signalstats.YAVG:min=0:max=255
19264 @end example
19265
19266 Example using metadata from @ref{ebur128} filter:
19267 @example
19268 ebur128=metadata=1,adrawgraph=lavfi.r128.M:min=-120:max=5
19269 @end example
19270
19271 @anchor{ebur128}
19272 @section ebur128
19273
19274 EBU R128 scanner filter. This filter takes an audio stream as input and outputs
19275 it unchanged. By default, it logs a message at a frequency of 10Hz with the
19276 Momentary loudness (identified by @code{M}), Short-term loudness (@code{S}),
19277 Integrated loudness (@code{I}) and Loudness Range (@code{LRA}).
19278
19279 The filter also has a video output (see the @var{video} option) with a real
19280 time graph to observe the loudness evolution. The graphic contains the logged
19281 message mentioned above, so it is not printed anymore when this option is set,
19282 unless the verbose logging is set. The main graphing area contains the
19283 short-term loudness (3 seconds of analysis), and the gauge on the right is for
19284 the momentary loudness (400 milliseconds).
19285
19286 More information about the Loudness Recommendation EBU R128 on
19287 @url{http://tech.ebu.ch/loudness}.
19288
19289 The filter accepts the following options:
19290
19291 @table @option
19292
19293 @item video
19294 Activate the video output. The audio stream is passed unchanged whether this
19295 option is set or no. The video stream will be the first output stream if
19296 activated. Default is @code{0}.
19297
19298 @item size
19299 Set the video size. This option is for video only. For the syntax of this
19300 option, check the
19301 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
19302 Default and minimum resolution is @code{640x480}.
19303
19304 @item meter
19305 Set the EBU scale meter. Default is @code{9}. Common values are @code{9} and
19306 @code{18}, respectively for EBU scale meter +9 and EBU scale meter +18. Any
19307 other integer value between this range is allowed.
19308
19309 @item metadata
19310 Set metadata injection. If set to @code{1}, the audio input will be segmented
19311 into 100ms output frames, each of them containing various loudness information
19312 in metadata.  All the metadata keys are prefixed with @code{lavfi.r128.}.
19313
19314 Default is @code{0}.
19315
19316 @item framelog
19317 Force the frame logging level.
19318
19319 Available values are:
19320 @table @samp
19321 @item info
19322 information logging level
19323 @item verbose
19324 verbose logging level
19325 @end table
19326
19327 By default, the logging level is set to @var{info}. If the @option{video} or
19328 the @option{metadata} options are set, it switches to @var{verbose}.
19329
19330 @item peak
19331 Set peak mode(s).
19332
19333 Available modes can be cumulated (the option is a @code{flag} type). Possible
19334 values are:
19335 @table @samp
19336 @item none
19337 Disable any peak mode (default).
19338 @item sample
19339 Enable sample-peak mode.
19340
19341 Simple peak mode looking for the higher sample value. It logs a message
19342 for sample-peak (identified by @code{SPK}).
19343 @item true
19344 Enable true-peak mode.
19345
19346 If enabled, the peak lookup is done on an over-sampled version of the input
19347 stream for better peak accuracy. It logs a message for true-peak.
19348 (identified by @code{TPK}) and true-peak per frame (identified by @code{FTPK}).
19349 This mode requires a build with @code{libswresample}.
19350 @end table
19351
19352 @item dualmono
19353 Treat mono input files as "dual mono". If a mono file is intended for playback
19354 on a stereo system, its EBU R128 measurement will be perceptually incorrect.
19355 If set to @code{true}, this option will compensate for this effect.
19356 Multi-channel input files are not affected by this option.
19357
19358 @item panlaw
19359 Set a specific pan law to be used for the measurement of dual mono files.
19360 This parameter is optional, and has a default value of -3.01dB.
19361 @end table
19362
19363 @subsection Examples
19364
19365 @itemize
19366 @item
19367 Real-time graph using @command{ffplay}, with a EBU scale meter +18:
19368 @example
19369 ffplay -f lavfi -i "amovie=input.mp3,ebur128=video=1:meter=18 [out0][out1]"
19370 @end example
19371
19372 @item
19373 Run an analysis with @command{ffmpeg}:
19374 @example
19375 ffmpeg -nostats -i input.mp3 -filter_complex ebur128 -f null -
19376 @end example
19377 @end itemize
19378
19379 @section interleave, ainterleave
19380
19381 Temporally interleave frames from several inputs.
19382
19383 @code{interleave} works with video inputs, @code{ainterleave} with audio.
19384
19385 These filters read frames from several inputs and send the oldest
19386 queued frame to the output.
19387
19388 Input streams must have well defined, monotonically increasing frame
19389 timestamp values.
19390
19391 In order to submit one frame to output, these filters need to enqueue
19392 at least one frame for each input, so they cannot work in case one
19393 input is not yet terminated and will not receive incoming frames.
19394
19395 For example consider the case when one input is a @code{select} filter
19396 which always drops input frames. The @code{interleave} filter will keep
19397 reading from that input, but it will never be able to send new frames
19398 to output until the input sends an end-of-stream signal.
19399
19400 Also, depending on inputs synchronization, the filters will drop
19401 frames in case one input receives more frames than the other ones, and
19402 the queue is already filled.
19403
19404 These filters accept the following options:
19405
19406 @table @option
19407 @item nb_inputs, n
19408 Set the number of different inputs, it is 2 by default.
19409 @end table
19410
19411 @subsection Examples
19412
19413 @itemize
19414 @item
19415 Interleave frames belonging to different streams using @command{ffmpeg}:
19416 @example
19417 ffmpeg -i bambi.avi -i pr0n.mkv -filter_complex "[0:v][1:v] interleave" out.avi
19418 @end example
19419
19420 @item
19421 Add flickering blur effect:
19422 @example
19423 select='if(gt(random(0), 0.2), 1, 2)':n=2 [tmp], boxblur=2:2, [tmp] interleave
19424 @end example
19425 @end itemize
19426
19427 @section metadata, ametadata
19428
19429 Manipulate frame metadata.
19430
19431 This filter accepts the following options:
19432
19433 @table @option
19434 @item mode
19435 Set mode of operation of the filter.
19436
19437 Can be one of the following:
19438
19439 @table @samp
19440 @item select
19441 If both @code{value} and @code{key} is set, select frames
19442 which have such metadata. If only @code{key} is set, select
19443 every frame that has such key in metadata.
19444
19445 @item add
19446 Add new metadata @code{key} and @code{value}. If key is already available
19447 do nothing.
19448
19449 @item modify
19450 Modify value of already present key.
19451
19452 @item delete
19453 If @code{value} is set, delete only keys that have such value.
19454 Otherwise, delete key. If @code{key} is not set, delete all metadata values in
19455 the frame.
19456
19457 @item print
19458 Print key and its value if metadata was found. If @code{key} is not set print all
19459 metadata values available in frame.
19460 @end table
19461
19462 @item key
19463 Set key used with all modes. Must be set for all modes except @code{print} and @code{delete}.
19464
19465 @item value
19466 Set metadata value which will be used. This option is mandatory for
19467 @code{modify} and @code{add} mode.
19468
19469 @item function
19470 Which function to use when comparing metadata value and @code{value}.
19471
19472 Can be one of following:
19473
19474 @table @samp
19475 @item same_str
19476 Values are interpreted as strings, returns true if metadata value is same as @code{value}.
19477
19478 @item starts_with
19479 Values are interpreted as strings, returns true if metadata value starts with
19480 the @code{value} option string.
19481
19482 @item less
19483 Values are interpreted as floats, returns true if metadata value is less than @code{value}.
19484
19485 @item equal
19486 Values are interpreted as floats, returns true if @code{value} is equal with metadata value.
19487
19488 @item greater
19489 Values are interpreted as floats, returns true if metadata value is greater than @code{value}.
19490
19491 @item expr
19492 Values are interpreted as floats, returns true if expression from option @code{expr}
19493 evaluates to true.
19494 @end table
19495
19496 @item expr
19497 Set expression which is used when @code{function} is set to @code{expr}.
19498 The expression is evaluated through the eval API and can contain the following
19499 constants:
19500
19501 @table @option
19502 @item VALUE1
19503 Float representation of @code{value} from metadata key.
19504
19505 @item VALUE2
19506 Float representation of @code{value} as supplied by user in @code{value} option.
19507 @end table
19508
19509 @item file
19510 If specified in @code{print} mode, output is written to the named file. Instead of
19511 plain filename any writable url can be specified. Filename ``-'' is a shorthand
19512 for standard output. If @code{file} option is not set, output is written to the log
19513 with AV_LOG_INFO loglevel.
19514
19515 @end table
19516
19517 @subsection Examples
19518
19519 @itemize
19520 @item
19521 Print all metadata values for frames with key @code{lavfi.signalstats.YDIF} with values
19522 between 0 and 1.
19523 @example
19524 signalstats,metadata=print:key=lavfi.signalstats.YDIF:value=0:function=expr:expr='between(VALUE1,0,1)'
19525 @end example
19526 @item
19527 Print silencedetect output to file @file{metadata.txt}.
19528 @example
19529 silencedetect,ametadata=mode=print:file=metadata.txt
19530 @end example
19531 @item
19532 Direct all metadata to a pipe with file descriptor 4.
19533 @example
19534 metadata=mode=print:file='pipe\:4'
19535 @end example
19536 @end itemize
19537
19538 @section perms, aperms
19539
19540 Set read/write permissions for the output frames.
19541
19542 These filters are mainly aimed at developers to test direct path in the
19543 following filter in the filtergraph.
19544
19545 The filters accept the following options:
19546
19547 @table @option
19548 @item mode
19549 Select the permissions mode.
19550
19551 It accepts the following values:
19552 @table @samp
19553 @item none
19554 Do nothing. This is the default.
19555 @item ro
19556 Set all the output frames read-only.
19557 @item rw
19558 Set all the output frames directly writable.
19559 @item toggle
19560 Make the frame read-only if writable, and writable if read-only.
19561 @item random
19562 Set each output frame read-only or writable randomly.
19563 @end table
19564
19565 @item seed
19566 Set the seed for the @var{random} mode, must be an integer included between
19567 @code{0} and @code{UINT32_MAX}. If not specified, or if explicitly set to
19568 @code{-1}, the filter will try to use a good random seed on a best effort
19569 basis.
19570 @end table
19571
19572 Note: in case of auto-inserted filter between the permission filter and the
19573 following one, the permission might not be received as expected in that
19574 following filter. Inserting a @ref{format} or @ref{aformat} filter before the
19575 perms/aperms filter can avoid this problem.
19576
19577 @section realtime, arealtime
19578
19579 Slow down filtering to match real time approximately.
19580
19581 These filters will pause the filtering for a variable amount of time to
19582 match the output rate with the input timestamps.
19583 They are similar to the @option{re} option to @code{ffmpeg}.
19584
19585 They accept the following options:
19586
19587 @table @option
19588 @item limit
19589 Time limit for the pauses. Any pause longer than that will be considered
19590 a timestamp discontinuity and reset the timer. Default is 2 seconds.
19591 @end table
19592
19593 @anchor{select}
19594 @section select, aselect
19595
19596 Select frames to pass in output.
19597
19598 This filter accepts the following options:
19599
19600 @table @option
19601
19602 @item expr, e
19603 Set expression, which is evaluated for each input frame.
19604
19605 If the expression is evaluated to zero, the frame is discarded.
19606
19607 If the evaluation result is negative or NaN, the frame is sent to the
19608 first output; otherwise it is sent to the output with index
19609 @code{ceil(val)-1}, assuming that the input index starts from 0.
19610
19611 For example a value of @code{1.2} corresponds to the output with index
19612 @code{ceil(1.2)-1 = 2-1 = 1}, that is the second output.
19613
19614 @item outputs, n
19615 Set the number of outputs. The output to which to send the selected
19616 frame is based on the result of the evaluation. Default value is 1.
19617 @end table
19618
19619 The expression can contain the following constants:
19620
19621 @table @option
19622 @item n
19623 The (sequential) number of the filtered frame, starting from 0.
19624
19625 @item selected_n
19626 The (sequential) number of the selected frame, starting from 0.
19627
19628 @item prev_selected_n
19629 The sequential number of the last selected frame. It's NAN if undefined.
19630
19631 @item TB
19632 The timebase of the input timestamps.
19633
19634 @item pts
19635 The PTS (Presentation TimeStamp) of the filtered video frame,
19636 expressed in @var{TB} units. It's NAN if undefined.
19637
19638 @item t
19639 The PTS of the filtered video frame,
19640 expressed in seconds. It's NAN if undefined.
19641
19642 @item prev_pts
19643 The PTS of the previously filtered video frame. It's NAN if undefined.
19644
19645 @item prev_selected_pts
19646 The PTS of the last previously filtered video frame. It's NAN if undefined.
19647
19648 @item prev_selected_t
19649 The PTS of the last previously selected video frame, expressed in seconds. It's NAN if undefined.
19650
19651 @item start_pts
19652 The PTS of the first video frame in the video. It's NAN if undefined.
19653
19654 @item start_t
19655 The time of the first video frame in the video. It's NAN if undefined.
19656
19657 @item pict_type @emph{(video only)}
19658 The type of the filtered frame. It can assume one of the following
19659 values:
19660 @table @option
19661 @item I
19662 @item P
19663 @item B
19664 @item S
19665 @item SI
19666 @item SP
19667 @item BI
19668 @end table
19669
19670 @item interlace_type @emph{(video only)}
19671 The frame interlace type. It can assume one of the following values:
19672 @table @option
19673 @item PROGRESSIVE
19674 The frame is progressive (not interlaced).
19675 @item TOPFIRST
19676 The frame is top-field-first.
19677 @item BOTTOMFIRST
19678 The frame is bottom-field-first.
19679 @end table
19680
19681 @item consumed_sample_n @emph{(audio only)}
19682 the number of selected samples before the current frame
19683
19684 @item samples_n @emph{(audio only)}
19685 the number of samples in the current frame
19686
19687 @item sample_rate @emph{(audio only)}
19688 the input sample rate
19689
19690 @item key
19691 This is 1 if the filtered frame is a key-frame, 0 otherwise.
19692
19693 @item pos
19694 the position in the file of the filtered frame, -1 if the information
19695 is not available (e.g. for synthetic video)
19696
19697 @item scene @emph{(video only)}
19698 value between 0 and 1 to indicate a new scene; a low value reflects a low
19699 probability for the current frame to introduce a new scene, while a higher
19700 value means the current frame is more likely to be one (see the example below)
19701
19702 @item concatdec_select
19703 The concat demuxer can select only part of a concat input file by setting an
19704 inpoint and an outpoint, but the output packets may not be entirely contained
19705 in the selected interval. By using this variable, it is possible to skip frames
19706 generated by the concat demuxer which are not exactly contained in the selected
19707 interval.
19708
19709 This works by comparing the frame pts against the @var{lavf.concat.start_time}
19710 and the @var{lavf.concat.duration} packet metadata values which are also
19711 present in the decoded frames.
19712
19713 The @var{concatdec_select} variable is -1 if the frame pts is at least
19714 start_time and either the duration metadata is missing or the frame pts is less
19715 than start_time + duration, 0 otherwise, and NaN if the start_time metadata is
19716 missing.
19717
19718 That basically means that an input frame is selected if its pts is within the
19719 interval set by the concat demuxer.
19720
19721 @end table
19722
19723 The default value of the select expression is "1".
19724
19725 @subsection Examples
19726
19727 @itemize
19728 @item
19729 Select all frames in input:
19730 @example
19731 select
19732 @end example
19733
19734 The example above is the same as:
19735 @example
19736 select=1
19737 @end example
19738
19739 @item
19740 Skip all frames:
19741 @example
19742 select=0
19743 @end example
19744
19745 @item
19746 Select only I-frames:
19747 @example
19748 select='eq(pict_type\,I)'
19749 @end example
19750
19751 @item
19752 Select one frame every 100:
19753 @example
19754 select='not(mod(n\,100))'
19755 @end example
19756
19757 @item
19758 Select only frames contained in the 10-20 time interval:
19759 @example
19760 select=between(t\,10\,20)
19761 @end example
19762
19763 @item
19764 Select only I-frames contained in the 10-20 time interval:
19765 @example
19766 select=between(t\,10\,20)*eq(pict_type\,I)
19767 @end example
19768
19769 @item
19770 Select frames with a minimum distance of 10 seconds:
19771 @example
19772 select='isnan(prev_selected_t)+gte(t-prev_selected_t\,10)'
19773 @end example
19774
19775 @item
19776 Use aselect to select only audio frames with samples number > 100:
19777 @example
19778 aselect='gt(samples_n\,100)'
19779 @end example
19780
19781 @item
19782 Create a mosaic of the first scenes:
19783 @example
19784 ffmpeg -i video.avi -vf select='gt(scene\,0.4)',scale=160:120,tile -frames:v 1 preview.png
19785 @end example
19786
19787 Comparing @var{scene} against a value between 0.3 and 0.5 is generally a sane
19788 choice.
19789
19790 @item
19791 Send even and odd frames to separate outputs, and compose them:
19792 @example
19793 select=n=2:e='mod(n, 2)+1' [odd][even]; [odd] pad=h=2*ih [tmp]; [tmp][even] overlay=y=h
19794 @end example
19795
19796 @item
19797 Select useful frames from an ffconcat file which is using inpoints and
19798 outpoints but where the source files are not intra frame only.
19799 @example
19800 ffmpeg -copyts -vsync 0 -segment_time_metadata 1 -i input.ffconcat -vf select=concatdec_select -af aselect=concatdec_select output.avi
19801 @end example
19802 @end itemize
19803
19804 @section sendcmd, asendcmd
19805
19806 Send commands to filters in the filtergraph.
19807
19808 These filters read commands to be sent to other filters in the
19809 filtergraph.
19810
19811 @code{sendcmd} must be inserted between two video filters,
19812 @code{asendcmd} must be inserted between two audio filters, but apart
19813 from that they act the same way.
19814
19815 The specification of commands can be provided in the filter arguments
19816 with the @var{commands} option, or in a file specified by the
19817 @var{filename} option.
19818
19819 These filters accept the following options:
19820 @table @option
19821 @item commands, c
19822 Set the commands to be read and sent to the other filters.
19823 @item filename, f
19824 Set the filename of the commands to be read and sent to the other
19825 filters.
19826 @end table
19827
19828 @subsection Commands syntax
19829
19830 A commands description consists of a sequence of interval
19831 specifications, comprising a list of commands to be executed when a
19832 particular event related to that interval occurs. The occurring event
19833 is typically the current frame time entering or leaving a given time
19834 interval.
19835
19836 An interval is specified by the following syntax:
19837 @example
19838 @var{START}[-@var{END}] @var{COMMANDS};
19839 @end example
19840
19841 The time interval is specified by the @var{START} and @var{END} times.
19842 @var{END} is optional and defaults to the maximum time.
19843
19844 The current frame time is considered within the specified interval if
19845 it is included in the interval [@var{START}, @var{END}), that is when
19846 the time is greater or equal to @var{START} and is lesser than
19847 @var{END}.
19848
19849 @var{COMMANDS} consists of a sequence of one or more command
19850 specifications, separated by ",", relating to that interval.  The
19851 syntax of a command specification is given by:
19852 @example
19853 [@var{FLAGS}] @var{TARGET} @var{COMMAND} @var{ARG}
19854 @end example
19855
19856 @var{FLAGS} is optional and specifies the type of events relating to
19857 the time interval which enable sending the specified command, and must
19858 be a non-null sequence of identifier flags separated by "+" or "|" and
19859 enclosed between "[" and "]".
19860
19861 The following flags are recognized:
19862 @table @option
19863 @item enter
19864 The command is sent when the current frame timestamp enters the
19865 specified interval. In other words, the command is sent when the
19866 previous frame timestamp was not in the given interval, and the
19867 current is.
19868
19869 @item leave
19870 The command is sent when the current frame timestamp leaves the
19871 specified interval. In other words, the command is sent when the
19872 previous frame timestamp was in the given interval, and the
19873 current is not.
19874 @end table
19875
19876 If @var{FLAGS} is not specified, a default value of @code{[enter]} is
19877 assumed.
19878
19879 @var{TARGET} specifies the target of the command, usually the name of
19880 the filter class or a specific filter instance name.
19881
19882 @var{COMMAND} specifies the name of the command for the target filter.
19883
19884 @var{ARG} is optional and specifies the optional list of argument for
19885 the given @var{COMMAND}.
19886
19887 Between one interval specification and another, whitespaces, or
19888 sequences of characters starting with @code{#} until the end of line,
19889 are ignored and can be used to annotate comments.
19890
19891 A simplified BNF description of the commands specification syntax
19892 follows:
19893 @example
19894 @var{COMMAND_FLAG}  ::= "enter" | "leave"
19895 @var{COMMAND_FLAGS} ::= @var{COMMAND_FLAG} [(+|"|")@var{COMMAND_FLAG}]
19896 @var{COMMAND}       ::= ["[" @var{COMMAND_FLAGS} "]"] @var{TARGET} @var{COMMAND} [@var{ARG}]
19897 @var{COMMANDS}      ::= @var{COMMAND} [,@var{COMMANDS}]
19898 @var{INTERVAL}      ::= @var{START}[-@var{END}] @var{COMMANDS}
19899 @var{INTERVALS}     ::= @var{INTERVAL}[;@var{INTERVALS}]
19900 @end example
19901
19902 @subsection Examples
19903
19904 @itemize
19905 @item
19906 Specify audio tempo change at second 4:
19907 @example
19908 asendcmd=c='4.0 atempo tempo 1.5',atempo
19909 @end example
19910
19911 @item
19912 Target a specific filter instance:
19913 @example
19914 asendcmd=c='4.0 atempo@@my tempo 1.5',atempo@@my
19915 @end example
19916
19917 @item
19918 Specify a list of drawtext and hue commands in a file.
19919 @example
19920 # show text in the interval 5-10
19921 5.0-10.0 [enter] drawtext reinit 'fontfile=FreeSerif.ttf:text=hello world',
19922          [leave] drawtext reinit 'fontfile=FreeSerif.ttf:text=';
19923
19924 # desaturate the image in the interval 15-20
19925 15.0-20.0 [enter] hue s 0,
19926           [enter] drawtext reinit 'fontfile=FreeSerif.ttf:text=nocolor',
19927           [leave] hue s 1,
19928           [leave] drawtext reinit 'fontfile=FreeSerif.ttf:text=color';
19929
19930 # apply an exponential saturation fade-out effect, starting from time 25
19931 25 [enter] hue s exp(25-t)
19932 @end example
19933
19934 A filtergraph allowing to read and process the above command list
19935 stored in a file @file{test.cmd}, can be specified with:
19936 @example
19937 sendcmd=f=test.cmd,drawtext=fontfile=FreeSerif.ttf:text='',hue
19938 @end example
19939 @end itemize
19940
19941 @anchor{setpts}
19942 @section setpts, asetpts
19943
19944 Change the PTS (presentation timestamp) of the input frames.
19945
19946 @code{setpts} works on video frames, @code{asetpts} on audio frames.
19947
19948 This filter accepts the following options:
19949
19950 @table @option
19951
19952 @item expr
19953 The expression which is evaluated for each frame to construct its timestamp.
19954
19955 @end table
19956
19957 The expression is evaluated through the eval API and can contain the following
19958 constants:
19959
19960 @table @option
19961 @item FRAME_RATE, FR
19962 frame rate, only defined for constant frame-rate video
19963
19964 @item PTS
19965 The presentation timestamp in input
19966
19967 @item N
19968 The count of the input frame for video or the number of consumed samples,
19969 not including the current frame for audio, starting from 0.
19970
19971 @item NB_CONSUMED_SAMPLES
19972 The number of consumed samples, not including the current frame (only
19973 audio)
19974
19975 @item NB_SAMPLES, S
19976 The number of samples in the current frame (only audio)
19977
19978 @item SAMPLE_RATE, SR
19979 The audio sample rate.
19980
19981 @item STARTPTS
19982 The PTS of the first frame.
19983
19984 @item STARTT
19985 the time in seconds of the first frame
19986
19987 @item INTERLACED
19988 State whether the current frame is interlaced.
19989
19990 @item T
19991 the time in seconds of the current frame
19992
19993 @item POS
19994 original position in the file of the frame, or undefined if undefined
19995 for the current frame
19996
19997 @item PREV_INPTS
19998 The previous input PTS.
19999
20000 @item PREV_INT
20001 previous input time in seconds
20002
20003 @item PREV_OUTPTS
20004 The previous output PTS.
20005
20006 @item PREV_OUTT
20007 previous output time in seconds
20008
20009 @item RTCTIME
20010 The wallclock (RTC) time in microseconds. This is deprecated, use time(0)
20011 instead.
20012
20013 @item RTCSTART
20014 The wallclock (RTC) time at the start of the movie in microseconds.
20015
20016 @item TB
20017 The timebase of the input timestamps.
20018
20019 @end table
20020
20021 @subsection Examples
20022
20023 @itemize
20024 @item
20025 Start counting PTS from zero
20026 @example
20027 setpts=PTS-STARTPTS
20028 @end example
20029
20030 @item
20031 Apply fast motion effect:
20032 @example
20033 setpts=0.5*PTS
20034 @end example
20035
20036 @item
20037 Apply slow motion effect:
20038 @example
20039 setpts=2.0*PTS
20040 @end example
20041
20042 @item
20043 Set fixed rate of 25 frames per second:
20044 @example
20045 setpts=N/(25*TB)
20046 @end example
20047
20048 @item
20049 Set fixed rate 25 fps with some jitter:
20050 @example
20051 setpts='1/(25*TB) * (N + 0.05 * sin(N*2*PI/25))'
20052 @end example
20053
20054 @item
20055 Apply an offset of 10 seconds to the input PTS:
20056 @example
20057 setpts=PTS+10/TB
20058 @end example
20059
20060 @item
20061 Generate timestamps from a "live source" and rebase onto the current timebase:
20062 @example
20063 setpts='(RTCTIME - RTCSTART) / (TB * 1000000)'
20064 @end example
20065
20066 @item
20067 Generate timestamps by counting samples:
20068 @example
20069 asetpts=N/SR/TB
20070 @end example
20071
20072 @end itemize
20073
20074 @section setrange
20075
20076 Force color range for the output video frame.
20077
20078 The @code{setrange} filter marks the color range property for the
20079 output frames. It does not change the input frame, but only sets the
20080 corresponding property, which affects how the frame is treated by
20081 following filters.
20082
20083 The filter accepts the following options:
20084
20085 @table @option
20086
20087 @item range
20088 Available values are:
20089
20090 @table @samp
20091 @item auto
20092 Keep the same color range property.
20093
20094 @item unspecified, unknown
20095 Set the color range as unspecified.
20096
20097 @item limited, tv, mpeg
20098 Set the color range as limited.
20099
20100 @item full, pc, jpeg
20101 Set the color range as full.
20102 @end table
20103 @end table
20104
20105 @section settb, asettb
20106
20107 Set the timebase to use for the output frames timestamps.
20108 It is mainly useful for testing timebase configuration.
20109
20110 It accepts the following parameters:
20111
20112 @table @option
20113
20114 @item expr, tb
20115 The expression which is evaluated into the output timebase.
20116
20117 @end table
20118
20119 The value for @option{tb} is an arithmetic expression representing a
20120 rational. The expression can contain the constants "AVTB" (the default
20121 timebase), "intb" (the input timebase) and "sr" (the sample rate,
20122 audio only). Default value is "intb".
20123
20124 @subsection Examples
20125
20126 @itemize
20127 @item
20128 Set the timebase to 1/25:
20129 @example
20130 settb=expr=1/25
20131 @end example
20132
20133 @item
20134 Set the timebase to 1/10:
20135 @example
20136 settb=expr=0.1
20137 @end example
20138
20139 @item
20140 Set the timebase to 1001/1000:
20141 @example
20142 settb=1+0.001
20143 @end example
20144
20145 @item
20146 Set the timebase to 2*intb:
20147 @example
20148 settb=2*intb
20149 @end example
20150
20151 @item
20152 Set the default timebase value:
20153 @example
20154 settb=AVTB
20155 @end example
20156 @end itemize
20157
20158 @section showcqt
20159 Convert input audio to a video output representing frequency spectrum
20160 logarithmically using Brown-Puckette constant Q transform algorithm with
20161 direct frequency domain coefficient calculation (but the transform itself
20162 is not really constant Q, instead the Q factor is actually variable/clamped),
20163 with musical tone scale, from E0 to D#10.
20164
20165 The filter accepts the following options:
20166
20167 @table @option
20168 @item size, s
20169 Specify the video size for the output. It must be even. For the syntax of this option,
20170 check the @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
20171 Default value is @code{1920x1080}.
20172
20173 @item fps, rate, r
20174 Set the output frame rate. Default value is @code{25}.
20175
20176 @item bar_h
20177 Set the bargraph height. It must be even. Default value is @code{-1} which
20178 computes the bargraph height automatically.
20179
20180 @item axis_h
20181 Set the axis height. It must be even. Default value is @code{-1} which computes
20182 the axis height automatically.
20183
20184 @item sono_h
20185 Set the sonogram height. It must be even. Default value is @code{-1} which
20186 computes the sonogram height automatically.
20187
20188 @item fullhd
20189 Set the fullhd resolution. This option is deprecated, use @var{size}, @var{s}
20190 instead. Default value is @code{1}.
20191
20192 @item sono_v, volume
20193 Specify the sonogram volume expression. It can contain variables:
20194 @table @option
20195 @item bar_v
20196 the @var{bar_v} evaluated expression
20197 @item frequency, freq, f
20198 the frequency where it is evaluated
20199 @item timeclamp, tc
20200 the value of @var{timeclamp} option
20201 @end table
20202 and functions:
20203 @table @option
20204 @item a_weighting(f)
20205 A-weighting of equal loudness
20206 @item b_weighting(f)
20207 B-weighting of equal loudness
20208 @item c_weighting(f)
20209 C-weighting of equal loudness.
20210 @end table
20211 Default value is @code{16}.
20212
20213 @item bar_v, volume2
20214 Specify the bargraph volume expression. It can contain variables:
20215 @table @option
20216 @item sono_v
20217 the @var{sono_v} evaluated expression
20218 @item frequency, freq, f
20219 the frequency where it is evaluated
20220 @item timeclamp, tc
20221 the value of @var{timeclamp} option
20222 @end table
20223 and functions:
20224 @table @option
20225 @item a_weighting(f)
20226 A-weighting of equal loudness
20227 @item b_weighting(f)
20228 B-weighting of equal loudness
20229 @item c_weighting(f)
20230 C-weighting of equal loudness.
20231 @end table
20232 Default value is @code{sono_v}.
20233
20234 @item sono_g, gamma
20235 Specify the sonogram gamma. Lower gamma makes the spectrum more contrast,
20236 higher gamma makes the spectrum having more range. Default value is @code{3}.
20237 Acceptable range is @code{[1, 7]}.
20238
20239 @item bar_g, gamma2
20240 Specify the bargraph gamma. Default value is @code{1}. Acceptable range is
20241 @code{[1, 7]}.
20242
20243 @item bar_t
20244 Specify the bargraph transparency level. Lower value makes the bargraph sharper.
20245 Default value is @code{1}. Acceptable range is @code{[0, 1]}.
20246
20247 @item timeclamp, tc
20248 Specify the transform timeclamp. At low frequency, there is trade-off between
20249 accuracy in time domain and frequency domain. If timeclamp is lower,
20250 event in time domain is represented more accurately (such as fast bass drum),
20251 otherwise event in frequency domain is represented more accurately
20252 (such as bass guitar). Acceptable range is @code{[0.002, 1]}. Default value is @code{0.17}.
20253
20254 @item attack
20255 Set attack time in seconds. The default is @code{0} (disabled). Otherwise, it
20256 limits future samples by applying asymmetric windowing in time domain, useful
20257 when low latency is required. Accepted range is @code{[0, 1]}.
20258
20259 @item basefreq
20260 Specify the transform base frequency. Default value is @code{20.01523126408007475},
20261 which is frequency 50 cents below E0. Acceptable range is @code{[10, 100000]}.
20262
20263 @item endfreq
20264 Specify the transform end frequency. Default value is @code{20495.59681441799654},
20265 which is frequency 50 cents above D#10. Acceptable range is @code{[10, 100000]}.
20266
20267 @item coeffclamp
20268 This option is deprecated and ignored.
20269
20270 @item tlength
20271 Specify the transform length in time domain. Use this option to control accuracy
20272 trade-off between time domain and frequency domain at every frequency sample.
20273 It can contain variables:
20274 @table @option
20275 @item frequency, freq, f
20276 the frequency where it is evaluated
20277 @item timeclamp, tc
20278 the value of @var{timeclamp} option.
20279 @end table
20280 Default value is @code{384*tc/(384+tc*f)}.
20281
20282 @item count
20283 Specify the transform count for every video frame. Default value is @code{6}.
20284 Acceptable range is @code{[1, 30]}.
20285
20286 @item fcount
20287 Specify the transform count for every single pixel. Default value is @code{0},
20288 which makes it computed automatically. Acceptable range is @code{[0, 10]}.
20289
20290 @item fontfile
20291 Specify font file for use with freetype to draw the axis. If not specified,
20292 use embedded font. Note that drawing with font file or embedded font is not
20293 implemented with custom @var{basefreq} and @var{endfreq}, use @var{axisfile}
20294 option instead.
20295
20296 @item font
20297 Specify fontconfig pattern. This has lower priority than @var{fontfile}.
20298 The : in the pattern may be replaced by | to avoid unnecessary escaping.
20299
20300 @item fontcolor
20301 Specify font color expression. This is arithmetic expression that should return
20302 integer value 0xRRGGBB. It can contain variables:
20303 @table @option
20304 @item frequency, freq, f
20305 the frequency where it is evaluated
20306 @item timeclamp, tc
20307 the value of @var{timeclamp} option
20308 @end table
20309 and functions:
20310 @table @option
20311 @item midi(f)
20312 midi number of frequency f, some midi numbers: E0(16), C1(24), C2(36), A4(69)
20313 @item r(x), g(x), b(x)
20314 red, green, and blue value of intensity x.
20315 @end table
20316 Default value is @code{st(0, (midi(f)-59.5)/12);
20317 st(1, if(between(ld(0),0,1), 0.5-0.5*cos(2*PI*ld(0)), 0));
20318 r(1-ld(1)) + b(ld(1))}.
20319
20320 @item axisfile
20321 Specify image file to draw the axis. This option override @var{fontfile} and
20322 @var{fontcolor} option.
20323
20324 @item axis, text
20325 Enable/disable drawing text to the axis. If it is set to @code{0}, drawing to
20326 the axis is disabled, ignoring @var{fontfile} and @var{axisfile} option.
20327 Default value is @code{1}.
20328
20329 @item csp
20330 Set colorspace. The accepted values are:
20331 @table @samp
20332 @item unspecified
20333 Unspecified (default)
20334
20335 @item bt709
20336 BT.709
20337
20338 @item fcc
20339 FCC
20340
20341 @item bt470bg
20342 BT.470BG or BT.601-6 625
20343
20344 @item smpte170m
20345 SMPTE-170M or BT.601-6 525
20346
20347 @item smpte240m
20348 SMPTE-240M
20349
20350 @item bt2020ncl
20351 BT.2020 with non-constant luminance
20352
20353 @end table
20354
20355 @item cscheme
20356 Set spectrogram color scheme. This is list of floating point values with format
20357 @code{left_r|left_g|left_b|right_r|right_g|right_b}.
20358 The default is @code{1|0.5|0|0|0.5|1}.
20359
20360 @end table
20361
20362 @subsection Examples
20363
20364 @itemize
20365 @item
20366 Playing audio while showing the spectrum:
20367 @example
20368 ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt [out0]'
20369 @end example
20370
20371 @item
20372 Same as above, but with frame rate 30 fps:
20373 @example
20374 ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt=fps=30:count=5 [out0]'
20375 @end example
20376
20377 @item
20378 Playing at 1280x720:
20379 @example
20380 ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt=s=1280x720:count=4 [out0]'
20381 @end example
20382
20383 @item
20384 Disable sonogram display:
20385 @example
20386 sono_h=0
20387 @end example
20388
20389 @item
20390 A1 and its harmonics: A1, A2, (near)E3, A3:
20391 @example
20392 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),
20393                  asplit[a][out1]; [a] showcqt [out0]'
20394 @end example
20395
20396 @item
20397 Same as above, but with more accuracy in frequency domain:
20398 @example
20399 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),
20400                  asplit[a][out1]; [a] showcqt=timeclamp=0.5 [out0]'
20401 @end example
20402
20403 @item
20404 Custom volume:
20405 @example
20406 bar_v=10:sono_v=bar_v*a_weighting(f)
20407 @end example
20408
20409 @item
20410 Custom gamma, now spectrum is linear to the amplitude.
20411 @example
20412 bar_g=2:sono_g=2
20413 @end example
20414
20415 @item
20416 Custom tlength equation:
20417 @example
20418 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)))'
20419 @end example
20420
20421 @item
20422 Custom fontcolor and fontfile, C-note is colored green, others are colored blue:
20423 @example
20424 fontcolor='if(mod(floor(midi(f)+0.5),12), 0x0000FF, g(1))':fontfile=myfont.ttf
20425 @end example
20426
20427 @item
20428 Custom font using fontconfig:
20429 @example
20430 font='Courier New,Monospace,mono|bold'
20431 @end example
20432
20433 @item
20434 Custom frequency range with custom axis using image file:
20435 @example
20436 axisfile=myaxis.png:basefreq=40:endfreq=10000
20437 @end example
20438 @end itemize
20439
20440 @section showfreqs
20441
20442 Convert input audio to video output representing the audio power spectrum.
20443 Audio amplitude is on Y-axis while frequency is on X-axis.
20444
20445 The filter accepts the following options:
20446
20447 @table @option
20448 @item size, s
20449 Specify size of video. For the syntax of this option, check the
20450 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
20451 Default is @code{1024x512}.
20452
20453 @item mode
20454 Set display mode.
20455 This set how each frequency bin will be represented.
20456
20457 It accepts the following values:
20458 @table @samp
20459 @item line
20460 @item bar
20461 @item dot
20462 @end table
20463 Default is @code{bar}.
20464
20465 @item ascale
20466 Set amplitude scale.
20467
20468 It accepts the following values:
20469 @table @samp
20470 @item lin
20471 Linear scale.
20472
20473 @item sqrt
20474 Square root scale.
20475
20476 @item cbrt
20477 Cubic root scale.
20478
20479 @item log
20480 Logarithmic scale.
20481 @end table
20482 Default is @code{log}.
20483
20484 @item fscale
20485 Set frequency scale.
20486
20487 It accepts the following values:
20488 @table @samp
20489 @item lin
20490 Linear scale.
20491
20492 @item log
20493 Logarithmic scale.
20494
20495 @item rlog
20496 Reverse logarithmic scale.
20497 @end table
20498 Default is @code{lin}.
20499
20500 @item win_size
20501 Set window size.
20502
20503 It accepts the following values:
20504 @table @samp
20505 @item w16
20506 @item w32
20507 @item w64
20508 @item w128
20509 @item w256
20510 @item w512
20511 @item w1024
20512 @item w2048
20513 @item w4096
20514 @item w8192
20515 @item w16384
20516 @item w32768
20517 @item w65536
20518 @end table
20519 Default is @code{w2048}
20520
20521 @item win_func
20522 Set windowing function.
20523
20524 It accepts the following values:
20525 @table @samp
20526 @item rect
20527 @item bartlett
20528 @item hanning
20529 @item hamming
20530 @item blackman
20531 @item welch
20532 @item flattop
20533 @item bharris
20534 @item bnuttall
20535 @item bhann
20536 @item sine
20537 @item nuttall
20538 @item lanczos
20539 @item gauss
20540 @item tukey
20541 @item dolph
20542 @item cauchy
20543 @item parzen
20544 @item poisson
20545 @end table
20546 Default is @code{hanning}.
20547
20548 @item overlap
20549 Set window overlap. In range @code{[0, 1]}. Default is @code{1},
20550 which means optimal overlap for selected window function will be picked.
20551
20552 @item averaging
20553 Set time averaging. Setting this to 0 will display current maximal peaks.
20554 Default is @code{1}, which means time averaging is disabled.
20555
20556 @item colors
20557 Specify list of colors separated by space or by '|' which will be used to
20558 draw channel frequencies. Unrecognized or missing colors will be replaced
20559 by white color.
20560
20561 @item cmode
20562 Set channel display mode.
20563
20564 It accepts the following values:
20565 @table @samp
20566 @item combined
20567 @item separate
20568 @end table
20569 Default is @code{combined}.
20570
20571 @item minamp
20572 Set minimum amplitude used in @code{log} amplitude scaler.
20573
20574 @end table
20575
20576 @anchor{showspectrum}
20577 @section showspectrum
20578
20579 Convert input audio to a video output, representing the audio frequency
20580 spectrum.
20581
20582 The filter accepts the following options:
20583
20584 @table @option
20585 @item size, s
20586 Specify the video size for the output. For the syntax of this option, check the
20587 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
20588 Default value is @code{640x512}.
20589
20590 @item slide
20591 Specify how the spectrum should slide along the window.
20592
20593 It accepts the following values:
20594 @table @samp
20595 @item replace
20596 the samples start again on the left when they reach the right
20597 @item scroll
20598 the samples scroll from right to left
20599 @item fullframe
20600 frames are only produced when the samples reach the right
20601 @item rscroll
20602 the samples scroll from left to right
20603 @end table
20604
20605 Default value is @code{replace}.
20606
20607 @item mode
20608 Specify display mode.
20609
20610 It accepts the following values:
20611 @table @samp
20612 @item combined
20613 all channels are displayed in the same row
20614 @item separate
20615 all channels are displayed in separate rows
20616 @end table
20617
20618 Default value is @samp{combined}.
20619
20620 @item color
20621 Specify display color mode.
20622
20623 It accepts the following values:
20624 @table @samp
20625 @item channel
20626 each channel is displayed in a separate color
20627 @item intensity
20628 each channel is displayed using the same color scheme
20629 @item rainbow
20630 each channel is displayed using the rainbow color scheme
20631 @item moreland
20632 each channel is displayed using the moreland color scheme
20633 @item nebulae
20634 each channel is displayed using the nebulae color scheme
20635 @item fire
20636 each channel is displayed using the fire color scheme
20637 @item fiery
20638 each channel is displayed using the fiery color scheme
20639 @item fruit
20640 each channel is displayed using the fruit color scheme
20641 @item cool
20642 each channel is displayed using the cool color scheme
20643 @item magma
20644 each channel is displayed using the magma color scheme
20645 @item green
20646 each channel is displayed using the green color scheme
20647 @end table
20648
20649 Default value is @samp{channel}.
20650
20651 @item scale
20652 Specify scale used for calculating intensity color values.
20653
20654 It accepts the following values:
20655 @table @samp
20656 @item lin
20657 linear
20658 @item sqrt
20659 square root, default
20660 @item cbrt
20661 cubic root
20662 @item log
20663 logarithmic
20664 @item 4thrt
20665 4th root
20666 @item 5thrt
20667 5th root
20668 @end table
20669
20670 Default value is @samp{sqrt}.
20671
20672 @item saturation
20673 Set saturation modifier for displayed colors. Negative values provide
20674 alternative color scheme. @code{0} is no saturation at all.
20675 Saturation must be in [-10.0, 10.0] range.
20676 Default value is @code{1}.
20677
20678 @item win_func
20679 Set window function.
20680
20681 It accepts the following values:
20682 @table @samp
20683 @item rect
20684 @item bartlett
20685 @item hann
20686 @item hanning
20687 @item hamming
20688 @item blackman
20689 @item welch
20690 @item flattop
20691 @item bharris
20692 @item bnuttall
20693 @item bhann
20694 @item sine
20695 @item nuttall
20696 @item lanczos
20697 @item gauss
20698 @item tukey
20699 @item dolph
20700 @item cauchy
20701 @item parzen
20702 @item poisson
20703 @end table
20704
20705 Default value is @code{hann}.
20706
20707 @item orientation
20708 Set orientation of time vs frequency axis. Can be @code{vertical} or
20709 @code{horizontal}. Default is @code{vertical}.
20710
20711 @item overlap
20712 Set ratio of overlap window. Default value is @code{0}.
20713 When value is @code{1} overlap is set to recommended size for specific
20714 window function currently used.
20715
20716 @item gain
20717 Set scale gain for calculating intensity color values.
20718 Default value is @code{1}.
20719
20720 @item data
20721 Set which data to display. Can be @code{magnitude}, default or @code{phase}.
20722
20723 @item rotation
20724 Set color rotation, must be in [-1.0, 1.0] range.
20725 Default value is @code{0}.
20726
20727 @item start
20728 Set start frequency from which to display spectrogram. Default is @code{0}.
20729
20730 @item stop
20731 Set stop frequency to which to display spectrogram. Default is @code{0}.
20732
20733 @item fps
20734 Set upper frame rate limit. Default is @code{auto}, unlimited.
20735
20736 @item legend
20737 Draw time and frequency axes and legends. Default is disabled.
20738 @end table
20739
20740 The usage is very similar to the showwaves filter; see the examples in that
20741 section.
20742
20743 @subsection Examples
20744
20745 @itemize
20746 @item
20747 Large window with logarithmic color scaling:
20748 @example
20749 showspectrum=s=1280x480:scale=log
20750 @end example
20751
20752 @item
20753 Complete example for a colored and sliding spectrum per channel using @command{ffplay}:
20754 @example
20755 ffplay -f lavfi 'amovie=input.mp3, asplit [a][out1];
20756              [a] showspectrum=mode=separate:color=intensity:slide=1:scale=cbrt [out0]'
20757 @end example
20758 @end itemize
20759
20760 @section showspectrumpic
20761
20762 Convert input audio to a single video frame, representing the audio frequency
20763 spectrum.
20764
20765 The filter accepts the following options:
20766
20767 @table @option
20768 @item size, s
20769 Specify the video size for the output. For the syntax of this option, check the
20770 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
20771 Default value is @code{4096x2048}.
20772
20773 @item mode
20774 Specify display mode.
20775
20776 It accepts the following values:
20777 @table @samp
20778 @item combined
20779 all channels are displayed in the same row
20780 @item separate
20781 all channels are displayed in separate rows
20782 @end table
20783 Default value is @samp{combined}.
20784
20785 @item color
20786 Specify display color mode.
20787
20788 It accepts the following values:
20789 @table @samp
20790 @item channel
20791 each channel is displayed in a separate color
20792 @item intensity
20793 each channel is displayed using the same color scheme
20794 @item rainbow
20795 each channel is displayed using the rainbow color scheme
20796 @item moreland
20797 each channel is displayed using the moreland color scheme
20798 @item nebulae
20799 each channel is displayed using the nebulae color scheme
20800 @item fire
20801 each channel is displayed using the fire color scheme
20802 @item fiery
20803 each channel is displayed using the fiery color scheme
20804 @item fruit
20805 each channel is displayed using the fruit color scheme
20806 @item cool
20807 each channel is displayed using the cool color scheme
20808 @item magma
20809 each channel is displayed using the magma color scheme
20810 @item green
20811 each channel is displayed using the green color scheme
20812 @end table
20813 Default value is @samp{intensity}.
20814
20815 @item scale
20816 Specify scale used for calculating intensity color values.
20817
20818 It accepts the following values:
20819 @table @samp
20820 @item lin
20821 linear
20822 @item sqrt
20823 square root, default
20824 @item cbrt
20825 cubic root
20826 @item log
20827 logarithmic
20828 @item 4thrt
20829 4th root
20830 @item 5thrt
20831 5th root
20832 @end table
20833 Default value is @samp{log}.
20834
20835 @item saturation
20836 Set saturation modifier for displayed colors. Negative values provide
20837 alternative color scheme. @code{0} is no saturation at all.
20838 Saturation must be in [-10.0, 10.0] range.
20839 Default value is @code{1}.
20840
20841 @item win_func
20842 Set window function.
20843
20844 It accepts the following values:
20845 @table @samp
20846 @item rect
20847 @item bartlett
20848 @item hann
20849 @item hanning
20850 @item hamming
20851 @item blackman
20852 @item welch
20853 @item flattop
20854 @item bharris
20855 @item bnuttall
20856 @item bhann
20857 @item sine
20858 @item nuttall
20859 @item lanczos
20860 @item gauss
20861 @item tukey
20862 @item dolph
20863 @item cauchy
20864 @item parzen
20865 @item poisson
20866 @end table
20867 Default value is @code{hann}.
20868
20869 @item orientation
20870 Set orientation of time vs frequency axis. Can be @code{vertical} or
20871 @code{horizontal}. Default is @code{vertical}.
20872
20873 @item gain
20874 Set scale gain for calculating intensity color values.
20875 Default value is @code{1}.
20876
20877 @item legend
20878 Draw time and frequency axes and legends. Default is enabled.
20879
20880 @item rotation
20881 Set color rotation, must be in [-1.0, 1.0] range.
20882 Default value is @code{0}.
20883
20884 @item start
20885 Set start frequency from which to display spectrogram. Default is @code{0}.
20886
20887 @item stop
20888 Set stop frequency to which to display spectrogram. Default is @code{0}.
20889 @end table
20890
20891 @subsection Examples
20892
20893 @itemize
20894 @item
20895 Extract an audio spectrogram of a whole audio track
20896 in a 1024x1024 picture using @command{ffmpeg}:
20897 @example
20898 ffmpeg -i audio.flac -lavfi showspectrumpic=s=1024x1024 spectrogram.png
20899 @end example
20900 @end itemize
20901
20902 @section showvolume
20903
20904 Convert input audio volume to a video output.
20905
20906 The filter accepts the following options:
20907
20908 @table @option
20909 @item rate, r
20910 Set video rate.
20911
20912 @item b
20913 Set border width, allowed range is [0, 5]. Default is 1.
20914
20915 @item w
20916 Set channel width, allowed range is [80, 8192]. Default is 400.
20917
20918 @item h
20919 Set channel height, allowed range is [1, 900]. Default is 20.
20920
20921 @item f
20922 Set fade, allowed range is [0, 1]. Default is 0.95.
20923
20924 @item c
20925 Set volume color expression.
20926
20927 The expression can use the following variables:
20928
20929 @table @option
20930 @item VOLUME
20931 Current max volume of channel in dB.
20932
20933 @item PEAK
20934 Current peak.
20935
20936 @item CHANNEL
20937 Current channel number, starting from 0.
20938 @end table
20939
20940 @item t
20941 If set, displays channel names. Default is enabled.
20942
20943 @item v
20944 If set, displays volume values. Default is enabled.
20945
20946 @item o
20947 Set orientation, can be horizontal: @code{h} or vertical: @code{v},
20948 default is @code{h}.
20949
20950 @item s
20951 Set step size, allowed range is [0, 5]. Default is 0, which means
20952 step is disabled.
20953
20954 @item p
20955 Set background opacity, allowed range is [0, 1]. Default is 0.
20956
20957 @item m
20958 Set metering mode, can be peak: @code{p} or rms: @code{r},
20959 default is @code{p}.
20960
20961 @item ds
20962 Set display scale, can be linear: @code{lin} or log: @code{log},
20963 default is @code{lin}.
20964
20965 @item dm
20966 In second.
20967 If set to > 0., display a line for the max level
20968 in the previous seconds.
20969 default is disabled: @code{0.}
20970
20971 @item dmc
20972 The color of the max line. Use when @code{dm} option is set to > 0.
20973 default is: @code{orange}
20974 @end table
20975
20976 @section showwaves
20977
20978 Convert input audio to a video output, representing the samples waves.
20979
20980 The filter accepts the following options:
20981
20982 @table @option
20983 @item size, s
20984 Specify the video size for the output. For the syntax of this option, check the
20985 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
20986 Default value is @code{600x240}.
20987
20988 @item mode
20989 Set display mode.
20990
20991 Available values are:
20992 @table @samp
20993 @item point
20994 Draw a point for each sample.
20995
20996 @item line
20997 Draw a vertical line for each sample.
20998
20999 @item p2p
21000 Draw a point for each sample and a line between them.
21001
21002 @item cline
21003 Draw a centered vertical line for each sample.
21004 @end table
21005
21006 Default value is @code{point}.
21007
21008 @item n
21009 Set the number of samples which are printed on the same column. A
21010 larger value will decrease the frame rate. Must be a positive
21011 integer. This option can be set only if the value for @var{rate}
21012 is not explicitly specified.
21013
21014 @item rate, r
21015 Set the (approximate) output frame rate. This is done by setting the
21016 option @var{n}. Default value is "25".
21017
21018 @item split_channels
21019 Set if channels should be drawn separately or overlap. Default value is 0.
21020
21021 @item colors
21022 Set colors separated by '|' which are going to be used for drawing of each channel.
21023
21024 @item scale
21025 Set amplitude scale.
21026
21027 Available values are:
21028 @table @samp
21029 @item lin
21030 Linear.
21031
21032 @item log
21033 Logarithmic.
21034
21035 @item sqrt
21036 Square root.
21037
21038 @item cbrt
21039 Cubic root.
21040 @end table
21041
21042 Default is linear.
21043
21044 @item draw
21045 Set the draw mode. This is mostly useful to set for high @var{n}.
21046
21047 Available values are:
21048 @table @samp
21049 @item scale
21050 Scale pixel values for each drawn sample.
21051
21052 @item full
21053 Draw every sample directly.
21054 @end table
21055
21056 Default value is @code{scale}.
21057 @end table
21058
21059 @subsection Examples
21060
21061 @itemize
21062 @item
21063 Output the input file audio and the corresponding video representation
21064 at the same time:
21065 @example
21066 amovie=a.mp3,asplit[out0],showwaves[out1]
21067 @end example
21068
21069 @item
21070 Create a synthetic signal and show it with showwaves, forcing a
21071 frame rate of 30 frames per second:
21072 @example
21073 aevalsrc=sin(1*2*PI*t)*sin(880*2*PI*t):cos(2*PI*200*t),asplit[out0],showwaves=r=30[out1]
21074 @end example
21075 @end itemize
21076
21077 @section showwavespic
21078
21079 Convert input audio to a single video frame, representing the samples waves.
21080
21081 The filter accepts the following options:
21082
21083 @table @option
21084 @item size, s
21085 Specify the video size for the output. For the syntax of this option, check the
21086 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
21087 Default value is @code{600x240}.
21088
21089 @item split_channels
21090 Set if channels should be drawn separately or overlap. Default value is 0.
21091
21092 @item colors
21093 Set colors separated by '|' which are going to be used for drawing of each channel.
21094
21095 @item scale
21096 Set amplitude scale.
21097
21098 Available values are:
21099 @table @samp
21100 @item lin
21101 Linear.
21102
21103 @item log
21104 Logarithmic.
21105
21106 @item sqrt
21107 Square root.
21108
21109 @item cbrt
21110 Cubic root.
21111 @end table
21112
21113 Default is linear.
21114 @end table
21115
21116 @subsection Examples
21117
21118 @itemize
21119 @item
21120 Extract a channel split representation of the wave form of a whole audio track
21121 in a 1024x800 picture using @command{ffmpeg}:
21122 @example
21123 ffmpeg -i audio.flac -lavfi showwavespic=split_channels=1:s=1024x800 waveform.png
21124 @end example
21125 @end itemize
21126
21127 @section sidedata, asidedata
21128
21129 Delete frame side data, or select frames based on it.
21130
21131 This filter accepts the following options:
21132
21133 @table @option
21134 @item mode
21135 Set mode of operation of the filter.
21136
21137 Can be one of the following:
21138
21139 @table @samp
21140 @item select
21141 Select every frame with side data of @code{type}.
21142
21143 @item delete
21144 Delete side data of @code{type}. If @code{type} is not set, delete all side
21145 data in the frame.
21146
21147 @end table
21148
21149 @item type
21150 Set side data type used with all modes. Must be set for @code{select} mode. For
21151 the list of frame side data types, refer to the @code{AVFrameSideDataType} enum
21152 in @file{libavutil/frame.h}. For example, to choose
21153 @code{AV_FRAME_DATA_PANSCAN} side data, you must specify @code{PANSCAN}.
21154
21155 @end table
21156
21157 @section spectrumsynth
21158
21159 Sythesize audio from 2 input video spectrums, first input stream represents
21160 magnitude across time and second represents phase across time.
21161 The filter will transform from frequency domain as displayed in videos back
21162 to time domain as presented in audio output.
21163
21164 This filter is primarily created for reversing processed @ref{showspectrum}
21165 filter outputs, but can synthesize sound from other spectrograms too.
21166 But in such case results are going to be poor if the phase data is not
21167 available, because in such cases phase data need to be recreated, usually
21168 its just recreated from random noise.
21169 For best results use gray only output (@code{channel} color mode in
21170 @ref{showspectrum} filter) and @code{log} scale for magnitude video and
21171 @code{lin} scale for phase video. To produce phase, for 2nd video, use
21172 @code{data} option. Inputs videos should generally use @code{fullframe}
21173 slide mode as that saves resources needed for decoding video.
21174
21175 The filter accepts the following options:
21176
21177 @table @option
21178 @item sample_rate
21179 Specify sample rate of output audio, the sample rate of audio from which
21180 spectrum was generated may differ.
21181
21182 @item channels
21183 Set number of channels represented in input video spectrums.
21184
21185 @item scale
21186 Set scale which was used when generating magnitude input spectrum.
21187 Can be @code{lin} or @code{log}. Default is @code{log}.
21188
21189 @item slide
21190 Set slide which was used when generating inputs spectrums.
21191 Can be @code{replace}, @code{scroll}, @code{fullframe} or @code{rscroll}.
21192 Default is @code{fullframe}.
21193
21194 @item win_func
21195 Set window function used for resynthesis.
21196
21197 @item overlap
21198 Set window overlap. In range @code{[0, 1]}. Default is @code{1},
21199 which means optimal overlap for selected window function will be picked.
21200
21201 @item orientation
21202 Set orientation of input videos. Can be @code{vertical} or @code{horizontal}.
21203 Default is @code{vertical}.
21204 @end table
21205
21206 @subsection Examples
21207
21208 @itemize
21209 @item
21210 First create magnitude and phase videos from audio, assuming audio is stereo with 44100 sample rate,
21211 then resynthesize videos back to audio with spectrumsynth:
21212 @example
21213 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
21214 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
21215 ffmpeg -i magnitude.nut -i phase.nut -lavfi spectrumsynth=channels=2:sample_rate=44100:win_func=hann:overlap=0.875:slide=fullframe output.flac
21216 @end example
21217 @end itemize
21218
21219 @section split, asplit
21220
21221 Split input into several identical outputs.
21222
21223 @code{asplit} works with audio input, @code{split} with video.
21224
21225 The filter accepts a single parameter which specifies the number of outputs. If
21226 unspecified, it defaults to 2.
21227
21228 @subsection Examples
21229
21230 @itemize
21231 @item
21232 Create two separate outputs from the same input:
21233 @example
21234 [in] split [out0][out1]
21235 @end example
21236
21237 @item
21238 To create 3 or more outputs, you need to specify the number of
21239 outputs, like in:
21240 @example
21241 [in] asplit=3 [out0][out1][out2]
21242 @end example
21243
21244 @item
21245 Create two separate outputs from the same input, one cropped and
21246 one padded:
21247 @example
21248 [in] split [splitout1][splitout2];
21249 [splitout1] crop=100:100:0:0    [cropout];
21250 [splitout2] pad=200:200:100:100 [padout];
21251 @end example
21252
21253 @item
21254 Create 5 copies of the input audio with @command{ffmpeg}:
21255 @example
21256 ffmpeg -i INPUT -filter_complex asplit=5 OUTPUT
21257 @end example
21258 @end itemize
21259
21260 @section zmq, azmq
21261
21262 Receive commands sent through a libzmq client, and forward them to
21263 filters in the filtergraph.
21264
21265 @code{zmq} and @code{azmq} work as a pass-through filters. @code{zmq}
21266 must be inserted between two video filters, @code{azmq} between two
21267 audio filters. Both are capable to send messages to any filter type.
21268
21269 To enable these filters you need to install the libzmq library and
21270 headers and configure FFmpeg with @code{--enable-libzmq}.
21271
21272 For more information about libzmq see:
21273 @url{http://www.zeromq.org/}
21274
21275 The @code{zmq} and @code{azmq} filters work as a libzmq server, which
21276 receives messages sent through a network interface defined by the
21277 @option{bind_address} (or the abbreviation "@option{b}") option.
21278 Default value of this option is @file{tcp://localhost:5555}. You may
21279 want to alter this value to your needs, but do not forget to escape any
21280 ':' signs (see @ref{filtergraph escaping}).
21281
21282 The received message must be in the form:
21283 @example
21284 @var{TARGET} @var{COMMAND} [@var{ARG}]
21285 @end example
21286
21287 @var{TARGET} specifies the target of the command, usually the name of
21288 the filter class or a specific filter instance name. The default
21289 filter instance name uses the pattern @samp{Parsed_<filter_name>_<index>},
21290 but you can override this by using the @samp{filter_name@@id} syntax
21291 (see @ref{Filtergraph syntax}).
21292
21293 @var{COMMAND} specifies the name of the command for the target filter.
21294
21295 @var{ARG} is optional and specifies the optional argument list for the
21296 given @var{COMMAND}.
21297
21298 Upon reception, the message is processed and the corresponding command
21299 is injected into the filtergraph. Depending on the result, the filter
21300 will send a reply to the client, adopting the format:
21301 @example
21302 @var{ERROR_CODE} @var{ERROR_REASON}
21303 @var{MESSAGE}
21304 @end example
21305
21306 @var{MESSAGE} is optional.
21307
21308 @subsection Examples
21309
21310 Look at @file{tools/zmqsend} for an example of a zmq client which can
21311 be used to send commands processed by these filters.
21312
21313 Consider the following filtergraph generated by @command{ffplay}.
21314 In this example the last overlay filter has an instance name. All other
21315 filters will have default instance names.
21316
21317 @example
21318 ffplay -dumpgraph 1 -f lavfi "
21319 color=s=100x100:c=red  [l];
21320 color=s=100x100:c=blue [r];
21321 nullsrc=s=200x100, zmq [bg];
21322 [bg][l]   overlay     [bg+l];
21323 [bg+l][r] overlay@@my=x=100 "
21324 @end example
21325
21326 To change the color of the left side of the video, the following
21327 command can be used:
21328 @example
21329 echo Parsed_color_0 c yellow | tools/zmqsend
21330 @end example
21331
21332 To change the right side:
21333 @example
21334 echo Parsed_color_1 c pink | tools/zmqsend
21335 @end example
21336
21337 To change the position of the right side:
21338 @example
21339 echo overlay@@my x 150 | tools/zmqsend
21340 @end example
21341
21342
21343 @c man end MULTIMEDIA FILTERS
21344
21345 @chapter Multimedia Sources
21346 @c man begin MULTIMEDIA SOURCES
21347
21348 Below is a description of the currently available multimedia sources.
21349
21350 @section amovie
21351
21352 This is the same as @ref{movie} source, except it selects an audio
21353 stream by default.
21354
21355 @anchor{movie}
21356 @section movie
21357
21358 Read audio and/or video stream(s) from a movie container.
21359
21360 It accepts the following parameters:
21361
21362 @table @option
21363 @item filename
21364 The name of the resource to read (not necessarily a file; it can also be a
21365 device or a stream accessed through some protocol).
21366
21367 @item format_name, f
21368 Specifies the format assumed for the movie to read, and can be either
21369 the name of a container or an input device. If not specified, the
21370 format is guessed from @var{movie_name} or by probing.
21371
21372 @item seek_point, sp
21373 Specifies the seek point in seconds. The frames will be output
21374 starting from this seek point. The parameter is evaluated with
21375 @code{av_strtod}, so the numerical value may be suffixed by an IS
21376 postfix. The default value is "0".
21377
21378 @item streams, s
21379 Specifies the streams to read. Several streams can be specified,
21380 separated by "+". The source will then have as many outputs, in the
21381 same order. The syntax is explained in the @ref{Stream specifiers,,"Stream specifiers"
21382 section in the ffmpeg manual,ffmpeg}. Two special names, "dv" and "da" specify
21383 respectively the default (best suited) video and audio stream. Default
21384 is "dv", or "da" if the filter is called as "amovie".
21385
21386 @item stream_index, si
21387 Specifies the index of the video stream to read. If the value is -1,
21388 the most suitable video stream will be automatically selected. The default
21389 value is "-1". Deprecated. If the filter is called "amovie", it will select
21390 audio instead of video.
21391
21392 @item loop
21393 Specifies how many times to read the stream in sequence.
21394 If the value is 0, the stream will be looped infinitely.
21395 Default value is "1".
21396
21397 Note that when the movie is looped the source timestamps are not
21398 changed, so it will generate non monotonically increasing timestamps.
21399
21400 @item discontinuity
21401 Specifies the time difference between frames above which the point is
21402 considered a timestamp discontinuity which is removed by adjusting the later
21403 timestamps.
21404 @end table
21405
21406 It allows overlaying a second video on top of the main input of
21407 a filtergraph, as shown in this graph:
21408 @example
21409 input -----------> deltapts0 --> overlay --> output
21410                                     ^
21411                                     |
21412 movie --> scale--> deltapts1 -------+
21413 @end example
21414 @subsection Examples
21415
21416 @itemize
21417 @item
21418 Skip 3.2 seconds from the start of the AVI file in.avi, and overlay it
21419 on top of the input labelled "in":
21420 @example
21421 movie=in.avi:seek_point=3.2, scale=180:-1, setpts=PTS-STARTPTS [over];
21422 [in] setpts=PTS-STARTPTS [main];
21423 [main][over] overlay=16:16 [out]
21424 @end example
21425
21426 @item
21427 Read from a video4linux2 device, and overlay it on top of the input
21428 labelled "in":
21429 @example
21430 movie=/dev/video0:f=video4linux2, scale=180:-1, setpts=PTS-STARTPTS [over];
21431 [in] setpts=PTS-STARTPTS [main];
21432 [main][over] overlay=16:16 [out]
21433 @end example
21434
21435 @item
21436 Read the first video stream and the audio stream with id 0x81 from
21437 dvd.vob; the video is connected to the pad named "video" and the audio is
21438 connected to the pad named "audio":
21439 @example
21440 movie=dvd.vob:s=v:0+#0x81 [video] [audio]
21441 @end example
21442 @end itemize
21443
21444 @subsection Commands
21445
21446 Both movie and amovie support the following commands:
21447 @table @option
21448 @item seek
21449 Perform seek using "av_seek_frame".
21450 The syntax is: seek @var{stream_index}|@var{timestamp}|@var{flags}
21451 @itemize
21452 @item
21453 @var{stream_index}: If stream_index is -1, a default
21454 stream is selected, and @var{timestamp} is automatically converted
21455 from AV_TIME_BASE units to the stream specific time_base.
21456 @item
21457 @var{timestamp}: Timestamp in AVStream.time_base units
21458 or, if no stream is specified, in AV_TIME_BASE units.
21459 @item
21460 @var{flags}: Flags which select direction and seeking mode.
21461 @end itemize
21462
21463 @item get_duration
21464 Get movie duration in AV_TIME_BASE units.
21465
21466 @end table
21467
21468 @c man end MULTIMEDIA SOURCES