]> git.sesse.net Git - ffmpeg/blob - doc/filters.texi
17e2549fb6d7ec94f4f9f28a67f0a2f98ee96e4d
[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 gtype
1177 Enable applying gain measured from power of IR.
1178
1179 Set which approach to use for auto gain measurement.
1180
1181 @table @option
1182 @item none
1183 Do not apply any gain.
1184
1185 @item peak
1186 select peak gain, very conservative approach. This is default value.
1187
1188 @item dc
1189 select DC gain, limited application.
1190
1191 @item gn
1192 select gain to noise approach, this is most popular one.
1193 @end table
1194
1195 @item irgain
1196 Set gain to be applied to IR coefficients before filtering.
1197 Allowed range is 0 to 1. This gain is applied after any gain applied with @var{gtype} option.
1198
1199 @item irfmt
1200 Set format of IR stream. Can be @code{mono} or @code{input}.
1201 Default is @code{input}.
1202
1203 @item maxir
1204 Set max allowed Impulse Response filter duration in seconds. Default is 30 seconds.
1205 Allowed range is 0.1 to 60 seconds.
1206
1207 @item response
1208 Show IR frequency reponse, magnitude and phase in additional video stream.
1209 By default it is disabled.
1210
1211 @item channel
1212 Set for which IR channel to display frequency response. By default is first channel
1213 displayed. This option is used only when @var{response} is enabled.
1214
1215 @item size
1216 Set video stream size. This option is used only when @var{response} is enabled.
1217 @end table
1218
1219 @subsection Examples
1220
1221 @itemize
1222 @item
1223 Apply reverb to stream using mono IR file as second input, complete command using ffmpeg:
1224 @example
1225 ffmpeg -i input.wav -i middle_tunnel_1way_mono.wav -lavfi afir output.wav
1226 @end example
1227 @end itemize
1228
1229 @anchor{aformat}
1230 @section aformat
1231
1232 Set output format constraints for the input audio. The framework will
1233 negotiate the most appropriate format to minimize conversions.
1234
1235 It accepts the following parameters:
1236 @table @option
1237
1238 @item sample_fmts
1239 A '|'-separated list of requested sample formats.
1240
1241 @item sample_rates
1242 A '|'-separated list of requested sample rates.
1243
1244 @item channel_layouts
1245 A '|'-separated list of requested channel layouts.
1246
1247 See @ref{channel layout syntax,,the Channel Layout section in the ffmpeg-utils(1) manual,ffmpeg-utils}
1248 for the required syntax.
1249 @end table
1250
1251 If a parameter is omitted, all values are allowed.
1252
1253 Force the output to either unsigned 8-bit or signed 16-bit stereo
1254 @example
1255 aformat=sample_fmts=u8|s16:channel_layouts=stereo
1256 @end example
1257
1258 @section agate
1259
1260 A gate is mainly used to reduce lower parts of a signal. This kind of signal
1261 processing reduces disturbing noise between useful signals.
1262
1263 Gating is done by detecting the volume below a chosen level @var{threshold}
1264 and dividing it by the factor set with @var{ratio}. The bottom of the noise
1265 floor is set via @var{range}. Because an exact manipulation of the signal
1266 would cause distortion of the waveform the reduction can be levelled over
1267 time. This is done by setting @var{attack} and @var{release}.
1268
1269 @var{attack} determines how long the signal has to fall below the threshold
1270 before any reduction will occur and @var{release} sets the time the signal
1271 has to rise above the threshold to reduce the reduction again.
1272 Shorter signals than the chosen attack time will be left untouched.
1273
1274 @table @option
1275 @item level_in
1276 Set input level before filtering.
1277 Default is 1. Allowed range is from 0.015625 to 64.
1278
1279 @item range
1280 Set the level of gain reduction when the signal is below the threshold.
1281 Default is 0.06125. Allowed range is from 0 to 1.
1282
1283 @item threshold
1284 If a signal rises above this level the gain reduction is released.
1285 Default is 0.125. Allowed range is from 0 to 1.
1286
1287 @item ratio
1288 Set a ratio by which the signal is reduced.
1289 Default is 2. Allowed range is from 1 to 9000.
1290
1291 @item attack
1292 Amount of milliseconds the signal has to rise above the threshold before gain
1293 reduction stops.
1294 Default is 20 milliseconds. Allowed range is from 0.01 to 9000.
1295
1296 @item release
1297 Amount of milliseconds the signal has to fall below the threshold before the
1298 reduction is increased again. Default is 250 milliseconds.
1299 Allowed range is from 0.01 to 9000.
1300
1301 @item makeup
1302 Set amount of amplification of signal after processing.
1303 Default is 1. Allowed range is from 1 to 64.
1304
1305 @item knee
1306 Curve the sharp knee around the threshold to enter gain reduction more softly.
1307 Default is 2.828427125. Allowed range is from 1 to 8.
1308
1309 @item detection
1310 Choose if exact signal should be taken for detection or an RMS like one.
1311 Default is @code{rms}. Can be @code{peak} or @code{rms}.
1312
1313 @item link
1314 Choose if the average level between all channels or the louder channel affects
1315 the reduction.
1316 Default is @code{average}. Can be @code{average} or @code{maximum}.
1317 @end table
1318
1319 @section aiir
1320
1321 Apply an arbitrary Infinite Impulse Response filter.
1322
1323 It accepts the following parameters:
1324
1325 @table @option
1326 @item z
1327 Set numerator/zeros coefficients.
1328
1329 @item p
1330 Set denominator/poles coefficients.
1331
1332 @item k
1333 Set channels gains.
1334
1335 @item dry_gain
1336 Set input gain.
1337
1338 @item wet_gain
1339 Set output gain.
1340
1341 @item f
1342 Set coefficients format.
1343
1344 @table @samp
1345 @item tf
1346 transfer function
1347 @item zp
1348 Z-plane zeros/poles, cartesian (default)
1349 @item pr
1350 Z-plane zeros/poles, polar radians
1351 @item pd
1352 Z-plane zeros/poles, polar degrees
1353 @end table
1354
1355 @item r
1356 Set kind of processing.
1357 Can be @code{d} - direct or @code{s} - serial cascading. Defauls is @code{s}.
1358
1359 @item e
1360 Set filtering precision.
1361
1362 @table @samp
1363 @item dbl
1364 double-precision floating-point (default)
1365 @item flt
1366 single-precision floating-point
1367 @item i32
1368 32-bit integers
1369 @item i16
1370 16-bit integers
1371 @end table
1372
1373 @item response
1374 Show IR frequency reponse, magnitude and phase in additional video stream.
1375 By default it is disabled.
1376
1377 @item channel
1378 Set for which IR channel to display frequency response. By default is first channel
1379 displayed. This option is used only when @var{response} is enabled.
1380
1381 @item size
1382 Set video stream size. This option is used only when @var{response} is enabled.
1383 @end table
1384
1385 Coefficients in @code{tf} format are separated by spaces and are in ascending
1386 order.
1387
1388 Coefficients in @code{zp} format are separated by spaces and order of coefficients
1389 doesn't matter. Coefficients in @code{zp} format are complex numbers with @var{i}
1390 imaginary unit.
1391
1392 Different coefficients and gains can be provided for every channel, in such case
1393 use '|' to separate coefficients or gains. Last provided coefficients will be
1394 used for all remaining channels.
1395
1396 @subsection Examples
1397
1398 @itemize
1399 @item
1400 Apply 2 pole elliptic notch at arround 5000Hz for 48000 Hz sample rate:
1401 @example
1402 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
1403 @end example
1404
1405 @item
1406 Same as above but in @code{zp} format:
1407 @example
1408 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
1409 @end example
1410 @end itemize
1411
1412 @section alimiter
1413
1414 The limiter prevents an input signal from rising over a desired threshold.
1415 This limiter uses lookahead technology to prevent your signal from distorting.
1416 It means that there is a small delay after the signal is processed. Keep in mind
1417 that the delay it produces is the attack time you set.
1418
1419 The filter accepts the following options:
1420
1421 @table @option
1422 @item level_in
1423 Set input gain. Default is 1.
1424
1425 @item level_out
1426 Set output gain. Default is 1.
1427
1428 @item limit
1429 Don't let signals above this level pass the limiter. Default is 1.
1430
1431 @item attack
1432 The limiter will reach its attenuation level in this amount of time in
1433 milliseconds. Default is 5 milliseconds.
1434
1435 @item release
1436 Come back from limiting to attenuation 1.0 in this amount of milliseconds.
1437 Default is 50 milliseconds.
1438
1439 @item asc
1440 When gain reduction is always needed ASC takes care of releasing to an
1441 average reduction level rather than reaching a reduction of 0 in the release
1442 time.
1443
1444 @item asc_level
1445 Select how much the release time is affected by ASC, 0 means nearly no changes
1446 in release time while 1 produces higher release times.
1447
1448 @item level
1449 Auto level output signal. Default is enabled.
1450 This normalizes audio back to 0dB if enabled.
1451 @end table
1452
1453 Depending on picked setting it is recommended to upsample input 2x or 4x times
1454 with @ref{aresample} before applying this filter.
1455
1456 @section allpass
1457
1458 Apply a two-pole all-pass filter with central frequency (in Hz)
1459 @var{frequency}, and filter-width @var{width}.
1460 An all-pass filter changes the audio's frequency to phase relationship
1461 without changing its frequency to amplitude relationship.
1462
1463 The filter accepts the following options:
1464
1465 @table @option
1466 @item frequency, f
1467 Set frequency in Hz.
1468
1469 @item width_type, t
1470 Set method to specify band-width of filter.
1471 @table @option
1472 @item h
1473 Hz
1474 @item q
1475 Q-Factor
1476 @item o
1477 octave
1478 @item s
1479 slope
1480 @item k
1481 kHz
1482 @end table
1483
1484 @item width, w
1485 Specify the band-width of a filter in width_type units.
1486
1487 @item channels, c
1488 Specify which channels to filter, by default all available are filtered.
1489 @end table
1490
1491 @subsection Commands
1492
1493 This filter supports the following commands:
1494 @table @option
1495 @item frequency, f
1496 Change allpass frequency.
1497 Syntax for the command is : "@var{frequency}"
1498
1499 @item width_type, t
1500 Change allpass width_type.
1501 Syntax for the command is : "@var{width_type}"
1502
1503 @item width, w
1504 Change allpass width.
1505 Syntax for the command is : "@var{width}"
1506 @end table
1507
1508 @section aloop
1509
1510 Loop audio samples.
1511
1512 The filter accepts the following options:
1513
1514 @table @option
1515 @item loop
1516 Set the number of loops. Setting this value to -1 will result in infinite loops.
1517 Default is 0.
1518
1519 @item size
1520 Set maximal number of samples. Default is 0.
1521
1522 @item start
1523 Set first sample of loop. Default is 0.
1524 @end table
1525
1526 @anchor{amerge}
1527 @section amerge
1528
1529 Merge two or more audio streams into a single multi-channel stream.
1530
1531 The filter accepts the following options:
1532
1533 @table @option
1534
1535 @item inputs
1536 Set the number of inputs. Default is 2.
1537
1538 @end table
1539
1540 If the channel layouts of the inputs are disjoint, and therefore compatible,
1541 the channel layout of the output will be set accordingly and the channels
1542 will be reordered as necessary. If the channel layouts of the inputs are not
1543 disjoint, the output will have all the channels of the first input then all
1544 the channels of the second input, in that order, and the channel layout of
1545 the output will be the default value corresponding to the total number of
1546 channels.
1547
1548 For example, if the first input is in 2.1 (FL+FR+LF) and the second input
1549 is FC+BL+BR, then the output will be in 5.1, with the channels in the
1550 following order: a1, a2, b1, a3, b2, b3 (a1 is the first channel of the
1551 first input, b1 is the first channel of the second input).
1552
1553 On the other hand, if both input are in stereo, the output channels will be
1554 in the default order: a1, a2, b1, b2, and the channel layout will be
1555 arbitrarily set to 4.0, which may or may not be the expected value.
1556
1557 All inputs must have the same sample rate, and format.
1558
1559 If inputs do not have the same duration, the output will stop with the
1560 shortest.
1561
1562 @subsection Examples
1563
1564 @itemize
1565 @item
1566 Merge two mono files into a stereo stream:
1567 @example
1568 amovie=left.wav [l] ; amovie=right.mp3 [r] ; [l] [r] amerge
1569 @end example
1570
1571 @item
1572 Multiple merges assuming 1 video stream and 6 audio streams in @file{input.mkv}:
1573 @example
1574 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
1575 @end example
1576 @end itemize
1577
1578 @section amix
1579
1580 Mixes multiple audio inputs into a single output.
1581
1582 Note that this filter only supports float samples (the @var{amerge}
1583 and @var{pan} audio filters support many formats). If the @var{amix}
1584 input has integer samples then @ref{aresample} will be automatically
1585 inserted to perform the conversion to float samples.
1586
1587 For example
1588 @example
1589 ffmpeg -i INPUT1 -i INPUT2 -i INPUT3 -filter_complex amix=inputs=3:duration=first:dropout_transition=3 OUTPUT
1590 @end example
1591 will mix 3 input audio streams to a single output with the same duration as the
1592 first input and a dropout transition time of 3 seconds.
1593
1594 It accepts the following parameters:
1595 @table @option
1596
1597 @item inputs
1598 The number of inputs. If unspecified, it defaults to 2.
1599
1600 @item duration
1601 How to determine the end-of-stream.
1602 @table @option
1603
1604 @item longest
1605 The duration of the longest input. (default)
1606
1607 @item shortest
1608 The duration of the shortest input.
1609
1610 @item first
1611 The duration of the first input.
1612
1613 @end table
1614
1615 @item dropout_transition
1616 The transition time, in seconds, for volume renormalization when an input
1617 stream ends. The default value is 2 seconds.
1618
1619 @item weights
1620 Specify weight of each input audio stream as sequence.
1621 Each weight is separated by space. By default all inputs have same weight.
1622 @end table
1623
1624 @section amultiply
1625
1626 Multiply first audio stream with second audio stream and store result
1627 in output audio stream. Multiplication is done by multiplying each
1628 sample from first stream with sample at same position from second stream.
1629
1630 With this element-wise multiplication one can create amplitude fades and
1631 amplitude modulations.
1632
1633 @section anequalizer
1634
1635 High-order parametric multiband equalizer for each channel.
1636
1637 It accepts the following parameters:
1638 @table @option
1639 @item params
1640
1641 This option string is in format:
1642 "c@var{chn} f=@var{cf} w=@var{w} g=@var{g} t=@var{f} | ..."
1643 Each equalizer band is separated by '|'.
1644
1645 @table @option
1646 @item chn
1647 Set channel number to which equalization will be applied.
1648 If input doesn't have that channel the entry is ignored.
1649
1650 @item f
1651 Set central frequency for band.
1652 If input doesn't have that frequency the entry is ignored.
1653
1654 @item w
1655 Set band width in hertz.
1656
1657 @item g
1658 Set band gain in dB.
1659
1660 @item t
1661 Set filter type for band, optional, can be:
1662
1663 @table @samp
1664 @item 0
1665 Butterworth, this is default.
1666
1667 @item 1
1668 Chebyshev type 1.
1669
1670 @item 2
1671 Chebyshev type 2.
1672 @end table
1673 @end table
1674
1675 @item curves
1676 With this option activated frequency response of anequalizer is displayed
1677 in video stream.
1678
1679 @item size
1680 Set video stream size. Only useful if curves option is activated.
1681
1682 @item mgain
1683 Set max gain that will be displayed. Only useful if curves option is activated.
1684 Setting this to a reasonable value makes it possible to display gain which is derived from
1685 neighbour bands which are too close to each other and thus produce higher gain
1686 when both are activated.
1687
1688 @item fscale
1689 Set frequency scale used to draw frequency response in video output.
1690 Can be linear or logarithmic. Default is logarithmic.
1691
1692 @item colors
1693 Set color for each channel curve which is going to be displayed in video stream.
1694 This is list of color names separated by space or by '|'.
1695 Unrecognised or missing colors will be replaced by white color.
1696 @end table
1697
1698 @subsection Examples
1699
1700 @itemize
1701 @item
1702 Lower gain by 10 of central frequency 200Hz and width 100 Hz
1703 for first 2 channels using Chebyshev type 1 filter:
1704 @example
1705 anequalizer=c0 f=200 w=100 g=-10 t=1|c1 f=200 w=100 g=-10 t=1
1706 @end example
1707 @end itemize
1708
1709 @subsection Commands
1710
1711 This filter supports the following commands:
1712 @table @option
1713 @item change
1714 Alter existing filter parameters.
1715 Syntax for the commands is : "@var{fN}|f=@var{freq}|w=@var{width}|g=@var{gain}"
1716
1717 @var{fN} is existing filter number, starting from 0, if no such filter is available
1718 error is returned.
1719 @var{freq} set new frequency parameter.
1720 @var{width} set new width parameter in herz.
1721 @var{gain} set new gain parameter in dB.
1722
1723 Full filter invocation with asendcmd may look like this:
1724 asendcmd=c='4.0 anequalizer change 0|f=200|w=50|g=1',anequalizer=...
1725 @end table
1726
1727 @section anull
1728
1729 Pass the audio source unchanged to the output.
1730
1731 @section apad
1732
1733 Pad the end of an audio stream with silence.
1734
1735 This can be used together with @command{ffmpeg} @option{-shortest} to
1736 extend audio streams to the same length as the video stream.
1737
1738 A description of the accepted options follows.
1739
1740 @table @option
1741 @item packet_size
1742 Set silence packet size. Default value is 4096.
1743
1744 @item pad_len
1745 Set the number of samples of silence to add to the end. After the
1746 value is reached, the stream is terminated. This option is mutually
1747 exclusive with @option{whole_len}.
1748
1749 @item whole_len
1750 Set the minimum total number of samples in the output audio stream. If
1751 the value is longer than the input audio length, silence is added to
1752 the end, until the value is reached. This option is mutually exclusive
1753 with @option{pad_len}.
1754 @end table
1755
1756 If neither the @option{pad_len} nor the @option{whole_len} option is
1757 set, the filter will add silence to the end of the input stream
1758 indefinitely.
1759
1760 @subsection Examples
1761
1762 @itemize
1763 @item
1764 Add 1024 samples of silence to the end of the input:
1765 @example
1766 apad=pad_len=1024
1767 @end example
1768
1769 @item
1770 Make sure the audio output will contain at least 10000 samples, pad
1771 the input with silence if required:
1772 @example
1773 apad=whole_len=10000
1774 @end example
1775
1776 @item
1777 Use @command{ffmpeg} to pad the audio input with silence, so that the
1778 video stream will always result the shortest and will be converted
1779 until the end in the output file when using the @option{shortest}
1780 option:
1781 @example
1782 ffmpeg -i VIDEO -i AUDIO -filter_complex "[1:0]apad" -shortest OUTPUT
1783 @end example
1784 @end itemize
1785
1786 @section aphaser
1787 Add a phasing effect to the input audio.
1788
1789 A phaser filter creates series of peaks and troughs in the frequency spectrum.
1790 The position of the peaks and troughs are modulated so that they vary over time, creating a sweeping effect.
1791
1792 A description of the accepted parameters follows.
1793
1794 @table @option
1795 @item in_gain
1796 Set input gain. Default is 0.4.
1797
1798 @item out_gain
1799 Set output gain. Default is 0.74
1800
1801 @item delay
1802 Set delay in milliseconds. Default is 3.0.
1803
1804 @item decay
1805 Set decay. Default is 0.4.
1806
1807 @item speed
1808 Set modulation speed in Hz. Default is 0.5.
1809
1810 @item type
1811 Set modulation type. Default is triangular.
1812
1813 It accepts the following values:
1814 @table @samp
1815 @item triangular, t
1816 @item sinusoidal, s
1817 @end table
1818 @end table
1819
1820 @section apulsator
1821
1822 Audio pulsator is something between an autopanner and a tremolo.
1823 But it can produce funny stereo effects as well. Pulsator changes the volume
1824 of the left and right channel based on a LFO (low frequency oscillator) with
1825 different waveforms and shifted phases.
1826 This filter have the ability to define an offset between left and right
1827 channel. An offset of 0 means that both LFO shapes match each other.
1828 The left and right channel are altered equally - a conventional tremolo.
1829 An offset of 50% means that the shape of the right channel is exactly shifted
1830 in phase (or moved backwards about half of the frequency) - pulsator acts as
1831 an autopanner. At 1 both curves match again. Every setting in between moves the
1832 phase shift gapless between all stages and produces some "bypassing" sounds with
1833 sine and triangle waveforms. The more you set the offset near 1 (starting from
1834 the 0.5) the faster the signal passes from the left to the right speaker.
1835
1836 The filter accepts the following options:
1837
1838 @table @option
1839 @item level_in
1840 Set input gain. By default it is 1. Range is [0.015625 - 64].
1841
1842 @item level_out
1843 Set output gain. By default it is 1. Range is [0.015625 - 64].
1844
1845 @item mode
1846 Set waveform shape the LFO will use. Can be one of: sine, triangle, square,
1847 sawup or sawdown. Default is sine.
1848
1849 @item amount
1850 Set modulation. Define how much of original signal is affected by the LFO.
1851
1852 @item offset_l
1853 Set left channel offset. Default is 0. Allowed range is [0 - 1].
1854
1855 @item offset_r
1856 Set right channel offset. Default is 0.5. Allowed range is [0 - 1].
1857
1858 @item width
1859 Set pulse width. Default is 1. Allowed range is [0 - 2].
1860
1861 @item timing
1862 Set possible timing mode. Can be one of: bpm, ms or hz. Default is hz.
1863
1864 @item bpm
1865 Set bpm. Default is 120. Allowed range is [30 - 300]. Only used if timing
1866 is set to bpm.
1867
1868 @item ms
1869 Set ms. Default is 500. Allowed range is [10 - 2000]. Only used if timing
1870 is set to ms.
1871
1872 @item hz
1873 Set frequency in Hz. Default is 2. Allowed range is [0.01 - 100]. Only used
1874 if timing is set to hz.
1875 @end table
1876
1877 @anchor{aresample}
1878 @section aresample
1879
1880 Resample the input audio to the specified parameters, using the
1881 libswresample library. If none are specified then the filter will
1882 automatically convert between its input and output.
1883
1884 This filter is also able to stretch/squeeze the audio data to make it match
1885 the timestamps or to inject silence / cut out audio to make it match the
1886 timestamps, do a combination of both or do neither.
1887
1888 The filter accepts the syntax
1889 [@var{sample_rate}:]@var{resampler_options}, where @var{sample_rate}
1890 expresses a sample rate and @var{resampler_options} is a list of
1891 @var{key}=@var{value} pairs, separated by ":". See the
1892 @ref{Resampler Options,,"Resampler Options" section in the
1893 ffmpeg-resampler(1) manual,ffmpeg-resampler}
1894 for the complete list of supported options.
1895
1896 @subsection Examples
1897
1898 @itemize
1899 @item
1900 Resample the input audio to 44100Hz:
1901 @example
1902 aresample=44100
1903 @end example
1904
1905 @item
1906 Stretch/squeeze samples to the given timestamps, with a maximum of 1000
1907 samples per second compensation:
1908 @example
1909 aresample=async=1000
1910 @end example
1911 @end itemize
1912
1913 @section areverse
1914
1915 Reverse an audio clip.
1916
1917 Warning: This filter requires memory to buffer the entire clip, so trimming
1918 is suggested.
1919
1920 @subsection Examples
1921
1922 @itemize
1923 @item
1924 Take the first 5 seconds of a clip, and reverse it.
1925 @example
1926 atrim=end=5,areverse
1927 @end example
1928 @end itemize
1929
1930 @section asetnsamples
1931
1932 Set the number of samples per each output audio frame.
1933
1934 The last output packet may contain a different number of samples, as
1935 the filter will flush all the remaining samples when the input audio
1936 signals its end.
1937
1938 The filter accepts the following options:
1939
1940 @table @option
1941
1942 @item nb_out_samples, n
1943 Set the number of frames per each output audio frame. The number is
1944 intended as the number of samples @emph{per each channel}.
1945 Default value is 1024.
1946
1947 @item pad, p
1948 If set to 1, the filter will pad the last audio frame with zeroes, so
1949 that the last frame will contain the same number of samples as the
1950 previous ones. Default value is 1.
1951 @end table
1952
1953 For example, to set the number of per-frame samples to 1234 and
1954 disable padding for the last frame, use:
1955 @example
1956 asetnsamples=n=1234:p=0
1957 @end example
1958
1959 @section asetrate
1960
1961 Set the sample rate without altering the PCM data.
1962 This will result in a change of speed and pitch.
1963
1964 The filter accepts the following options:
1965
1966 @table @option
1967 @item sample_rate, r
1968 Set the output sample rate. Default is 44100 Hz.
1969 @end table
1970
1971 @section ashowinfo
1972
1973 Show a line containing various information for each input audio frame.
1974 The input audio is not modified.
1975
1976 The shown line contains a sequence of key/value pairs of the form
1977 @var{key}:@var{value}.
1978
1979 The following values are shown in the output:
1980
1981 @table @option
1982 @item n
1983 The (sequential) number of the input frame, starting from 0.
1984
1985 @item pts
1986 The presentation timestamp of the input frame, in time base units; the time base
1987 depends on the filter input pad, and is usually 1/@var{sample_rate}.
1988
1989 @item pts_time
1990 The presentation timestamp of the input frame in seconds.
1991
1992 @item pos
1993 position of the frame in the input stream, -1 if this information in
1994 unavailable and/or meaningless (for example in case of synthetic audio)
1995
1996 @item fmt
1997 The sample format.
1998
1999 @item chlayout
2000 The channel layout.
2001
2002 @item rate
2003 The sample rate for the audio frame.
2004
2005 @item nb_samples
2006 The number of samples (per channel) in the frame.
2007
2008 @item checksum
2009 The Adler-32 checksum (printed in hexadecimal) of the audio data. For planar
2010 audio, the data is treated as if all the planes were concatenated.
2011
2012 @item plane_checksums
2013 A list of Adler-32 checksums for each data plane.
2014 @end table
2015
2016 @anchor{astats}
2017 @section astats
2018
2019 Display time domain statistical information about the audio channels.
2020 Statistics are calculated and displayed for each audio channel and,
2021 where applicable, an overall figure is also given.
2022
2023 It accepts the following option:
2024 @table @option
2025 @item length
2026 Short window length in seconds, used for peak and trough RMS measurement.
2027 Default is @code{0.05} (50 milliseconds). Allowed range is @code{[0.01 - 10]}.
2028
2029 @item metadata
2030
2031 Set metadata injection. All the metadata keys are prefixed with @code{lavfi.astats.X},
2032 where @code{X} is channel number starting from 1 or string @code{Overall}. Default is
2033 disabled.
2034
2035 Available keys for each channel are:
2036 DC_offset
2037 Min_level
2038 Max_level
2039 Min_difference
2040 Max_difference
2041 Mean_difference
2042 RMS_difference
2043 Peak_level
2044 RMS_peak
2045 RMS_trough
2046 Crest_factor
2047 Flat_factor
2048 Peak_count
2049 Bit_depth
2050 Dynamic_range
2051 Zero_crossings
2052 Zero_crossings_rate
2053
2054 and for Overall:
2055 DC_offset
2056 Min_level
2057 Max_level
2058 Min_difference
2059 Max_difference
2060 Mean_difference
2061 RMS_difference
2062 Peak_level
2063 RMS_level
2064 RMS_peak
2065 RMS_trough
2066 Flat_factor
2067 Peak_count
2068 Bit_depth
2069 Number_of_samples
2070
2071 For example full key look like this @code{lavfi.astats.1.DC_offset} or
2072 this @code{lavfi.astats.Overall.Peak_count}.
2073
2074 For description what each key means read below.
2075
2076 @item reset
2077 Set number of frame after which stats are going to be recalculated.
2078 Default is disabled.
2079 @end table
2080
2081 A description of each shown parameter follows:
2082
2083 @table @option
2084 @item DC offset
2085 Mean amplitude displacement from zero.
2086
2087 @item Min level
2088 Minimal sample level.
2089
2090 @item Max level
2091 Maximal sample level.
2092
2093 @item Min difference
2094 Minimal difference between two consecutive samples.
2095
2096 @item Max difference
2097 Maximal difference between two consecutive samples.
2098
2099 @item Mean difference
2100 Mean difference between two consecutive samples.
2101 The average of each difference between two consecutive samples.
2102
2103 @item RMS difference
2104 Root Mean Square difference between two consecutive samples.
2105
2106 @item Peak level dB
2107 @item RMS level dB
2108 Standard peak and RMS level measured in dBFS.
2109
2110 @item RMS peak dB
2111 @item RMS trough dB
2112 Peak and trough values for RMS level measured over a short window.
2113
2114 @item Crest factor
2115 Standard ratio of peak to RMS level (note: not in dB).
2116
2117 @item Flat factor
2118 Flatness (i.e. consecutive samples with the same value) of the signal at its peak levels
2119 (i.e. either @var{Min level} or @var{Max level}).
2120
2121 @item Peak count
2122 Number of occasions (not the number of samples) that the signal attained either
2123 @var{Min level} or @var{Max level}.
2124
2125 @item Bit depth
2126 Overall bit depth of audio. Number of bits used for each sample.
2127
2128 @item Dynamic range
2129 Measured dynamic range of audio in dB.
2130
2131 @item Zero crossings
2132 Number of points where the waveform crosses the zero level axis.
2133
2134 @item Zero crossings rate
2135 Rate of Zero crossings and number of audio samples.
2136 @end table
2137
2138 @section atempo
2139
2140 Adjust audio tempo.
2141
2142 The filter accepts exactly one parameter, the audio tempo. If not
2143 specified then the filter will assume nominal 1.0 tempo. Tempo must
2144 be in the [0.5, 100.0] range.
2145
2146 Note that tempo greater than 2 will skip some samples rather than
2147 blend them in.  If for any reason this is a concern it is always
2148 possible to daisy-chain several instances of atempo to achieve the
2149 desired product tempo.
2150
2151 @subsection Examples
2152
2153 @itemize
2154 @item
2155 Slow down audio to 80% tempo:
2156 @example
2157 atempo=0.8
2158 @end example
2159
2160 @item
2161 To speed up audio to 300% tempo:
2162 @example
2163 atempo=3
2164 @end example
2165
2166 @item
2167 To speed up audio to 300% tempo by daisy-chaining two atempo instances:
2168 @example
2169 atempo=sqrt(3),atempo=sqrt(3)
2170 @end example
2171 @end itemize
2172
2173 @section atrim
2174
2175 Trim the input so that the output contains one continuous subpart of the input.
2176
2177 It accepts the following parameters:
2178 @table @option
2179 @item start
2180 Timestamp (in seconds) of the start of the section to keep. I.e. the audio
2181 sample with the timestamp @var{start} will be the first sample in the output.
2182
2183 @item end
2184 Specify time of the first audio sample that will be dropped, i.e. the
2185 audio sample immediately preceding the one with the timestamp @var{end} will be
2186 the last sample in the output.
2187
2188 @item start_pts
2189 Same as @var{start}, except this option sets the start timestamp in samples
2190 instead of seconds.
2191
2192 @item end_pts
2193 Same as @var{end}, except this option sets the end timestamp in samples instead
2194 of seconds.
2195
2196 @item duration
2197 The maximum duration of the output in seconds.
2198
2199 @item start_sample
2200 The number of the first sample that should be output.
2201
2202 @item end_sample
2203 The number of the first sample that should be dropped.
2204 @end table
2205
2206 @option{start}, @option{end}, and @option{duration} are expressed as time
2207 duration specifications; see
2208 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}.
2209
2210 Note that the first two sets of the start/end options and the @option{duration}
2211 option look at the frame timestamp, while the _sample options simply count the
2212 samples that pass through the filter. So start/end_pts and start/end_sample will
2213 give different results when the timestamps are wrong, inexact or do not start at
2214 zero. Also note that this filter does not modify the timestamps. If you wish
2215 to have the output timestamps start at zero, insert the asetpts filter after the
2216 atrim filter.
2217
2218 If multiple start or end options are set, this filter tries to be greedy and
2219 keep all samples that match at least one of the specified constraints. To keep
2220 only the part that matches all the constraints at once, chain multiple atrim
2221 filters.
2222
2223 The defaults are such that all the input is kept. So it is possible to set e.g.
2224 just the end values to keep everything before the specified time.
2225
2226 Examples:
2227 @itemize
2228 @item
2229 Drop everything except the second minute of input:
2230 @example
2231 ffmpeg -i INPUT -af atrim=60:120
2232 @end example
2233
2234 @item
2235 Keep only the first 1000 samples:
2236 @example
2237 ffmpeg -i INPUT -af atrim=end_sample=1000
2238 @end example
2239
2240 @end itemize
2241
2242 @section bandpass
2243
2244 Apply a two-pole Butterworth band-pass filter with central
2245 frequency @var{frequency}, and (3dB-point) band-width width.
2246 The @var{csg} option selects a constant skirt gain (peak gain = Q)
2247 instead of the default: constant 0dB peak gain.
2248 The filter roll off at 6dB per octave (20dB per decade).
2249
2250 The filter accepts the following options:
2251
2252 @table @option
2253 @item frequency, f
2254 Set the filter's central frequency. Default is @code{3000}.
2255
2256 @item csg
2257 Constant skirt gain if set to 1. Defaults to 0.
2258
2259 @item width_type, t
2260 Set method to specify band-width of filter.
2261 @table @option
2262 @item h
2263 Hz
2264 @item q
2265 Q-Factor
2266 @item o
2267 octave
2268 @item s
2269 slope
2270 @item k
2271 kHz
2272 @end table
2273
2274 @item width, w
2275 Specify the band-width of a filter in width_type units.
2276
2277 @item channels, c
2278 Specify which channels to filter, by default all available are filtered.
2279 @end table
2280
2281 @subsection Commands
2282
2283 This filter supports the following commands:
2284 @table @option
2285 @item frequency, f
2286 Change bandpass frequency.
2287 Syntax for the command is : "@var{frequency}"
2288
2289 @item width_type, t
2290 Change bandpass width_type.
2291 Syntax for the command is : "@var{width_type}"
2292
2293 @item width, w
2294 Change bandpass width.
2295 Syntax for the command is : "@var{width}"
2296 @end table
2297
2298 @section bandreject
2299
2300 Apply a two-pole Butterworth band-reject filter with central
2301 frequency @var{frequency}, and (3dB-point) band-width @var{width}.
2302 The filter roll off at 6dB per octave (20dB per decade).
2303
2304 The filter accepts the following options:
2305
2306 @table @option
2307 @item frequency, f
2308 Set the filter's central frequency. Default is @code{3000}.
2309
2310 @item width_type, t
2311 Set method to specify band-width of filter.
2312 @table @option
2313 @item h
2314 Hz
2315 @item q
2316 Q-Factor
2317 @item o
2318 octave
2319 @item s
2320 slope
2321 @item k
2322 kHz
2323 @end table
2324
2325 @item width, w
2326 Specify the band-width of a filter in width_type units.
2327
2328 @item channels, c
2329 Specify which channels to filter, by default all available are filtered.
2330 @end table
2331
2332 @subsection Commands
2333
2334 This filter supports the following commands:
2335 @table @option
2336 @item frequency, f
2337 Change bandreject frequency.
2338 Syntax for the command is : "@var{frequency}"
2339
2340 @item width_type, t
2341 Change bandreject width_type.
2342 Syntax for the command is : "@var{width_type}"
2343
2344 @item width, w
2345 Change bandreject width.
2346 Syntax for the command is : "@var{width}"
2347 @end table
2348
2349 @section bass, lowshelf
2350
2351 Boost or cut the bass (lower) frequencies of the audio using a two-pole
2352 shelving filter with a response similar to that of a standard
2353 hi-fi's tone-controls. This is also known as shelving equalisation (EQ).
2354
2355 The filter accepts the following options:
2356
2357 @table @option
2358 @item gain, g
2359 Give the gain at 0 Hz. Its useful range is about -20
2360 (for a large cut) to +20 (for a large boost).
2361 Beware of clipping when using a positive gain.
2362
2363 @item frequency, f
2364 Set the filter's central frequency and so can be used
2365 to extend or reduce the frequency range to be boosted or cut.
2366 The default value is @code{100} Hz.
2367
2368 @item width_type, t
2369 Set method to specify band-width of filter.
2370 @table @option
2371 @item h
2372 Hz
2373 @item q
2374 Q-Factor
2375 @item o
2376 octave
2377 @item s
2378 slope
2379 @item k
2380 kHz
2381 @end table
2382
2383 @item width, w
2384 Determine how steep is the filter's shelf transition.
2385
2386 @item channels, c
2387 Specify which channels to filter, by default all available are filtered.
2388 @end table
2389
2390 @subsection Commands
2391
2392 This filter supports the following commands:
2393 @table @option
2394 @item frequency, f
2395 Change bass frequency.
2396 Syntax for the command is : "@var{frequency}"
2397
2398 @item width_type, t
2399 Change bass width_type.
2400 Syntax for the command is : "@var{width_type}"
2401
2402 @item width, w
2403 Change bass width.
2404 Syntax for the command is : "@var{width}"
2405
2406 @item gain, g
2407 Change bass gain.
2408 Syntax for the command is : "@var{gain}"
2409 @end table
2410
2411 @section biquad
2412
2413 Apply a biquad IIR filter with the given coefficients.
2414 Where @var{b0}, @var{b1}, @var{b2} and @var{a0}, @var{a1}, @var{a2}
2415 are the numerator and denominator coefficients respectively.
2416 and @var{channels}, @var{c} specify which channels to filter, by default all
2417 available are filtered.
2418
2419 @subsection Commands
2420
2421 This filter supports the following commands:
2422 @table @option
2423 @item a0
2424 @item a1
2425 @item a2
2426 @item b0
2427 @item b1
2428 @item b2
2429 Change biquad parameter.
2430 Syntax for the command is : "@var{value}"
2431 @end table
2432
2433 @section bs2b
2434 Bauer stereo to binaural transformation, which improves headphone listening of
2435 stereo audio records.
2436
2437 To enable compilation of this filter you need to configure FFmpeg with
2438 @code{--enable-libbs2b}.
2439
2440 It accepts the following parameters:
2441 @table @option
2442
2443 @item profile
2444 Pre-defined crossfeed level.
2445 @table @option
2446
2447 @item default
2448 Default level (fcut=700, feed=50).
2449
2450 @item cmoy
2451 Chu Moy circuit (fcut=700, feed=60).
2452
2453 @item jmeier
2454 Jan Meier circuit (fcut=650, feed=95).
2455
2456 @end table
2457
2458 @item fcut
2459 Cut frequency (in Hz).
2460
2461 @item feed
2462 Feed level (in Hz).
2463
2464 @end table
2465
2466 @section channelmap
2467
2468 Remap input channels to new locations.
2469
2470 It accepts the following parameters:
2471 @table @option
2472 @item map
2473 Map channels from input to output. The argument is a '|'-separated list of
2474 mappings, each in the @code{@var{in_channel}-@var{out_channel}} or
2475 @var{in_channel} form. @var{in_channel} can be either the name of the input
2476 channel (e.g. FL for front left) or its index in the input channel layout.
2477 @var{out_channel} is the name of the output channel or its index in the output
2478 channel layout. If @var{out_channel} is not given then it is implicitly an
2479 index, starting with zero and increasing by one for each mapping.
2480
2481 @item channel_layout
2482 The channel layout of the output stream.
2483 @end table
2484
2485 If no mapping is present, the filter will implicitly map input channels to
2486 output channels, preserving indices.
2487
2488 @subsection Examples
2489
2490 @itemize
2491 @item
2492 For example, assuming a 5.1+downmix input MOV file,
2493 @example
2494 ffmpeg -i in.mov -filter 'channelmap=map=DL-FL|DR-FR' out.wav
2495 @end example
2496 will create an output WAV file tagged as stereo from the downmix channels of
2497 the input.
2498
2499 @item
2500 To fix a 5.1 WAV improperly encoded in AAC's native channel order
2501 @example
2502 ffmpeg -i in.wav -filter 'channelmap=1|2|0|5|3|4:5.1' out.wav
2503 @end example
2504 @end itemize
2505
2506 @section channelsplit
2507
2508 Split each channel from an input audio stream into a separate output stream.
2509
2510 It accepts the following parameters:
2511 @table @option
2512 @item channel_layout
2513 The channel layout of the input stream. The default is "stereo".
2514 @item channels
2515 A channel layout describing the channels to be extracted as separate output streams
2516 or "all" to extract each input channel as a separate stream. The default is "all".
2517
2518 Choosing channels not present in channel layout in the input will result in an error.
2519 @end table
2520
2521 @subsection Examples
2522
2523 @itemize
2524 @item
2525 For example, assuming a stereo input MP3 file,
2526 @example
2527 ffmpeg -i in.mp3 -filter_complex channelsplit out.mkv
2528 @end example
2529 will create an output Matroska file with two audio streams, one containing only
2530 the left channel and the other the right channel.
2531
2532 @item
2533 Split a 5.1 WAV file into per-channel files:
2534 @example
2535 ffmpeg -i in.wav -filter_complex
2536 'channelsplit=channel_layout=5.1[FL][FR][FC][LFE][SL][SR]'
2537 -map '[FL]' front_left.wav -map '[FR]' front_right.wav -map '[FC]'
2538 front_center.wav -map '[LFE]' lfe.wav -map '[SL]' side_left.wav -map '[SR]'
2539 side_right.wav
2540 @end example
2541
2542 @item
2543 Extract only LFE from a 5.1 WAV file:
2544 @example
2545 ffmpeg -i in.wav -filter_complex 'channelsplit=channel_layout=5.1:channels=LFE[LFE]'
2546 -map '[LFE]' lfe.wav
2547 @end example
2548 @end itemize
2549
2550 @section chorus
2551 Add a chorus effect to the audio.
2552
2553 Can make a single vocal sound like a chorus, but can also be applied to instrumentation.
2554
2555 Chorus resembles an echo effect with a short delay, but whereas with echo the delay is
2556 constant, with chorus, it is varied using using sinusoidal or triangular modulation.
2557 The modulation depth defines the range the modulated delay is played before or after
2558 the delay. Hence the delayed sound will sound slower or faster, that is the delayed
2559 sound tuned around the original one, like in a chorus where some vocals are slightly
2560 off key.
2561
2562 It accepts the following parameters:
2563 @table @option
2564 @item in_gain
2565 Set input gain. Default is 0.4.
2566
2567 @item out_gain
2568 Set output gain. Default is 0.4.
2569
2570 @item delays
2571 Set delays. A typical delay is around 40ms to 60ms.
2572
2573 @item decays
2574 Set decays.
2575
2576 @item speeds
2577 Set speeds.
2578
2579 @item depths
2580 Set depths.
2581 @end table
2582
2583 @subsection Examples
2584
2585 @itemize
2586 @item
2587 A single delay:
2588 @example
2589 chorus=0.7:0.9:55:0.4:0.25:2
2590 @end example
2591
2592 @item
2593 Two delays:
2594 @example
2595 chorus=0.6:0.9:50|60:0.4|0.32:0.25|0.4:2|1.3
2596 @end example
2597
2598 @item
2599 Fuller sounding chorus with three delays:
2600 @example
2601 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
2602 @end example
2603 @end itemize
2604
2605 @section compand
2606 Compress or expand the audio's dynamic range.
2607
2608 It accepts the following parameters:
2609
2610 @table @option
2611
2612 @item attacks
2613 @item decays
2614 A list of times in seconds for each channel over which the instantaneous level
2615 of the input signal is averaged to determine its volume. @var{attacks} refers to
2616 increase of volume and @var{decays} refers to decrease of volume. For most
2617 situations, the attack time (response to the audio getting louder) should be
2618 shorter than the decay time, because the human ear is more sensitive to sudden
2619 loud audio than sudden soft audio. A typical value for attack is 0.3 seconds and
2620 a typical value for decay is 0.8 seconds.
2621 If specified number of attacks & decays is lower than number of channels, the last
2622 set attack/decay will be used for all remaining channels.
2623
2624 @item points
2625 A list of points for the transfer function, specified in dB relative to the
2626 maximum possible signal amplitude. Each key points list must be defined using
2627 the following syntax: @code{x0/y0|x1/y1|x2/y2|....} or
2628 @code{x0/y0 x1/y1 x2/y2 ....}
2629
2630 The input values must be in strictly increasing order but the transfer function
2631 does not have to be monotonically rising. The point @code{0/0} is assumed but
2632 may be overridden (by @code{0/out-dBn}). Typical values for the transfer
2633 function are @code{-70/-70|-60/-20|1/0}.
2634
2635 @item soft-knee
2636 Set the curve radius in dB for all joints. It defaults to 0.01.
2637
2638 @item gain
2639 Set the additional gain in dB to be applied at all points on the transfer
2640 function. This allows for easy adjustment of the overall gain.
2641 It defaults to 0.
2642
2643 @item volume
2644 Set an initial volume, in dB, to be assumed for each channel when filtering
2645 starts. This permits the user to supply a nominal level initially, so that, for
2646 example, a very large gain is not applied to initial signal levels before the
2647 companding has begun to operate. A typical value for audio which is initially
2648 quiet is -90 dB. It defaults to 0.
2649
2650 @item delay
2651 Set a delay, in seconds. The input audio is analyzed immediately, but audio is
2652 delayed before being fed to the volume adjuster. Specifying a delay
2653 approximately equal to the attack/decay times allows the filter to effectively
2654 operate in predictive rather than reactive mode. It defaults to 0.
2655
2656 @end table
2657
2658 @subsection Examples
2659
2660 @itemize
2661 @item
2662 Make music with both quiet and loud passages suitable for listening to in a
2663 noisy environment:
2664 @example
2665 compand=.3|.3:1|1:-90/-60|-60/-40|-40/-30|-20/-20:6:0:-90:0.2
2666 @end example
2667
2668 Another example for audio with whisper and explosion parts:
2669 @example
2670 compand=0|0:1|1:-90/-900|-70/-70|-30/-9|0/-3:6:0:0:0
2671 @end example
2672
2673 @item
2674 A noise gate for when the noise is at a lower level than the signal:
2675 @example
2676 compand=.1|.1:.2|.2:-900/-900|-50.1/-900|-50/-50:.01:0:-90:.1
2677 @end example
2678
2679 @item
2680 Here is another noise gate, this time for when the noise is at a higher level
2681 than the signal (making it, in some ways, similar to squelch):
2682 @example
2683 compand=.1|.1:.1|.1:-45.1/-45.1|-45/-900|0/-900:.01:45:-90:.1
2684 @end example
2685
2686 @item
2687 2:1 compression starting at -6dB:
2688 @example
2689 compand=points=-80/-80|-6/-6|0/-3.8|20/3.5
2690 @end example
2691
2692 @item
2693 2:1 compression starting at -9dB:
2694 @example
2695 compand=points=-80/-80|-9/-9|0/-5.3|20/2.9
2696 @end example
2697
2698 @item
2699 2:1 compression starting at -12dB:
2700 @example
2701 compand=points=-80/-80|-12/-12|0/-6.8|20/1.9
2702 @end example
2703
2704 @item
2705 2:1 compression starting at -18dB:
2706 @example
2707 compand=points=-80/-80|-18/-18|0/-9.8|20/0.7
2708 @end example
2709
2710 @item
2711 3:1 compression starting at -15dB:
2712 @example
2713 compand=points=-80/-80|-15/-15|0/-10.8|20/-5.2
2714 @end example
2715
2716 @item
2717 Compressor/Gate:
2718 @example
2719 compand=points=-80/-105|-62/-80|-15.4/-15.4|0/-12|20/-7.6
2720 @end example
2721
2722 @item
2723 Expander:
2724 @example
2725 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
2726 @end example
2727
2728 @item
2729 Hard limiter at -6dB:
2730 @example
2731 compand=attacks=0:points=-80/-80|-6/-6|20/-6
2732 @end example
2733
2734 @item
2735 Hard limiter at -12dB:
2736 @example
2737 compand=attacks=0:points=-80/-80|-12/-12|20/-12
2738 @end example
2739
2740 @item
2741 Hard noise gate at -35 dB:
2742 @example
2743 compand=attacks=0:points=-80/-115|-35.1/-80|-35/-35|20/20
2744 @end example
2745
2746 @item
2747 Soft limiter:
2748 @example
2749 compand=attacks=0:points=-80/-80|-12.4/-12.4|-6/-8|0/-6.8|20/-2.8
2750 @end example
2751 @end itemize
2752
2753 @section compensationdelay
2754
2755 Compensation Delay Line is a metric based delay to compensate differing
2756 positions of microphones or speakers.
2757
2758 For example, you have recorded guitar with two microphones placed in
2759 different location. Because the front of sound wave has fixed speed in
2760 normal conditions, the phasing of microphones can vary and depends on
2761 their location and interposition. The best sound mix can be achieved when
2762 these microphones are in phase (synchronized). Note that distance of
2763 ~30 cm between microphones makes one microphone to capture signal in
2764 antiphase to another microphone. That makes the final mix sounding moody.
2765 This filter helps to solve phasing problems by adding different delays
2766 to each microphone track and make them synchronized.
2767
2768 The best result can be reached when you take one track as base and
2769 synchronize other tracks one by one with it.
2770 Remember that synchronization/delay tolerance depends on sample rate, too.
2771 Higher sample rates will give more tolerance.
2772
2773 It accepts the following parameters:
2774
2775 @table @option
2776 @item mm
2777 Set millimeters distance. This is compensation distance for fine tuning.
2778 Default is 0.
2779
2780 @item cm
2781 Set cm distance. This is compensation distance for tightening distance setup.
2782 Default is 0.
2783
2784 @item m
2785 Set meters distance. This is compensation distance for hard distance setup.
2786 Default is 0.
2787
2788 @item dry
2789 Set dry amount. Amount of unprocessed (dry) signal.
2790 Default is 0.
2791
2792 @item wet
2793 Set wet amount. Amount of processed (wet) signal.
2794 Default is 1.
2795
2796 @item temp
2797 Set temperature degree in Celsius. This is the temperature of the environment.
2798 Default is 20.
2799 @end table
2800
2801 @section crossfeed
2802 Apply headphone crossfeed filter.
2803
2804 Crossfeed is the process of blending the left and right channels of stereo
2805 audio recording.
2806 It is mainly used to reduce extreme stereo separation of low frequencies.
2807
2808 The intent is to produce more speaker like sound to the listener.
2809
2810 The filter accepts the following options:
2811
2812 @table @option
2813 @item strength
2814 Set strength of crossfeed. Default is 0.2. Allowed range is from 0 to 1.
2815 This sets gain of low shelf filter for side part of stereo image.
2816 Default is -6dB. Max allowed is -30db when strength is set to 1.
2817
2818 @item range
2819 Set soundstage wideness. Default is 0.5. Allowed range is from 0 to 1.
2820 This sets cut off frequency of low shelf filter. Default is cut off near
2821 1550 Hz. With range set to 1 cut off frequency is set to 2100 Hz.
2822
2823 @item level_in
2824 Set input gain. Default is 0.9.
2825
2826 @item level_out
2827 Set output gain. Default is 1.
2828 @end table
2829
2830 @section crystalizer
2831 Simple algorithm to expand audio dynamic range.
2832
2833 The filter accepts the following options:
2834
2835 @table @option
2836 @item i
2837 Sets the intensity of effect (default: 2.0). Must be in range between 0.0
2838 (unchanged sound) to 10.0 (maximum effect).
2839
2840 @item c
2841 Enable clipping. By default is enabled.
2842 @end table
2843
2844 @section dcshift
2845 Apply a DC shift to the audio.
2846
2847 This can be useful to remove a DC offset (caused perhaps by a hardware problem
2848 in the recording chain) from the audio. The effect of a DC offset is reduced
2849 headroom and hence volume. The @ref{astats} filter can be used to determine if
2850 a signal has a DC offset.
2851
2852 @table @option
2853 @item shift
2854 Set the DC shift, allowed range is [-1, 1]. It indicates the amount to shift
2855 the audio.
2856
2857 @item limitergain
2858 Optional. It should have a value much less than 1 (e.g. 0.05 or 0.02) and is
2859 used to prevent clipping.
2860 @end table
2861
2862 @section drmeter
2863 Measure audio dynamic range.
2864
2865 DR values of 14 and higher is found in very dynamic material. DR of 8 to 13
2866 is found in transition material. And anything less that 8 have very poor dynamics
2867 and is very compressed.
2868
2869 The filter accepts the following options:
2870
2871 @table @option
2872 @item length
2873 Set window length in seconds used to split audio into segments of equal length.
2874 Default is 3 seconds.
2875 @end table
2876
2877 @section dynaudnorm
2878 Dynamic Audio Normalizer.
2879
2880 This filter applies a certain amount of gain to the input audio in order
2881 to bring its peak magnitude to a target level (e.g. 0 dBFS). However, in
2882 contrast to more "simple" normalization algorithms, the Dynamic Audio
2883 Normalizer *dynamically* re-adjusts the gain factor to the input audio.
2884 This allows for applying extra gain to the "quiet" sections of the audio
2885 while avoiding distortions or clipping the "loud" sections. In other words:
2886 The Dynamic Audio Normalizer will "even out" the volume of quiet and loud
2887 sections, in the sense that the volume of each section is brought to the
2888 same target level. Note, however, that the Dynamic Audio Normalizer achieves
2889 this goal *without* applying "dynamic range compressing". It will retain 100%
2890 of the dynamic range *within* each section of the audio file.
2891
2892 @table @option
2893 @item f
2894 Set the frame length in milliseconds. In range from 10 to 8000 milliseconds.
2895 Default is 500 milliseconds.
2896 The Dynamic Audio Normalizer processes the input audio in small chunks,
2897 referred to as frames. This is required, because a peak magnitude has no
2898 meaning for just a single sample value. Instead, we need to determine the
2899 peak magnitude for a contiguous sequence of sample values. While a "standard"
2900 normalizer would simply use the peak magnitude of the complete file, the
2901 Dynamic Audio Normalizer determines the peak magnitude individually for each
2902 frame. The length of a frame is specified in milliseconds. By default, the
2903 Dynamic Audio Normalizer uses a frame length of 500 milliseconds, which has
2904 been found to give good results with most files.
2905 Note that the exact frame length, in number of samples, will be determined
2906 automatically, based on the sampling rate of the individual input audio file.
2907
2908 @item g
2909 Set the Gaussian filter window size. In range from 3 to 301, must be odd
2910 number. Default is 31.
2911 Probably the most important parameter of the Dynamic Audio Normalizer is the
2912 @code{window size} of the Gaussian smoothing filter. The filter's window size
2913 is specified in frames, centered around the current frame. For the sake of
2914 simplicity, this must be an odd number. Consequently, the default value of 31
2915 takes into account the current frame, as well as the 15 preceding frames and
2916 the 15 subsequent frames. Using a larger window results in a stronger
2917 smoothing effect and thus in less gain variation, i.e. slower gain
2918 adaptation. Conversely, using a smaller window results in a weaker smoothing
2919 effect and thus in more gain variation, i.e. faster gain adaptation.
2920 In other words, the more you increase this value, the more the Dynamic Audio
2921 Normalizer will behave like a "traditional" normalization filter. On the
2922 contrary, the more you decrease this value, the more the Dynamic Audio
2923 Normalizer will behave like a dynamic range compressor.
2924
2925 @item p
2926 Set the target peak value. This specifies the highest permissible magnitude
2927 level for the normalized audio input. This filter will try to approach the
2928 target peak magnitude as closely as possible, but at the same time it also
2929 makes sure that the normalized signal will never exceed the peak magnitude.
2930 A frame's maximum local gain factor is imposed directly by the target peak
2931 magnitude. The default value is 0.95 and thus leaves a headroom of 5%*.
2932 It is not recommended to go above this value.
2933
2934 @item m
2935 Set the maximum gain factor. In range from 1.0 to 100.0. Default is 10.0.
2936 The Dynamic Audio Normalizer determines the maximum possible (local) gain
2937 factor for each input frame, i.e. the maximum gain factor that does not
2938 result in clipping or distortion. The maximum gain factor is determined by
2939 the frame's highest magnitude sample. However, the Dynamic Audio Normalizer
2940 additionally bounds the frame's maximum gain factor by a predetermined
2941 (global) maximum gain factor. This is done in order to avoid excessive gain
2942 factors in "silent" or almost silent frames. By default, the maximum gain
2943 factor is 10.0, For most inputs the default value should be sufficient and
2944 it usually is not recommended to increase this value. Though, for input
2945 with an extremely low overall volume level, it may be necessary to allow even
2946 higher gain factors. Note, however, that the Dynamic Audio Normalizer does
2947 not simply apply a "hard" threshold (i.e. cut off values above the threshold).
2948 Instead, a "sigmoid" threshold function will be applied. This way, the
2949 gain factors will smoothly approach the threshold value, but never exceed that
2950 value.
2951
2952 @item r
2953 Set the target RMS. In range from 0.0 to 1.0. Default is 0.0 - disabled.
2954 By default, the Dynamic Audio Normalizer performs "peak" normalization.
2955 This means that the maximum local gain factor for each frame is defined
2956 (only) by the frame's highest magnitude sample. This way, the samples can
2957 be amplified as much as possible without exceeding the maximum signal
2958 level, i.e. without clipping. Optionally, however, the Dynamic Audio
2959 Normalizer can also take into account the frame's root mean square,
2960 abbreviated RMS. In electrical engineering, the RMS is commonly used to
2961 determine the power of a time-varying signal. It is therefore considered
2962 that the RMS is a better approximation of the "perceived loudness" than
2963 just looking at the signal's peak magnitude. Consequently, by adjusting all
2964 frames to a constant RMS value, a uniform "perceived loudness" can be
2965 established. If a target RMS value has been specified, a frame's local gain
2966 factor is defined as the factor that would result in exactly that RMS value.
2967 Note, however, that the maximum local gain factor is still restricted by the
2968 frame's highest magnitude sample, in order to prevent clipping.
2969
2970 @item n
2971 Enable channels coupling. By default is enabled.
2972 By default, the Dynamic Audio Normalizer will amplify all channels by the same
2973 amount. This means the same gain factor will be applied to all channels, i.e.
2974 the maximum possible gain factor is determined by the "loudest" channel.
2975 However, in some recordings, it may happen that the volume of the different
2976 channels is uneven, e.g. one channel may be "quieter" than the other one(s).
2977 In this case, this option can be used to disable the channel coupling. This way,
2978 the gain factor will be determined independently for each channel, depending
2979 only on the individual channel's highest magnitude sample. This allows for
2980 harmonizing the volume of the different channels.
2981
2982 @item c
2983 Enable DC bias correction. By default is disabled.
2984 An audio signal (in the time domain) is a sequence of sample values.
2985 In the Dynamic Audio Normalizer these sample values are represented in the
2986 -1.0 to 1.0 range, regardless of the original input format. Normally, the
2987 audio signal, or "waveform", should be centered around the zero point.
2988 That means if we calculate the mean value of all samples in a file, or in a
2989 single frame, then the result should be 0.0 or at least very close to that
2990 value. If, however, there is a significant deviation of the mean value from
2991 0.0, in either positive or negative direction, this is referred to as a
2992 DC bias or DC offset. Since a DC bias is clearly undesirable, the Dynamic
2993 Audio Normalizer provides optional DC bias correction.
2994 With DC bias correction enabled, the Dynamic Audio Normalizer will determine
2995 the mean value, or "DC correction" offset, of each input frame and subtract
2996 that value from all of the frame's sample values which ensures those samples
2997 are centered around 0.0 again. Also, in order to avoid "gaps" at the frame
2998 boundaries, the DC correction offset values will be interpolated smoothly
2999 between neighbouring frames.
3000
3001 @item b
3002 Enable alternative boundary mode. By default is disabled.
3003 The Dynamic Audio Normalizer takes into account a certain neighbourhood
3004 around each frame. This includes the preceding frames as well as the
3005 subsequent frames. However, for the "boundary" frames, located at the very
3006 beginning and at the very end of the audio file, not all neighbouring
3007 frames are available. In particular, for the first few frames in the audio
3008 file, the preceding frames are not known. And, similarly, for the last few
3009 frames in the audio file, the subsequent frames are not known. Thus, the
3010 question arises which gain factors should be assumed for the missing frames
3011 in the "boundary" region. The Dynamic Audio Normalizer implements two modes
3012 to deal with this situation. The default boundary mode assumes a gain factor
3013 of exactly 1.0 for the missing frames, resulting in a smooth "fade in" and
3014 "fade out" at the beginning and at the end of the input, respectively.
3015
3016 @item s
3017 Set the compress factor. In range from 0.0 to 30.0. Default is 0.0.
3018 By default, the Dynamic Audio Normalizer does not apply "traditional"
3019 compression. This means that signal peaks will not be pruned and thus the
3020 full dynamic range will be retained within each local neighbourhood. However,
3021 in some cases it may be desirable to combine the Dynamic Audio Normalizer's
3022 normalization algorithm with a more "traditional" compression.
3023 For this purpose, the Dynamic Audio Normalizer provides an optional compression
3024 (thresholding) function. If (and only if) the compression feature is enabled,
3025 all input frames will be processed by a soft knee thresholding function prior
3026 to the actual normalization process. Put simply, the thresholding function is
3027 going to prune all samples whose magnitude exceeds a certain threshold value.
3028 However, the Dynamic Audio Normalizer does not simply apply a fixed threshold
3029 value. Instead, the threshold value will be adjusted for each individual
3030 frame.
3031 In general, smaller parameters result in stronger compression, and vice versa.
3032 Values below 3.0 are not recommended, because audible distortion may appear.
3033 @end table
3034
3035 @section earwax
3036
3037 Make audio easier to listen to on headphones.
3038
3039 This filter adds `cues' to 44.1kHz stereo (i.e. audio CD format) audio
3040 so that when listened to on headphones the stereo image is moved from
3041 inside your head (standard for headphones) to outside and in front of
3042 the listener (standard for speakers).
3043
3044 Ported from SoX.
3045
3046 @section equalizer
3047
3048 Apply a two-pole peaking equalisation (EQ) filter. With this
3049 filter, the signal-level at and around a selected frequency can
3050 be increased or decreased, whilst (unlike bandpass and bandreject
3051 filters) that at all other frequencies is unchanged.
3052
3053 In order to produce complex equalisation curves, this filter can
3054 be given several times, each with a different central frequency.
3055
3056 The filter accepts the following options:
3057
3058 @table @option
3059 @item frequency, f
3060 Set the filter's central frequency in Hz.
3061
3062 @item width_type, t
3063 Set method to specify band-width of filter.
3064 @table @option
3065 @item h
3066 Hz
3067 @item q
3068 Q-Factor
3069 @item o
3070 octave
3071 @item s
3072 slope
3073 @item k
3074 kHz
3075 @end table
3076
3077 @item width, w
3078 Specify the band-width of a filter in width_type units.
3079
3080 @item gain, g
3081 Set the required gain or attenuation in dB.
3082 Beware of clipping when using a positive gain.
3083
3084 @item channels, c
3085 Specify which channels to filter, by default all available are filtered.
3086 @end table
3087
3088 @subsection Examples
3089 @itemize
3090 @item
3091 Attenuate 10 dB at 1000 Hz, with a bandwidth of 200 Hz:
3092 @example
3093 equalizer=f=1000:t=h:width=200:g=-10
3094 @end example
3095
3096 @item
3097 Apply 2 dB gain at 1000 Hz with Q 1 and attenuate 5 dB at 100 Hz with Q 2:
3098 @example
3099 equalizer=f=1000:t=q:w=1:g=2,equalizer=f=100:t=q:w=2:g=-5
3100 @end example
3101 @end itemize
3102
3103 @subsection Commands
3104
3105 This filter supports the following commands:
3106 @table @option
3107 @item frequency, f
3108 Change equalizer frequency.
3109 Syntax for the command is : "@var{frequency}"
3110
3111 @item width_type, t
3112 Change equalizer width_type.
3113 Syntax for the command is : "@var{width_type}"
3114
3115 @item width, w
3116 Change equalizer width.
3117 Syntax for the command is : "@var{width}"
3118
3119 @item gain, g
3120 Change equalizer gain.
3121 Syntax for the command is : "@var{gain}"
3122 @end table
3123
3124 @section extrastereo
3125
3126 Linearly increases the difference between left and right channels which
3127 adds some sort of "live" effect to playback.
3128
3129 The filter accepts the following options:
3130
3131 @table @option
3132 @item m
3133 Sets the difference coefficient (default: 2.5). 0.0 means mono sound
3134 (average of both channels), with 1.0 sound will be unchanged, with
3135 -1.0 left and right channels will be swapped.
3136
3137 @item c
3138 Enable clipping. By default is enabled.
3139 @end table
3140
3141 @section firequalizer
3142 Apply FIR Equalization using arbitrary frequency response.
3143
3144 The filter accepts the following option:
3145
3146 @table @option
3147 @item gain
3148 Set gain curve equation (in dB). The expression can contain variables:
3149 @table @option
3150 @item f
3151 the evaluated frequency
3152 @item sr
3153 sample rate
3154 @item ch
3155 channel number, set to 0 when multichannels evaluation is disabled
3156 @item chid
3157 channel id, see libavutil/channel_layout.h, set to the first channel id when
3158 multichannels evaluation is disabled
3159 @item chs
3160 number of channels
3161 @item chlayout
3162 channel_layout, see libavutil/channel_layout.h
3163
3164 @end table
3165 and functions:
3166 @table @option
3167 @item gain_interpolate(f)
3168 interpolate gain on frequency f based on gain_entry
3169 @item cubic_interpolate(f)
3170 same as gain_interpolate, but smoother
3171 @end table
3172 This option is also available as command. Default is @code{gain_interpolate(f)}.
3173
3174 @item gain_entry
3175 Set gain entry for gain_interpolate function. The expression can
3176 contain functions:
3177 @table @option
3178 @item entry(f, g)
3179 store gain entry at frequency f with value g
3180 @end table
3181 This option is also available as command.
3182
3183 @item delay
3184 Set filter delay in seconds. Higher value means more accurate.
3185 Default is @code{0.01}.
3186
3187 @item accuracy
3188 Set filter accuracy in Hz. Lower value means more accurate.
3189 Default is @code{5}.
3190
3191 @item wfunc
3192 Set window function. Acceptable values are:
3193 @table @option
3194 @item rectangular
3195 rectangular window, useful when gain curve is already smooth
3196 @item hann
3197 hann window (default)
3198 @item hamming
3199 hamming window
3200 @item blackman
3201 blackman window
3202 @item nuttall3
3203 3-terms continuous 1st derivative nuttall window
3204 @item mnuttall3
3205 minimum 3-terms discontinuous nuttall window
3206 @item nuttall
3207 4-terms continuous 1st derivative nuttall window
3208 @item bnuttall
3209 minimum 4-terms discontinuous nuttall (blackman-nuttall) window
3210 @item bharris
3211 blackman-harris window
3212 @item tukey
3213 tukey window
3214 @end table
3215
3216 @item fixed
3217 If enabled, use fixed number of audio samples. This improves speed when
3218 filtering with large delay. Default is disabled.
3219
3220 @item multi
3221 Enable multichannels evaluation on gain. Default is disabled.
3222
3223 @item zero_phase
3224 Enable zero phase mode by subtracting timestamp to compensate delay.
3225 Default is disabled.
3226
3227 @item scale
3228 Set scale used by gain. Acceptable values are:
3229 @table @option
3230 @item linlin
3231 linear frequency, linear gain
3232 @item linlog
3233 linear frequency, logarithmic (in dB) gain (default)
3234 @item loglin
3235 logarithmic (in octave scale where 20 Hz is 0) frequency, linear gain
3236 @item loglog
3237 logarithmic frequency, logarithmic gain
3238 @end table
3239
3240 @item dumpfile
3241 Set file for dumping, suitable for gnuplot.
3242
3243 @item dumpscale
3244 Set scale for dumpfile. Acceptable values are same with scale option.
3245 Default is linlog.
3246
3247 @item fft2
3248 Enable 2-channel convolution using complex FFT. This improves speed significantly.
3249 Default is disabled.
3250
3251 @item min_phase
3252 Enable minimum phase impulse response. Default is disabled.
3253 @end table
3254
3255 @subsection Examples
3256 @itemize
3257 @item
3258 lowpass at 1000 Hz:
3259 @example
3260 firequalizer=gain='if(lt(f,1000), 0, -INF)'
3261 @end example
3262 @item
3263 lowpass at 1000 Hz with gain_entry:
3264 @example
3265 firequalizer=gain_entry='entry(1000,0); entry(1001, -INF)'
3266 @end example
3267 @item
3268 custom equalization:
3269 @example
3270 firequalizer=gain_entry='entry(100,0); entry(400, -4); entry(1000, -6); entry(2000, 0)'
3271 @end example
3272 @item
3273 higher delay with zero phase to compensate delay:
3274 @example
3275 firequalizer=delay=0.1:fixed=on:zero_phase=on
3276 @end example
3277 @item
3278 lowpass on left channel, highpass on right channel:
3279 @example
3280 firequalizer=gain='if(eq(chid,1), gain_interpolate(f), if(eq(chid,2), gain_interpolate(1e6+f), 0))'
3281 :gain_entry='entry(1000, 0); entry(1001,-INF); entry(1e6+1000,0)':multi=on
3282 @end example
3283 @end itemize
3284
3285 @section flanger
3286 Apply a flanging effect to the audio.
3287
3288 The filter accepts the following options:
3289
3290 @table @option
3291 @item delay
3292 Set base delay in milliseconds. Range from 0 to 30. Default value is 0.
3293
3294 @item depth
3295 Set added sweep delay in milliseconds. Range from 0 to 10. Default value is 2.
3296
3297 @item regen
3298 Set percentage regeneration (delayed signal feedback). Range from -95 to 95.
3299 Default value is 0.
3300
3301 @item width
3302 Set percentage of delayed signal mixed with original. Range from 0 to 100.
3303 Default value is 71.
3304
3305 @item speed
3306 Set sweeps per second (Hz). Range from 0.1 to 10. Default value is 0.5.
3307
3308 @item shape
3309 Set swept wave shape, can be @var{triangular} or @var{sinusoidal}.
3310 Default value is @var{sinusoidal}.
3311
3312 @item phase
3313 Set swept wave percentage-shift for multi channel. Range from 0 to 100.
3314 Default value is 25.
3315
3316 @item interp
3317 Set delay-line interpolation, @var{linear} or @var{quadratic}.
3318 Default is @var{linear}.
3319 @end table
3320
3321 @section haas
3322 Apply Haas effect to audio.
3323
3324 Note that this makes most sense to apply on mono signals.
3325 With this filter applied to mono signals it give some directionality and
3326 stretches its stereo image.
3327
3328 The filter accepts the following options:
3329
3330 @table @option
3331 @item level_in
3332 Set input level. By default is @var{1}, or 0dB
3333
3334 @item level_out
3335 Set output level. By default is @var{1}, or 0dB.
3336
3337 @item side_gain
3338 Set gain applied to side part of signal. By default is @var{1}.
3339
3340 @item middle_source
3341 Set kind of middle source. Can be one of the following:
3342
3343 @table @samp
3344 @item left
3345 Pick left channel.
3346
3347 @item right
3348 Pick right channel.
3349
3350 @item mid
3351 Pick middle part signal of stereo image.
3352
3353 @item side
3354 Pick side part signal of stereo image.
3355 @end table
3356
3357 @item middle_phase
3358 Change middle phase. By default is disabled.
3359
3360 @item left_delay
3361 Set left channel delay. By default is @var{2.05} milliseconds.
3362
3363 @item left_balance
3364 Set left channel balance. By default is @var{-1}.
3365
3366 @item left_gain
3367 Set left channel gain. By default is @var{1}.
3368
3369 @item left_phase
3370 Change left phase. By default is disabled.
3371
3372 @item right_delay
3373 Set right channel delay. By defaults is @var{2.12} milliseconds.
3374
3375 @item right_balance
3376 Set right channel balance. By default is @var{1}.
3377
3378 @item right_gain
3379 Set right channel gain. By default is @var{1}.
3380
3381 @item right_phase
3382 Change right phase. By default is enabled.
3383 @end table
3384
3385 @section hdcd
3386
3387 Decodes High Definition Compatible Digital (HDCD) data. A 16-bit PCM stream with
3388 embedded HDCD codes is expanded into a 20-bit PCM stream.
3389
3390 The filter supports the Peak Extend and Low-level Gain Adjustment features
3391 of HDCD, and detects the Transient Filter flag.
3392
3393 @example
3394 ffmpeg -i HDCD16.flac -af hdcd OUT24.flac
3395 @end example
3396
3397 When using the filter with wav, note the default encoding for wav is 16-bit,
3398 so the resulting 20-bit stream will be truncated back to 16-bit. Use something
3399 like @command{-acodec pcm_s24le} after the filter to get 24-bit PCM output.
3400 @example
3401 ffmpeg -i HDCD16.wav -af hdcd OUT16.wav
3402 ffmpeg -i HDCD16.wav -af hdcd -c:a pcm_s24le OUT24.wav
3403 @end example
3404
3405 The filter accepts the following options:
3406
3407 @table @option
3408 @item disable_autoconvert
3409 Disable any automatic format conversion or resampling in the filter graph.
3410
3411 @item process_stereo
3412 Process the stereo channels together. If target_gain does not match between
3413 channels, consider it invalid and use the last valid target_gain.
3414
3415 @item cdt_ms
3416 Set the code detect timer period in ms.
3417
3418 @item force_pe
3419 Always extend peaks above -3dBFS even if PE isn't signaled.
3420
3421 @item analyze_mode
3422 Replace audio with a solid tone and adjust the amplitude to signal some
3423 specific aspect of the decoding process. The output file can be loaded in
3424 an audio editor alongside the original to aid analysis.
3425
3426 @code{analyze_mode=pe:force_pe=true} can be used to see all samples above the PE level.
3427
3428 Modes are:
3429 @table @samp
3430 @item 0, off
3431 Disabled
3432 @item 1, lle
3433 Gain adjustment level at each sample
3434 @item 2, pe
3435 Samples where peak extend occurs
3436 @item 3, cdt
3437 Samples where the code detect timer is active
3438 @item 4, tgm
3439 Samples where the target gain does not match between channels
3440 @end table
3441 @end table
3442
3443 @section headphone
3444
3445 Apply head-related transfer functions (HRTFs) to create virtual
3446 loudspeakers around the user for binaural listening via headphones.
3447 The HRIRs are provided via additional streams, for each channel
3448 one stereo input stream is needed.
3449
3450 The filter accepts the following options:
3451
3452 @table @option
3453 @item map
3454 Set mapping of input streams for convolution.
3455 The argument is a '|'-separated list of channel names in order as they
3456 are given as additional stream inputs for filter.
3457 This also specify number of input streams. Number of input streams
3458 must be not less than number of channels in first stream plus one.
3459
3460 @item gain
3461 Set gain applied to audio. Value is in dB. Default is 0.
3462
3463 @item type
3464 Set processing type. Can be @var{time} or @var{freq}. @var{time} is
3465 processing audio in time domain which is slow.
3466 @var{freq} is processing audio in frequency domain which is fast.
3467 Default is @var{freq}.
3468
3469 @item lfe
3470 Set custom gain for LFE channels. Value is in dB. Default is 0.
3471
3472 @item size
3473 Set size of frame in number of samples which will be processed at once.
3474 Default value is @var{1024}. Allowed range is from 1024 to 96000.
3475
3476 @item hrir
3477 Set format of hrir stream.
3478 Default value is @var{stereo}. Alternative value is @var{multich}.
3479 If value is set to @var{stereo}, number of additional streams should
3480 be greater or equal to number of input channels in first input stream.
3481 Also each additional stream should have stereo number of channels.
3482 If value is set to @var{multich}, number of additional streams should
3483 be exactly one. Also number of input channels of additional stream
3484 should be equal or greater than twice number of channels of first input
3485 stream.
3486 @end table
3487
3488 @subsection Examples
3489
3490 @itemize
3491 @item
3492 Full example using wav files as coefficients with amovie filters for 7.1 downmix,
3493 each amovie filter use stereo file with IR coefficients as input.
3494 The files give coefficients for each position of virtual loudspeaker:
3495 @example
3496 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"
3497 output.wav
3498 @end example
3499
3500 @item
3501 Full example using wav files as coefficients with amovie filters for 7.1 downmix,
3502 but now in @var{multich} @var{hrir} format.
3503 @example
3504 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"
3505 output.wav
3506 @end example
3507 @end itemize
3508
3509 @section highpass
3510
3511 Apply a high-pass filter with 3dB point frequency.
3512 The filter can be either single-pole, or double-pole (the default).
3513 The filter roll off at 6dB per pole per octave (20dB per pole per decade).
3514
3515 The filter accepts the following options:
3516
3517 @table @option
3518 @item frequency, f
3519 Set frequency in Hz. Default is 3000.
3520
3521 @item poles, p
3522 Set number of poles. Default is 2.
3523
3524 @item width_type, t
3525 Set method to specify band-width of filter.
3526 @table @option
3527 @item h
3528 Hz
3529 @item q
3530 Q-Factor
3531 @item o
3532 octave
3533 @item s
3534 slope
3535 @item k
3536 kHz
3537 @end table
3538
3539 @item width, w
3540 Specify the band-width of a filter in width_type units.
3541 Applies only to double-pole filter.
3542 The default is 0.707q and gives a Butterworth response.
3543
3544 @item channels, c
3545 Specify which channels to filter, by default all available are filtered.
3546 @end table
3547
3548 @subsection Commands
3549
3550 This filter supports the following commands:
3551 @table @option
3552 @item frequency, f
3553 Change highpass frequency.
3554 Syntax for the command is : "@var{frequency}"
3555
3556 @item width_type, t
3557 Change highpass width_type.
3558 Syntax for the command is : "@var{width_type}"
3559
3560 @item width, w
3561 Change highpass width.
3562 Syntax for the command is : "@var{width}"
3563 @end table
3564
3565 @section join
3566
3567 Join multiple input streams into one multi-channel stream.
3568
3569 It accepts the following parameters:
3570 @table @option
3571
3572 @item inputs
3573 The number of input streams. It defaults to 2.
3574
3575 @item channel_layout
3576 The desired output channel layout. It defaults to stereo.
3577
3578 @item map
3579 Map channels from inputs to output. The argument is a '|'-separated list of
3580 mappings, each in the @code{@var{input_idx}.@var{in_channel}-@var{out_channel}}
3581 form. @var{input_idx} is the 0-based index of the input stream. @var{in_channel}
3582 can be either the name of the input channel (e.g. FL for front left) or its
3583 index in the specified input stream. @var{out_channel} is the name of the output
3584 channel.
3585 @end table
3586
3587 The filter will attempt to guess the mappings when they are not specified
3588 explicitly. It does so by first trying to find an unused matching input channel
3589 and if that fails it picks the first unused input channel.
3590
3591 Join 3 inputs (with properly set channel layouts):
3592 @example
3593 ffmpeg -i INPUT1 -i INPUT2 -i INPUT3 -filter_complex join=inputs=3 OUTPUT
3594 @end example
3595
3596 Build a 5.1 output from 6 single-channel streams:
3597 @example
3598 ffmpeg -i fl -i fr -i fc -i sl -i sr -i lfe -filter_complex
3599 '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'
3600 out
3601 @end example
3602
3603 @section ladspa
3604
3605 Load a LADSPA (Linux Audio Developer's Simple Plugin API) plugin.
3606
3607 To enable compilation of this filter you need to configure FFmpeg with
3608 @code{--enable-ladspa}.
3609
3610 @table @option
3611 @item file, f
3612 Specifies the name of LADSPA plugin library to load. If the environment
3613 variable @env{LADSPA_PATH} is defined, the LADSPA plugin is searched in
3614 each one of the directories specified by the colon separated list in
3615 @env{LADSPA_PATH}, otherwise in the standard LADSPA paths, which are in
3616 this order: @file{HOME/.ladspa/lib/}, @file{/usr/local/lib/ladspa/},
3617 @file{/usr/lib/ladspa/}.
3618
3619 @item plugin, p
3620 Specifies the plugin within the library. Some libraries contain only
3621 one plugin, but others contain many of them. If this is not set filter
3622 will list all available plugins within the specified library.
3623
3624 @item controls, c
3625 Set the '|' separated list of controls which are zero or more floating point
3626 values that determine the behavior of the loaded plugin (for example delay,
3627 threshold or gain).
3628 Controls need to be defined using the following syntax:
3629 c0=@var{value0}|c1=@var{value1}|c2=@var{value2}|..., where
3630 @var{valuei} is the value set on the @var{i}-th control.
3631 Alternatively they can be also defined using the following syntax:
3632 @var{value0}|@var{value1}|@var{value2}|..., where
3633 @var{valuei} is the value set on the @var{i}-th control.
3634 If @option{controls} is set to @code{help}, all available controls and
3635 their valid ranges are printed.
3636
3637 @item sample_rate, s
3638 Specify the sample rate, default to 44100. Only used if plugin have
3639 zero inputs.
3640
3641 @item nb_samples, n
3642 Set the number of samples per channel per each output frame, default
3643 is 1024. Only used if plugin have zero inputs.
3644
3645 @item duration, d
3646 Set the minimum duration of the sourced audio. See
3647 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
3648 for the accepted syntax.
3649 Note that the resulting duration may be greater than the specified duration,
3650 as the generated audio is always cut at the end of a complete frame.
3651 If not specified, or the expressed duration is negative, the audio is
3652 supposed to be generated forever.
3653 Only used if plugin have zero inputs.
3654
3655 @end table
3656
3657 @subsection Examples
3658
3659 @itemize
3660 @item
3661 List all available plugins within amp (LADSPA example plugin) library:
3662 @example
3663 ladspa=file=amp
3664 @end example
3665
3666 @item
3667 List all available controls and their valid ranges for @code{vcf_notch}
3668 plugin from @code{VCF} library:
3669 @example
3670 ladspa=f=vcf:p=vcf_notch:c=help
3671 @end example
3672
3673 @item
3674 Simulate low quality audio equipment using @code{Computer Music Toolkit} (CMT)
3675 plugin library:
3676 @example
3677 ladspa=file=cmt:plugin=lofi:controls=c0=22|c1=12|c2=12
3678 @end example
3679
3680 @item
3681 Add reverberation to the audio using TAP-plugins
3682 (Tom's Audio Processing plugins):
3683 @example
3684 ladspa=file=tap_reverb:tap_reverb
3685 @end example
3686
3687 @item
3688 Generate white noise, with 0.2 amplitude:
3689 @example
3690 ladspa=file=cmt:noise_source_white:c=c0=.2
3691 @end example
3692
3693 @item
3694 Generate 20 bpm clicks using plugin @code{C* Click - Metronome} from the
3695 @code{C* Audio Plugin Suite} (CAPS) library:
3696 @example
3697 ladspa=file=caps:Click:c=c1=20'
3698 @end example
3699
3700 @item
3701 Apply @code{C* Eq10X2 - Stereo 10-band equaliser} effect:
3702 @example
3703 ladspa=caps:Eq10X2:c=c0=-48|c9=-24|c3=12|c4=2
3704 @end example
3705
3706 @item
3707 Increase volume by 20dB using fast lookahead limiter from Steve Harris
3708 @code{SWH Plugins} collection:
3709 @example
3710 ladspa=fast_lookahead_limiter_1913:fastLookaheadLimiter:20|0|2
3711 @end example
3712
3713 @item
3714 Attenuate low frequencies using Multiband EQ from Steve Harris
3715 @code{SWH Plugins} collection:
3716 @example
3717 ladspa=mbeq_1197:mbeq:-24|-24|-24|0|0|0|0|0|0|0|0|0|0|0|0
3718 @end example
3719
3720 @item
3721 Reduce stereo image using @code{Narrower} from the @code{C* Audio Plugin Suite}
3722 (CAPS) library:
3723 @example
3724 ladspa=caps:Narrower
3725 @end example
3726
3727 @item
3728 Another white noise, now using @code{C* Audio Plugin Suite} (CAPS) library:
3729 @example
3730 ladspa=caps:White:.2
3731 @end example
3732
3733 @item
3734 Some fractal noise, using @code{C* Audio Plugin Suite} (CAPS) library:
3735 @example
3736 ladspa=caps:Fractal:c=c1=1
3737 @end example
3738
3739 @item
3740 Dynamic volume normalization using @code{VLevel} plugin:
3741 @example
3742 ladspa=vlevel-ladspa:vlevel_mono
3743 @end example
3744 @end itemize
3745
3746 @subsection Commands
3747
3748 This filter supports the following commands:
3749 @table @option
3750 @item cN
3751 Modify the @var{N}-th control value.
3752
3753 If the specified value is not valid, it is ignored and prior one is kept.
3754 @end table
3755
3756 @section loudnorm
3757
3758 EBU R128 loudness normalization. Includes both dynamic and linear normalization modes.
3759 Support for both single pass (livestreams, files) and double pass (files) modes.
3760 This algorithm can target IL, LRA, and maximum true peak. To accurately detect true peaks,
3761 the audio stream will be upsampled to 192 kHz unless the normalization mode is linear.
3762 Use the @code{-ar} option or @code{aresample} filter to explicitly set an output sample rate.
3763
3764 The filter accepts the following options:
3765
3766 @table @option
3767 @item I, i
3768 Set integrated loudness target.
3769 Range is -70.0 - -5.0. Default value is -24.0.
3770
3771 @item LRA, lra
3772 Set loudness range target.
3773 Range is 1.0 - 20.0. Default value is 7.0.
3774
3775 @item TP, tp
3776 Set maximum true peak.
3777 Range is -9.0 - +0.0. Default value is -2.0.
3778
3779 @item measured_I, measured_i
3780 Measured IL of input file.
3781 Range is -99.0 - +0.0.
3782
3783 @item measured_LRA, measured_lra
3784 Measured LRA of input file.
3785 Range is  0.0 - 99.0.
3786
3787 @item measured_TP, measured_tp
3788 Measured true peak of input file.
3789 Range is  -99.0 - +99.0.
3790
3791 @item measured_thresh
3792 Measured threshold of input file.
3793 Range is -99.0 - +0.0.
3794
3795 @item offset
3796 Set offset gain. Gain is applied before the true-peak limiter.
3797 Range is  -99.0 - +99.0. Default is +0.0.
3798
3799 @item linear
3800 Normalize linearly if possible.
3801 measured_I, measured_LRA, measured_TP, and measured_thresh must also
3802 to be specified in order to use this mode.
3803 Options are true or false. Default is true.
3804
3805 @item dual_mono
3806 Treat mono input files as "dual-mono". If a mono file is intended for playback
3807 on a stereo system, its EBU R128 measurement will be perceptually incorrect.
3808 If set to @code{true}, this option will compensate for this effect.
3809 Multi-channel input files are not affected by this option.
3810 Options are true or false. Default is false.
3811
3812 @item print_format
3813 Set print format for stats. Options are summary, json, or none.
3814 Default value is none.
3815 @end table
3816
3817 @section lowpass
3818
3819 Apply a low-pass filter with 3dB point frequency.
3820 The filter can be either single-pole or double-pole (the default).
3821 The filter roll off at 6dB per pole per octave (20dB per pole per decade).
3822
3823 The filter accepts the following options:
3824
3825 @table @option
3826 @item frequency, f
3827 Set frequency in Hz. Default is 500.
3828
3829 @item poles, p
3830 Set number of poles. Default is 2.
3831
3832 @item width_type, t
3833 Set method to specify band-width of filter.
3834 @table @option
3835 @item h
3836 Hz
3837 @item q
3838 Q-Factor
3839 @item o
3840 octave
3841 @item s
3842 slope
3843 @item k
3844 kHz
3845 @end table
3846
3847 @item width, w
3848 Specify the band-width of a filter in width_type units.
3849 Applies only to double-pole filter.
3850 The default is 0.707q and gives a Butterworth response.
3851
3852 @item channels, c
3853 Specify which channels to filter, by default all available are filtered.
3854 @end table
3855
3856 @subsection Examples
3857 @itemize
3858 @item
3859 Lowpass only LFE channel, it LFE is not present it does nothing:
3860 @example
3861 lowpass=c=LFE
3862 @end example
3863 @end itemize
3864
3865 @subsection Commands
3866
3867 This filter supports the following commands:
3868 @table @option
3869 @item frequency, f
3870 Change lowpass frequency.
3871 Syntax for the command is : "@var{frequency}"
3872
3873 @item width_type, t
3874 Change lowpass width_type.
3875 Syntax for the command is : "@var{width_type}"
3876
3877 @item width, w
3878 Change lowpass width.
3879 Syntax for the command is : "@var{width}"
3880 @end table
3881
3882 @section lv2
3883
3884 Load a LV2 (LADSPA Version 2) plugin.
3885
3886 To enable compilation of this filter you need to configure FFmpeg with
3887 @code{--enable-lv2}.
3888
3889 @table @option
3890 @item plugin, p
3891 Specifies the plugin URI. You may need to escape ':'.
3892
3893 @item controls, c
3894 Set the '|' separated list of controls which are zero or more floating point
3895 values that determine the behavior of the loaded plugin (for example delay,
3896 threshold or gain).
3897 If @option{controls} is set to @code{help}, all available controls and
3898 their valid ranges are printed.
3899
3900 @item sample_rate, s
3901 Specify the sample rate, default to 44100. Only used if plugin have
3902 zero inputs.
3903
3904 @item nb_samples, n
3905 Set the number of samples per channel per each output frame, default
3906 is 1024. Only used if plugin have zero inputs.
3907
3908 @item duration, d
3909 Set the minimum duration of the sourced audio. See
3910 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
3911 for the accepted syntax.
3912 Note that the resulting duration may be greater than the specified duration,
3913 as the generated audio is always cut at the end of a complete frame.
3914 If not specified, or the expressed duration is negative, the audio is
3915 supposed to be generated forever.
3916 Only used if plugin have zero inputs.
3917 @end table
3918
3919 @subsection Examples
3920
3921 @itemize
3922 @item
3923 Apply bass enhancer plugin from Calf:
3924 @example
3925 lv2=p=http\\\\://calf.sourceforge.net/plugins/BassEnhancer:c=amount=2
3926 @end example
3927
3928 @item
3929 Apply vinyl plugin from Calf:
3930 @example
3931 lv2=p=http\\\\://calf.sourceforge.net/plugins/Vinyl:c=drone=0.2|aging=0.5
3932 @end example
3933
3934 @item
3935 Apply bit crusher plugin from ArtyFX:
3936 @example
3937 lv2=p=http\\\\://www.openavproductions.com/artyfx#bitta:c=crush=0.3
3938 @end example
3939 @end itemize
3940
3941 @section mcompand
3942 Multiband Compress or expand the audio's dynamic range.
3943
3944 The input audio is divided into bands using 4th order Linkwitz-Riley IIRs.
3945 This is akin to the crossover of a loudspeaker, and results in flat frequency
3946 response when absent compander action.
3947
3948 It accepts the following parameters:
3949
3950 @table @option
3951 @item args
3952 This option syntax is:
3953 attack,decay,[attack,decay..] soft-knee points crossover_frequency [delay [initial_volume [gain]]] | attack,decay ...
3954 For explanation of each item refer to compand filter documentation.
3955 @end table
3956
3957 @anchor{pan}
3958 @section pan
3959
3960 Mix channels with specific gain levels. The filter accepts the output
3961 channel layout followed by a set of channels definitions.
3962
3963 This filter is also designed to efficiently remap the channels of an audio
3964 stream.
3965
3966 The filter accepts parameters of the form:
3967 "@var{l}|@var{outdef}|@var{outdef}|..."
3968
3969 @table @option
3970 @item l
3971 output channel layout or number of channels
3972
3973 @item outdef
3974 output channel specification, of the form:
3975 "@var{out_name}=[@var{gain}*]@var{in_name}[(+-)[@var{gain}*]@var{in_name}...]"
3976
3977 @item out_name
3978 output channel to define, either a channel name (FL, FR, etc.) or a channel
3979 number (c0, c1, etc.)
3980
3981 @item gain
3982 multiplicative coefficient for the channel, 1 leaving the volume unchanged
3983
3984 @item in_name
3985 input channel to use, see out_name for details; it is not possible to mix
3986 named and numbered input channels
3987 @end table
3988
3989 If the `=' in a channel specification is replaced by `<', then the gains for
3990 that specification will be renormalized so that the total is 1, thus
3991 avoiding clipping noise.
3992
3993 @subsection Mixing examples
3994
3995 For example, if you want to down-mix from stereo to mono, but with a bigger
3996 factor for the left channel:
3997 @example
3998 pan=1c|c0=0.9*c0+0.1*c1
3999 @end example
4000
4001 A customized down-mix to stereo that works automatically for 3-, 4-, 5- and
4002 7-channels surround:
4003 @example
4004 pan=stereo| FL < FL + 0.5*FC + 0.6*BL + 0.6*SL | FR < FR + 0.5*FC + 0.6*BR + 0.6*SR
4005 @end example
4006
4007 Note that @command{ffmpeg} integrates a default down-mix (and up-mix) system
4008 that should be preferred (see "-ac" option) unless you have very specific
4009 needs.
4010
4011 @subsection Remapping examples
4012
4013 The channel remapping will be effective if, and only if:
4014
4015 @itemize
4016 @item gain coefficients are zeroes or ones,
4017 @item only one input per channel output,
4018 @end itemize
4019
4020 If all these conditions are satisfied, the filter will notify the user ("Pure
4021 channel mapping detected"), and use an optimized and lossless method to do the
4022 remapping.
4023
4024 For example, if you have a 5.1 source and want a stereo audio stream by
4025 dropping the extra channels:
4026 @example
4027 pan="stereo| c0=FL | c1=FR"
4028 @end example
4029
4030 Given the same source, you can also switch front left and front right channels
4031 and keep the input channel layout:
4032 @example
4033 pan="5.1| c0=c1 | c1=c0 | c2=c2 | c3=c3 | c4=c4 | c5=c5"
4034 @end example
4035
4036 If the input is a stereo audio stream, you can mute the front left channel (and
4037 still keep the stereo channel layout) with:
4038 @example
4039 pan="stereo|c1=c1"
4040 @end example
4041
4042 Still with a stereo audio stream input, you can copy the right channel in both
4043 front left and right:
4044 @example
4045 pan="stereo| c0=FR | c1=FR"
4046 @end example
4047
4048 @section replaygain
4049
4050 ReplayGain scanner filter. This filter takes an audio stream as an input and
4051 outputs it unchanged.
4052 At end of filtering it displays @code{track_gain} and @code{track_peak}.
4053
4054 @section resample
4055
4056 Convert the audio sample format, sample rate and channel layout. It is
4057 not meant to be used directly.
4058
4059 @section rubberband
4060 Apply time-stretching and pitch-shifting with librubberband.
4061
4062 To enable compilation of this filter, you need to configure FFmpeg with
4063 @code{--enable-librubberband}.
4064
4065 The filter accepts the following options:
4066
4067 @table @option
4068 @item tempo
4069 Set tempo scale factor.
4070
4071 @item pitch
4072 Set pitch scale factor.
4073
4074 @item transients
4075 Set transients detector.
4076 Possible values are:
4077 @table @var
4078 @item crisp
4079 @item mixed
4080 @item smooth
4081 @end table
4082
4083 @item detector
4084 Set detector.
4085 Possible values are:
4086 @table @var
4087 @item compound
4088 @item percussive
4089 @item soft
4090 @end table
4091
4092 @item phase
4093 Set phase.
4094 Possible values are:
4095 @table @var
4096 @item laminar
4097 @item independent
4098 @end table
4099
4100 @item window
4101 Set processing window size.
4102 Possible values are:
4103 @table @var
4104 @item standard
4105 @item short
4106 @item long
4107 @end table
4108
4109 @item smoothing
4110 Set smoothing.
4111 Possible values are:
4112 @table @var
4113 @item off
4114 @item on
4115 @end table
4116
4117 @item formant
4118 Enable formant preservation when shift pitching.
4119 Possible values are:
4120 @table @var
4121 @item shifted
4122 @item preserved
4123 @end table
4124
4125 @item pitchq
4126 Set pitch quality.
4127 Possible values are:
4128 @table @var
4129 @item quality
4130 @item speed
4131 @item consistency
4132 @end table
4133
4134 @item channels
4135 Set channels.
4136 Possible values are:
4137 @table @var
4138 @item apart
4139 @item together
4140 @end table
4141 @end table
4142
4143 @section sidechaincompress
4144
4145 This filter acts like normal compressor but has the ability to compress
4146 detected signal using second input signal.
4147 It needs two input streams and returns one output stream.
4148 First input stream will be processed depending on second stream signal.
4149 The filtered signal then can be filtered with other filters in later stages of
4150 processing. See @ref{pan} and @ref{amerge} filter.
4151
4152 The filter accepts the following options:
4153
4154 @table @option
4155 @item level_in
4156 Set input gain. Default is 1. Range is between 0.015625 and 64.
4157
4158 @item threshold
4159 If a signal of second stream raises above this level it will affect the gain
4160 reduction of first stream.
4161 By default is 0.125. Range is between 0.00097563 and 1.
4162
4163 @item ratio
4164 Set a ratio about which the signal is reduced. 1:2 means that if the level
4165 raised 4dB above the threshold, it will be only 2dB above after the reduction.
4166 Default is 2. Range is between 1 and 20.
4167
4168 @item attack
4169 Amount of milliseconds the signal has to rise above the threshold before gain
4170 reduction starts. Default is 20. Range is between 0.01 and 2000.
4171
4172 @item release
4173 Amount of milliseconds the signal has to fall below the threshold before
4174 reduction is decreased again. Default is 250. Range is between 0.01 and 9000.
4175
4176 @item makeup
4177 Set the amount by how much signal will be amplified after processing.
4178 Default is 1. Range is from 1 to 64.
4179
4180 @item knee
4181 Curve the sharp knee around the threshold to enter gain reduction more softly.
4182 Default is 2.82843. Range is between 1 and 8.
4183
4184 @item link
4185 Choose if the @code{average} level between all channels of side-chain stream
4186 or the louder(@code{maximum}) channel of side-chain stream affects the
4187 reduction. Default is @code{average}.
4188
4189 @item detection
4190 Should the exact signal be taken in case of @code{peak} or an RMS one in case
4191 of @code{rms}. Default is @code{rms} which is mainly smoother.
4192
4193 @item level_sc
4194 Set sidechain gain. Default is 1. Range is between 0.015625 and 64.
4195
4196 @item mix
4197 How much to use compressed signal in output. Default is 1.
4198 Range is between 0 and 1.
4199 @end table
4200
4201 @subsection Examples
4202
4203 @itemize
4204 @item
4205 Full ffmpeg example taking 2 audio inputs, 1st input to be compressed
4206 depending on the signal of 2nd input and later compressed signal to be
4207 merged with 2nd input:
4208 @example
4209 ffmpeg -i main.flac -i sidechain.flac -filter_complex "[1:a]asplit=2[sc][mix];[0:a][sc]sidechaincompress[compr];[compr][mix]amerge"
4210 @end example
4211 @end itemize
4212
4213 @section sidechaingate
4214
4215 A sidechain gate acts like a normal (wideband) gate but has the ability to
4216 filter the detected signal before sending it to the gain reduction stage.
4217 Normally a gate uses the full range signal to detect a level above the
4218 threshold.
4219 For example: If you cut all lower frequencies from your sidechain signal
4220 the gate will decrease the volume of your track only if not enough highs
4221 appear. With this technique you are able to reduce the resonation of a
4222 natural drum or remove "rumbling" of muted strokes from a heavily distorted
4223 guitar.
4224 It needs two input streams and returns one output stream.
4225 First input stream will be processed depending on second stream signal.
4226
4227 The filter accepts the following options:
4228
4229 @table @option
4230 @item level_in
4231 Set input level before filtering.
4232 Default is 1. Allowed range is from 0.015625 to 64.
4233
4234 @item range
4235 Set the level of gain reduction when the signal is below the threshold.
4236 Default is 0.06125. Allowed range is from 0 to 1.
4237
4238 @item threshold
4239 If a signal rises above this level the gain reduction is released.
4240 Default is 0.125. Allowed range is from 0 to 1.
4241
4242 @item ratio
4243 Set a ratio about which the signal is reduced.
4244 Default is 2. Allowed range is from 1 to 9000.
4245
4246 @item attack
4247 Amount of milliseconds the signal has to rise above the threshold before gain
4248 reduction stops.
4249 Default is 20 milliseconds. Allowed range is from 0.01 to 9000.
4250
4251 @item release
4252 Amount of milliseconds the signal has to fall below the threshold before the
4253 reduction is increased again. Default is 250 milliseconds.
4254 Allowed range is from 0.01 to 9000.
4255
4256 @item makeup
4257 Set amount of amplification of signal after processing.
4258 Default is 1. Allowed range is from 1 to 64.
4259
4260 @item knee
4261 Curve the sharp knee around the threshold to enter gain reduction more softly.
4262 Default is 2.828427125. Allowed range is from 1 to 8.
4263
4264 @item detection
4265 Choose if exact signal should be taken for detection or an RMS like one.
4266 Default is rms. Can be peak or rms.
4267
4268 @item link
4269 Choose if the average level between all channels or the louder channel affects
4270 the reduction.
4271 Default is average. Can be average or maximum.
4272
4273 @item level_sc
4274 Set sidechain gain. Default is 1. Range is from 0.015625 to 64.
4275 @end table
4276
4277 @section silencedetect
4278
4279 Detect silence in an audio stream.
4280
4281 This filter logs a message when it detects that the input audio volume is less
4282 or equal to a noise tolerance value for a duration greater or equal to the
4283 minimum detected noise duration.
4284
4285 The printed times and duration are expressed in seconds.
4286
4287 The filter accepts the following options:
4288
4289 @table @option
4290 @item noise, n
4291 Set noise tolerance. Can be specified in dB (in case "dB" is appended to the
4292 specified value) or amplitude ratio. Default is -60dB, or 0.001.
4293
4294 @item duration, d
4295 Set silence duration until notification (default is 2 seconds).
4296
4297 @item mono, m
4298 Process each channel separately, instead of combined. By default is disabled.
4299 @end table
4300
4301 @subsection Examples
4302
4303 @itemize
4304 @item
4305 Detect 5 seconds of silence with -50dB noise tolerance:
4306 @example
4307 silencedetect=n=-50dB:d=5
4308 @end example
4309
4310 @item
4311 Complete example with @command{ffmpeg} to detect silence with 0.0001 noise
4312 tolerance in @file{silence.mp3}:
4313 @example
4314 ffmpeg -i silence.mp3 -af silencedetect=noise=0.0001 -f null -
4315 @end example
4316 @end itemize
4317
4318 @section silenceremove
4319
4320 Remove silence from the beginning, middle or end of the audio.
4321
4322 The filter accepts the following options:
4323
4324 @table @option
4325 @item start_periods
4326 This value is used to indicate if audio should be trimmed at beginning of
4327 the audio. A value of zero indicates no silence should be trimmed from the
4328 beginning. When specifying a non-zero value, it trims audio up until it
4329 finds non-silence. Normally, when trimming silence from beginning of audio
4330 the @var{start_periods} will be @code{1} but it can be increased to higher
4331 values to trim all audio up to specific count of non-silence periods.
4332 Default value is @code{0}.
4333
4334 @item start_duration
4335 Specify the amount of time that non-silence must be detected before it stops
4336 trimming audio. By increasing the duration, bursts of noises can be treated
4337 as silence and trimmed off. Default value is @code{0}.
4338
4339 @item start_threshold
4340 This indicates what sample value should be treated as silence. For digital
4341 audio, a value of @code{0} may be fine but for audio recorded from analog,
4342 you may wish to increase the value to account for background noise.
4343 Can be specified in dB (in case "dB" is appended to the specified value)
4344 or amplitude ratio. Default value is @code{0}.
4345
4346 @item stop_periods
4347 Set the count for trimming silence from the end of audio.
4348 To remove silence from the middle of a file, specify a @var{stop_periods}
4349 that is negative. This value is then treated as a positive value and is
4350 used to indicate the effect should restart processing as specified by
4351 @var{start_periods}, making it suitable for removing periods of silence
4352 in the middle of the audio.
4353 Default value is @code{0}.
4354
4355 @item stop_duration
4356 Specify a duration of silence that must exist before audio is not copied any
4357 more. By specifying a higher duration, silence that is wanted can be left in
4358 the audio.
4359 Default value is @code{0}.
4360
4361 @item stop_threshold
4362 This is the same as @option{start_threshold} but for trimming silence from
4363 the end of audio.
4364 Can be specified in dB (in case "dB" is appended to the specified value)
4365 or amplitude ratio. Default value is @code{0}.
4366
4367 @item leave_silence
4368 This indicates that @var{stop_duration} length of audio should be left intact
4369 at the beginning of each period of silence.
4370 For example, if you want to remove long pauses between words but do not want
4371 to remove the pauses completely. Default value is @code{0}.
4372
4373 @item detection
4374 Set how is silence detected. Can be @code{rms} or @code{peak}. Second is faster
4375 and works better with digital silence which is exactly 0.
4376 Default value is @code{rms}.
4377
4378 @item window
4379 Set ratio used to calculate size of window for detecting silence.
4380 Default value is @code{0.02}. Allowed range is from @code{0} to @code{10}.
4381 @end table
4382
4383 @subsection Examples
4384
4385 @itemize
4386 @item
4387 The following example shows how this filter can be used to start a recording
4388 that does not contain the delay at the start which usually occurs between
4389 pressing the record button and the start of the performance:
4390 @example
4391 silenceremove=1:5:0.02
4392 @end example
4393
4394 @item
4395 Trim all silence encountered from beginning to end where there is more than 1
4396 second of silence in audio:
4397 @example
4398 silenceremove=0:0:0:-1:1:-90dB
4399 @end example
4400 @end itemize
4401
4402 @section sofalizer
4403
4404 SOFAlizer uses head-related transfer functions (HRTFs) to create virtual
4405 loudspeakers around the user for binaural listening via headphones (audio
4406 formats up to 9 channels supported).
4407 The HRTFs are stored in SOFA files (see @url{http://www.sofacoustics.org/} for a database).
4408 SOFAlizer is developed at the Acoustics Research Institute (ARI) of the
4409 Austrian Academy of Sciences.
4410
4411 To enable compilation of this filter you need to configure FFmpeg with
4412 @code{--enable-libmysofa}.
4413
4414 The filter accepts the following options:
4415
4416 @table @option
4417 @item sofa
4418 Set the SOFA file used for rendering.
4419
4420 @item gain
4421 Set gain applied to audio. Value is in dB. Default is 0.
4422
4423 @item rotation
4424 Set rotation of virtual loudspeakers in deg. Default is 0.
4425
4426 @item elevation
4427 Set elevation of virtual speakers in deg. Default is 0.
4428
4429 @item radius
4430 Set distance in meters between loudspeakers and the listener with near-field
4431 HRTFs. Default is 1.
4432
4433 @item type
4434 Set processing type. Can be @var{time} or @var{freq}. @var{time} is
4435 processing audio in time domain which is slow.
4436 @var{freq} is processing audio in frequency domain which is fast.
4437 Default is @var{freq}.
4438
4439 @item speakers
4440 Set custom positions of virtual loudspeakers. Syntax for this option is:
4441 <CH> <AZIM> <ELEV>[|<CH> <AZIM> <ELEV>|...].
4442 Each virtual loudspeaker is described with short channel name following with
4443 azimuth and elevation in degrees.
4444 Each virtual loudspeaker description is separated by '|'.
4445 For example to override front left and front right channel positions use:
4446 'speakers=FL 45 15|FR 345 15'.
4447 Descriptions with unrecognised channel names are ignored.
4448
4449 @item lfegain
4450 Set custom gain for LFE channels. Value is in dB. Default is 0.
4451 @end table
4452
4453 @subsection Examples
4454
4455 @itemize
4456 @item
4457 Using ClubFritz6 sofa file:
4458 @example
4459 sofalizer=sofa=/path/to/ClubFritz6.sofa:type=freq:radius=1
4460 @end example
4461
4462 @item
4463 Using ClubFritz12 sofa file and bigger radius with small rotation:
4464 @example
4465 sofalizer=sofa=/path/to/ClubFritz12.sofa:type=freq:radius=2:rotation=5
4466 @end example
4467
4468 @item
4469 Similar as above but with custom speaker positions for front left, front right, back left and back right
4470 and also with custom gain:
4471 @example
4472 "sofalizer=sofa=/path/to/ClubFritz6.sofa:type=freq:radius=2:speakers=FL 45|FR 315|BL 135|BR 225:gain=28"
4473 @end example
4474 @end itemize
4475
4476 @section stereotools
4477
4478 This filter has some handy utilities to manage stereo signals, for converting
4479 M/S stereo recordings to L/R signal while having control over the parameters
4480 or spreading the stereo image of master track.
4481
4482 The filter accepts the following options:
4483
4484 @table @option
4485 @item level_in
4486 Set input level before filtering for both channels. Defaults is 1.
4487 Allowed range is from 0.015625 to 64.
4488
4489 @item level_out
4490 Set output level after filtering for both channels. Defaults is 1.
4491 Allowed range is from 0.015625 to 64.
4492
4493 @item balance_in
4494 Set input balance between both channels. Default is 0.
4495 Allowed range is from -1 to 1.
4496
4497 @item balance_out
4498 Set output balance between both channels. Default is 0.
4499 Allowed range is from -1 to 1.
4500
4501 @item softclip
4502 Enable softclipping. Results in analog distortion instead of harsh digital 0dB
4503 clipping. Disabled by default.
4504
4505 @item mutel
4506 Mute the left channel. Disabled by default.
4507
4508 @item muter
4509 Mute the right channel. Disabled by default.
4510
4511 @item phasel
4512 Change the phase of the left channel. Disabled by default.
4513
4514 @item phaser
4515 Change the phase of the right channel. Disabled by default.
4516
4517 @item mode
4518 Set stereo mode. Available values are:
4519
4520 @table @samp
4521 @item lr>lr
4522 Left/Right to Left/Right, this is default.
4523
4524 @item lr>ms
4525 Left/Right to Mid/Side.
4526
4527 @item ms>lr
4528 Mid/Side to Left/Right.
4529
4530 @item lr>ll
4531 Left/Right to Left/Left.
4532
4533 @item lr>rr
4534 Left/Right to Right/Right.
4535
4536 @item lr>l+r
4537 Left/Right to Left + Right.
4538
4539 @item lr>rl
4540 Left/Right to Right/Left.
4541
4542 @item ms>ll
4543 Mid/Side to Left/Left.
4544
4545 @item ms>rr
4546 Mid/Side to Right/Right.
4547 @end table
4548
4549 @item slev
4550 Set level of side signal. Default is 1.
4551 Allowed range is from 0.015625 to 64.
4552
4553 @item sbal
4554 Set balance of side signal. Default is 0.
4555 Allowed range is from -1 to 1.
4556
4557 @item mlev
4558 Set level of the middle signal. Default is 1.
4559 Allowed range is from 0.015625 to 64.
4560
4561 @item mpan
4562 Set middle signal pan. Default is 0. Allowed range is from -1 to 1.
4563
4564 @item base
4565 Set stereo base between mono and inversed channels. Default is 0.
4566 Allowed range is from -1 to 1.
4567
4568 @item delay
4569 Set delay in milliseconds how much to delay left from right channel and
4570 vice versa. Default is 0. Allowed range is from -20 to 20.
4571
4572 @item sclevel
4573 Set S/C level. Default is 1. Allowed range is from 1 to 100.
4574
4575 @item phase
4576 Set the stereo phase in degrees. Default is 0. Allowed range is from 0 to 360.
4577
4578 @item bmode_in, bmode_out
4579 Set balance mode for balance_in/balance_out option.
4580
4581 Can be one of the following:
4582
4583 @table @samp
4584 @item balance
4585 Classic balance mode. Attenuate one channel at time.
4586 Gain is raised up to 1.
4587
4588 @item amplitude
4589 Similar as classic mode above but gain is raised up to 2.
4590
4591 @item power
4592 Equal power distribution, from -6dB to +6dB range.
4593 @end table
4594 @end table
4595
4596 @subsection Examples
4597
4598 @itemize
4599 @item
4600 Apply karaoke like effect:
4601 @example
4602 stereotools=mlev=0.015625
4603 @end example
4604
4605 @item
4606 Convert M/S signal to L/R:
4607 @example
4608 "stereotools=mode=ms>lr"
4609 @end example
4610 @end itemize
4611
4612 @section stereowiden
4613
4614 This filter enhance the stereo effect by suppressing signal common to both
4615 channels and by delaying the signal of left into right and vice versa,
4616 thereby widening the stereo effect.
4617
4618 The filter accepts the following options:
4619
4620 @table @option
4621 @item delay
4622 Time in milliseconds of the delay of left signal into right and vice versa.
4623 Default is 20 milliseconds.
4624
4625 @item feedback
4626 Amount of gain in delayed signal into right and vice versa. Gives a delay
4627 effect of left signal in right output and vice versa which gives widening
4628 effect. Default is 0.3.
4629
4630 @item crossfeed
4631 Cross feed of left into right with inverted phase. This helps in suppressing
4632 the mono. If the value is 1 it will cancel all the signal common to both
4633 channels. Default is 0.3.
4634
4635 @item drymix
4636 Set level of input signal of original channel. Default is 0.8.
4637 @end table
4638
4639 @section superequalizer
4640 Apply 18 band equalizer.
4641
4642 The filter accepts the following options:
4643 @table @option
4644 @item 1b
4645 Set 65Hz band gain.
4646 @item 2b
4647 Set 92Hz band gain.
4648 @item 3b
4649 Set 131Hz band gain.
4650 @item 4b
4651 Set 185Hz band gain.
4652 @item 5b
4653 Set 262Hz band gain.
4654 @item 6b
4655 Set 370Hz band gain.
4656 @item 7b
4657 Set 523Hz band gain.
4658 @item 8b
4659 Set 740Hz band gain.
4660 @item 9b
4661 Set 1047Hz band gain.
4662 @item 10b
4663 Set 1480Hz band gain.
4664 @item 11b
4665 Set 2093Hz band gain.
4666 @item 12b
4667 Set 2960Hz band gain.
4668 @item 13b
4669 Set 4186Hz band gain.
4670 @item 14b
4671 Set 5920Hz band gain.
4672 @item 15b
4673 Set 8372Hz band gain.
4674 @item 16b
4675 Set 11840Hz band gain.
4676 @item 17b
4677 Set 16744Hz band gain.
4678 @item 18b
4679 Set 20000Hz band gain.
4680 @end table
4681
4682 @section surround
4683 Apply audio surround upmix filter.
4684
4685 This filter allows to produce multichannel output from audio stream.
4686
4687 The filter accepts the following options:
4688
4689 @table @option
4690 @item chl_out
4691 Set output channel layout. By default, this is @var{5.1}.
4692
4693 See @ref{channel layout syntax,,the Channel Layout section in the ffmpeg-utils(1) manual,ffmpeg-utils}
4694 for the required syntax.
4695
4696 @item chl_in
4697 Set input channel layout. By default, this is @var{stereo}.
4698
4699 See @ref{channel layout syntax,,the Channel Layout section in the ffmpeg-utils(1) manual,ffmpeg-utils}
4700 for the required syntax.
4701
4702 @item level_in
4703 Set input volume level. By default, this is @var{1}.
4704
4705 @item level_out
4706 Set output volume level. By default, this is @var{1}.
4707
4708 @item lfe
4709 Enable LFE channel output if output channel layout has it. By default, this is enabled.
4710
4711 @item lfe_low
4712 Set LFE low cut off frequency. By default, this is @var{128} Hz.
4713
4714 @item lfe_high
4715 Set LFE high cut off frequency. By default, this is @var{256} Hz.
4716
4717 @item fc_in
4718 Set front center input volume. By default, this is @var{1}.
4719
4720 @item fc_out
4721 Set front center output volume. By default, this is @var{1}.
4722
4723 @item lfe_in
4724 Set LFE input volume. By default, this is @var{1}.
4725
4726 @item lfe_out
4727 Set LFE output volume. By default, this is @var{1}.
4728 @end table
4729
4730 @section treble, highshelf
4731
4732 Boost or cut treble (upper) frequencies of the audio using a two-pole
4733 shelving filter with a response similar to that of a standard
4734 hi-fi's tone-controls. This is also known as shelving equalisation (EQ).
4735
4736 The filter accepts the following options:
4737
4738 @table @option
4739 @item gain, g
4740 Give the gain at whichever is the lower of ~22 kHz and the
4741 Nyquist frequency. Its useful range is about -20 (for a large cut)
4742 to +20 (for a large boost). Beware of clipping when using a positive gain.
4743
4744 @item frequency, f
4745 Set the filter's central frequency and so can be used
4746 to extend or reduce the frequency range to be boosted or cut.
4747 The default value is @code{3000} Hz.
4748
4749 @item width_type, t
4750 Set method to specify band-width of filter.
4751 @table @option
4752 @item h
4753 Hz
4754 @item q
4755 Q-Factor
4756 @item o
4757 octave
4758 @item s
4759 slope
4760 @item k
4761 kHz
4762 @end table
4763
4764 @item width, w
4765 Determine how steep is the filter's shelf transition.
4766
4767 @item channels, c
4768 Specify which channels to filter, by default all available are filtered.
4769 @end table
4770
4771 @subsection Commands
4772
4773 This filter supports the following commands:
4774 @table @option
4775 @item frequency, f
4776 Change treble frequency.
4777 Syntax for the command is : "@var{frequency}"
4778
4779 @item width_type, t
4780 Change treble width_type.
4781 Syntax for the command is : "@var{width_type}"
4782
4783 @item width, w
4784 Change treble width.
4785 Syntax for the command is : "@var{width}"
4786
4787 @item gain, g
4788 Change treble gain.
4789 Syntax for the command is : "@var{gain}"
4790 @end table
4791
4792 @section tremolo
4793
4794 Sinusoidal amplitude modulation.
4795
4796 The filter accepts the following options:
4797
4798 @table @option
4799 @item f
4800 Modulation frequency in Hertz. Modulation frequencies in the subharmonic range
4801 (20 Hz or lower) will result in a tremolo effect.
4802 This filter may also be used as a ring modulator by specifying
4803 a modulation frequency higher than 20 Hz.
4804 Range is 0.1 - 20000.0. Default value is 5.0 Hz.
4805
4806 @item d
4807 Depth of modulation as a percentage. Range is 0.0 - 1.0.
4808 Default value is 0.5.
4809 @end table
4810
4811 @section vibrato
4812
4813 Sinusoidal phase modulation.
4814
4815 The filter accepts the following options:
4816
4817 @table @option
4818 @item f
4819 Modulation frequency in Hertz.
4820 Range is 0.1 - 20000.0. Default value is 5.0 Hz.
4821
4822 @item d
4823 Depth of modulation as a percentage. Range is 0.0 - 1.0.
4824 Default value is 0.5.
4825 @end table
4826
4827 @section volume
4828
4829 Adjust the input audio volume.
4830
4831 It accepts the following parameters:
4832 @table @option
4833
4834 @item volume
4835 Set audio volume expression.
4836
4837 Output values are clipped to the maximum value.
4838
4839 The output audio volume is given by the relation:
4840 @example
4841 @var{output_volume} = @var{volume} * @var{input_volume}
4842 @end example
4843
4844 The default value for @var{volume} is "1.0".
4845
4846 @item precision
4847 This parameter represents the mathematical precision.
4848
4849 It determines which input sample formats will be allowed, which affects the
4850 precision of the volume scaling.
4851
4852 @table @option
4853 @item fixed
4854 8-bit fixed-point; this limits input sample format to U8, S16, and S32.
4855 @item float
4856 32-bit floating-point; this limits input sample format to FLT. (default)
4857 @item double
4858 64-bit floating-point; this limits input sample format to DBL.
4859 @end table
4860
4861 @item replaygain
4862 Choose the behaviour on encountering ReplayGain side data in input frames.
4863
4864 @table @option
4865 @item drop
4866 Remove ReplayGain side data, ignoring its contents (the default).
4867
4868 @item ignore
4869 Ignore ReplayGain side data, but leave it in the frame.
4870
4871 @item track
4872 Prefer the track gain, if present.
4873
4874 @item album
4875 Prefer the album gain, if present.
4876 @end table
4877
4878 @item replaygain_preamp
4879 Pre-amplification gain in dB to apply to the selected replaygain gain.
4880
4881 Default value for @var{replaygain_preamp} is 0.0.
4882
4883 @item eval
4884 Set when the volume expression is evaluated.
4885
4886 It accepts the following values:
4887 @table @samp
4888 @item once
4889 only evaluate expression once during the filter initialization, or
4890 when the @samp{volume} command is sent
4891
4892 @item frame
4893 evaluate expression for each incoming frame
4894 @end table
4895
4896 Default value is @samp{once}.
4897 @end table
4898
4899 The volume expression can contain the following parameters.
4900
4901 @table @option
4902 @item n
4903 frame number (starting at zero)
4904 @item nb_channels
4905 number of channels
4906 @item nb_consumed_samples
4907 number of samples consumed by the filter
4908 @item nb_samples
4909 number of samples in the current frame
4910 @item pos
4911 original frame position in the file
4912 @item pts
4913 frame PTS
4914 @item sample_rate
4915 sample rate
4916 @item startpts
4917 PTS at start of stream
4918 @item startt
4919 time at start of stream
4920 @item t
4921 frame time
4922 @item tb
4923 timestamp timebase
4924 @item volume
4925 last set volume value
4926 @end table
4927
4928 Note that when @option{eval} is set to @samp{once} only the
4929 @var{sample_rate} and @var{tb} variables are available, all other
4930 variables will evaluate to NAN.
4931
4932 @subsection Commands
4933
4934 This filter supports the following commands:
4935 @table @option
4936 @item volume
4937 Modify the volume expression.
4938 The command accepts the same syntax of the corresponding option.
4939
4940 If the specified expression is not valid, it is kept at its current
4941 value.
4942 @item replaygain_noclip
4943 Prevent clipping by limiting the gain applied.
4944
4945 Default value for @var{replaygain_noclip} is 1.
4946
4947 @end table
4948
4949 @subsection Examples
4950
4951 @itemize
4952 @item
4953 Halve the input audio volume:
4954 @example
4955 volume=volume=0.5
4956 volume=volume=1/2
4957 volume=volume=-6.0206dB
4958 @end example
4959
4960 In all the above example the named key for @option{volume} can be
4961 omitted, for example like in:
4962 @example
4963 volume=0.5
4964 @end example
4965
4966 @item
4967 Increase input audio power by 6 decibels using fixed-point precision:
4968 @example
4969 volume=volume=6dB:precision=fixed
4970 @end example
4971
4972 @item
4973 Fade volume after time 10 with an annihilation period of 5 seconds:
4974 @example
4975 volume='if(lt(t,10),1,max(1-(t-10)/5,0))':eval=frame
4976 @end example
4977 @end itemize
4978
4979 @section volumedetect
4980
4981 Detect the volume of the input video.
4982
4983 The filter has no parameters. The input is not modified. Statistics about
4984 the volume will be printed in the log when the input stream end is reached.
4985
4986 In particular it will show the mean volume (root mean square), maximum
4987 volume (on a per-sample basis), and the beginning of a histogram of the
4988 registered volume values (from the maximum value to a cumulated 1/1000 of
4989 the samples).
4990
4991 All volumes are in decibels relative to the maximum PCM value.
4992
4993 @subsection Examples
4994
4995 Here is an excerpt of the output:
4996 @example
4997 [Parsed_volumedetect_0 @ 0xa23120] mean_volume: -27 dB
4998 [Parsed_volumedetect_0 @ 0xa23120] max_volume: -4 dB
4999 [Parsed_volumedetect_0 @ 0xa23120] histogram_4db: 6
5000 [Parsed_volumedetect_0 @ 0xa23120] histogram_5db: 62
5001 [Parsed_volumedetect_0 @ 0xa23120] histogram_6db: 286
5002 [Parsed_volumedetect_0 @ 0xa23120] histogram_7db: 1042
5003 [Parsed_volumedetect_0 @ 0xa23120] histogram_8db: 2551
5004 [Parsed_volumedetect_0 @ 0xa23120] histogram_9db: 4609
5005 [Parsed_volumedetect_0 @ 0xa23120] histogram_10db: 8409
5006 @end example
5007
5008 It means that:
5009 @itemize
5010 @item
5011 The mean square energy is approximately -27 dB, or 10^-2.7.
5012 @item
5013 The largest sample is at -4 dB, or more precisely between -4 dB and -5 dB.
5014 @item
5015 There are 6 samples at -4 dB, 62 at -5 dB, 286 at -6 dB, etc.
5016 @end itemize
5017
5018 In other words, raising the volume by +4 dB does not cause any clipping,
5019 raising it by +5 dB causes clipping for 6 samples, etc.
5020
5021 @c man end AUDIO FILTERS
5022
5023 @chapter Audio Sources
5024 @c man begin AUDIO SOURCES
5025
5026 Below is a description of the currently available audio sources.
5027
5028 @section abuffer
5029
5030 Buffer audio frames, and make them available to the filter chain.
5031
5032 This source is mainly intended for a programmatic use, in particular
5033 through the interface defined in @file{libavfilter/asrc_abuffer.h}.
5034
5035 It accepts the following parameters:
5036 @table @option
5037
5038 @item time_base
5039 The timebase which will be used for timestamps of submitted frames. It must be
5040 either a floating-point number or in @var{numerator}/@var{denominator} form.
5041
5042 @item sample_rate
5043 The sample rate of the incoming audio buffers.
5044
5045 @item sample_fmt
5046 The sample format of the incoming audio buffers.
5047 Either a sample format name or its corresponding integer representation from
5048 the enum AVSampleFormat in @file{libavutil/samplefmt.h}
5049
5050 @item channel_layout
5051 The channel layout of the incoming audio buffers.
5052 Either a channel layout name from channel_layout_map in
5053 @file{libavutil/channel_layout.c} or its corresponding integer representation
5054 from the AV_CH_LAYOUT_* macros in @file{libavutil/channel_layout.h}
5055
5056 @item channels
5057 The number of channels of the incoming audio buffers.
5058 If both @var{channels} and @var{channel_layout} are specified, then they
5059 must be consistent.
5060
5061 @end table
5062
5063 @subsection Examples
5064
5065 @example
5066 abuffer=sample_rate=44100:sample_fmt=s16p:channel_layout=stereo
5067 @end example
5068
5069 will instruct the source to accept planar 16bit signed stereo at 44100Hz.
5070 Since the sample format with name "s16p" corresponds to the number
5071 6 and the "stereo" channel layout corresponds to the value 0x3, this is
5072 equivalent to:
5073 @example
5074 abuffer=sample_rate=44100:sample_fmt=6:channel_layout=0x3
5075 @end example
5076
5077 @section aevalsrc
5078
5079 Generate an audio signal specified by an expression.
5080
5081 This source accepts in input one or more expressions (one for each
5082 channel), which are evaluated and used to generate a corresponding
5083 audio signal.
5084
5085 This source accepts the following options:
5086
5087 @table @option
5088 @item exprs
5089 Set the '|'-separated expressions list for each separate channel. In case the
5090 @option{channel_layout} option is not specified, the selected channel layout
5091 depends on the number of provided expressions. Otherwise the last
5092 specified expression is applied to the remaining output channels.
5093
5094 @item channel_layout, c
5095 Set the channel layout. The number of channels in the specified layout
5096 must be equal to the number of specified expressions.
5097
5098 @item duration, d
5099 Set the minimum duration of the sourced audio. See
5100 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
5101 for the accepted syntax.
5102 Note that the resulting duration may be greater than the specified
5103 duration, as the generated audio is always cut at the end of a
5104 complete frame.
5105
5106 If not specified, or the expressed duration is negative, the audio is
5107 supposed to be generated forever.
5108
5109 @item nb_samples, n
5110 Set the number of samples per channel per each output frame,
5111 default to 1024.
5112
5113 @item sample_rate, s
5114 Specify the sample rate, default to 44100.
5115 @end table
5116
5117 Each expression in @var{exprs} can contain the following constants:
5118
5119 @table @option
5120 @item n
5121 number of the evaluated sample, starting from 0
5122
5123 @item t
5124 time of the evaluated sample expressed in seconds, starting from 0
5125
5126 @item s
5127 sample rate
5128
5129 @end table
5130
5131 @subsection Examples
5132
5133 @itemize
5134 @item
5135 Generate silence:
5136 @example
5137 aevalsrc=0
5138 @end example
5139
5140 @item
5141 Generate a sin signal with frequency of 440 Hz, set sample rate to
5142 8000 Hz:
5143 @example
5144 aevalsrc="sin(440*2*PI*t):s=8000"
5145 @end example
5146
5147 @item
5148 Generate a two channels signal, specify the channel layout (Front
5149 Center + Back Center) explicitly:
5150 @example
5151 aevalsrc="sin(420*2*PI*t)|cos(430*2*PI*t):c=FC|BC"
5152 @end example
5153
5154 @item
5155 Generate white noise:
5156 @example
5157 aevalsrc="-2+random(0)"
5158 @end example
5159
5160 @item
5161 Generate an amplitude modulated signal:
5162 @example
5163 aevalsrc="sin(10*2*PI*t)*sin(880*2*PI*t)"
5164 @end example
5165
5166 @item
5167 Generate 2.5 Hz binaural beats on a 360 Hz carrier:
5168 @example
5169 aevalsrc="0.1*sin(2*PI*(360-2.5/2)*t) | 0.1*sin(2*PI*(360+2.5/2)*t)"
5170 @end example
5171
5172 @end itemize
5173
5174 @section anullsrc
5175
5176 The null audio source, return unprocessed audio frames. It is mainly useful
5177 as a template and to be employed in analysis / debugging tools, or as
5178 the source for filters which ignore the input data (for example the sox
5179 synth filter).
5180
5181 This source accepts the following options:
5182
5183 @table @option
5184
5185 @item channel_layout, cl
5186
5187 Specifies the channel layout, and can be either an integer or a string
5188 representing a channel layout. The default value of @var{channel_layout}
5189 is "stereo".
5190
5191 Check the channel_layout_map definition in
5192 @file{libavutil/channel_layout.c} for the mapping between strings and
5193 channel layout values.
5194
5195 @item sample_rate, r
5196 Specifies the sample rate, and defaults to 44100.
5197
5198 @item nb_samples, n
5199 Set the number of samples per requested frames.
5200
5201 @end table
5202
5203 @subsection Examples
5204
5205 @itemize
5206 @item
5207 Set the sample rate to 48000 Hz and the channel layout to AV_CH_LAYOUT_MONO.
5208 @example
5209 anullsrc=r=48000:cl=4
5210 @end example
5211
5212 @item
5213 Do the same operation with a more obvious syntax:
5214 @example
5215 anullsrc=r=48000:cl=mono
5216 @end example
5217 @end itemize
5218
5219 All the parameters need to be explicitly defined.
5220
5221 @section flite
5222
5223 Synthesize a voice utterance using the libflite library.
5224
5225 To enable compilation of this filter you need to configure FFmpeg with
5226 @code{--enable-libflite}.
5227
5228 Note that versions of the flite library prior to 2.0 are not thread-safe.
5229
5230 The filter accepts the following options:
5231
5232 @table @option
5233
5234 @item list_voices
5235 If set to 1, list the names of the available voices and exit
5236 immediately. Default value is 0.
5237
5238 @item nb_samples, n
5239 Set the maximum number of samples per frame. Default value is 512.
5240
5241 @item textfile
5242 Set the filename containing the text to speak.
5243
5244 @item text
5245 Set the text to speak.
5246
5247 @item voice, v
5248 Set the voice to use for the speech synthesis. Default value is
5249 @code{kal}. See also the @var{list_voices} option.
5250 @end table
5251
5252 @subsection Examples
5253
5254 @itemize
5255 @item
5256 Read from file @file{speech.txt}, and synthesize the text using the
5257 standard flite voice:
5258 @example
5259 flite=textfile=speech.txt
5260 @end example
5261
5262 @item
5263 Read the specified text selecting the @code{slt} voice:
5264 @example
5265 flite=text='So fare thee well, poor devil of a Sub-Sub, whose commentator I am':voice=slt
5266 @end example
5267
5268 @item
5269 Input text to ffmpeg:
5270 @example
5271 ffmpeg -f lavfi -i flite=text='So fare thee well, poor devil of a Sub-Sub, whose commentator I am':voice=slt
5272 @end example
5273
5274 @item
5275 Make @file{ffplay} speak the specified text, using @code{flite} and
5276 the @code{lavfi} device:
5277 @example
5278 ffplay -f lavfi flite=text='No more be grieved for which that thou hast done.'
5279 @end example
5280 @end itemize
5281
5282 For more information about libflite, check:
5283 @url{http://www.festvox.org/flite/}
5284
5285 @section anoisesrc
5286
5287 Generate a noise audio signal.
5288
5289 The filter accepts the following options:
5290
5291 @table @option
5292 @item sample_rate, r
5293 Specify the sample rate. Default value is 48000 Hz.
5294
5295 @item amplitude, a
5296 Specify the amplitude (0.0 - 1.0) of the generated audio stream. Default value
5297 is 1.0.
5298
5299 @item duration, d
5300 Specify the duration of the generated audio stream. Not specifying this option
5301 results in noise with an infinite length.
5302
5303 @item color, colour, c
5304 Specify the color of noise. Available noise colors are white, pink, brown,
5305 blue and violet. Default color is white.
5306
5307 @item seed, s
5308 Specify a value used to seed the PRNG.
5309
5310 @item nb_samples, n
5311 Set the number of samples per each output frame, default is 1024.
5312 @end table
5313
5314 @subsection Examples
5315
5316 @itemize
5317
5318 @item
5319 Generate 60 seconds of pink noise, with a 44.1 kHz sampling rate and an amplitude of 0.5:
5320 @example
5321 anoisesrc=d=60:c=pink:r=44100:a=0.5
5322 @end example
5323 @end itemize
5324
5325 @section hilbert
5326
5327 Generate odd-tap Hilbert transform FIR coefficients.
5328
5329 The resulting stream can be used with @ref{afir} filter for phase-shifting
5330 the signal by 90 degrees.
5331
5332 This is used in many matrix coding schemes and for analytic signal generation.
5333 The process is often written as a multiplication by i (or j), the imaginary unit.
5334
5335 The filter accepts the following options:
5336
5337 @table @option
5338
5339 @item sample_rate, s
5340 Set sample rate, default is 44100.
5341
5342 @item taps, t
5343 Set length of FIR filter, default is 22051.
5344
5345 @item nb_samples, n
5346 Set number of samples per each frame.
5347
5348 @item win_func, w
5349 Set window function to be used when generating FIR coefficients.
5350 @end table
5351
5352 @section sine
5353
5354 Generate an audio signal made of a sine wave with amplitude 1/8.
5355
5356 The audio signal is bit-exact.
5357
5358 The filter accepts the following options:
5359
5360 @table @option
5361
5362 @item frequency, f
5363 Set the carrier frequency. Default is 440 Hz.
5364
5365 @item beep_factor, b
5366 Enable a periodic beep every second with frequency @var{beep_factor} times
5367 the carrier frequency. Default is 0, meaning the beep is disabled.
5368
5369 @item sample_rate, r
5370 Specify the sample rate, default is 44100.
5371
5372 @item duration, d
5373 Specify the duration of the generated audio stream.
5374
5375 @item samples_per_frame
5376 Set the number of samples per output frame.
5377
5378 The expression can contain the following constants:
5379
5380 @table @option
5381 @item n
5382 The (sequential) number of the output audio frame, starting from 0.
5383
5384 @item pts
5385 The PTS (Presentation TimeStamp) of the output audio frame,
5386 expressed in @var{TB} units.
5387
5388 @item t
5389 The PTS of the output audio frame, expressed in seconds.
5390
5391 @item TB
5392 The timebase of the output audio frames.
5393 @end table
5394
5395 Default is @code{1024}.
5396 @end table
5397
5398 @subsection Examples
5399
5400 @itemize
5401
5402 @item
5403 Generate a simple 440 Hz sine wave:
5404 @example
5405 sine
5406 @end example
5407
5408 @item
5409 Generate a 220 Hz sine wave with a 880 Hz beep each second, for 5 seconds:
5410 @example
5411 sine=220:4:d=5
5412 sine=f=220:b=4:d=5
5413 sine=frequency=220:beep_factor=4:duration=5
5414 @end example
5415
5416 @item
5417 Generate a 1 kHz sine wave following @code{1602,1601,1602,1601,1602} NTSC
5418 pattern:
5419 @example
5420 sine=1000:samples_per_frame='st(0,mod(n,5)); 1602-not(not(eq(ld(0),1)+eq(ld(0),3)))'
5421 @end example
5422 @end itemize
5423
5424 @c man end AUDIO SOURCES
5425
5426 @chapter Audio Sinks
5427 @c man begin AUDIO SINKS
5428
5429 Below is a description of the currently available audio sinks.
5430
5431 @section abuffersink
5432
5433 Buffer audio frames, and make them available to the end of filter chain.
5434
5435 This sink is mainly intended for programmatic use, in particular
5436 through the interface defined in @file{libavfilter/buffersink.h}
5437 or the options system.
5438
5439 It accepts a pointer to an AVABufferSinkContext structure, which
5440 defines the incoming buffers' formats, to be passed as the opaque
5441 parameter to @code{avfilter_init_filter} for initialization.
5442 @section anullsink
5443
5444 Null audio sink; do absolutely nothing with the input audio. It is
5445 mainly useful as a template and for use in analysis / debugging
5446 tools.
5447
5448 @c man end AUDIO SINKS
5449
5450 @chapter Video Filters
5451 @c man begin VIDEO FILTERS
5452
5453 When you configure your FFmpeg build, you can disable any of the
5454 existing filters using @code{--disable-filters}.
5455 The configure output will show the video filters included in your
5456 build.
5457
5458 Below is a description of the currently available video filters.
5459
5460 @section alphaextract
5461
5462 Extract the alpha component from the input as a grayscale video. This
5463 is especially useful with the @var{alphamerge} filter.
5464
5465 @section alphamerge
5466
5467 Add or replace the alpha component of the primary input with the
5468 grayscale value of a second input. This is intended for use with
5469 @var{alphaextract} to allow the transmission or storage of frame
5470 sequences that have alpha in a format that doesn't support an alpha
5471 channel.
5472
5473 For example, to reconstruct full frames from a normal YUV-encoded video
5474 and a separate video created with @var{alphaextract}, you might use:
5475 @example
5476 movie=in_alpha.mkv [alpha]; [in][alpha] alphamerge [out]
5477 @end example
5478
5479 Since this filter is designed for reconstruction, it operates on frame
5480 sequences without considering timestamps, and terminates when either
5481 input reaches end of stream. This will cause problems if your encoding
5482 pipeline drops frames. If you're trying to apply an image as an
5483 overlay to a video stream, consider the @var{overlay} filter instead.
5484
5485 @section amplify
5486
5487 Amplify differences between current pixel and pixels of adjacent frames in
5488 same pixel location.
5489
5490 This filter accepts the following options:
5491
5492 @table @option
5493 @item radius
5494 Set frame radius. Default is 2. Allowed range is from 1 to 63.
5495 For example radius of 3 will instruct filter to calculate average of 7 frames.
5496
5497 @item factor
5498 Set factor to amplify difference. Default is 2. Allowed range is from 0 to 65535.
5499
5500 @item threshold
5501 Set threshold for difference amplification. Any differrence greater or equal to
5502 this value will not alter source pixel. Default is 10.
5503 Allowed range is from 0 to 65535.
5504
5505 @item low
5506 Set lower limit for changing source pixel. Default is 65535. Allowed range is from 0 to 65535.
5507 This option controls maximum possible value that will decrease source pixel value.
5508
5509 @item high
5510 Set high limit for changing source pixel. Default is 65535. Allowed range is from 0 to 65535.
5511 This option controls maximum possible value that will increase source pixel value.
5512
5513 @item planes
5514 Set which planes to filter. Default is all. Allowed range is from 0 to 15.
5515 @end table
5516
5517 @section ass
5518
5519 Same as the @ref{subtitles} filter, except that it doesn't require libavcodec
5520 and libavformat to work. On the other hand, it is limited to ASS (Advanced
5521 Substation Alpha) subtitles files.
5522
5523 This filter accepts the following option in addition to the common options from
5524 the @ref{subtitles} filter:
5525
5526 @table @option
5527 @item shaping
5528 Set the shaping engine
5529
5530 Available values are:
5531 @table @samp
5532 @item auto
5533 The default libass shaping engine, which is the best available.
5534 @item simple
5535 Fast, font-agnostic shaper that can do only substitutions
5536 @item complex
5537 Slower shaper using OpenType for substitutions and positioning
5538 @end table
5539
5540 The default is @code{auto}.
5541 @end table
5542
5543 @section atadenoise
5544 Apply an Adaptive Temporal Averaging Denoiser to the video input.
5545
5546 The filter accepts the following options:
5547
5548 @table @option
5549 @item 0a
5550 Set threshold A for 1st plane. Default is 0.02.
5551 Valid range is 0 to 0.3.
5552
5553 @item 0b
5554 Set threshold B for 1st plane. Default is 0.04.
5555 Valid range is 0 to 5.
5556
5557 @item 1a
5558 Set threshold A for 2nd plane. Default is 0.02.
5559 Valid range is 0 to 0.3.
5560
5561 @item 1b
5562 Set threshold B for 2nd plane. Default is 0.04.
5563 Valid range is 0 to 5.
5564
5565 @item 2a
5566 Set threshold A for 3rd plane. Default is 0.02.
5567 Valid range is 0 to 0.3.
5568
5569 @item 2b
5570 Set threshold B for 3rd plane. Default is 0.04.
5571 Valid range is 0 to 5.
5572
5573 Threshold A is designed to react on abrupt changes in the input signal and
5574 threshold B is designed to react on continuous changes in the input signal.
5575
5576 @item s
5577 Set number of frames filter will use for averaging. Default is 9. Must be odd
5578 number in range [5, 129].
5579
5580 @item p
5581 Set what planes of frame filter will use for averaging. Default is all.
5582 @end table
5583
5584 @section avgblur
5585
5586 Apply average blur filter.
5587
5588 The filter accepts the following options:
5589
5590 @table @option
5591 @item sizeX
5592 Set horizontal radius size.
5593
5594 @item planes
5595 Set which planes to filter. By default all planes are filtered.
5596
5597 @item sizeY
5598 Set vertical radius size, if zero it will be same as @code{sizeX}.
5599 Default is @code{0}.
5600 @end table
5601
5602 @section bbox
5603
5604 Compute the bounding box for the non-black pixels in the input frame
5605 luminance plane.
5606
5607 This filter computes the bounding box containing all the pixels with a
5608 luminance value greater than the minimum allowed value.
5609 The parameters describing the bounding box are printed on the filter
5610 log.
5611
5612 The filter accepts the following option:
5613
5614 @table @option
5615 @item min_val
5616 Set the minimal luminance value. Default is @code{16}.
5617 @end table
5618
5619 @section bitplanenoise
5620
5621 Show and measure bit plane noise.
5622
5623 The filter accepts the following options:
5624
5625 @table @option
5626 @item bitplane
5627 Set which plane to analyze. Default is @code{1}.
5628
5629 @item filter
5630 Filter out noisy pixels from @code{bitplane} set above.
5631 Default is disabled.
5632 @end table
5633
5634 @section blackdetect
5635
5636 Detect video intervals that are (almost) completely black. Can be
5637 useful to detect chapter transitions, commercials, or invalid
5638 recordings. Output lines contains the time for the start, end and
5639 duration of the detected black interval expressed in seconds.
5640
5641 In order to display the output lines, you need to set the loglevel at
5642 least to the AV_LOG_INFO value.
5643
5644 The filter accepts the following options:
5645
5646 @table @option
5647 @item black_min_duration, d
5648 Set the minimum detected black duration expressed in seconds. It must
5649 be a non-negative floating point number.
5650
5651 Default value is 2.0.
5652
5653 @item picture_black_ratio_th, pic_th
5654 Set the threshold for considering a picture "black".
5655 Express the minimum value for the ratio:
5656 @example
5657 @var{nb_black_pixels} / @var{nb_pixels}
5658 @end example
5659
5660 for which a picture is considered black.
5661 Default value is 0.98.
5662
5663 @item pixel_black_th, pix_th
5664 Set the threshold for considering a pixel "black".
5665
5666 The threshold expresses the maximum pixel luminance value for which a
5667 pixel is considered "black". The provided value is scaled according to
5668 the following equation:
5669 @example
5670 @var{absolute_threshold} = @var{luminance_minimum_value} + @var{pixel_black_th} * @var{luminance_range_size}
5671 @end example
5672
5673 @var{luminance_range_size} and @var{luminance_minimum_value} depend on
5674 the input video format, the range is [0-255] for YUV full-range
5675 formats and [16-235] for YUV non full-range formats.
5676
5677 Default value is 0.10.
5678 @end table
5679
5680 The following example sets the maximum pixel threshold to the minimum
5681 value, and detects only black intervals of 2 or more seconds:
5682 @example
5683 blackdetect=d=2:pix_th=0.00
5684 @end example
5685
5686 @section blackframe
5687
5688 Detect frames that are (almost) completely black. Can be useful to
5689 detect chapter transitions or commercials. Output lines consist of
5690 the frame number of the detected frame, the percentage of blackness,
5691 the position in the file if known or -1 and the timestamp in seconds.
5692
5693 In order to display the output lines, you need to set the loglevel at
5694 least to the AV_LOG_INFO value.
5695
5696 This filter exports frame metadata @code{lavfi.blackframe.pblack}.
5697 The value represents the percentage of pixels in the picture that
5698 are below the threshold value.
5699
5700 It accepts the following parameters:
5701
5702 @table @option
5703
5704 @item amount
5705 The percentage of the pixels that have to be below the threshold; it defaults to
5706 @code{98}.
5707
5708 @item threshold, thresh
5709 The threshold below which a pixel value is considered black; it defaults to
5710 @code{32}.
5711
5712 @end table
5713
5714 @section blend, tblend
5715
5716 Blend two video frames into each other.
5717
5718 The @code{blend} filter takes two input streams and outputs one
5719 stream, the first input is the "top" layer and second input is
5720 "bottom" layer.  By default, the output terminates when the longest input terminates.
5721
5722 The @code{tblend} (time blend) filter takes two consecutive frames
5723 from one single stream, and outputs the result obtained by blending
5724 the new frame on top of the old frame.
5725
5726 A description of the accepted options follows.
5727
5728 @table @option
5729 @item c0_mode
5730 @item c1_mode
5731 @item c2_mode
5732 @item c3_mode
5733 @item all_mode
5734 Set blend mode for specific pixel component or all pixel components in case
5735 of @var{all_mode}. Default value is @code{normal}.
5736
5737 Available values for component modes are:
5738 @table @samp
5739 @item addition
5740 @item grainmerge
5741 @item and
5742 @item average
5743 @item burn
5744 @item darken
5745 @item difference
5746 @item grainextract
5747 @item divide
5748 @item dodge
5749 @item freeze
5750 @item exclusion
5751 @item extremity
5752 @item glow
5753 @item hardlight
5754 @item hardmix
5755 @item heat
5756 @item lighten
5757 @item linearlight
5758 @item multiply
5759 @item multiply128
5760 @item negation
5761 @item normal
5762 @item or
5763 @item overlay
5764 @item phoenix
5765 @item pinlight
5766 @item reflect
5767 @item screen
5768 @item softlight
5769 @item subtract
5770 @item vividlight
5771 @item xor
5772 @end table
5773
5774 @item c0_opacity
5775 @item c1_opacity
5776 @item c2_opacity
5777 @item c3_opacity
5778 @item all_opacity
5779 Set blend opacity for specific pixel component or all pixel components in case
5780 of @var{all_opacity}. Only used in combination with pixel component blend modes.
5781
5782 @item c0_expr
5783 @item c1_expr
5784 @item c2_expr
5785 @item c3_expr
5786 @item all_expr
5787 Set blend expression for specific pixel component or all pixel components in case
5788 of @var{all_expr}. Note that related mode options will be ignored if those are set.
5789
5790 The expressions can use the following variables:
5791
5792 @table @option
5793 @item N
5794 The sequential number of the filtered frame, starting from @code{0}.
5795
5796 @item X
5797 @item Y
5798 the coordinates of the current sample
5799
5800 @item W
5801 @item H
5802 the width and height of currently filtered plane
5803
5804 @item SW
5805 @item SH
5806 Width and height scale for the plane being filtered. It is the
5807 ratio between the dimensions of the current plane to the luma plane,
5808 e.g. for a @code{yuv420p} frame, the values are @code{1,1} for
5809 the luma plane and @code{0.5,0.5} for the chroma planes.
5810
5811 @item T
5812 Time of the current frame, expressed in seconds.
5813
5814 @item TOP, A
5815 Value of pixel component at current location for first video frame (top layer).
5816
5817 @item BOTTOM, B
5818 Value of pixel component at current location for second video frame (bottom layer).
5819 @end table
5820 @end table
5821
5822 The @code{blend} filter also supports the @ref{framesync} options.
5823
5824 @subsection Examples
5825
5826 @itemize
5827 @item
5828 Apply transition from bottom layer to top layer in first 10 seconds:
5829 @example
5830 blend=all_expr='A*(if(gte(T,10),1,T/10))+B*(1-(if(gte(T,10),1,T/10)))'
5831 @end example
5832
5833 @item
5834 Apply linear horizontal transition from top layer to bottom layer:
5835 @example
5836 blend=all_expr='A*(X/W)+B*(1-X/W)'
5837 @end example
5838
5839 @item
5840 Apply 1x1 checkerboard effect:
5841 @example
5842 blend=all_expr='if(eq(mod(X,2),mod(Y,2)),A,B)'
5843 @end example
5844
5845 @item
5846 Apply uncover left effect:
5847 @example
5848 blend=all_expr='if(gte(N*SW+X,W),A,B)'
5849 @end example
5850
5851 @item
5852 Apply uncover down effect:
5853 @example
5854 blend=all_expr='if(gte(Y-N*SH,0),A,B)'
5855 @end example
5856
5857 @item
5858 Apply uncover up-left effect:
5859 @example
5860 blend=all_expr='if(gte(T*SH*40+Y,H)*gte((T*40*SW+X)*W/H,W),A,B)'
5861 @end example
5862
5863 @item
5864 Split diagonally video and shows top and bottom layer on each side:
5865 @example
5866 blend=all_expr='if(gt(X,Y*(W/H)),A,B)'
5867 @end example
5868
5869 @item
5870 Display differences between the current and the previous frame:
5871 @example
5872 tblend=all_mode=grainextract
5873 @end example
5874 @end itemize
5875
5876 @section bm3d
5877
5878 Denoise frames using Block-Matching 3D algorithm.
5879
5880 The filter accepts the following options.
5881
5882 @table @option
5883 @item sigma
5884 Set denoising strength. Default value is 1.
5885 Allowed range is from 0 to 999.9.
5886 The denoising algorith is very sensitive to sigma, so adjust it
5887 according to the source.
5888
5889 @item block
5890 Set local patch size. This sets dimensions in 2D.
5891
5892 @item bstep
5893 Set sliding step for processing blocks. Default value is 4.
5894 Allowed range is from 1 to 64.
5895 Smaller values allows processing more reference blocks and is slower.
5896
5897 @item group
5898 Set maximal number of similar blocks for 3rd dimension. Default value is 1.
5899 When set to 1, no block matching is done. Larger values allows more blocks
5900 in single group.
5901 Allowed range is from 1 to 256.
5902
5903 @item range
5904 Set radius for search block matching. Default is 9.
5905 Allowed range is from 1 to INT32_MAX.
5906
5907 @item mstep
5908 Set step between two search locations for block matching. Default is 1.
5909 Allowed range is from 1 to 64. Smaller is slower.
5910
5911 @item thmse
5912 Set threshold of mean square error for block matching. Valid range is 0 to
5913 INT32_MAX.
5914
5915 @item hdthr
5916 Set thresholding parameter for hard thresholding in 3D transformed domain.
5917 Larger values results in stronger hard-thresholding filtering in frequency
5918 domain.
5919
5920 @item estim
5921 Set filtering estimation mode. Can be @code{basic} or @code{final}.
5922 Default is @code{basic}.
5923
5924 @item ref
5925 If enabled, filter will use 2nd stream for block matching.
5926 Default is disabled for @code{basic} value of @var{estim} option,
5927 and always enabled if value of @var{estim} is @code{final}.
5928
5929 @item planes
5930 Set planes to filter. Default is all available except alpha.
5931 @end table
5932
5933 @subsection Examples
5934
5935 @itemize
5936 @item
5937 Basic filtering with bm3d:
5938 @example
5939 bm3d=sigma=3:block=4:bstep=2:group=1:estim=basic
5940 @end example
5941
5942 @item
5943 Same as above, but filtering only luma:
5944 @example
5945 bm3d=sigma=3:block=4:bstep=2:group=1:estim=basic:planes=1
5946 @end example
5947
5948 @item
5949 Same as above, but with both estimation modes:
5950 @example
5951 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
5952 @end example
5953
5954 @item
5955 Same as above, but prefilter with @ref{nlmeans} filter instead:
5956 @example
5957 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
5958 @end example
5959 @end itemize
5960
5961 @section boxblur
5962
5963 Apply a boxblur algorithm to the input video.
5964
5965 It accepts the following parameters:
5966
5967 @table @option
5968
5969 @item luma_radius, lr
5970 @item luma_power, lp
5971 @item chroma_radius, cr
5972 @item chroma_power, cp
5973 @item alpha_radius, ar
5974 @item alpha_power, ap
5975
5976 @end table
5977
5978 A description of the accepted options follows.
5979
5980 @table @option
5981 @item luma_radius, lr
5982 @item chroma_radius, cr
5983 @item alpha_radius, ar
5984 Set an expression for the box radius in pixels used for blurring the
5985 corresponding input plane.
5986
5987 The radius value must be a non-negative number, and must not be
5988 greater than the value of the expression @code{min(w,h)/2} for the
5989 luma and alpha planes, and of @code{min(cw,ch)/2} for the chroma
5990 planes.
5991
5992 Default value for @option{luma_radius} is "2". If not specified,
5993 @option{chroma_radius} and @option{alpha_radius} default to the
5994 corresponding value set for @option{luma_radius}.
5995
5996 The expressions can contain the following constants:
5997 @table @option
5998 @item w
5999 @item h
6000 The input width and height in pixels.
6001
6002 @item cw
6003 @item ch
6004 The input chroma image width and height in pixels.
6005
6006 @item hsub
6007 @item vsub
6008 The horizontal and vertical chroma subsample values. For example, for the
6009 pixel format "yuv422p", @var{hsub} is 2 and @var{vsub} is 1.
6010 @end table
6011
6012 @item luma_power, lp
6013 @item chroma_power, cp
6014 @item alpha_power, ap
6015 Specify how many times the boxblur filter is applied to the
6016 corresponding plane.
6017
6018 Default value for @option{luma_power} is 2. If not specified,
6019 @option{chroma_power} and @option{alpha_power} default to the
6020 corresponding value set for @option{luma_power}.
6021
6022 A value of 0 will disable the effect.
6023 @end table
6024
6025 @subsection Examples
6026
6027 @itemize
6028 @item
6029 Apply a boxblur filter with the luma, chroma, and alpha radii
6030 set to 2:
6031 @example
6032 boxblur=luma_radius=2:luma_power=1
6033 boxblur=2:1
6034 @end example
6035
6036 @item
6037 Set the luma radius to 2, and alpha and chroma radius to 0:
6038 @example
6039 boxblur=2:1:cr=0:ar=0
6040 @end example
6041
6042 @item
6043 Set the luma and chroma radii to a fraction of the video dimension:
6044 @example
6045 boxblur=luma_radius=min(h\,w)/10:luma_power=1:chroma_radius=min(cw\,ch)/10:chroma_power=1
6046 @end example
6047 @end itemize
6048
6049 @section bwdif
6050
6051 Deinterlace the input video ("bwdif" stands for "Bob Weaver
6052 Deinterlacing Filter").
6053
6054 Motion adaptive deinterlacing based on yadif with the use of w3fdif and cubic
6055 interpolation algorithms.
6056 It accepts the following parameters:
6057
6058 @table @option
6059 @item mode
6060 The interlacing mode to adopt. It accepts one of the following values:
6061
6062 @table @option
6063 @item 0, send_frame
6064 Output one frame for each frame.
6065 @item 1, send_field
6066 Output one frame for each field.
6067 @end table
6068
6069 The default value is @code{send_field}.
6070
6071 @item parity
6072 The picture field parity assumed for the input interlaced video. It accepts one
6073 of the following values:
6074
6075 @table @option
6076 @item 0, tff
6077 Assume the top field is first.
6078 @item 1, bff
6079 Assume the bottom field is first.
6080 @item -1, auto
6081 Enable automatic detection of field parity.
6082 @end table
6083
6084 The default value is @code{auto}.
6085 If the interlacing is unknown or the decoder does not export this information,
6086 top field first will be assumed.
6087
6088 @item deint
6089 Specify which frames to deinterlace. Accept one of the following
6090 values:
6091
6092 @table @option
6093 @item 0, all
6094 Deinterlace all frames.
6095 @item 1, interlaced
6096 Only deinterlace frames marked as interlaced.
6097 @end table
6098
6099 The default value is @code{all}.
6100 @end table
6101
6102 @section chromakey
6103 YUV colorspace color/chroma keying.
6104
6105 The filter accepts the following options:
6106
6107 @table @option
6108 @item color
6109 The color which will be replaced with transparency.
6110
6111 @item similarity
6112 Similarity percentage with the key color.
6113
6114 0.01 matches only the exact key color, while 1.0 matches everything.
6115
6116 @item blend
6117 Blend percentage.
6118
6119 0.0 makes pixels either fully transparent, or not transparent at all.
6120
6121 Higher values result in semi-transparent pixels, with a higher transparency
6122 the more similar the pixels color is to the key color.
6123
6124 @item yuv
6125 Signals that the color passed is already in YUV instead of RGB.
6126
6127 Literal colors like "green" or "red" don't make sense with this enabled anymore.
6128 This can be used to pass exact YUV values as hexadecimal numbers.
6129 @end table
6130
6131 @subsection Examples
6132
6133 @itemize
6134 @item
6135 Make every green pixel in the input image transparent:
6136 @example
6137 ffmpeg -i input.png -vf chromakey=green out.png
6138 @end example
6139
6140 @item
6141 Overlay a greenscreen-video on top of a static black background.
6142 @example
6143 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
6144 @end example
6145 @end itemize
6146
6147 @section ciescope
6148
6149 Display CIE color diagram with pixels overlaid onto it.
6150
6151 The filter accepts the following options:
6152
6153 @table @option
6154 @item system
6155 Set color system.
6156
6157 @table @samp
6158 @item ntsc, 470m
6159 @item ebu, 470bg
6160 @item smpte
6161 @item 240m
6162 @item apple
6163 @item widergb
6164 @item cie1931
6165 @item rec709, hdtv
6166 @item uhdtv, rec2020
6167 @end table
6168
6169 @item cie
6170 Set CIE system.
6171
6172 @table @samp
6173 @item xyy
6174 @item ucs
6175 @item luv
6176 @end table
6177
6178 @item gamuts
6179 Set what gamuts to draw.
6180
6181 See @code{system} option for available values.
6182
6183 @item size, s
6184 Set ciescope size, by default set to 512.
6185
6186 @item intensity, i
6187 Set intensity used to map input pixel values to CIE diagram.
6188
6189 @item contrast
6190 Set contrast used to draw tongue colors that are out of active color system gamut.
6191
6192 @item corrgamma
6193 Correct gamma displayed on scope, by default enabled.
6194
6195 @item showwhite
6196 Show white point on CIE diagram, by default disabled.
6197
6198 @item gamma
6199 Set input gamma. Used only with XYZ input color space.
6200 @end table
6201
6202 @section codecview
6203
6204 Visualize information exported by some codecs.
6205
6206 Some codecs can export information through frames using side-data or other
6207 means. For example, some MPEG based codecs export motion vectors through the
6208 @var{export_mvs} flag in the codec @option{flags2} option.
6209
6210 The filter accepts the following option:
6211
6212 @table @option
6213 @item mv
6214 Set motion vectors to visualize.
6215
6216 Available flags for @var{mv} are:
6217
6218 @table @samp
6219 @item pf
6220 forward predicted MVs of P-frames
6221 @item bf
6222 forward predicted MVs of B-frames
6223 @item bb
6224 backward predicted MVs of B-frames
6225 @end table
6226
6227 @item qp
6228 Display quantization parameters using the chroma planes.
6229
6230 @item mv_type, mvt
6231 Set motion vectors type to visualize. Includes MVs from all frames unless specified by @var{frame_type} option.
6232
6233 Available flags for @var{mv_type} are:
6234
6235 @table @samp
6236 @item fp
6237 forward predicted MVs
6238 @item bp
6239 backward predicted MVs
6240 @end table
6241
6242 @item frame_type, ft
6243 Set frame type to visualize motion vectors of.
6244
6245 Available flags for @var{frame_type} are:
6246
6247 @table @samp
6248 @item if
6249 intra-coded frames (I-frames)
6250 @item pf
6251 predicted frames (P-frames)
6252 @item bf
6253 bi-directionally predicted frames (B-frames)
6254 @end table
6255 @end table
6256
6257 @subsection Examples
6258
6259 @itemize
6260 @item
6261 Visualize forward predicted MVs of all frames using @command{ffplay}:
6262 @example
6263 ffplay -flags2 +export_mvs input.mp4 -vf codecview=mv_type=fp
6264 @end example
6265
6266 @item
6267 Visualize multi-directionals MVs of P and B-Frames using @command{ffplay}:
6268 @example
6269 ffplay -flags2 +export_mvs input.mp4 -vf codecview=mv=pf+bf+bb
6270 @end example
6271 @end itemize
6272
6273 @section colorbalance
6274 Modify intensity of primary colors (red, green and blue) of input frames.
6275
6276 The filter allows an input frame to be adjusted in the shadows, midtones or highlights
6277 regions for the red-cyan, green-magenta or blue-yellow balance.
6278
6279 A positive adjustment value shifts the balance towards the primary color, a negative
6280 value towards the complementary color.
6281
6282 The filter accepts the following options:
6283
6284 @table @option
6285 @item rs
6286 @item gs
6287 @item bs
6288 Adjust red, green and blue shadows (darkest pixels).
6289
6290 @item rm
6291 @item gm
6292 @item bm
6293 Adjust red, green and blue midtones (medium pixels).
6294
6295 @item rh
6296 @item gh
6297 @item bh
6298 Adjust red, green and blue highlights (brightest pixels).
6299
6300 Allowed ranges for options are @code{[-1.0, 1.0]}. Defaults are @code{0}.
6301 @end table
6302
6303 @subsection Examples
6304
6305 @itemize
6306 @item
6307 Add red color cast to shadows:
6308 @example
6309 colorbalance=rs=.3
6310 @end example
6311 @end itemize
6312
6313 @section colorkey
6314 RGB colorspace color keying.
6315
6316 The filter accepts the following options:
6317
6318 @table @option
6319 @item color
6320 The color which will be replaced with transparency.
6321
6322 @item similarity
6323 Similarity percentage with the key color.
6324
6325 0.01 matches only the exact key color, while 1.0 matches everything.
6326
6327 @item blend
6328 Blend percentage.
6329
6330 0.0 makes pixels either fully transparent, or not transparent at all.
6331
6332 Higher values result in semi-transparent pixels, with a higher transparency
6333 the more similar the pixels color is to the key color.
6334 @end table
6335
6336 @subsection Examples
6337
6338 @itemize
6339 @item
6340 Make every green pixel in the input image transparent:
6341 @example
6342 ffmpeg -i input.png -vf colorkey=green out.png
6343 @end example
6344
6345 @item
6346 Overlay a greenscreen-video on top of a static background image.
6347 @example
6348 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
6349 @end example
6350 @end itemize
6351
6352 @section colorlevels
6353
6354 Adjust video input frames using levels.
6355
6356 The filter accepts the following options:
6357
6358 @table @option
6359 @item rimin
6360 @item gimin
6361 @item bimin
6362 @item aimin
6363 Adjust red, green, blue and alpha input black point.
6364 Allowed ranges for options are @code{[-1.0, 1.0]}. Defaults are @code{0}.
6365
6366 @item rimax
6367 @item gimax
6368 @item bimax
6369 @item aimax
6370 Adjust red, green, blue and alpha input white point.
6371 Allowed ranges for options are @code{[-1.0, 1.0]}. Defaults are @code{1}.
6372
6373 Input levels are used to lighten highlights (bright tones), darken shadows
6374 (dark tones), change the balance of bright and dark tones.
6375
6376 @item romin
6377 @item gomin
6378 @item bomin
6379 @item aomin
6380 Adjust red, green, blue and alpha output black point.
6381 Allowed ranges for options are @code{[0, 1.0]}. Defaults are @code{0}.
6382
6383 @item romax
6384 @item gomax
6385 @item bomax
6386 @item aomax
6387 Adjust red, green, blue and alpha output white point.
6388 Allowed ranges for options are @code{[0, 1.0]}. Defaults are @code{1}.
6389
6390 Output levels allows manual selection of a constrained output level range.
6391 @end table
6392
6393 @subsection Examples
6394
6395 @itemize
6396 @item
6397 Make video output darker:
6398 @example
6399 colorlevels=rimin=0.058:gimin=0.058:bimin=0.058
6400 @end example
6401
6402 @item
6403 Increase contrast:
6404 @example
6405 colorlevels=rimin=0.039:gimin=0.039:bimin=0.039:rimax=0.96:gimax=0.96:bimax=0.96
6406 @end example
6407
6408 @item
6409 Make video output lighter:
6410 @example
6411 colorlevels=rimax=0.902:gimax=0.902:bimax=0.902
6412 @end example
6413
6414 @item
6415 Increase brightness:
6416 @example
6417 colorlevels=romin=0.5:gomin=0.5:bomin=0.5
6418 @end example
6419 @end itemize
6420
6421 @section colorchannelmixer
6422
6423 Adjust video input frames by re-mixing color channels.
6424
6425 This filter modifies a color channel by adding the values associated to
6426 the other channels of the same pixels. For example if the value to
6427 modify is red, the output value will be:
6428 @example
6429 @var{red}=@var{red}*@var{rr} + @var{blue}*@var{rb} + @var{green}*@var{rg} + @var{alpha}*@var{ra}
6430 @end example
6431
6432 The filter accepts the following options:
6433
6434 @table @option
6435 @item rr
6436 @item rg
6437 @item rb
6438 @item ra
6439 Adjust contribution of input red, green, blue and alpha channels for output red channel.
6440 Default is @code{1} for @var{rr}, and @code{0} for @var{rg}, @var{rb} and @var{ra}.
6441
6442 @item gr
6443 @item gg
6444 @item gb
6445 @item ga
6446 Adjust contribution of input red, green, blue and alpha channels for output green channel.
6447 Default is @code{1} for @var{gg}, and @code{0} for @var{gr}, @var{gb} and @var{ga}.
6448
6449 @item br
6450 @item bg
6451 @item bb
6452 @item ba
6453 Adjust contribution of input red, green, blue and alpha channels for output blue channel.
6454 Default is @code{1} for @var{bb}, and @code{0} for @var{br}, @var{bg} and @var{ba}.
6455
6456 @item ar
6457 @item ag
6458 @item ab
6459 @item aa
6460 Adjust contribution of input red, green, blue and alpha channels for output alpha channel.
6461 Default is @code{1} for @var{aa}, and @code{0} for @var{ar}, @var{ag} and @var{ab}.
6462
6463 Allowed ranges for options are @code{[-2.0, 2.0]}.
6464 @end table
6465
6466 @subsection Examples
6467
6468 @itemize
6469 @item
6470 Convert source to grayscale:
6471 @example
6472 colorchannelmixer=.3:.4:.3:0:.3:.4:.3:0:.3:.4:.3
6473 @end example
6474 @item
6475 Simulate sepia tones:
6476 @example
6477 colorchannelmixer=.393:.769:.189:0:.349:.686:.168:0:.272:.534:.131
6478 @end example
6479 @end itemize
6480
6481 @section colormatrix
6482
6483 Convert color matrix.
6484
6485 The filter accepts the following options:
6486
6487 @table @option
6488 @item src
6489 @item dst
6490 Specify the source and destination color matrix. Both values must be
6491 specified.
6492
6493 The accepted values are:
6494 @table @samp
6495 @item bt709
6496 BT.709
6497
6498 @item fcc
6499 FCC
6500
6501 @item bt601
6502 BT.601
6503
6504 @item bt470
6505 BT.470
6506
6507 @item bt470bg
6508 BT.470BG
6509
6510 @item smpte170m
6511 SMPTE-170M
6512
6513 @item smpte240m
6514 SMPTE-240M
6515
6516 @item bt2020
6517 BT.2020
6518 @end table
6519 @end table
6520
6521 For example to convert from BT.601 to SMPTE-240M, use the command:
6522 @example
6523 colormatrix=bt601:smpte240m
6524 @end example
6525
6526 @section colorspace
6527
6528 Convert colorspace, transfer characteristics or color primaries.
6529 Input video needs to have an even size.
6530
6531 The filter accepts the following options:
6532
6533 @table @option
6534 @anchor{all}
6535 @item all
6536 Specify all color properties at once.
6537
6538 The accepted values are:
6539 @table @samp
6540 @item bt470m
6541 BT.470M
6542
6543 @item bt470bg
6544 BT.470BG
6545
6546 @item bt601-6-525
6547 BT.601-6 525
6548
6549 @item bt601-6-625
6550 BT.601-6 625
6551
6552 @item bt709
6553 BT.709
6554
6555 @item smpte170m
6556 SMPTE-170M
6557
6558 @item smpte240m
6559 SMPTE-240M
6560
6561 @item bt2020
6562 BT.2020
6563
6564 @end table
6565
6566 @anchor{space}
6567 @item space
6568 Specify output colorspace.
6569
6570 The accepted values are:
6571 @table @samp
6572 @item bt709
6573 BT.709
6574
6575 @item fcc
6576 FCC
6577
6578 @item bt470bg
6579 BT.470BG or BT.601-6 625
6580
6581 @item smpte170m
6582 SMPTE-170M or BT.601-6 525
6583
6584 @item smpte240m
6585 SMPTE-240M
6586
6587 @item ycgco
6588 YCgCo
6589
6590 @item bt2020ncl
6591 BT.2020 with non-constant luminance
6592
6593 @end table
6594
6595 @anchor{trc}
6596 @item trc
6597 Specify output transfer characteristics.
6598
6599 The accepted values are:
6600 @table @samp
6601 @item bt709
6602 BT.709
6603
6604 @item bt470m
6605 BT.470M
6606
6607 @item bt470bg
6608 BT.470BG
6609
6610 @item gamma22
6611 Constant gamma of 2.2
6612
6613 @item gamma28
6614 Constant gamma of 2.8
6615
6616 @item smpte170m
6617 SMPTE-170M, BT.601-6 625 or BT.601-6 525
6618
6619 @item smpte240m
6620 SMPTE-240M
6621
6622 @item srgb
6623 SRGB
6624
6625 @item iec61966-2-1
6626 iec61966-2-1
6627
6628 @item iec61966-2-4
6629 iec61966-2-4
6630
6631 @item xvycc
6632 xvycc
6633
6634 @item bt2020-10
6635 BT.2020 for 10-bits content
6636
6637 @item bt2020-12
6638 BT.2020 for 12-bits content
6639
6640 @end table
6641
6642 @anchor{primaries}
6643 @item primaries
6644 Specify output color primaries.
6645
6646 The accepted values are:
6647 @table @samp
6648 @item bt709
6649 BT.709
6650
6651 @item bt470m
6652 BT.470M
6653
6654 @item bt470bg
6655 BT.470BG or BT.601-6 625
6656
6657 @item smpte170m
6658 SMPTE-170M or BT.601-6 525
6659
6660 @item smpte240m
6661 SMPTE-240M
6662
6663 @item film
6664 film
6665
6666 @item smpte431
6667 SMPTE-431
6668
6669 @item smpte432
6670 SMPTE-432
6671
6672 @item bt2020
6673 BT.2020
6674
6675 @item jedec-p22
6676 JEDEC P22 phosphors
6677
6678 @end table
6679
6680 @anchor{range}
6681 @item range
6682 Specify output color range.
6683
6684 The accepted values are:
6685 @table @samp
6686 @item tv
6687 TV (restricted) range
6688
6689 @item mpeg
6690 MPEG (restricted) range
6691
6692 @item pc
6693 PC (full) range
6694
6695 @item jpeg
6696 JPEG (full) range
6697
6698 @end table
6699
6700 @item format
6701 Specify output color format.
6702
6703 The accepted values are:
6704 @table @samp
6705 @item yuv420p
6706 YUV 4:2:0 planar 8-bits
6707
6708 @item yuv420p10
6709 YUV 4:2:0 planar 10-bits
6710
6711 @item yuv420p12
6712 YUV 4:2:0 planar 12-bits
6713
6714 @item yuv422p
6715 YUV 4:2:2 planar 8-bits
6716
6717 @item yuv422p10
6718 YUV 4:2:2 planar 10-bits
6719
6720 @item yuv422p12
6721 YUV 4:2:2 planar 12-bits
6722
6723 @item yuv444p
6724 YUV 4:4:4 planar 8-bits
6725
6726 @item yuv444p10
6727 YUV 4:4:4 planar 10-bits
6728
6729 @item yuv444p12
6730 YUV 4:4:4 planar 12-bits
6731
6732 @end table
6733
6734 @item fast
6735 Do a fast conversion, which skips gamma/primary correction. This will take
6736 significantly less CPU, but will be mathematically incorrect. To get output
6737 compatible with that produced by the colormatrix filter, use fast=1.
6738
6739 @item dither
6740 Specify dithering mode.
6741
6742 The accepted values are:
6743 @table @samp
6744 @item none
6745 No dithering
6746
6747 @item fsb
6748 Floyd-Steinberg dithering
6749 @end table
6750
6751 @item wpadapt
6752 Whitepoint adaptation mode.
6753
6754 The accepted values are:
6755 @table @samp
6756 @item bradford
6757 Bradford whitepoint adaptation
6758
6759 @item vonkries
6760 von Kries whitepoint adaptation
6761
6762 @item identity
6763 identity whitepoint adaptation (i.e. no whitepoint adaptation)
6764 @end table
6765
6766 @item iall
6767 Override all input properties at once. Same accepted values as @ref{all}.
6768
6769 @item ispace
6770 Override input colorspace. Same accepted values as @ref{space}.
6771
6772 @item iprimaries
6773 Override input color primaries. Same accepted values as @ref{primaries}.
6774
6775 @item itrc
6776 Override input transfer characteristics. Same accepted values as @ref{trc}.
6777
6778 @item irange
6779 Override input color range. Same accepted values as @ref{range}.
6780
6781 @end table
6782
6783 The filter converts the transfer characteristics, color space and color
6784 primaries to the specified user values. The output value, if not specified,
6785 is set to a default value based on the "all" property. If that property is
6786 also not specified, the filter will log an error. The output color range and
6787 format default to the same value as the input color range and format. The
6788 input transfer characteristics, color space, color primaries and color range
6789 should be set on the input data. If any of these are missing, the filter will
6790 log an error and no conversion will take place.
6791
6792 For example to convert the input to SMPTE-240M, use the command:
6793 @example
6794 colorspace=smpte240m
6795 @end example
6796
6797 @section convolution
6798
6799 Apply convolution of 3x3, 5x5, 7x7 or horizontal/vertical up to 49 elements.
6800
6801 The filter accepts the following options:
6802
6803 @table @option
6804 @item 0m
6805 @item 1m
6806 @item 2m
6807 @item 3m
6808 Set matrix for each plane.
6809 Matrix is sequence of 9, 25 or 49 signed integers in @var{square} mode,
6810 and from 1 to 49 odd number of signed integers in @var{row} mode.
6811
6812 @item 0rdiv
6813 @item 1rdiv
6814 @item 2rdiv
6815 @item 3rdiv
6816 Set multiplier for calculated value for each plane.
6817 If unset or 0, it will be sum of all matrix elements.
6818
6819 @item 0bias
6820 @item 1bias
6821 @item 2bias
6822 @item 3bias
6823 Set bias for each plane. This value is added to the result of the multiplication.
6824 Useful for making the overall image brighter or darker. Default is 0.0.
6825
6826 @item 0mode
6827 @item 1mode
6828 @item 2mode
6829 @item 3mode
6830 Set matrix mode for each plane. Can be @var{square}, @var{row} or @var{column}.
6831 Default is @var{square}.
6832 @end table
6833
6834 @subsection Examples
6835
6836 @itemize
6837 @item
6838 Apply sharpen:
6839 @example
6840 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"
6841 @end example
6842
6843 @item
6844 Apply blur:
6845 @example
6846 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"
6847 @end example
6848
6849 @item
6850 Apply edge enhance:
6851 @example
6852 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"
6853 @end example
6854
6855 @item
6856 Apply edge detect:
6857 @example
6858 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"
6859 @end example
6860
6861 @item
6862 Apply laplacian edge detector which includes diagonals:
6863 @example
6864 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"
6865 @end example
6866
6867 @item
6868 Apply emboss:
6869 @example
6870 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"
6871 @end example
6872 @end itemize
6873
6874 @section convolve
6875
6876 Apply 2D convolution of video stream in frequency domain using second stream
6877 as impulse.
6878
6879 The filter accepts the following options:
6880
6881 @table @option
6882 @item planes
6883 Set which planes to process.
6884
6885 @item impulse
6886 Set which impulse video frames will be processed, can be @var{first}
6887 or @var{all}. Default is @var{all}.
6888 @end table
6889
6890 The @code{convolve} filter also supports the @ref{framesync} options.
6891
6892 @section copy
6893
6894 Copy the input video source unchanged to the output. This is mainly useful for
6895 testing purposes.
6896
6897 @anchor{coreimage}
6898 @section coreimage
6899 Video filtering on GPU using Apple's CoreImage API on OSX.
6900
6901 Hardware acceleration is based on an OpenGL context. Usually, this means it is
6902 processed by video hardware. However, software-based OpenGL implementations
6903 exist which means there is no guarantee for hardware processing. It depends on
6904 the respective OSX.
6905
6906 There are many filters and image generators provided by Apple that come with a
6907 large variety of options. The filter has to be referenced by its name along
6908 with its options.
6909
6910 The coreimage filter accepts the following options:
6911 @table @option
6912 @item list_filters
6913 List all available filters and generators along with all their respective
6914 options as well as possible minimum and maximum values along with the default
6915 values.
6916 @example
6917 list_filters=true
6918 @end example
6919
6920 @item filter
6921 Specify all filters by their respective name and options.
6922 Use @var{list_filters} to determine all valid filter names and options.
6923 Numerical options are specified by a float value and are automatically clamped
6924 to their respective value range.  Vector and color options have to be specified
6925 by a list of space separated float values. Character escaping has to be done.
6926 A special option name @code{default} is available to use default options for a
6927 filter.
6928
6929 It is required to specify either @code{default} or at least one of the filter options.
6930 All omitted options are used with their default values.
6931 The syntax of the filter string is as follows:
6932 @example
6933 filter=<NAME>@@<OPTION>=<VALUE>[@@<OPTION>=<VALUE>][@@...][#<NAME>@@<OPTION>=<VALUE>[@@<OPTION>=<VALUE>][@@...]][#...]
6934 @end example
6935
6936 @item output_rect
6937 Specify a rectangle where the output of the filter chain is copied into the
6938 input image. It is given by a list of space separated float values:
6939 @example
6940 output_rect=x\ y\ width\ height
6941 @end example
6942 If not given, the output rectangle equals the dimensions of the input image.
6943 The output rectangle is automatically cropped at the borders of the input
6944 image. Negative values are valid for each component.
6945 @example
6946 output_rect=25\ 25\ 100\ 100
6947 @end example
6948 @end table
6949
6950 Several filters can be chained for successive processing without GPU-HOST
6951 transfers allowing for fast processing of complex filter chains.
6952 Currently, only filters with zero (generators) or exactly one (filters) input
6953 image and one output image are supported. Also, transition filters are not yet
6954 usable as intended.
6955
6956 Some filters generate output images with additional padding depending on the
6957 respective filter kernel. The padding is automatically removed to ensure the
6958 filter output has the same size as the input image.
6959
6960 For image generators, the size of the output image is determined by the
6961 previous output image of the filter chain or the input image of the whole
6962 filterchain, respectively. The generators do not use the pixel information of
6963 this image to generate their output. However, the generated output is
6964 blended onto this image, resulting in partial or complete coverage of the
6965 output image.
6966
6967 The @ref{coreimagesrc} video source can be used for generating input images
6968 which are directly fed into the filter chain. By using it, providing input
6969 images by another video source or an input video is not required.
6970
6971 @subsection Examples
6972
6973 @itemize
6974
6975 @item
6976 List all filters available:
6977 @example
6978 coreimage=list_filters=true
6979 @end example
6980
6981 @item
6982 Use the CIBoxBlur filter with default options to blur an image:
6983 @example
6984 coreimage=filter=CIBoxBlur@@default
6985 @end example
6986
6987 @item
6988 Use a filter chain with CISepiaTone at default values and CIVignetteEffect with
6989 its center at 100x100 and a radius of 50 pixels:
6990 @example
6991 coreimage=filter=CIBoxBlur@@default#CIVignetteEffect@@inputCenter=100\ 100@@inputRadius=50
6992 @end example
6993
6994 @item
6995 Use nullsrc and CIQRCodeGenerator to create a QR code for the FFmpeg homepage,
6996 given as complete and escaped command-line for Apple's standard bash shell:
6997 @example
6998 ffmpeg -f lavfi -i nullsrc=s=100x100,coreimage=filter=CIQRCodeGenerator@@inputMessage=https\\\\\://FFmpeg.org/@@inputCorrectionLevel=H -frames:v 1 QRCode.png
6999 @end example
7000 @end itemize
7001
7002 @section crop
7003
7004 Crop the input video to given dimensions.
7005
7006 It accepts the following parameters:
7007
7008 @table @option
7009 @item w, out_w
7010 The width of the output video. It defaults to @code{iw}.
7011 This expression is evaluated only once during the filter
7012 configuration, or when the @samp{w} or @samp{out_w} command is sent.
7013
7014 @item h, out_h
7015 The height of the output video. It defaults to @code{ih}.
7016 This expression is evaluated only once during the filter
7017 configuration, or when the @samp{h} or @samp{out_h} command is sent.
7018
7019 @item x
7020 The horizontal position, in the input video, of the left edge of the output
7021 video. It defaults to @code{(in_w-out_w)/2}.
7022 This expression is evaluated per-frame.
7023
7024 @item y
7025 The vertical position, in the input video, of the top edge of the output video.
7026 It defaults to @code{(in_h-out_h)/2}.
7027 This expression is evaluated per-frame.
7028
7029 @item keep_aspect
7030 If set to 1 will force the output display aspect ratio
7031 to be the same of the input, by changing the output sample aspect
7032 ratio. It defaults to 0.
7033
7034 @item exact
7035 Enable exact cropping. If enabled, subsampled videos will be cropped at exact
7036 width/height/x/y as specified and will not be rounded to nearest smaller value.
7037 It defaults to 0.
7038 @end table
7039
7040 The @var{out_w}, @var{out_h}, @var{x}, @var{y} parameters are
7041 expressions containing the following constants:
7042
7043 @table @option
7044 @item x
7045 @item y
7046 The computed values for @var{x} and @var{y}. They are evaluated for
7047 each new frame.
7048
7049 @item in_w
7050 @item in_h
7051 The input width and height.
7052
7053 @item iw
7054 @item ih
7055 These are the same as @var{in_w} and @var{in_h}.
7056
7057 @item out_w
7058 @item out_h
7059 The output (cropped) width and height.
7060
7061 @item ow
7062 @item oh
7063 These are the same as @var{out_w} and @var{out_h}.
7064
7065 @item a
7066 same as @var{iw} / @var{ih}
7067
7068 @item sar
7069 input sample aspect ratio
7070
7071 @item dar
7072 input display aspect ratio, it is the same as (@var{iw} / @var{ih}) * @var{sar}
7073
7074 @item hsub
7075 @item vsub
7076 horizontal and vertical chroma subsample values. For example for the
7077 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
7078
7079 @item n
7080 The number of the input frame, starting from 0.
7081
7082 @item pos
7083 the position in the file of the input frame, NAN if unknown
7084
7085 @item t
7086 The timestamp expressed in seconds. It's NAN if the input timestamp is unknown.
7087
7088 @end table
7089
7090 The expression for @var{out_w} may depend on the value of @var{out_h},
7091 and the expression for @var{out_h} may depend on @var{out_w}, but they
7092 cannot depend on @var{x} and @var{y}, as @var{x} and @var{y} are
7093 evaluated after @var{out_w} and @var{out_h}.
7094
7095 The @var{x} and @var{y} parameters specify the expressions for the
7096 position of the top-left corner of the output (non-cropped) area. They
7097 are evaluated for each frame. If the evaluated value is not valid, it
7098 is approximated to the nearest valid value.
7099
7100 The expression for @var{x} may depend on @var{y}, and the expression
7101 for @var{y} may depend on @var{x}.
7102
7103 @subsection Examples
7104
7105 @itemize
7106 @item
7107 Crop area with size 100x100 at position (12,34).
7108 @example
7109 crop=100:100:12:34
7110 @end example
7111
7112 Using named options, the example above becomes:
7113 @example
7114 crop=w=100:h=100:x=12:y=34
7115 @end example
7116
7117 @item
7118 Crop the central input area with size 100x100:
7119 @example
7120 crop=100:100
7121 @end example
7122
7123 @item
7124 Crop the central input area with size 2/3 of the input video:
7125 @example
7126 crop=2/3*in_w:2/3*in_h
7127 @end example
7128
7129 @item
7130 Crop the input video central square:
7131 @example
7132 crop=out_w=in_h
7133 crop=in_h
7134 @end example
7135
7136 @item
7137 Delimit the rectangle with the top-left corner placed at position
7138 100:100 and the right-bottom corner corresponding to the right-bottom
7139 corner of the input image.
7140 @example
7141 crop=in_w-100:in_h-100:100:100
7142 @end example
7143
7144 @item
7145 Crop 10 pixels from the left and right borders, and 20 pixels from
7146 the top and bottom borders
7147 @example
7148 crop=in_w-2*10:in_h-2*20
7149 @end example
7150
7151 @item
7152 Keep only the bottom right quarter of the input image:
7153 @example
7154 crop=in_w/2:in_h/2:in_w/2:in_h/2
7155 @end example
7156
7157 @item
7158 Crop height for getting Greek harmony:
7159 @example
7160 crop=in_w:1/PHI*in_w
7161 @end example
7162
7163 @item
7164 Apply trembling effect:
7165 @example
7166 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)
7167 @end example
7168
7169 @item
7170 Apply erratic camera effect depending on timestamp:
7171 @example
7172 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)"
7173 @end example
7174
7175 @item
7176 Set x depending on the value of y:
7177 @example
7178 crop=in_w/2:in_h/2:y:10+10*sin(n/10)
7179 @end example
7180 @end itemize
7181
7182 @subsection Commands
7183
7184 This filter supports the following commands:
7185 @table @option
7186 @item w, out_w
7187 @item h, out_h
7188 @item x
7189 @item y
7190 Set width/height of the output video and the horizontal/vertical position
7191 in the input video.
7192 The command accepts the same syntax of the corresponding option.
7193
7194 If the specified expression is not valid, it is kept at its current
7195 value.
7196 @end table
7197
7198 @section cropdetect
7199
7200 Auto-detect the crop size.
7201
7202 It calculates the necessary cropping parameters and prints the
7203 recommended parameters via the logging system. The detected dimensions
7204 correspond to the non-black area of the input video.
7205
7206 It accepts the following parameters:
7207
7208 @table @option
7209
7210 @item limit
7211 Set higher black value threshold, which can be optionally specified
7212 from nothing (0) to everything (255 for 8-bit based formats). An intensity
7213 value greater to the set value is considered non-black. It defaults to 24.
7214 You can also specify a value between 0.0 and 1.0 which will be scaled depending
7215 on the bitdepth of the pixel format.
7216
7217 @item round
7218 The value which the width/height should be divisible by. It defaults to
7219 16. The offset is automatically adjusted to center the video. Use 2 to
7220 get only even dimensions (needed for 4:2:2 video). 16 is best when
7221 encoding to most video codecs.
7222
7223 @item reset_count, reset
7224 Set the counter that determines after how many frames cropdetect will
7225 reset the previously detected largest video area and start over to
7226 detect the current optimal crop area. Default value is 0.
7227
7228 This can be useful when channel logos distort the video area. 0
7229 indicates 'never reset', and returns the largest area encountered during
7230 playback.
7231 @end table
7232
7233 @anchor{cue}
7234 @section cue
7235
7236 Delay video filtering until a given wallclock timestamp. The filter first
7237 passes on @option{preroll} amount of frames, then it buffers at most
7238 @option{buffer} amount of frames and waits for the cue. After reaching the cue
7239 it forwards the buffered frames and also any subsequent frames coming in its
7240 input.
7241
7242 The filter can be used synchronize the output of multiple ffmpeg processes for
7243 realtime output devices like decklink. By putting the delay in the filtering
7244 chain and pre-buffering frames the process can pass on data to output almost
7245 immediately after the target wallclock timestamp is reached.
7246
7247 Perfect frame accuracy cannot be guaranteed, but the result is good enough for
7248 some use cases.
7249
7250 @table @option
7251
7252 @item cue
7253 The cue timestamp expressed in a UNIX timestamp in microseconds. Default is 0.
7254
7255 @item preroll
7256 The duration of content to pass on as preroll expressed in seconds. Default is 0.
7257
7258 @item buffer
7259 The maximum duration of content to buffer before waiting for the cue expressed
7260 in seconds. Default is 0.
7261
7262 @end table
7263
7264 @anchor{curves}
7265 @section curves
7266
7267 Apply color adjustments using curves.
7268
7269 This filter is similar to the Adobe Photoshop and GIMP curves tools. Each
7270 component (red, green and blue) has its values defined by @var{N} key points
7271 tied from each other using a smooth curve. The x-axis represents the pixel
7272 values from the input frame, and the y-axis the new pixel values to be set for
7273 the output frame.
7274
7275 By default, a component curve is defined by the two points @var{(0;0)} and
7276 @var{(1;1)}. This creates a straight line where each original pixel value is
7277 "adjusted" to its own value, which means no change to the image.
7278
7279 The filter allows you to redefine these two points and add some more. A new
7280 curve (using a natural cubic spline interpolation) will be define to pass
7281 smoothly through all these new coordinates. The new defined points needs to be
7282 strictly increasing over the x-axis, and their @var{x} and @var{y} values must
7283 be in the @var{[0;1]} interval.  If the computed curves happened to go outside
7284 the vector spaces, the values will be clipped accordingly.
7285
7286 The filter accepts the following options:
7287
7288 @table @option
7289 @item preset
7290 Select one of the available color presets. This option can be used in addition
7291 to the @option{r}, @option{g}, @option{b} parameters; in this case, the later
7292 options takes priority on the preset values.
7293 Available presets are:
7294 @table @samp
7295 @item none
7296 @item color_negative
7297 @item cross_process
7298 @item darker
7299 @item increase_contrast
7300 @item lighter
7301 @item linear_contrast
7302 @item medium_contrast
7303 @item negative
7304 @item strong_contrast
7305 @item vintage
7306 @end table
7307 Default is @code{none}.
7308 @item master, m
7309 Set the master key points. These points will define a second pass mapping. It
7310 is sometimes called a "luminance" or "value" mapping. It can be used with
7311 @option{r}, @option{g}, @option{b} or @option{all} since it acts like a
7312 post-processing LUT.
7313 @item red, r
7314 Set the key points for the red component.
7315 @item green, g
7316 Set the key points for the green component.
7317 @item blue, b
7318 Set the key points for the blue component.
7319 @item all
7320 Set the key points for all components (not including master).
7321 Can be used in addition to the other key points component
7322 options. In this case, the unset component(s) will fallback on this
7323 @option{all} setting.
7324 @item psfile
7325 Specify a Photoshop curves file (@code{.acv}) to import the settings from.
7326 @item plot
7327 Save Gnuplot script of the curves in specified file.
7328 @end table
7329
7330 To avoid some filtergraph syntax conflicts, each key points list need to be
7331 defined using the following syntax: @code{x0/y0 x1/y1 x2/y2 ...}.
7332
7333 @subsection Examples
7334
7335 @itemize
7336 @item
7337 Increase slightly the middle level of blue:
7338 @example
7339 curves=blue='0/0 0.5/0.58 1/1'
7340 @end example
7341
7342 @item
7343 Vintage effect:
7344 @example
7345 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'
7346 @end example
7347 Here we obtain the following coordinates for each components:
7348 @table @var
7349 @item red
7350 @code{(0;0.11) (0.42;0.51) (1;0.95)}
7351 @item green
7352 @code{(0;0) (0.50;0.48) (1;1)}
7353 @item blue
7354 @code{(0;0.22) (0.49;0.44) (1;0.80)}
7355 @end table
7356
7357 @item
7358 The previous example can also be achieved with the associated built-in preset:
7359 @example
7360 curves=preset=vintage
7361 @end example
7362
7363 @item
7364 Or simply:
7365 @example
7366 curves=vintage
7367 @end example
7368
7369 @item
7370 Use a Photoshop preset and redefine the points of the green component:
7371 @example
7372 curves=psfile='MyCurvesPresets/purple.acv':green='0/0 0.45/0.53 1/1'
7373 @end example
7374
7375 @item
7376 Check out the curves of the @code{cross_process} profile using @command{ffmpeg}
7377 and @command{gnuplot}:
7378 @example
7379 ffmpeg -f lavfi -i color -vf curves=cross_process:plot=/tmp/curves.plt -frames:v 1 -f null -
7380 gnuplot -p /tmp/curves.plt
7381 @end example
7382 @end itemize
7383
7384 @section datascope
7385
7386 Video data analysis filter.
7387
7388 This filter shows hexadecimal pixel values of part of video.
7389
7390 The filter accepts the following options:
7391
7392 @table @option
7393 @item size, s
7394 Set output video size.
7395
7396 @item x
7397 Set x offset from where to pick pixels.
7398
7399 @item y
7400 Set y offset from where to pick pixels.
7401
7402 @item mode
7403 Set scope mode, can be one of the following:
7404 @table @samp
7405 @item mono
7406 Draw hexadecimal pixel values with white color on black background.
7407
7408 @item color
7409 Draw hexadecimal pixel values with input video pixel color on black
7410 background.
7411
7412 @item color2
7413 Draw hexadecimal pixel values on color background picked from input video,
7414 the text color is picked in such way so its always visible.
7415 @end table
7416
7417 @item axis
7418 Draw rows and columns numbers on left and top of video.
7419
7420 @item opacity
7421 Set background opacity.
7422 @end table
7423
7424 @section dctdnoiz
7425
7426 Denoise frames using 2D DCT (frequency domain filtering).
7427
7428 This filter is not designed for real time.
7429
7430 The filter accepts the following options:
7431
7432 @table @option
7433 @item sigma, s
7434 Set the noise sigma constant.
7435
7436 This @var{sigma} defines a hard threshold of @code{3 * sigma}; every DCT
7437 coefficient (absolute value) below this threshold with be dropped.
7438
7439 If you need a more advanced filtering, see @option{expr}.
7440
7441 Default is @code{0}.
7442
7443 @item overlap
7444 Set number overlapping pixels for each block. Since the filter can be slow, you
7445 may want to reduce this value, at the cost of a less effective filter and the
7446 risk of various artefacts.
7447
7448 If the overlapping value doesn't permit processing the whole input width or
7449 height, a warning will be displayed and according borders won't be denoised.
7450
7451 Default value is @var{blocksize}-1, which is the best possible setting.
7452
7453 @item expr, e
7454 Set the coefficient factor expression.
7455
7456 For each coefficient of a DCT block, this expression will be evaluated as a
7457 multiplier value for the coefficient.
7458
7459 If this is option is set, the @option{sigma} option will be ignored.
7460
7461 The absolute value of the coefficient can be accessed through the @var{c}
7462 variable.
7463
7464 @item n
7465 Set the @var{blocksize} using the number of bits. @code{1<<@var{n}} defines the
7466 @var{blocksize}, which is the width and height of the processed blocks.
7467
7468 The default value is @var{3} (8x8) and can be raised to @var{4} for a
7469 @var{blocksize} of 16x16. Note that changing this setting has huge consequences
7470 on the speed processing. Also, a larger block size does not necessarily means a
7471 better de-noising.
7472 @end table
7473
7474 @subsection Examples
7475
7476 Apply a denoise with a @option{sigma} of @code{4.5}:
7477 @example
7478 dctdnoiz=4.5
7479 @end example
7480
7481 The same operation can be achieved using the expression system:
7482 @example
7483 dctdnoiz=e='gte(c, 4.5*3)'
7484 @end example
7485
7486 Violent denoise using a block size of @code{16x16}:
7487 @example
7488 dctdnoiz=15:n=4
7489 @end example
7490
7491 @section deband
7492
7493 Remove banding artifacts from input video.
7494 It works by replacing banded pixels with average value of referenced pixels.
7495
7496 The filter accepts the following options:
7497
7498 @table @option
7499 @item 1thr
7500 @item 2thr
7501 @item 3thr
7502 @item 4thr
7503 Set banding detection threshold for each plane. Default is 0.02.
7504 Valid range is 0.00003 to 0.5.
7505 If difference between current pixel and reference pixel is less than threshold,
7506 it will be considered as banded.
7507
7508 @item range, r
7509 Banding detection range in pixels. Default is 16. If positive, random number
7510 in range 0 to set value will be used. If negative, exact absolute value
7511 will be used.
7512 The range defines square of four pixels around current pixel.
7513
7514 @item direction, d
7515 Set direction in radians from which four pixel will be compared. If positive,
7516 random direction from 0 to set direction will be picked. If negative, exact of
7517 absolute value will be picked. For example direction 0, -PI or -2*PI radians
7518 will pick only pixels on same row and -PI/2 will pick only pixels on same
7519 column.
7520
7521 @item blur, b
7522 If enabled, current pixel is compared with average value of all four
7523 surrounding pixels. The default is enabled. If disabled current pixel is
7524 compared with all four surrounding pixels. The pixel is considered banded
7525 if only all four differences with surrounding pixels are less than threshold.
7526
7527 @item coupling, c
7528 If enabled, current pixel is changed if and only if all pixel components are banded,
7529 e.g. banding detection threshold is triggered for all color components.
7530 The default is disabled.
7531 @end table
7532
7533 @section deblock
7534
7535 Remove blocking artifacts from input video.
7536
7537 The filter accepts the following options:
7538
7539 @table @option
7540 @item filter
7541 Set filter type, can be @var{weak} or @var{strong}. Default is @var{strong}.
7542 This controls what kind of deblocking is applied.
7543
7544 @item block
7545 Set size of block, allowed range is from 4 to 512. Default is @var{8}.
7546
7547 @item alpha
7548 @item beta
7549 @item gamma
7550 @item delta
7551 Set blocking detection thresholds. Allowed range is 0 to 1.
7552 Defaults are: @var{0.098} for @var{alpha} and @var{0.05} for the rest.
7553 Using higher threshold gives more deblocking strength.
7554 Setting @var{alpha} controls threshold detection at exact edge of block.
7555 Remaining options controls threshold detection near the edge. Each one for
7556 below/above or left/right. Setting any of those to @var{0} disables
7557 deblocking.
7558
7559 @item planes
7560 Set planes to filter. Default is to filter all available planes.
7561 @end table
7562
7563 @subsection Examples
7564
7565 @itemize
7566 @item
7567 Deblock using weak filter and block size of 4 pixels.
7568 @example
7569 deblock=filter=weak:block=4
7570 @end example
7571
7572 @item
7573 Deblock using strong filter, block size of 4 pixels and custom thresholds for
7574 deblocking more edges.
7575 @example
7576 deblock=filter=strong:block=4:alpha=0.12:beta=0.07:gamma=0.06:delta=0.05
7577 @end example
7578
7579 @item
7580 Similar as above, but filter only first plane.
7581 @example
7582 deblock=filter=strong:block=4:alpha=0.12:beta=0.07:gamma=0.06:delta=0.05:planes=1
7583 @end example
7584
7585 @item
7586 Similar as above, but filter only second and third plane.
7587 @example
7588 deblock=filter=strong:block=4:alpha=0.12:beta=0.07:gamma=0.06:delta=0.05:planes=6
7589 @end example
7590 @end itemize
7591
7592 @anchor{decimate}
7593 @section decimate
7594
7595 Drop duplicated frames at regular intervals.
7596
7597 The filter accepts the following options:
7598
7599 @table @option
7600 @item cycle
7601 Set the number of frames from which one will be dropped. Setting this to
7602 @var{N} means one frame in every batch of @var{N} frames will be dropped.
7603 Default is @code{5}.
7604
7605 @item dupthresh
7606 Set the threshold for duplicate detection. If the difference metric for a frame
7607 is less than or equal to this value, then it is declared as duplicate. Default
7608 is @code{1.1}
7609
7610 @item scthresh
7611 Set scene change threshold. Default is @code{15}.
7612
7613 @item blockx
7614 @item blocky
7615 Set the size of the x and y-axis blocks used during metric calculations.
7616 Larger blocks give better noise suppression, but also give worse detection of
7617 small movements. Must be a power of two. Default is @code{32}.
7618
7619 @item ppsrc
7620 Mark main input as a pre-processed input and activate clean source input
7621 stream. This allows the input to be pre-processed with various filters to help
7622 the metrics calculation while keeping the frame selection lossless. When set to
7623 @code{1}, the first stream is for the pre-processed input, and the second
7624 stream is the clean source from where the kept frames are chosen. Default is
7625 @code{0}.
7626
7627 @item chroma
7628 Set whether or not chroma is considered in the metric calculations. Default is
7629 @code{1}.
7630 @end table
7631
7632 @section deconvolve
7633
7634 Apply 2D deconvolution of video stream in frequency domain using second stream
7635 as impulse.
7636
7637 The filter accepts the following options:
7638
7639 @table @option
7640 @item planes
7641 Set which planes to process.
7642
7643 @item impulse
7644 Set which impulse video frames will be processed, can be @var{first}
7645 or @var{all}. Default is @var{all}.
7646
7647 @item noise
7648 Set noise when doing divisions. Default is @var{0.0000001}. Useful when width
7649 and height are not same and not power of 2 or if stream prior to convolving
7650 had noise.
7651 @end table
7652
7653 The @code{deconvolve} filter also supports the @ref{framesync} options.
7654
7655 @section deflate
7656
7657 Apply deflate effect to the video.
7658
7659 This filter replaces the pixel by the local(3x3) average by taking into account
7660 only values lower than the pixel.
7661
7662 It accepts the following options:
7663
7664 @table @option
7665 @item threshold0
7666 @item threshold1
7667 @item threshold2
7668 @item threshold3
7669 Limit the maximum change for each plane, default is 65535.
7670 If 0, plane will remain unchanged.
7671 @end table
7672
7673 @section deflicker
7674
7675 Remove temporal frame luminance variations.
7676
7677 It accepts the following options:
7678
7679 @table @option
7680 @item size, s
7681 Set moving-average filter size in frames. Default is 5. Allowed range is 2 - 129.
7682
7683 @item mode, m
7684 Set averaging mode to smooth temporal luminance variations.
7685
7686 Available values are:
7687 @table @samp
7688 @item am
7689 Arithmetic mean
7690
7691 @item gm
7692 Geometric mean
7693
7694 @item hm
7695 Harmonic mean
7696
7697 @item qm
7698 Quadratic mean
7699
7700 @item cm
7701 Cubic mean
7702
7703 @item pm
7704 Power mean
7705
7706 @item median
7707 Median
7708 @end table
7709
7710 @item bypass
7711 Do not actually modify frame. Useful when one only wants metadata.
7712 @end table
7713
7714 @section dejudder
7715
7716 Remove judder produced by partially interlaced telecined content.
7717
7718 Judder can be introduced, for instance, by @ref{pullup} filter. If the original
7719 source was partially telecined content then the output of @code{pullup,dejudder}
7720 will have a variable frame rate. May change the recorded frame rate of the
7721 container. Aside from that change, this filter will not affect constant frame
7722 rate video.
7723
7724 The option available in this filter is:
7725 @table @option
7726
7727 @item cycle
7728 Specify the length of the window over which the judder repeats.
7729
7730 Accepts any integer greater than 1. Useful values are:
7731 @table @samp
7732
7733 @item 4
7734 If the original was telecined from 24 to 30 fps (Film to NTSC).
7735
7736 @item 5
7737 If the original was telecined from 25 to 30 fps (PAL to NTSC).
7738
7739 @item 20
7740 If a mixture of the two.
7741 @end table
7742
7743 The default is @samp{4}.
7744 @end table
7745
7746 @section delogo
7747
7748 Suppress a TV station logo by a simple interpolation of the surrounding
7749 pixels. Just set a rectangle covering the logo and watch it disappear
7750 (and sometimes something even uglier appear - your mileage may vary).
7751
7752 It accepts the following parameters:
7753 @table @option
7754
7755 @item x
7756 @item y
7757 Specify the top left corner coordinates of the logo. They must be
7758 specified.
7759
7760 @item w
7761 @item h
7762 Specify the width and height of the logo to clear. They must be
7763 specified.
7764
7765 @item band, t
7766 Specify the thickness of the fuzzy edge of the rectangle (added to
7767 @var{w} and @var{h}). The default value is 1. This option is
7768 deprecated, setting higher values should no longer be necessary and
7769 is not recommended.
7770
7771 @item show
7772 When set to 1, a green rectangle is drawn on the screen to simplify
7773 finding the right @var{x}, @var{y}, @var{w}, and @var{h} parameters.
7774 The default value is 0.
7775
7776 The rectangle is drawn on the outermost pixels which will be (partly)
7777 replaced with interpolated values. The values of the next pixels
7778 immediately outside this rectangle in each direction will be used to
7779 compute the interpolated pixel values inside the rectangle.
7780
7781 @end table
7782
7783 @subsection Examples
7784
7785 @itemize
7786 @item
7787 Set a rectangle covering the area with top left corner coordinates 0,0
7788 and size 100x77, and a band of size 10:
7789 @example
7790 delogo=x=0:y=0:w=100:h=77:band=10
7791 @end example
7792
7793 @end itemize
7794
7795 @section deshake
7796
7797 Attempt to fix small changes in horizontal and/or vertical shift. This
7798 filter helps remove camera shake from hand-holding a camera, bumping a
7799 tripod, moving on a vehicle, etc.
7800
7801 The filter accepts the following options:
7802
7803 @table @option
7804
7805 @item x
7806 @item y
7807 @item w
7808 @item h
7809 Specify a rectangular area where to limit the search for motion
7810 vectors.
7811 If desired the search for motion vectors can be limited to a
7812 rectangular area of the frame defined by its top left corner, width
7813 and height. These parameters have the same meaning as the drawbox
7814 filter which can be used to visualise the position of the bounding
7815 box.
7816
7817 This is useful when simultaneous movement of subjects within the frame
7818 might be confused for camera motion by the motion vector search.
7819
7820 If any or all of @var{x}, @var{y}, @var{w} and @var{h} are set to -1
7821 then the full frame is used. This allows later options to be set
7822 without specifying the bounding box for the motion vector search.
7823
7824 Default - search the whole frame.
7825
7826 @item rx
7827 @item ry
7828 Specify the maximum extent of movement in x and y directions in the
7829 range 0-64 pixels. Default 16.
7830
7831 @item edge
7832 Specify how to generate pixels to fill blanks at the edge of the
7833 frame. Available values are:
7834 @table @samp
7835 @item blank, 0
7836 Fill zeroes at blank locations
7837 @item original, 1
7838 Original image at blank locations
7839 @item clamp, 2
7840 Extruded edge value at blank locations
7841 @item mirror, 3
7842 Mirrored edge at blank locations
7843 @end table
7844 Default value is @samp{mirror}.
7845
7846 @item blocksize
7847 Specify the blocksize to use for motion search. Range 4-128 pixels,
7848 default 8.
7849
7850 @item contrast
7851 Specify the contrast threshold for blocks. Only blocks with more than
7852 the specified contrast (difference between darkest and lightest
7853 pixels) will be considered. Range 1-255, default 125.
7854
7855 @item search
7856 Specify the search strategy. Available values are:
7857 @table @samp
7858 @item exhaustive, 0
7859 Set exhaustive search
7860 @item less, 1
7861 Set less exhaustive search.
7862 @end table
7863 Default value is @samp{exhaustive}.
7864
7865 @item filename
7866 If set then a detailed log of the motion search is written to the
7867 specified file.
7868
7869 @end table
7870
7871 @section despill
7872
7873 Remove unwanted contamination of foreground colors, caused by reflected color of
7874 greenscreen or bluescreen.
7875
7876 This filter accepts the following options:
7877
7878 @table @option
7879 @item type
7880 Set what type of despill to use.
7881
7882 @item mix
7883 Set how spillmap will be generated.
7884
7885 @item expand
7886 Set how much to get rid of still remaining spill.
7887
7888 @item red
7889 Controls amount of red in spill area.
7890
7891 @item green
7892 Controls amount of green in spill area.
7893 Should be -1 for greenscreen.
7894
7895 @item blue
7896 Controls amount of blue in spill area.
7897 Should be -1 for bluescreen.
7898
7899 @item brightness
7900 Controls brightness of spill area, preserving colors.
7901
7902 @item alpha
7903 Modify alpha from generated spillmap.
7904 @end table
7905
7906 @section detelecine
7907
7908 Apply an exact inverse of the telecine operation. It requires a predefined
7909 pattern specified using the pattern option which must be the same as that passed
7910 to the telecine filter.
7911
7912 This filter accepts the following options:
7913
7914 @table @option
7915 @item first_field
7916 @table @samp
7917 @item top, t
7918 top field first
7919 @item bottom, b
7920 bottom field first
7921 The default value is @code{top}.
7922 @end table
7923
7924 @item pattern
7925 A string of numbers representing the pulldown pattern you wish to apply.
7926 The default value is @code{23}.
7927
7928 @item start_frame
7929 A number representing position of the first frame with respect to the telecine
7930 pattern. This is to be used if the stream is cut. The default value is @code{0}.
7931 @end table
7932
7933 @section dilation
7934
7935 Apply dilation effect to the video.
7936
7937 This filter replaces the pixel by the local(3x3) maximum.
7938
7939 It accepts the following options:
7940
7941 @table @option
7942 @item threshold0
7943 @item threshold1
7944 @item threshold2
7945 @item threshold3
7946 Limit the maximum change for each plane, default is 65535.
7947 If 0, plane will remain unchanged.
7948
7949 @item coordinates
7950 Flag which specifies the pixel to refer to. Default is 255 i.e. all eight
7951 pixels are used.
7952
7953 Flags to local 3x3 coordinates maps like this:
7954
7955     1 2 3
7956     4   5
7957     6 7 8
7958 @end table
7959
7960 @section displace
7961
7962 Displace pixels as indicated by second and third input stream.
7963
7964 It takes three input streams and outputs one stream, the first input is the
7965 source, and second and third input are displacement maps.
7966
7967 The second input specifies how much to displace pixels along the
7968 x-axis, while the third input specifies how much to displace pixels
7969 along the y-axis.
7970 If one of displacement map streams terminates, last frame from that
7971 displacement map will be used.
7972
7973 Note that once generated, displacements maps can be reused over and over again.
7974
7975 A description of the accepted options follows.
7976
7977 @table @option
7978 @item edge
7979 Set displace behavior for pixels that are out of range.
7980
7981 Available values are:
7982 @table @samp
7983 @item blank
7984 Missing pixels are replaced by black pixels.
7985
7986 @item smear
7987 Adjacent pixels will spread out to replace missing pixels.
7988
7989 @item wrap
7990 Out of range pixels are wrapped so they point to pixels of other side.
7991
7992 @item mirror
7993 Out of range pixels will be replaced with mirrored pixels.
7994 @end table
7995 Default is @samp{smear}.
7996
7997 @end table
7998
7999 @subsection Examples
8000
8001 @itemize
8002 @item
8003 Add ripple effect to rgb input of video size hd720:
8004 @example
8005 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
8006 @end example
8007
8008 @item
8009 Add wave effect to rgb input of video size hd720:
8010 @example
8011 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
8012 @end example
8013 @end itemize
8014
8015 @section drawbox
8016
8017 Draw a colored box on the input image.
8018
8019 It accepts the following parameters:
8020
8021 @table @option
8022 @item x
8023 @item y
8024 The expressions which specify the top left corner coordinates of the box. It defaults to 0.
8025
8026 @item width, w
8027 @item height, h
8028 The expressions which specify the width and height of the box; if 0 they are interpreted as
8029 the input width and height. It defaults to 0.
8030
8031 @item color, c
8032 Specify the color of the box to write. For the general syntax of this option,
8033 check the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}. If the special
8034 value @code{invert} is used, the box edge color is the same as the
8035 video with inverted luma.
8036
8037 @item thickness, t
8038 The expression which sets the thickness of the box edge.
8039 A value of @code{fill} will create a filled box. Default value is @code{3}.
8040
8041 See below for the list of accepted constants.
8042
8043 @item replace
8044 Applicable if the input has alpha. With value @code{1}, the pixels of the painted box
8045 will overwrite the video's color and alpha pixels.
8046 Default is @code{0}, which composites the box onto the input, leaving the video's alpha intact.
8047 @end table
8048
8049 The parameters for @var{x}, @var{y}, @var{w} and @var{h} and @var{t} are expressions containing the
8050 following constants:
8051
8052 @table @option
8053 @item dar
8054 The input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}.
8055
8056 @item hsub
8057 @item vsub
8058 horizontal and vertical chroma subsample values. For example for the
8059 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
8060
8061 @item in_h, ih
8062 @item in_w, iw
8063 The input width and height.
8064
8065 @item sar
8066 The input sample aspect ratio.
8067
8068 @item x
8069 @item y
8070 The x and y offset coordinates where the box is drawn.
8071
8072 @item w
8073 @item h
8074 The width and height of the drawn box.
8075
8076 @item t
8077 The thickness of the drawn box.
8078
8079 These constants allow the @var{x}, @var{y}, @var{w}, @var{h} and @var{t} expressions to refer to
8080 each other, so you may for example specify @code{y=x/dar} or @code{h=w/dar}.
8081
8082 @end table
8083
8084 @subsection Examples
8085
8086 @itemize
8087 @item
8088 Draw a black box around the edge of the input image:
8089 @example
8090 drawbox
8091 @end example
8092
8093 @item
8094 Draw a box with color red and an opacity of 50%:
8095 @example
8096 drawbox=10:20:200:60:red@@0.5
8097 @end example
8098
8099 The previous example can be specified as:
8100 @example
8101 drawbox=x=10:y=20:w=200:h=60:color=red@@0.5
8102 @end example
8103
8104 @item
8105 Fill the box with pink color:
8106 @example
8107 drawbox=x=10:y=10:w=100:h=100:color=pink@@0.5:t=fill
8108 @end example
8109
8110 @item
8111 Draw a 2-pixel red 2.40:1 mask:
8112 @example
8113 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
8114 @end example
8115 @end itemize
8116
8117 @section drawgrid
8118
8119 Draw a grid on the input image.
8120
8121 It accepts the following parameters:
8122
8123 @table @option
8124 @item x
8125 @item y
8126 The expressions which specify the coordinates of some point of grid intersection (meant to configure offset). Both default to 0.
8127
8128 @item width, w
8129 @item height, h
8130 The expressions which specify the width and height of the grid cell, if 0 they are interpreted as the
8131 input width and height, respectively, minus @code{thickness}, so image gets
8132 framed. Default to 0.
8133
8134 @item color, c
8135 Specify the color of the grid. For the general syntax of this option,
8136 check the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}. If the special
8137 value @code{invert} is used, the grid color is the same as the
8138 video with inverted luma.
8139
8140 @item thickness, t
8141 The expression which sets the thickness of the grid line. Default value is @code{1}.
8142
8143 See below for the list of accepted constants.
8144
8145 @item replace
8146 Applicable if the input has alpha. With @code{1} the pixels of the painted grid
8147 will overwrite the video's color and alpha pixels.
8148 Default is @code{0}, which composites the grid onto the input, leaving the video's alpha intact.
8149 @end table
8150
8151 The parameters for @var{x}, @var{y}, @var{w} and @var{h} and @var{t} are expressions containing the
8152 following constants:
8153
8154 @table @option
8155 @item dar
8156 The input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}.
8157
8158 @item hsub
8159 @item vsub
8160 horizontal and vertical chroma subsample values. For example for the
8161 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
8162
8163 @item in_h, ih
8164 @item in_w, iw
8165 The input grid cell width and height.
8166
8167 @item sar
8168 The input sample aspect ratio.
8169
8170 @item x
8171 @item y
8172 The x and y coordinates of some point of grid intersection (meant to configure offset).
8173
8174 @item w
8175 @item h
8176 The width and height of the drawn cell.
8177
8178 @item t
8179 The thickness of the drawn cell.
8180
8181 These constants allow the @var{x}, @var{y}, @var{w}, @var{h} and @var{t} expressions to refer to
8182 each other, so you may for example specify @code{y=x/dar} or @code{h=w/dar}.
8183
8184 @end table
8185
8186 @subsection Examples
8187
8188 @itemize
8189 @item
8190 Draw a grid with cell 100x100 pixels, thickness 2 pixels, with color red and an opacity of 50%:
8191 @example
8192 drawgrid=width=100:height=100:thickness=2:color=red@@0.5
8193 @end example
8194
8195 @item
8196 Draw a white 3x3 grid with an opacity of 50%:
8197 @example
8198 drawgrid=w=iw/3:h=ih/3:t=2:c=white@@0.5
8199 @end example
8200 @end itemize
8201
8202 @anchor{drawtext}
8203 @section drawtext
8204
8205 Draw a text string or text from a specified file on top of a video, using the
8206 libfreetype library.
8207
8208 To enable compilation of this filter, you need to configure FFmpeg with
8209 @code{--enable-libfreetype}.
8210 To enable default font fallback and the @var{font} option you need to
8211 configure FFmpeg with @code{--enable-libfontconfig}.
8212 To enable the @var{text_shaping} option, you need to configure FFmpeg with
8213 @code{--enable-libfribidi}.
8214
8215 @subsection Syntax
8216
8217 It accepts the following parameters:
8218
8219 @table @option
8220
8221 @item box
8222 Used to draw a box around text using the background color.
8223 The value must be either 1 (enable) or 0 (disable).
8224 The default value of @var{box} is 0.
8225
8226 @item boxborderw
8227 Set the width of the border to be drawn around the box using @var{boxcolor}.
8228 The default value of @var{boxborderw} is 0.
8229
8230 @item boxcolor
8231 The color to be used for drawing box around text. For the syntax of this
8232 option, check the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
8233
8234 The default value of @var{boxcolor} is "white".
8235
8236 @item line_spacing
8237 Set the line spacing in pixels of the border to be drawn around the box using @var{box}.
8238 The default value of @var{line_spacing} is 0.
8239
8240 @item borderw
8241 Set the width of the border to be drawn around the text using @var{bordercolor}.
8242 The default value of @var{borderw} is 0.
8243
8244 @item bordercolor
8245 Set the color to be used for drawing border around text. For the syntax of this
8246 option, check the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
8247
8248 The default value of @var{bordercolor} is "black".
8249
8250 @item expansion
8251 Select how the @var{text} is expanded. Can be either @code{none},
8252 @code{strftime} (deprecated) or
8253 @code{normal} (default). See the @ref{drawtext_expansion, Text expansion} section
8254 below for details.
8255
8256 @item basetime
8257 Set a start time for the count. Value is in microseconds. Only applied
8258 in the deprecated strftime expansion mode. To emulate in normal expansion
8259 mode use the @code{pts} function, supplying the start time (in seconds)
8260 as the second argument.
8261
8262 @item fix_bounds
8263 If true, check and fix text coords to avoid clipping.
8264
8265 @item fontcolor
8266 The color to be used for drawing fonts. For the syntax of this option, check
8267 the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
8268
8269 The default value of @var{fontcolor} is "black".
8270
8271 @item fontcolor_expr
8272 String which is expanded the same way as @var{text} to obtain dynamic
8273 @var{fontcolor} value. By default this option has empty value and is not
8274 processed. When this option is set, it overrides @var{fontcolor} option.
8275
8276 @item font
8277 The font family to be used for drawing text. By default Sans.
8278
8279 @item fontfile
8280 The font file to be used for drawing text. The path must be included.
8281 This parameter is mandatory if the fontconfig support is disabled.
8282
8283 @item alpha
8284 Draw the text applying alpha blending. The value can
8285 be a number between 0.0 and 1.0.
8286 The expression accepts the same variables @var{x, y} as well.
8287 The default value is 1.
8288 Please see @var{fontcolor_expr}.
8289
8290 @item fontsize
8291 The font size to be used for drawing text.
8292 The default value of @var{fontsize} is 16.
8293
8294 @item text_shaping
8295 If set to 1, attempt to shape the text (for example, reverse the order of
8296 right-to-left text and join Arabic characters) before drawing it.
8297 Otherwise, just draw the text exactly as given.
8298 By default 1 (if supported).
8299
8300 @item ft_load_flags
8301 The flags to be used for loading the fonts.
8302
8303 The flags map the corresponding flags supported by libfreetype, and are
8304 a combination of the following values:
8305 @table @var
8306 @item default
8307 @item no_scale
8308 @item no_hinting
8309 @item render
8310 @item no_bitmap
8311 @item vertical_layout
8312 @item force_autohint
8313 @item crop_bitmap
8314 @item pedantic
8315 @item ignore_global_advance_width
8316 @item no_recurse
8317 @item ignore_transform
8318 @item monochrome
8319 @item linear_design
8320 @item no_autohint
8321 @end table
8322
8323 Default value is "default".
8324
8325 For more information consult the documentation for the FT_LOAD_*
8326 libfreetype flags.
8327
8328 @item shadowcolor
8329 The color to be used for drawing a shadow behind the drawn text. For the
8330 syntax of this option, check the @ref{color syntax,,"Color" section in the
8331 ffmpeg-utils manual,ffmpeg-utils}.
8332
8333 The default value of @var{shadowcolor} is "black".
8334
8335 @item shadowx
8336 @item shadowy
8337 The x and y offsets for the text shadow position with respect to the
8338 position of the text. They can be either positive or negative
8339 values. The default value for both is "0".
8340
8341 @item start_number
8342 The starting frame number for the n/frame_num variable. The default value
8343 is "0".
8344
8345 @item tabsize
8346 The size in number of spaces to use for rendering the tab.
8347 Default value is 4.
8348
8349 @item timecode
8350 Set the initial timecode representation in "hh:mm:ss[:;.]ff"
8351 format. It can be used with or without text parameter. @var{timecode_rate}
8352 option must be specified.
8353
8354 @item timecode_rate, rate, r
8355 Set the timecode frame rate (timecode only). Value will be rounded to nearest
8356 integer. Minimum value is "1".
8357 Drop-frame timecode is supported for frame rates 30 & 60.
8358
8359 @item tc24hmax
8360 If set to 1, the output of the timecode option will wrap around at 24 hours.
8361 Default is 0 (disabled).
8362
8363 @item text
8364 The text string to be drawn. The text must be a sequence of UTF-8
8365 encoded characters.
8366 This parameter is mandatory if no file is specified with the parameter
8367 @var{textfile}.
8368
8369 @item textfile
8370 A text file containing text to be drawn. The text must be a sequence
8371 of UTF-8 encoded characters.
8372
8373 This parameter is mandatory if no text string is specified with the
8374 parameter @var{text}.
8375
8376 If both @var{text} and @var{textfile} are specified, an error is thrown.
8377
8378 @item reload
8379 If set to 1, the @var{textfile} will be reloaded before each frame.
8380 Be sure to update it atomically, or it may be read partially, or even fail.
8381
8382 @item x
8383 @item y
8384 The expressions which specify the offsets where text will be drawn
8385 within the video frame. They are relative to the top/left border of the
8386 output image.
8387
8388 The default value of @var{x} and @var{y} is "0".
8389
8390 See below for the list of accepted constants and functions.
8391 @end table
8392
8393 The parameters for @var{x} and @var{y} are expressions containing the
8394 following constants and functions:
8395
8396 @table @option
8397 @item dar
8398 input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}
8399
8400 @item hsub
8401 @item vsub
8402 horizontal and vertical chroma subsample values. For example for the
8403 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
8404
8405 @item line_h, lh
8406 the height of each text line
8407
8408 @item main_h, h, H
8409 the input height
8410
8411 @item main_w, w, W
8412 the input width
8413
8414 @item max_glyph_a, ascent
8415 the maximum distance from the baseline to the highest/upper grid
8416 coordinate used to place a glyph outline point, for all the rendered
8417 glyphs.
8418 It is a positive value, due to the grid's orientation with the Y axis
8419 upwards.
8420
8421 @item max_glyph_d, descent
8422 the maximum distance from the baseline to the lowest grid coordinate
8423 used to place a glyph outline point, for all the rendered glyphs.
8424 This is a negative value, due to the grid's orientation, with the Y axis
8425 upwards.
8426
8427 @item max_glyph_h
8428 maximum glyph height, that is the maximum height for all the glyphs
8429 contained in the rendered text, it is equivalent to @var{ascent} -
8430 @var{descent}.
8431
8432 @item max_glyph_w
8433 maximum glyph width, that is the maximum width for all the glyphs
8434 contained in the rendered text
8435
8436 @item n
8437 the number of input frame, starting from 0
8438
8439 @item rand(min, max)
8440 return a random number included between @var{min} and @var{max}
8441
8442 @item sar
8443 The input sample aspect ratio.
8444
8445 @item t
8446 timestamp expressed in seconds, NAN if the input timestamp is unknown
8447
8448 @item text_h, th
8449 the height of the rendered text
8450
8451 @item text_w, tw
8452 the width of the rendered text
8453
8454 @item x
8455 @item y
8456 the x and y offset coordinates where the text is drawn.
8457
8458 These parameters allow the @var{x} and @var{y} expressions to refer
8459 each other, so you can for example specify @code{y=x/dar}.
8460 @end table
8461
8462 @anchor{drawtext_expansion}
8463 @subsection Text expansion
8464
8465 If @option{expansion} is set to @code{strftime},
8466 the filter recognizes strftime() sequences in the provided text and
8467 expands them accordingly. Check the documentation of strftime(). This
8468 feature is deprecated.
8469
8470 If @option{expansion} is set to @code{none}, the text is printed verbatim.
8471
8472 If @option{expansion} is set to @code{normal} (which is the default),
8473 the following expansion mechanism is used.
8474
8475 The backslash character @samp{\}, followed by any character, always expands to
8476 the second character.
8477
8478 Sequences of the form @code{%@{...@}} are expanded. The text between the
8479 braces is a function name, possibly followed by arguments separated by ':'.
8480 If the arguments contain special characters or delimiters (':' or '@}'),
8481 they should be escaped.
8482
8483 Note that they probably must also be escaped as the value for the
8484 @option{text} option in the filter argument string and as the filter
8485 argument in the filtergraph description, and possibly also for the shell,
8486 that makes up to four levels of escaping; using a text file avoids these
8487 problems.
8488
8489 The following functions are available:
8490
8491 @table @command
8492
8493 @item expr, e
8494 The expression evaluation result.
8495
8496 It must take one argument specifying the expression to be evaluated,
8497 which accepts the same constants and functions as the @var{x} and
8498 @var{y} values. Note that not all constants should be used, for
8499 example the text size is not known when evaluating the expression, so
8500 the constants @var{text_w} and @var{text_h} will have an undefined
8501 value.
8502
8503 @item expr_int_format, eif
8504 Evaluate the expression's value and output as formatted integer.
8505
8506 The first argument is the expression to be evaluated, just as for the @var{expr} function.
8507 The second argument specifies the output format. Allowed values are @samp{x},
8508 @samp{X}, @samp{d} and @samp{u}. They are treated exactly as in the
8509 @code{printf} function.
8510 The third parameter is optional and sets the number of positions taken by the output.
8511 It can be used to add padding with zeros from the left.
8512
8513 @item gmtime
8514 The time at which the filter is running, expressed in UTC.
8515 It can accept an argument: a strftime() format string.
8516
8517 @item localtime
8518 The time at which the filter is running, expressed in the local time zone.
8519 It can accept an argument: a strftime() format string.
8520
8521 @item metadata
8522 Frame metadata. Takes one or two arguments.
8523
8524 The first argument is mandatory and specifies the metadata key.
8525
8526 The second argument is optional and specifies a default value, used when the
8527 metadata key is not found or empty.
8528
8529 @item n, frame_num
8530 The frame number, starting from 0.
8531
8532 @item pict_type
8533 A 1 character description of the current picture type.
8534
8535 @item pts
8536 The timestamp of the current frame.
8537 It can take up to three arguments.
8538
8539 The first argument is the format of the timestamp; it defaults to @code{flt}
8540 for seconds as a decimal number with microsecond accuracy; @code{hms} stands
8541 for a formatted @var{[-]HH:MM:SS.mmm} timestamp with millisecond accuracy.
8542 @code{gmtime} stands for the timestamp of the frame formatted as UTC time;
8543 @code{localtime} stands for the timestamp of the frame formatted as
8544 local time zone time.
8545
8546 The second argument is an offset added to the timestamp.
8547
8548 If the format is set to @code{hms}, a third argument @code{24HH} may be
8549 supplied to present the hour part of the formatted timestamp in 24h format
8550 (00-23).
8551
8552 If the format is set to @code{localtime} or @code{gmtime},
8553 a third argument may be supplied: a strftime() format string.
8554 By default, @var{YYYY-MM-DD HH:MM:SS} format will be used.
8555 @end table
8556
8557 @subsection Examples
8558
8559 @itemize
8560 @item
8561 Draw "Test Text" with font FreeSerif, using the default values for the
8562 optional parameters.
8563
8564 @example
8565 drawtext="fontfile=/usr/share/fonts/truetype/freefont/FreeSerif.ttf: text='Test Text'"
8566 @end example
8567
8568 @item
8569 Draw 'Test Text' with font FreeSerif of size 24 at position x=100
8570 and y=50 (counting from the top-left corner of the screen), text is
8571 yellow with a red box around it. Both the text and the box have an
8572 opacity of 20%.
8573
8574 @example
8575 drawtext="fontfile=/usr/share/fonts/truetype/freefont/FreeSerif.ttf: text='Test Text':\
8576           x=100: y=50: fontsize=24: fontcolor=yellow@@0.2: box=1: boxcolor=red@@0.2"
8577 @end example
8578
8579 Note that the double quotes are not necessary if spaces are not used
8580 within the parameter list.
8581
8582 @item
8583 Show the text at the center of the video frame:
8584 @example
8585 drawtext="fontsize=30:fontfile=FreeSerif.ttf:text='hello world':x=(w-text_w)/2:y=(h-text_h)/2"
8586 @end example
8587
8588 @item
8589 Show the text at a random position, switching to a new position every 30 seconds:
8590 @example
8591 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)"
8592 @end example
8593
8594 @item
8595 Show a text line sliding from right to left in the last row of the video
8596 frame. The file @file{LONG_LINE} is assumed to contain a single line
8597 with no newlines.
8598 @example
8599 drawtext="fontsize=15:fontfile=FreeSerif.ttf:text=LONG_LINE:y=h-line_h:x=-50*t"
8600 @end example
8601
8602 @item
8603 Show the content of file @file{CREDITS} off the bottom of the frame and scroll up.
8604 @example
8605 drawtext="fontsize=20:fontfile=FreeSerif.ttf:textfile=CREDITS:y=h-20*t"
8606 @end example
8607
8608 @item
8609 Draw a single green letter "g", at the center of the input video.
8610 The glyph baseline is placed at half screen height.
8611 @example
8612 drawtext="fontsize=60:fontfile=FreeSerif.ttf:fontcolor=green:text=g:x=(w-max_glyph_w)/2:y=h/2-ascent"
8613 @end example
8614
8615 @item
8616 Show text for 1 second every 3 seconds:
8617 @example
8618 drawtext="fontfile=FreeSerif.ttf:fontcolor=white:x=100:y=x/dar:enable=lt(mod(t\,3)\,1):text='blink'"
8619 @end example
8620
8621 @item
8622 Use fontconfig to set the font. Note that the colons need to be escaped.
8623 @example
8624 drawtext='fontfile=Linux Libertine O-40\:style=Semibold:text=FFmpeg'
8625 @end example
8626
8627 @item
8628 Print the date of a real-time encoding (see strftime(3)):
8629 @example
8630 drawtext='fontfile=FreeSans.ttf:text=%@{localtime\:%a %b %d %Y@}'
8631 @end example
8632
8633 @item
8634 Show text fading in and out (appearing/disappearing):
8635 @example
8636 #!/bin/sh
8637 DS=1.0 # display start
8638 DE=10.0 # display end
8639 FID=1.5 # fade in duration
8640 FOD=5 # fade out duration
8641 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 @}"
8642 @end example
8643
8644 @item
8645 Horizontally align multiple separate texts. Note that @option{max_glyph_a}
8646 and the @option{fontsize} value are included in the @option{y} offset.
8647 @example
8648 drawtext=fontfile=FreeSans.ttf:text=DOG:fontsize=24:x=10:y=20+24-max_glyph_a,
8649 drawtext=fontfile=FreeSans.ttf:text=cow:fontsize=24:x=80:y=20+24-max_glyph_a
8650 @end example
8651
8652 @end itemize
8653
8654 For more information about libfreetype, check:
8655 @url{http://www.freetype.org/}.
8656
8657 For more information about fontconfig, check:
8658 @url{http://freedesktop.org/software/fontconfig/fontconfig-user.html}.
8659
8660 For more information about libfribidi, check:
8661 @url{http://fribidi.org/}.
8662
8663 @section edgedetect
8664
8665 Detect and draw edges. The filter uses the Canny Edge Detection algorithm.
8666
8667 The filter accepts the following options:
8668
8669 @table @option
8670 @item low
8671 @item high
8672 Set low and high threshold values used by the Canny thresholding
8673 algorithm.
8674
8675 The high threshold selects the "strong" edge pixels, which are then
8676 connected through 8-connectivity with the "weak" edge pixels selected
8677 by the low threshold.
8678
8679 @var{low} and @var{high} threshold values must be chosen in the range
8680 [0,1], and @var{low} should be lesser or equal to @var{high}.
8681
8682 Default value for @var{low} is @code{20/255}, and default value for @var{high}
8683 is @code{50/255}.
8684
8685 @item mode
8686 Define the drawing mode.
8687
8688 @table @samp
8689 @item wires
8690 Draw white/gray wires on black background.
8691
8692 @item colormix
8693 Mix the colors to create a paint/cartoon effect.
8694
8695 @item canny
8696 Apply Canny edge detector on all selected planes.
8697 @end table
8698 Default value is @var{wires}.
8699
8700 @item planes
8701 Select planes for filtering. By default all available planes are filtered.
8702 @end table
8703
8704 @subsection Examples
8705
8706 @itemize
8707 @item
8708 Standard edge detection with custom values for the hysteresis thresholding:
8709 @example
8710 edgedetect=low=0.1:high=0.4
8711 @end example
8712
8713 @item
8714 Painting effect without thresholding:
8715 @example
8716 edgedetect=mode=colormix:high=0
8717 @end example
8718 @end itemize
8719
8720 @section eq
8721 Set brightness, contrast, saturation and approximate gamma adjustment.
8722
8723 The filter accepts the following options:
8724
8725 @table @option
8726 @item contrast
8727 Set the contrast expression. The value must be a float value in range
8728 @code{-2.0} to @code{2.0}. The default value is "1".
8729
8730 @item brightness
8731 Set the brightness expression. The value must be a float value in
8732 range @code{-1.0} to @code{1.0}. The default value is "0".
8733
8734 @item saturation
8735 Set the saturation expression. The value must be a float in
8736 range @code{0.0} to @code{3.0}. The default value is "1".
8737
8738 @item gamma
8739 Set the gamma expression. The value must be a float in range
8740 @code{0.1} to @code{10.0}.  The default value is "1".
8741
8742 @item gamma_r
8743 Set the gamma expression for red. The value must be a float in
8744 range @code{0.1} to @code{10.0}. The default value is "1".
8745
8746 @item gamma_g
8747 Set the gamma expression for green. The value must be a float in range
8748 @code{0.1} to @code{10.0}. The default value is "1".
8749
8750 @item gamma_b
8751 Set the gamma expression for blue. The value must be a float in range
8752 @code{0.1} to @code{10.0}. The default value is "1".
8753
8754 @item gamma_weight
8755 Set the gamma weight expression. It can be used to reduce the effect
8756 of a high gamma value on bright image areas, e.g. keep them from
8757 getting overamplified and just plain white. The value must be a float
8758 in range @code{0.0} to @code{1.0}. A value of @code{0.0} turns the
8759 gamma correction all the way down while @code{1.0} leaves it at its
8760 full strength. Default is "1".
8761
8762 @item eval
8763 Set when the expressions for brightness, contrast, saturation and
8764 gamma expressions are evaluated.
8765
8766 It accepts the following values:
8767 @table @samp
8768 @item init
8769 only evaluate expressions once during the filter initialization or
8770 when a command is processed
8771
8772 @item frame
8773 evaluate expressions for each incoming frame
8774 @end table
8775
8776 Default value is @samp{init}.
8777 @end table
8778
8779 The expressions accept the following parameters:
8780 @table @option
8781 @item n
8782 frame count of the input frame starting from 0
8783
8784 @item pos
8785 byte position of the corresponding packet in the input file, NAN if
8786 unspecified
8787
8788 @item r
8789 frame rate of the input video, NAN if the input frame rate is unknown
8790
8791 @item t
8792 timestamp expressed in seconds, NAN if the input timestamp is unknown
8793 @end table
8794
8795 @subsection Commands
8796 The filter supports the following commands:
8797
8798 @table @option
8799 @item contrast
8800 Set the contrast expression.
8801
8802 @item brightness
8803 Set the brightness expression.
8804
8805 @item saturation
8806 Set the saturation expression.
8807
8808 @item gamma
8809 Set the gamma expression.
8810
8811 @item gamma_r
8812 Set the gamma_r expression.
8813
8814 @item gamma_g
8815 Set gamma_g expression.
8816
8817 @item gamma_b
8818 Set gamma_b expression.
8819
8820 @item gamma_weight
8821 Set gamma_weight expression.
8822
8823 The command accepts the same syntax of the corresponding option.
8824
8825 If the specified expression is not valid, it is kept at its current
8826 value.
8827
8828 @end table
8829
8830 @section erosion
8831
8832 Apply erosion effect to the video.
8833
8834 This filter replaces the pixel by the local(3x3) minimum.
8835
8836 It accepts the following options:
8837
8838 @table @option
8839 @item threshold0
8840 @item threshold1
8841 @item threshold2
8842 @item threshold3
8843 Limit the maximum change for each plane, default is 65535.
8844 If 0, plane will remain unchanged.
8845
8846 @item coordinates
8847 Flag which specifies the pixel to refer to. Default is 255 i.e. all eight
8848 pixels are used.
8849
8850 Flags to local 3x3 coordinates maps like this:
8851
8852     1 2 3
8853     4   5
8854     6 7 8
8855 @end table
8856
8857 @section extractplanes
8858
8859 Extract color channel components from input video stream into
8860 separate grayscale video streams.
8861
8862 The filter accepts the following option:
8863
8864 @table @option
8865 @item planes
8866 Set plane(s) to extract.
8867
8868 Available values for planes are:
8869 @table @samp
8870 @item y
8871 @item u
8872 @item v
8873 @item a
8874 @item r
8875 @item g
8876 @item b
8877 @end table
8878
8879 Choosing planes not available in the input will result in an error.
8880 That means you cannot select @code{r}, @code{g}, @code{b} planes
8881 with @code{y}, @code{u}, @code{v} planes at same time.
8882 @end table
8883
8884 @subsection Examples
8885
8886 @itemize
8887 @item
8888 Extract luma, u and v color channel component from input video frame
8889 into 3 grayscale outputs:
8890 @example
8891 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
8892 @end example
8893 @end itemize
8894
8895 @section elbg
8896
8897 Apply a posterize effect using the ELBG (Enhanced LBG) algorithm.
8898
8899 For each input image, the filter will compute the optimal mapping from
8900 the input to the output given the codebook length, that is the number
8901 of distinct output colors.
8902
8903 This filter accepts the following options.
8904
8905 @table @option
8906 @item codebook_length, l
8907 Set codebook length. The value must be a positive integer, and
8908 represents the number of distinct output colors. Default value is 256.
8909
8910 @item nb_steps, n
8911 Set the maximum number of iterations to apply for computing the optimal
8912 mapping. The higher the value the better the result and the higher the
8913 computation time. Default value is 1.
8914
8915 @item seed, s
8916 Set a random seed, must be an integer included between 0 and
8917 UINT32_MAX. If not specified, or if explicitly set to -1, the filter
8918 will try to use a good random seed on a best effort basis.
8919
8920 @item pal8
8921 Set pal8 output pixel format. This option does not work with codebook
8922 length greater than 256.
8923 @end table
8924
8925 @section entropy
8926
8927 Measure graylevel entropy in histogram of color channels of video frames.
8928
8929 It accepts the following parameters:
8930
8931 @table @option
8932 @item mode
8933 Can be either @var{normal} or @var{diff}. Default is @var{normal}.
8934
8935 @var{diff} mode measures entropy of histogram delta values, absolute differences
8936 between neighbour histogram values.
8937 @end table
8938
8939 @section fade
8940
8941 Apply a fade-in/out effect to the input video.
8942
8943 It accepts the following parameters:
8944
8945 @table @option
8946 @item type, t
8947 The effect type can be either "in" for a fade-in, or "out" for a fade-out
8948 effect.
8949 Default is @code{in}.
8950
8951 @item start_frame, s
8952 Specify the number of the frame to start applying the fade
8953 effect at. Default is 0.
8954
8955 @item nb_frames, n
8956 The number of frames that the fade effect lasts. At the end of the
8957 fade-in effect, the output video will have the same intensity as the input video.
8958 At the end of the fade-out transition, the output video will be filled with the
8959 selected @option{color}.
8960 Default is 25.
8961
8962 @item alpha
8963 If set to 1, fade only alpha channel, if one exists on the input.
8964 Default value is 0.
8965
8966 @item start_time, st
8967 Specify the timestamp (in seconds) of the frame to start to apply the fade
8968 effect. If both start_frame and start_time are specified, the fade will start at
8969 whichever comes last.  Default is 0.
8970
8971 @item duration, d
8972 The number of seconds for which the fade effect has to last. At the end of the
8973 fade-in effect the output video will have the same intensity as the input video,
8974 at the end of the fade-out transition the output video will be filled with the
8975 selected @option{color}.
8976 If both duration and nb_frames are specified, duration is used. Default is 0
8977 (nb_frames is used by default).
8978
8979 @item color, c
8980 Specify the color of the fade. Default is "black".
8981 @end table
8982
8983 @subsection Examples
8984
8985 @itemize
8986 @item
8987 Fade in the first 30 frames of video:
8988 @example
8989 fade=in:0:30
8990 @end example
8991
8992 The command above is equivalent to:
8993 @example
8994 fade=t=in:s=0:n=30
8995 @end example
8996
8997 @item
8998 Fade out the last 45 frames of a 200-frame video:
8999 @example
9000 fade=out:155:45
9001 fade=type=out:start_frame=155:nb_frames=45
9002 @end example
9003
9004 @item
9005 Fade in the first 25 frames and fade out the last 25 frames of a 1000-frame video:
9006 @example
9007 fade=in:0:25, fade=out:975:25
9008 @end example
9009
9010 @item
9011 Make the first 5 frames yellow, then fade in from frame 5-24:
9012 @example
9013 fade=in:5:20:color=yellow
9014 @end example
9015
9016 @item
9017 Fade in alpha over first 25 frames of video:
9018 @example
9019 fade=in:0:25:alpha=1
9020 @end example
9021
9022 @item
9023 Make the first 5.5 seconds black, then fade in for 0.5 seconds:
9024 @example
9025 fade=t=in:st=5.5:d=0.5
9026 @end example
9027
9028 @end itemize
9029
9030 @section fftfilt
9031 Apply arbitrary expressions to samples in frequency domain
9032
9033 @table @option
9034 @item dc_Y
9035 Adjust the dc value (gain) of the luma plane of the image. The filter
9036 accepts an integer value in range @code{0} to @code{1000}. The default
9037 value is set to @code{0}.
9038
9039 @item dc_U
9040 Adjust the dc value (gain) of the 1st chroma plane of the image. The
9041 filter accepts an integer value in range @code{0} to @code{1000}. The
9042 default value is set to @code{0}.
9043
9044 @item dc_V
9045 Adjust the dc value (gain) of the 2nd chroma plane of the image. The
9046 filter accepts an integer value in range @code{0} to @code{1000}. The
9047 default value is set to @code{0}.
9048
9049 @item weight_Y
9050 Set the frequency domain weight expression for the luma plane.
9051
9052 @item weight_U
9053 Set the frequency domain weight expression for the 1st chroma plane.
9054
9055 @item weight_V
9056 Set the frequency domain weight expression for the 2nd chroma plane.
9057
9058 @item eval
9059 Set when the expressions are evaluated.
9060
9061 It accepts the following values:
9062 @table @samp
9063 @item init
9064 Only evaluate expressions once during the filter initialization.
9065
9066 @item frame
9067 Evaluate expressions for each incoming frame.
9068 @end table
9069
9070 Default value is @samp{init}.
9071
9072 The filter accepts the following variables:
9073 @item X
9074 @item Y
9075 The coordinates of the current sample.
9076
9077 @item W
9078 @item H
9079 The width and height of the image.
9080
9081 @item N
9082 The number of input frame, starting from 0.
9083 @end table
9084
9085 @subsection Examples
9086
9087 @itemize
9088 @item
9089 High-pass:
9090 @example
9091 fftfilt=dc_Y=128:weight_Y='squish(1-(Y+X)/100)'
9092 @end example
9093
9094 @item
9095 Low-pass:
9096 @example
9097 fftfilt=dc_Y=0:weight_Y='squish((Y+X)/100-1)'
9098 @end example
9099
9100 @item
9101 Sharpen:
9102 @example
9103 fftfilt=dc_Y=0:weight_Y='1+squish(1-(Y+X)/100)'
9104 @end example
9105
9106 @item
9107 Blur:
9108 @example
9109 fftfilt=dc_Y=0:weight_Y='exp(-4 * ((Y+X)/(W+H)))'
9110 @end example
9111
9112 @end itemize
9113
9114 @section fftdnoiz
9115 Denoise frames using 3D FFT (frequency domain filtering).
9116
9117 The filter accepts the following options:
9118
9119 @table @option
9120 @item sigma
9121 Set the noise sigma constant. This sets denoising strength.
9122 Default value is 1. Allowed range is from 0 to 30.
9123 Using very high sigma with low overlap may give blocking artifacts.
9124
9125 @item amount
9126 Set amount of denoising. By default all detected noise is reduced.
9127 Default value is 1. Allowed range is from 0 to 1.
9128
9129 @item block
9130 Set size of block, Default is 4, can be 3, 4, 5 or 6.
9131 Actual size of block in pixels is 2 to power of @var{block}, so by default
9132 block size in pixels is 2^4 which is 16.
9133
9134 @item overlap
9135 Set block overlap. Default is 0.5. Allowed range is from 0.2 to 0.8.
9136
9137 @item prev
9138 Set number of previous frames to use for denoising. By default is set to 0.
9139
9140 @item next
9141 Set number of next frames to to use for denoising. By default is set to 0.
9142
9143 @item planes
9144 Set planes which will be filtered, by default are all available filtered
9145 except alpha.
9146 @end table
9147
9148 @section field
9149
9150 Extract a single field from an interlaced image using stride
9151 arithmetic to avoid wasting CPU time. The output frames are marked as
9152 non-interlaced.
9153
9154 The filter accepts the following options:
9155
9156 @table @option
9157 @item type
9158 Specify whether to extract the top (if the value is @code{0} or
9159 @code{top}) or the bottom field (if the value is @code{1} or
9160 @code{bottom}).
9161 @end table
9162
9163 @section fieldhint
9164
9165 Create new frames by copying the top and bottom fields from surrounding frames
9166 supplied as numbers by the hint file.
9167
9168 @table @option
9169 @item hint
9170 Set file containing hints: absolute/relative frame numbers.
9171
9172 There must be one line for each frame in a clip. Each line must contain two
9173 numbers separated by the comma, optionally followed by @code{-} or @code{+}.
9174 Numbers supplied on each line of file can not be out of [N-1,N+1] where N
9175 is current frame number for @code{absolute} mode or out of [-1, 1] range
9176 for @code{relative} mode. First number tells from which frame to pick up top
9177 field and second number tells from which frame to pick up bottom field.
9178
9179 If optionally followed by @code{+} output frame will be marked as interlaced,
9180 else if followed by @code{-} output frame will be marked as progressive, else
9181 it will be marked same as input frame.
9182 If line starts with @code{#} or @code{;} that line is skipped.
9183
9184 @item mode
9185 Can be item @code{absolute} or @code{relative}. Default is @code{absolute}.
9186 @end table
9187
9188 Example of first several lines of @code{hint} file for @code{relative} mode:
9189 @example
9190 0,0 - # first frame
9191 1,0 - # second frame, use third's frame top field and second's frame bottom field
9192 1,0 - # third frame, use fourth's frame top field and third's frame bottom field
9193 1,0 -
9194 0,0 -
9195 0,0 -
9196 1,0 -
9197 1,0 -
9198 1,0 -
9199 0,0 -
9200 0,0 -
9201 1,0 -
9202 1,0 -
9203 1,0 -
9204 0,0 -
9205 @end example
9206
9207 @section fieldmatch
9208
9209 Field matching filter for inverse telecine. It is meant to reconstruct the
9210 progressive frames from a telecined stream. The filter does not drop duplicated
9211 frames, so to achieve a complete inverse telecine @code{fieldmatch} needs to be
9212 followed by a decimation filter such as @ref{decimate} in the filtergraph.
9213
9214 The separation of the field matching and the decimation is notably motivated by
9215 the possibility of inserting a de-interlacing filter fallback between the two.
9216 If the source has mixed telecined and real interlaced content,
9217 @code{fieldmatch} will not be able to match fields for the interlaced parts.
9218 But these remaining combed frames will be marked as interlaced, and thus can be
9219 de-interlaced by a later filter such as @ref{yadif} before decimation.
9220
9221 In addition to the various configuration options, @code{fieldmatch} can take an
9222 optional second stream, activated through the @option{ppsrc} option. If
9223 enabled, the frames reconstruction will be based on the fields and frames from
9224 this second stream. This allows the first input to be pre-processed in order to
9225 help the various algorithms of the filter, while keeping the output lossless
9226 (assuming the fields are matched properly). Typically, a field-aware denoiser,
9227 or brightness/contrast adjustments can help.
9228
9229 Note that this filter uses the same algorithms as TIVTC/TFM (AviSynth project)
9230 and VIVTC/VFM (VapourSynth project). The later is a light clone of TFM from
9231 which @code{fieldmatch} is based on. While the semantic and usage are very
9232 close, some behaviour and options names can differ.
9233
9234 The @ref{decimate} filter currently only works for constant frame rate input.
9235 If your input has mixed telecined (30fps) and progressive content with a lower
9236 framerate like 24fps use the following filterchain to produce the necessary cfr
9237 stream: @code{dejudder,fps=30000/1001,fieldmatch,decimate}.
9238
9239 The filter accepts the following options:
9240
9241 @table @option
9242 @item order
9243 Specify the assumed field order of the input stream. Available values are:
9244
9245 @table @samp
9246 @item auto
9247 Auto detect parity (use FFmpeg's internal parity value).
9248 @item bff
9249 Assume bottom field first.
9250 @item tff
9251 Assume top field first.
9252 @end table
9253
9254 Note that it is sometimes recommended not to trust the parity announced by the
9255 stream.
9256
9257 Default value is @var{auto}.
9258
9259 @item mode
9260 Set the matching mode or strategy to use. @option{pc} mode is the safest in the
9261 sense that it won't risk creating jerkiness due to duplicate frames when
9262 possible, but if there are bad edits or blended fields it will end up
9263 outputting combed frames when a good match might actually exist. On the other
9264 hand, @option{pcn_ub} mode is the most risky in terms of creating jerkiness,
9265 but will almost always find a good frame if there is one. The other values are
9266 all somewhere in between @option{pc} and @option{pcn_ub} in terms of risking
9267 jerkiness and creating duplicate frames versus finding good matches in sections
9268 with bad edits, orphaned fields, blended fields, etc.
9269
9270 More details about p/c/n/u/b are available in @ref{p/c/n/u/b meaning} section.
9271
9272 Available values are:
9273
9274 @table @samp
9275 @item pc
9276 2-way matching (p/c)
9277 @item pc_n
9278 2-way matching, and trying 3rd match if still combed (p/c + n)
9279 @item pc_u
9280 2-way matching, and trying 3rd match (same order) if still combed (p/c + u)
9281 @item pc_n_ub
9282 2-way matching, trying 3rd match if still combed, and trying 4th/5th matches if
9283 still combed (p/c + n + u/b)
9284 @item pcn
9285 3-way matching (p/c/n)
9286 @item pcn_ub
9287 3-way matching, and trying 4th/5th matches if all 3 of the original matches are
9288 detected as combed (p/c/n + u/b)
9289 @end table
9290
9291 The parenthesis at the end indicate the matches that would be used for that
9292 mode assuming @option{order}=@var{tff} (and @option{field} on @var{auto} or
9293 @var{top}).
9294
9295 In terms of speed @option{pc} mode is by far the fastest and @option{pcn_ub} is
9296 the slowest.
9297
9298 Default value is @var{pc_n}.
9299
9300 @item ppsrc
9301 Mark the main input stream as a pre-processed input, and enable the secondary
9302 input stream as the clean source to pick the fields from. See the filter
9303 introduction for more details. It is similar to the @option{clip2} feature from
9304 VFM/TFM.
9305
9306 Default value is @code{0} (disabled).
9307
9308 @item field
9309 Set the field to match from. It is recommended to set this to the same value as
9310 @option{order} unless you experience matching failures with that setting. In
9311 certain circumstances changing the field that is used to match from can have a
9312 large impact on matching performance. Available values are:
9313
9314 @table @samp
9315 @item auto
9316 Automatic (same value as @option{order}).
9317 @item bottom
9318 Match from the bottom field.
9319 @item top
9320 Match from the top field.
9321 @end table
9322
9323 Default value is @var{auto}.
9324
9325 @item mchroma
9326 Set whether or not chroma is included during the match comparisons. In most
9327 cases it is recommended to leave this enabled. You should set this to @code{0}
9328 only if your clip has bad chroma problems such as heavy rainbowing or other
9329 artifacts. Setting this to @code{0} could also be used to speed things up at
9330 the cost of some accuracy.
9331
9332 Default value is @code{1}.
9333
9334 @item y0
9335 @item y1
9336 These define an exclusion band which excludes the lines between @option{y0} and
9337 @option{y1} from being included in the field matching decision. An exclusion
9338 band can be used to ignore subtitles, a logo, or other things that may
9339 interfere with the matching. @option{y0} sets the starting scan line and
9340 @option{y1} sets the ending line; all lines in between @option{y0} and
9341 @option{y1} (including @option{y0} and @option{y1}) will be ignored. Setting
9342 @option{y0} and @option{y1} to the same value will disable the feature.
9343 @option{y0} and @option{y1} defaults to @code{0}.
9344
9345 @item scthresh
9346 Set the scene change detection threshold as a percentage of maximum change on
9347 the luma plane. Good values are in the @code{[8.0, 14.0]} range. Scene change
9348 detection is only relevant in case @option{combmatch}=@var{sc}.  The range for
9349 @option{scthresh} is @code{[0.0, 100.0]}.
9350
9351 Default value is @code{12.0}.
9352
9353 @item combmatch
9354 When @option{combatch} is not @var{none}, @code{fieldmatch} will take into
9355 account the combed scores of matches when deciding what match to use as the
9356 final match. Available values are:
9357
9358 @table @samp
9359 @item none
9360 No final matching based on combed scores.
9361 @item sc
9362 Combed scores are only used when a scene change is detected.
9363 @item full
9364 Use combed scores all the time.
9365 @end table
9366
9367 Default is @var{sc}.
9368
9369 @item combdbg
9370 Force @code{fieldmatch} to calculate the combed metrics for certain matches and
9371 print them. This setting is known as @option{micout} in TFM/VFM vocabulary.
9372 Available values are:
9373
9374 @table @samp
9375 @item none
9376 No forced calculation.
9377 @item pcn
9378 Force p/c/n calculations.
9379 @item pcnub
9380 Force p/c/n/u/b calculations.
9381 @end table
9382
9383 Default value is @var{none}.
9384
9385 @item cthresh
9386 This is the area combing threshold used for combed frame detection. This
9387 essentially controls how "strong" or "visible" combing must be to be detected.
9388 Larger values mean combing must be more visible and smaller values mean combing
9389 can be less visible or strong and still be detected. Valid settings are from
9390 @code{-1} (every pixel will be detected as combed) to @code{255} (no pixel will
9391 be detected as combed). This is basically a pixel difference value. A good
9392 range is @code{[8, 12]}.
9393
9394 Default value is @code{9}.
9395
9396 @item chroma
9397 Sets whether or not chroma is considered in the combed frame decision.  Only
9398 disable this if your source has chroma problems (rainbowing, etc.) that are
9399 causing problems for the combed frame detection with chroma enabled. Actually,
9400 using @option{chroma}=@var{0} is usually more reliable, except for the case
9401 where there is chroma only combing in the source.
9402
9403 Default value is @code{0}.
9404
9405 @item blockx
9406 @item blocky
9407 Respectively set the x-axis and y-axis size of the window used during combed
9408 frame detection. This has to do with the size of the area in which
9409 @option{combpel} pixels are required to be detected as combed for a frame to be
9410 declared combed. See the @option{combpel} parameter description for more info.
9411 Possible values are any number that is a power of 2 starting at 4 and going up
9412 to 512.
9413
9414 Default value is @code{16}.
9415
9416 @item combpel
9417 The number of combed pixels inside any of the @option{blocky} by
9418 @option{blockx} size blocks on the frame for the frame to be detected as
9419 combed. While @option{cthresh} controls how "visible" the combing must be, this
9420 setting controls "how much" combing there must be in any localized area (a
9421 window defined by the @option{blockx} and @option{blocky} settings) on the
9422 frame. Minimum value is @code{0} and maximum is @code{blocky x blockx} (at
9423 which point no frames will ever be detected as combed). This setting is known
9424 as @option{MI} in TFM/VFM vocabulary.
9425
9426 Default value is @code{80}.
9427 @end table
9428
9429 @anchor{p/c/n/u/b meaning}
9430 @subsection p/c/n/u/b meaning
9431
9432 @subsubsection p/c/n
9433
9434 We assume the following telecined stream:
9435
9436 @example
9437 Top fields:     1 2 2 3 4
9438 Bottom fields:  1 2 3 4 4
9439 @end example
9440
9441 The numbers correspond to the progressive frame the fields relate to. Here, the
9442 first two frames are progressive, the 3rd and 4th are combed, and so on.
9443
9444 When @code{fieldmatch} is configured to run a matching from bottom
9445 (@option{field}=@var{bottom}) this is how this input stream get transformed:
9446
9447 @example
9448 Input stream:
9449                 T     1 2 2 3 4
9450                 B     1 2 3 4 4   <-- matching reference
9451
9452 Matches:              c c n n c
9453
9454 Output stream:
9455                 T     1 2 3 4 4
9456                 B     1 2 3 4 4
9457 @end example
9458
9459 As a result of the field matching, we can see that some frames get duplicated.
9460 To perform a complete inverse telecine, you need to rely on a decimation filter
9461 after this operation. See for instance the @ref{decimate} filter.
9462
9463 The same operation now matching from top fields (@option{field}=@var{top})
9464 looks like this:
9465
9466 @example
9467 Input stream:
9468                 T     1 2 2 3 4   <-- matching reference
9469                 B     1 2 3 4 4
9470
9471 Matches:              c c p p c
9472
9473 Output stream:
9474                 T     1 2 2 3 4
9475                 B     1 2 2 3 4
9476 @end example
9477
9478 In these examples, we can see what @var{p}, @var{c} and @var{n} mean;
9479 basically, they refer to the frame and field of the opposite parity:
9480
9481 @itemize
9482 @item @var{p} matches the field of the opposite parity in the previous frame
9483 @item @var{c} matches the field of the opposite parity in the current frame
9484 @item @var{n} matches the field of the opposite parity in the next frame
9485 @end itemize
9486
9487 @subsubsection u/b
9488
9489 The @var{u} and @var{b} matching are a bit special in the sense that they match
9490 from the opposite parity flag. In the following examples, we assume that we are
9491 currently matching the 2nd frame (Top:2, bottom:2). According to the match, a
9492 'x' is placed above and below each matched fields.
9493
9494 With bottom matching (@option{field}=@var{bottom}):
9495 @example
9496 Match:           c         p           n          b          u
9497
9498                  x       x               x        x          x
9499   Top          1 2 2     1 2 2       1 2 2      1 2 2      1 2 2
9500   Bottom       1 2 3     1 2 3       1 2 3      1 2 3      1 2 3
9501                  x         x           x        x              x
9502
9503 Output frames:
9504                  2          1          2          2          2
9505                  2          2          2          1          3
9506 @end example
9507
9508 With top matching (@option{field}=@var{top}):
9509 @example
9510 Match:           c         p           n          b          u
9511
9512                  x         x           x        x              x
9513   Top          1 2 2     1 2 2       1 2 2      1 2 2      1 2 2
9514   Bottom       1 2 3     1 2 3       1 2 3      1 2 3      1 2 3
9515                  x       x               x        x          x
9516
9517 Output frames:
9518                  2          2          2          1          2
9519                  2          1          3          2          2
9520 @end example
9521
9522 @subsection Examples
9523
9524 Simple IVTC of a top field first telecined stream:
9525 @example
9526 fieldmatch=order=tff:combmatch=none, decimate
9527 @end example
9528
9529 Advanced IVTC, with fallback on @ref{yadif} for still combed frames:
9530 @example
9531 fieldmatch=order=tff:combmatch=full, yadif=deint=interlaced, decimate
9532 @end example
9533
9534 @section fieldorder
9535
9536 Transform the field order of the input video.
9537
9538 It accepts the following parameters:
9539
9540 @table @option
9541
9542 @item order
9543 The output field order. Valid values are @var{tff} for top field first or @var{bff}
9544 for bottom field first.
9545 @end table
9546
9547 The default value is @samp{tff}.
9548
9549 The transformation is done by shifting the picture content up or down
9550 by one line, and filling the remaining line with appropriate picture content.
9551 This method is consistent with most broadcast field order converters.
9552
9553 If the input video is not flagged as being interlaced, or it is already
9554 flagged as being of the required output field order, then this filter does
9555 not alter the incoming video.
9556
9557 It is very useful when converting to or from PAL DV material,
9558 which is bottom field first.
9559
9560 For example:
9561 @example
9562 ffmpeg -i in.vob -vf "fieldorder=bff" out.dv
9563 @end example
9564
9565 @section fifo, afifo
9566
9567 Buffer input images and send them when they are requested.
9568
9569 It is mainly useful when auto-inserted by the libavfilter
9570 framework.
9571
9572 It does not take parameters.
9573
9574 @section fillborders
9575
9576 Fill borders of the input video, without changing video stream dimensions.
9577 Sometimes video can have garbage at the four edges and you may not want to
9578 crop video input to keep size multiple of some number.
9579
9580 This filter accepts the following options:
9581
9582 @table @option
9583 @item left
9584 Number of pixels to fill from left border.
9585
9586 @item right
9587 Number of pixels to fill from right border.
9588
9589 @item top
9590 Number of pixels to fill from top border.
9591
9592 @item bottom
9593 Number of pixels to fill from bottom border.
9594
9595 @item mode
9596 Set fill mode.
9597
9598 It accepts the following values:
9599 @table @samp
9600 @item smear
9601 fill pixels using outermost pixels
9602
9603 @item mirror
9604 fill pixels using mirroring
9605
9606 @item fixed
9607 fill pixels with constant value
9608 @end table
9609
9610 Default is @var{smear}.
9611
9612 @item color
9613 Set color for pixels in fixed mode. Default is @var{black}.
9614 @end table
9615
9616 @section find_rect
9617
9618 Find a rectangular object
9619
9620 It accepts the following options:
9621
9622 @table @option
9623 @item object
9624 Filepath of the object image, needs to be in gray8.
9625
9626 @item threshold
9627 Detection threshold, default is 0.5.
9628
9629 @item mipmaps
9630 Number of mipmaps, default is 3.
9631
9632 @item xmin, ymin, xmax, ymax
9633 Specifies the rectangle in which to search.
9634 @end table
9635
9636 @subsection Examples
9637
9638 @itemize
9639 @item
9640 Generate a representative palette of a given video using @command{ffmpeg}:
9641 @example
9642 ffmpeg -i file.ts -vf find_rect=newref.pgm,cover_rect=cover.jpg:mode=cover new.mkv
9643 @end example
9644 @end itemize
9645
9646 @section cover_rect
9647
9648 Cover a rectangular object
9649
9650 It accepts the following options:
9651
9652 @table @option
9653 @item cover
9654 Filepath of the optional cover image, needs to be in yuv420.
9655
9656 @item mode
9657 Set covering mode.
9658
9659 It accepts the following values:
9660 @table @samp
9661 @item cover
9662 cover it by the supplied image
9663 @item blur
9664 cover it by interpolating the surrounding pixels
9665 @end table
9666
9667 Default value is @var{blur}.
9668 @end table
9669
9670 @subsection Examples
9671
9672 @itemize
9673 @item
9674 Generate a representative palette of a given video using @command{ffmpeg}:
9675 @example
9676 ffmpeg -i file.ts -vf find_rect=newref.pgm,cover_rect=cover.jpg:mode=cover new.mkv
9677 @end example
9678 @end itemize
9679
9680 @section floodfill
9681
9682 Flood area with values of same pixel components with another values.
9683
9684 It accepts the following options:
9685 @table @option
9686 @item x
9687 Set pixel x coordinate.
9688
9689 @item y
9690 Set pixel y coordinate.
9691
9692 @item s0
9693 Set source #0 component value.
9694
9695 @item s1
9696 Set source #1 component value.
9697
9698 @item s2
9699 Set source #2 component value.
9700
9701 @item s3
9702 Set source #3 component value.
9703
9704 @item d0
9705 Set destination #0 component value.
9706
9707 @item d1
9708 Set destination #1 component value.
9709
9710 @item d2
9711 Set destination #2 component value.
9712
9713 @item d3
9714 Set destination #3 component value.
9715 @end table
9716
9717 @anchor{format}
9718 @section format
9719
9720 Convert the input video to one of the specified pixel formats.
9721 Libavfilter will try to pick one that is suitable as input to
9722 the next filter.
9723
9724 It accepts the following parameters:
9725 @table @option
9726
9727 @item pix_fmts
9728 A '|'-separated list of pixel format names, such as
9729 "pix_fmts=yuv420p|monow|rgb24".
9730
9731 @end table
9732
9733 @subsection Examples
9734
9735 @itemize
9736 @item
9737 Convert the input video to the @var{yuv420p} format
9738 @example
9739 format=pix_fmts=yuv420p
9740 @end example
9741
9742 Convert the input video to any of the formats in the list
9743 @example
9744 format=pix_fmts=yuv420p|yuv444p|yuv410p
9745 @end example
9746 @end itemize
9747
9748 @anchor{fps}
9749 @section fps
9750
9751 Convert the video to specified constant frame rate by duplicating or dropping
9752 frames as necessary.
9753
9754 It accepts the following parameters:
9755 @table @option
9756
9757 @item fps
9758 The desired output frame rate. The default is @code{25}.
9759
9760 @item start_time
9761 Assume the first PTS should be the given value, in seconds. This allows for
9762 padding/trimming at the start of stream. By default, no assumption is made
9763 about the first frame's expected PTS, so no padding or trimming is done.
9764 For example, this could be set to 0 to pad the beginning with duplicates of
9765 the first frame if a video stream starts after the audio stream or to trim any
9766 frames with a negative PTS.
9767
9768 @item round
9769 Timestamp (PTS) rounding method.
9770
9771 Possible values are:
9772 @table @option
9773 @item zero
9774 round towards 0
9775 @item inf
9776 round away from 0
9777 @item down
9778 round towards -infinity
9779 @item up
9780 round towards +infinity
9781 @item near
9782 round to nearest
9783 @end table
9784 The default is @code{near}.
9785
9786 @item eof_action
9787 Action performed when reading the last frame.
9788
9789 Possible values are:
9790 @table @option
9791 @item round
9792 Use same timestamp rounding method as used for other frames.
9793 @item pass
9794 Pass through last frame if input duration has not been reached yet.
9795 @end table
9796 The default is @code{round}.
9797
9798 @end table
9799
9800 Alternatively, the options can be specified as a flat string:
9801 @var{fps}[:@var{start_time}[:@var{round}]].
9802
9803 See also the @ref{setpts} filter.
9804
9805 @subsection Examples
9806
9807 @itemize
9808 @item
9809 A typical usage in order to set the fps to 25:
9810 @example
9811 fps=fps=25
9812 @end example
9813
9814 @item
9815 Sets the fps to 24, using abbreviation and rounding method to round to nearest:
9816 @example
9817 fps=fps=film:round=near
9818 @end example
9819 @end itemize
9820
9821 @section framepack
9822
9823 Pack two different video streams into a stereoscopic video, setting proper
9824 metadata on supported codecs. The two views should have the same size and
9825 framerate and processing will stop when the shorter video ends. Please note
9826 that you may conveniently adjust view properties with the @ref{scale} and
9827 @ref{fps} filters.
9828
9829 It accepts the following parameters:
9830 @table @option
9831
9832 @item format
9833 The desired packing format. Supported values are:
9834
9835 @table @option
9836
9837 @item sbs
9838 The views are next to each other (default).
9839
9840 @item tab
9841 The views are on top of each other.
9842
9843 @item lines
9844 The views are packed by line.
9845
9846 @item columns
9847 The views are packed by column.
9848
9849 @item frameseq
9850 The views are temporally interleaved.
9851
9852 @end table
9853
9854 @end table
9855
9856 Some examples:
9857
9858 @example
9859 # Convert left and right views into a frame-sequential video
9860 ffmpeg -i LEFT -i RIGHT -filter_complex framepack=frameseq OUTPUT
9861
9862 # Convert views into a side-by-side video with the same output resolution as the input
9863 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
9864 @end example
9865
9866 @section framerate
9867
9868 Change the frame rate by interpolating new video output frames from the source
9869 frames.
9870
9871 This filter is not designed to function correctly with interlaced media. If
9872 you wish to change the frame rate of interlaced media then you are required
9873 to deinterlace before this filter and re-interlace after this filter.
9874
9875 A description of the accepted options follows.
9876
9877 @table @option
9878 @item fps
9879 Specify the output frames per second. This option can also be specified
9880 as a value alone. The default is @code{50}.
9881
9882 @item interp_start
9883 Specify the start of a range where the output frame will be created as a
9884 linear interpolation of two frames. The range is [@code{0}-@code{255}],
9885 the default is @code{15}.
9886
9887 @item interp_end
9888 Specify the end of a range where the output frame will be created as a
9889 linear interpolation of two frames. The range is [@code{0}-@code{255}],
9890 the default is @code{240}.
9891
9892 @item scene
9893 Specify the level at which a scene change is detected as a value between
9894 0 and 100 to indicate a new scene; a low value reflects a low
9895 probability for the current frame to introduce a new scene, while a higher
9896 value means the current frame is more likely to be one.
9897 The default is @code{8.2}.
9898
9899 @item flags
9900 Specify flags influencing the filter process.
9901
9902 Available value for @var{flags} is:
9903
9904 @table @option
9905 @item scene_change_detect, scd
9906 Enable scene change detection using the value of the option @var{scene}.
9907 This flag is enabled by default.
9908 @end table
9909 @end table
9910
9911 @section framestep
9912
9913 Select one frame every N-th frame.
9914
9915 This filter accepts the following option:
9916 @table @option
9917 @item step
9918 Select frame after every @code{step} frames.
9919 Allowed values are positive integers higher than 0. Default value is @code{1}.
9920 @end table
9921
9922 @anchor{frei0r}
9923 @section frei0r
9924
9925 Apply a frei0r effect to the input video.
9926
9927 To enable the compilation of this filter, you need to install the frei0r
9928 header and configure FFmpeg with @code{--enable-frei0r}.
9929
9930 It accepts the following parameters:
9931
9932 @table @option
9933
9934 @item filter_name
9935 The name of the frei0r effect to load. If the environment variable
9936 @env{FREI0R_PATH} is defined, the frei0r effect is searched for in each of the
9937 directories specified by the colon-separated list in @env{FREI0R_PATH}.
9938 Otherwise, the standard frei0r paths are searched, in this order:
9939 @file{HOME/.frei0r-1/lib/}, @file{/usr/local/lib/frei0r-1/},
9940 @file{/usr/lib/frei0r-1/}.
9941
9942 @item filter_params
9943 A '|'-separated list of parameters to pass to the frei0r effect.
9944
9945 @end table
9946
9947 A frei0r effect parameter can be a boolean (its value is either
9948 "y" or "n"), a double, a color (specified as
9949 @var{R}/@var{G}/@var{B}, where @var{R}, @var{G}, and @var{B} are floating point
9950 numbers between 0.0 and 1.0, inclusive) or a color description as specified in the
9951 @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils},
9952 a position (specified as @var{X}/@var{Y}, where
9953 @var{X} and @var{Y} are floating point numbers) and/or a string.
9954
9955 The number and types of parameters depend on the loaded effect. If an
9956 effect parameter is not specified, the default value is set.
9957
9958 @subsection Examples
9959
9960 @itemize
9961 @item
9962 Apply the distort0r effect, setting the first two double parameters:
9963 @example
9964 frei0r=filter_name=distort0r:filter_params=0.5|0.01
9965 @end example
9966
9967 @item
9968 Apply the colordistance effect, taking a color as the first parameter:
9969 @example
9970 frei0r=colordistance:0.2/0.3/0.4
9971 frei0r=colordistance:violet
9972 frei0r=colordistance:0x112233
9973 @end example
9974
9975 @item
9976 Apply the perspective effect, specifying the top left and top right image
9977 positions:
9978 @example
9979 frei0r=perspective:0.2/0.2|0.8/0.2
9980 @end example
9981 @end itemize
9982
9983 For more information, see
9984 @url{http://frei0r.dyne.org}
9985
9986 @section fspp
9987
9988 Apply fast and simple postprocessing. It is a faster version of @ref{spp}.
9989
9990 It splits (I)DCT into horizontal/vertical passes. Unlike the simple post-
9991 processing filter, one of them is performed once per block, not per pixel.
9992 This allows for much higher speed.
9993
9994 The filter accepts the following options:
9995
9996 @table @option
9997 @item quality
9998 Set quality. This option defines the number of levels for averaging. It accepts
9999 an integer in the range 4-5. Default value is @code{4}.
10000
10001 @item qp
10002 Force a constant quantization parameter. It accepts an integer in range 0-63.
10003 If not set, the filter will use the QP from the video stream (if available).
10004
10005 @item strength
10006 Set filter strength. It accepts an integer in range -15 to 32. Lower values mean
10007 more details but also more artifacts, while higher values make the image smoother
10008 but also blurrier. Default value is @code{0} âˆ’ PSNR optimal.
10009
10010 @item use_bframe_qp
10011 Enable the use of the QP from the B-Frames if set to @code{1}. Using this
10012 option may cause flicker since the B-Frames have often larger QP. Default is
10013 @code{0} (not enabled).
10014
10015 @end table
10016
10017 @section gblur
10018
10019 Apply Gaussian blur filter.
10020
10021 The filter accepts the following options:
10022
10023 @table @option
10024 @item sigma
10025 Set horizontal sigma, standard deviation of Gaussian blur. Default is @code{0.5}.
10026
10027 @item steps
10028 Set number of steps for Gaussian approximation. Defauls is @code{1}.
10029
10030 @item planes
10031 Set which planes to filter. By default all planes are filtered.
10032
10033 @item sigmaV
10034 Set vertical sigma, if negative it will be same as @code{sigma}.
10035 Default is @code{-1}.
10036 @end table
10037
10038 @section geq
10039
10040 The filter accepts the following options:
10041
10042 @table @option
10043 @item lum_expr, lum
10044 Set the luminance expression.
10045 @item cb_expr, cb
10046 Set the chrominance blue expression.
10047 @item cr_expr, cr
10048 Set the chrominance red expression.
10049 @item alpha_expr, a
10050 Set the alpha expression.
10051 @item red_expr, r
10052 Set the red expression.
10053 @item green_expr, g
10054 Set the green expression.
10055 @item blue_expr, b
10056 Set the blue expression.
10057 @end table
10058
10059 The colorspace is selected according to the specified options. If one
10060 of the @option{lum_expr}, @option{cb_expr}, or @option{cr_expr}
10061 options is specified, the filter will automatically select a YCbCr
10062 colorspace. If one of the @option{red_expr}, @option{green_expr}, or
10063 @option{blue_expr} options is specified, it will select an RGB
10064 colorspace.
10065
10066 If one of the chrominance expression is not defined, it falls back on the other
10067 one. If no alpha expression is specified it will evaluate to opaque value.
10068 If none of chrominance expressions are specified, they will evaluate
10069 to the luminance expression.
10070
10071 The expressions can use the following variables and functions:
10072
10073 @table @option
10074 @item N
10075 The sequential number of the filtered frame, starting from @code{0}.
10076
10077 @item X
10078 @item Y
10079 The coordinates of the current sample.
10080
10081 @item W
10082 @item H
10083 The width and height of the image.
10084
10085 @item SW
10086 @item SH
10087 Width and height scale depending on the currently filtered plane. It is the
10088 ratio between the corresponding luma plane number of pixels and the current
10089 plane ones. E.g. for YUV4:2:0 the values are @code{1,1} for the luma plane, and
10090 @code{0.5,0.5} for chroma planes.
10091
10092 @item T
10093 Time of the current frame, expressed in seconds.
10094
10095 @item p(x, y)
10096 Return the value of the pixel at location (@var{x},@var{y}) of the current
10097 plane.
10098
10099 @item lum(x, y)
10100 Return the value of the pixel at location (@var{x},@var{y}) of the luminance
10101 plane.
10102
10103 @item cb(x, y)
10104 Return the value of the pixel at location (@var{x},@var{y}) of the
10105 blue-difference chroma plane. Return 0 if there is no such plane.
10106
10107 @item cr(x, y)
10108 Return the value of the pixel at location (@var{x},@var{y}) of the
10109 red-difference chroma plane. Return 0 if there is no such plane.
10110
10111 @item r(x, y)
10112 @item g(x, y)
10113 @item b(x, y)
10114 Return the value of the pixel at location (@var{x},@var{y}) of the
10115 red/green/blue component. Return 0 if there is no such component.
10116
10117 @item alpha(x, y)
10118 Return the value of the pixel at location (@var{x},@var{y}) of the alpha
10119 plane. Return 0 if there is no such plane.
10120 @end table
10121
10122 For functions, if @var{x} and @var{y} are outside the area, the value will be
10123 automatically clipped to the closer edge.
10124
10125 @subsection Examples
10126
10127 @itemize
10128 @item
10129 Flip the image horizontally:
10130 @example
10131 geq=p(W-X\,Y)
10132 @end example
10133
10134 @item
10135 Generate a bidimensional sine wave, with angle @code{PI/3} and a
10136 wavelength of 100 pixels:
10137 @example
10138 geq=128 + 100*sin(2*(PI/100)*(cos(PI/3)*(X-50*T) + sin(PI/3)*Y)):128:128
10139 @end example
10140
10141 @item
10142 Generate a fancy enigmatic moving light:
10143 @example
10144 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
10145 @end example
10146
10147 @item
10148 Generate a quick emboss effect:
10149 @example
10150 format=gray,geq=lum_expr='(p(X,Y)+(256-p(X-4,Y-4)))/2'
10151 @end example
10152
10153 @item
10154 Modify RGB components depending on pixel position:
10155 @example
10156 geq=r='X/W*r(X,Y)':g='(1-X/W)*g(X,Y)':b='(H-Y)/H*b(X,Y)'
10157 @end example
10158
10159 @item
10160 Create a radial gradient that is the same size as the input (also see
10161 the @ref{vignette} filter):
10162 @example
10163 geq=lum=255*gauss((X/W-0.5)*3)*gauss((Y/H-0.5)*3)/gauss(0)/gauss(0),format=gray
10164 @end example
10165 @end itemize
10166
10167 @section gradfun
10168
10169 Fix the banding artifacts that are sometimes introduced into nearly flat
10170 regions by truncation to 8-bit color depth.
10171 Interpolate the gradients that should go where the bands are, and
10172 dither them.
10173
10174 It is designed for playback only.  Do not use it prior to
10175 lossy compression, because compression tends to lose the dither and
10176 bring back the bands.
10177
10178 It accepts the following parameters:
10179
10180 @table @option
10181
10182 @item strength
10183 The maximum amount by which the filter will change any one pixel. This is also
10184 the threshold for detecting nearly flat regions. Acceptable values range from
10185 .51 to 64; the default value is 1.2. Out-of-range values will be clipped to the
10186 valid range.
10187
10188 @item radius
10189 The neighborhood to fit the gradient to. A larger radius makes for smoother
10190 gradients, but also prevents the filter from modifying the pixels near detailed
10191 regions. Acceptable values are 8-32; the default value is 16. Out-of-range
10192 values will be clipped to the valid range.
10193
10194 @end table
10195
10196 Alternatively, the options can be specified as a flat string:
10197 @var{strength}[:@var{radius}]
10198
10199 @subsection Examples
10200
10201 @itemize
10202 @item
10203 Apply the filter with a @code{3.5} strength and radius of @code{8}:
10204 @example
10205 gradfun=3.5:8
10206 @end example
10207
10208 @item
10209 Specify radius, omitting the strength (which will fall-back to the default
10210 value):
10211 @example
10212 gradfun=radius=8
10213 @end example
10214
10215 @end itemize
10216
10217 @section greyedge
10218 A color constancy variation filter which estimates scene illumination via grey edge algorithm
10219 and corrects the scene colors accordingly.
10220
10221 See: @url{https://staff.science.uva.nl/th.gevers/pub/GeversTIP07.pdf}
10222
10223 The filter accepts the following options:
10224
10225 @table @option
10226 @item difford
10227 The order of differentiation to be applied on the scene. Must be chosen in the range
10228 [0,2] and default value is 1.
10229
10230 @item minknorm
10231 The Minkowski parameter to be used for calculating the Minkowski distance. Must
10232 be chosen in the range [0,20] and default value is 1. Set to 0 for getting
10233 max value instead of calculating Minkowski distance.
10234
10235 @item sigma
10236 The standard deviation of Gaussian blur to be applied on the scene. Must be
10237 chosen in the range [0,1024.0] and default value = 1. floor( @var{sigma} * break_off_sigma(3) )
10238 can't be euqal to 0 if @var{difford} is greater than 0.
10239 @end table
10240
10241 @subsection Examples
10242 @itemize
10243
10244 @item
10245 Grey Edge:
10246 @example
10247 greyedge=difford=1:minknorm=5:sigma=2
10248 @end example
10249
10250 @item
10251 Max Edge:
10252 @example
10253 greyedge=difford=1:minknorm=0:sigma=2
10254 @end example
10255
10256 @end itemize
10257
10258 @anchor{haldclut}
10259 @section haldclut
10260
10261 Apply a Hald CLUT to a video stream.
10262
10263 First input is the video stream to process, and second one is the Hald CLUT.
10264 The Hald CLUT input can be a simple picture or a complete video stream.
10265
10266 The filter accepts the following options:
10267
10268 @table @option
10269 @item shortest
10270 Force termination when the shortest input terminates. Default is @code{0}.
10271 @item repeatlast
10272 Continue applying the last CLUT after the end of the stream. A value of
10273 @code{0} disable the filter after the last frame of the CLUT is reached.
10274 Default is @code{1}.
10275 @end table
10276
10277 @code{haldclut} also has the same interpolation options as @ref{lut3d} (both
10278 filters share the same internals).
10279
10280 More information about the Hald CLUT can be found on Eskil Steenberg's website
10281 (Hald CLUT author) at @url{http://www.quelsolaar.com/technology/clut.html}.
10282
10283 @subsection Workflow examples
10284
10285 @subsubsection Hald CLUT video stream
10286
10287 Generate an identity Hald CLUT stream altered with various effects:
10288 @example
10289 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
10290 @end example
10291
10292 Note: make sure you use a lossless codec.
10293
10294 Then use it with @code{haldclut} to apply it on some random stream:
10295 @example
10296 ffmpeg -f lavfi -i mandelbrot -i clut.nut -filter_complex '[0][1] haldclut' -t 20 mandelclut.mkv
10297 @end example
10298
10299 The Hald CLUT will be applied to the 10 first seconds (duration of
10300 @file{clut.nut}), then the latest picture of that CLUT stream will be applied
10301 to the remaining frames of the @code{mandelbrot} stream.
10302
10303 @subsubsection Hald CLUT with preview
10304
10305 A Hald CLUT is supposed to be a squared image of @code{Level*Level*Level} by
10306 @code{Level*Level*Level} pixels. For a given Hald CLUT, FFmpeg will select the
10307 biggest possible square starting at the top left of the picture. The remaining
10308 padding pixels (bottom or right) will be ignored. This area can be used to add
10309 a preview of the Hald CLUT.
10310
10311 Typically, the following generated Hald CLUT will be supported by the
10312 @code{haldclut} filter:
10313
10314 @example
10315 ffmpeg -f lavfi -i @ref{haldclutsrc}=8 -vf "
10316    pad=iw+320 [padded_clut];
10317    smptebars=s=320x256, split [a][b];
10318    [padded_clut][a] overlay=W-320:h, curves=color_negative [main];
10319    [main][b] overlay=W-320" -frames:v 1 clut.png
10320 @end example
10321
10322 It contains the original and a preview of the effect of the CLUT: SMPTE color
10323 bars are displayed on the right-top, and below the same color bars processed by
10324 the color changes.
10325
10326 Then, the effect of this Hald CLUT can be visualized with:
10327 @example
10328 ffplay input.mkv -vf "movie=clut.png, [in] haldclut"
10329 @end example
10330
10331 @section hflip
10332
10333 Flip the input video horizontally.
10334
10335 For example, to horizontally flip the input video with @command{ffmpeg}:
10336 @example
10337 ffmpeg -i in.avi -vf "hflip" out.avi
10338 @end example
10339
10340 @section histeq
10341 This filter applies a global color histogram equalization on a
10342 per-frame basis.
10343
10344 It can be used to correct video that has a compressed range of pixel
10345 intensities.  The filter redistributes the pixel intensities to
10346 equalize their distribution across the intensity range. It may be
10347 viewed as an "automatically adjusting contrast filter". This filter is
10348 useful only for correcting degraded or poorly captured source
10349 video.
10350
10351 The filter accepts the following options:
10352
10353 @table @option
10354 @item strength
10355 Determine the amount of equalization to be applied.  As the strength
10356 is reduced, the distribution of pixel intensities more-and-more
10357 approaches that of the input frame. The value must be a float number
10358 in the range [0,1] and defaults to 0.200.
10359
10360 @item intensity
10361 Set the maximum intensity that can generated and scale the output
10362 values appropriately.  The strength should be set as desired and then
10363 the intensity can be limited if needed to avoid washing-out. The value
10364 must be a float number in the range [0,1] and defaults to 0.210.
10365
10366 @item antibanding
10367 Set the antibanding level. If enabled the filter will randomly vary
10368 the luminance of output pixels by a small amount to avoid banding of
10369 the histogram. Possible values are @code{none}, @code{weak} or
10370 @code{strong}. It defaults to @code{none}.
10371 @end table
10372
10373 @section histogram
10374
10375 Compute and draw a color distribution histogram for the input video.
10376
10377 The computed histogram is a representation of the color component
10378 distribution in an image.
10379
10380 Standard histogram displays the color components distribution in an image.
10381 Displays color graph for each color component. Shows distribution of
10382 the Y, U, V, A or R, G, B components, depending on input format, in the
10383 current frame. Below each graph a color component scale meter is shown.
10384
10385 The filter accepts the following options:
10386
10387 @table @option
10388 @item level_height
10389 Set height of level. Default value is @code{200}.
10390 Allowed range is [50, 2048].
10391
10392 @item scale_height
10393 Set height of color scale. Default value is @code{12}.
10394 Allowed range is [0, 40].
10395
10396 @item display_mode
10397 Set display mode.
10398 It accepts the following values:
10399 @table @samp
10400 @item stack
10401 Per color component graphs are placed below each other.
10402
10403 @item parade
10404 Per color component graphs are placed side by side.
10405
10406 @item overlay
10407 Presents information identical to that in the @code{parade}, except
10408 that the graphs representing color components are superimposed directly
10409 over one another.
10410 @end table
10411 Default is @code{stack}.
10412
10413 @item levels_mode
10414 Set mode. Can be either @code{linear}, or @code{logarithmic}.
10415 Default is @code{linear}.
10416
10417 @item components
10418 Set what color components to display.
10419 Default is @code{7}.
10420
10421 @item fgopacity
10422 Set foreground opacity. Default is @code{0.7}.
10423
10424 @item bgopacity
10425 Set background opacity. Default is @code{0.5}.
10426 @end table
10427
10428 @subsection Examples
10429
10430 @itemize
10431
10432 @item
10433 Calculate and draw histogram:
10434 @example
10435 ffplay -i input -vf histogram
10436 @end example
10437
10438 @end itemize
10439
10440 @anchor{hqdn3d}
10441 @section hqdn3d
10442
10443 This is a high precision/quality 3d denoise filter. It aims to reduce
10444 image noise, producing smooth images and making still images really
10445 still. It should enhance compressibility.
10446
10447 It accepts the following optional parameters:
10448
10449 @table @option
10450 @item luma_spatial
10451 A non-negative floating point number which specifies spatial luma strength.
10452 It defaults to 4.0.
10453
10454 @item chroma_spatial
10455 A non-negative floating point number which specifies spatial chroma strength.
10456 It defaults to 3.0*@var{luma_spatial}/4.0.
10457
10458 @item luma_tmp
10459 A floating point number which specifies luma temporal strength. It defaults to
10460 6.0*@var{luma_spatial}/4.0.
10461
10462 @item chroma_tmp
10463 A floating point number which specifies chroma temporal strength. It defaults to
10464 @var{luma_tmp}*@var{chroma_spatial}/@var{luma_spatial}.
10465 @end table
10466
10467 @section hwdownload
10468
10469 Download hardware frames to system memory.
10470
10471 The input must be in hardware frames, and the output a non-hardware format.
10472 Not all formats will be supported on the output - it may be necessary to insert
10473 an additional @option{format} filter immediately following in the graph to get
10474 the output in a supported format.
10475
10476 @section hwmap
10477
10478 Map hardware frames to system memory or to another device.
10479
10480 This filter has several different modes of operation; which one is used depends
10481 on the input and output formats:
10482 @itemize
10483 @item
10484 Hardware frame input, normal frame output
10485
10486 Map the input frames to system memory and pass them to the output.  If the
10487 original hardware frame is later required (for example, after overlaying
10488 something else on part of it), the @option{hwmap} filter can be used again
10489 in the next mode to retrieve it.
10490 @item
10491 Normal frame input, hardware frame output
10492
10493 If the input is actually a software-mapped hardware frame, then unmap it -
10494 that is, return the original hardware frame.
10495
10496 Otherwise, a device must be provided.  Create new hardware surfaces on that
10497 device for the output, then map them back to the software format at the input
10498 and give those frames to the preceding filter.  This will then act like the
10499 @option{hwupload} filter, but may be able to avoid an additional copy when
10500 the input is already in a compatible format.
10501 @item
10502 Hardware frame input and output
10503
10504 A device must be supplied for the output, either directly or with the
10505 @option{derive_device} option.  The input and output devices must be of
10506 different types and compatible - the exact meaning of this is
10507 system-dependent, but typically it means that they must refer to the same
10508 underlying hardware context (for example, refer to the same graphics card).
10509
10510 If the input frames were originally created on the output device, then unmap
10511 to retrieve the original frames.
10512
10513 Otherwise, map the frames to the output device - create new hardware frames
10514 on the output corresponding to the frames on the input.
10515 @end itemize
10516
10517 The following additional parameters are accepted:
10518
10519 @table @option
10520 @item mode
10521 Set the frame mapping mode.  Some combination of:
10522 @table @var
10523 @item read
10524 The mapped frame should be readable.
10525 @item write
10526 The mapped frame should be writeable.
10527 @item overwrite
10528 The mapping will always overwrite the entire frame.
10529
10530 This may improve performance in some cases, as the original contents of the
10531 frame need not be loaded.
10532 @item direct
10533 The mapping must not involve any copying.
10534
10535 Indirect mappings to copies of frames are created in some cases where either
10536 direct mapping is not possible or it would have unexpected properties.
10537 Setting this flag ensures that the mapping is direct and will fail if that is
10538 not possible.
10539 @end table
10540 Defaults to @var{read+write} if not specified.
10541
10542 @item derive_device @var{type}
10543 Rather than using the device supplied at initialisation, instead derive a new
10544 device of type @var{type} from the device the input frames exist on.
10545
10546 @item reverse
10547 In a hardware to hardware mapping, map in reverse - create frames in the sink
10548 and map them back to the source.  This may be necessary in some cases where
10549 a mapping in one direction is required but only the opposite direction is
10550 supported by the devices being used.
10551
10552 This option is dangerous - it may break the preceding filter in undefined
10553 ways if there are any additional constraints on that filter's output.
10554 Do not use it without fully understanding the implications of its use.
10555 @end table
10556
10557 @section hwupload
10558
10559 Upload system memory frames to hardware surfaces.
10560
10561 The device to upload to must be supplied when the filter is initialised.  If
10562 using ffmpeg, select the appropriate device with the @option{-filter_hw_device}
10563 option.
10564
10565 @anchor{hwupload_cuda}
10566 @section hwupload_cuda
10567
10568 Upload system memory frames to a CUDA device.
10569
10570 It accepts the following optional parameters:
10571
10572 @table @option
10573 @item device
10574 The number of the CUDA device to use
10575 @end table
10576
10577 @section hqx
10578
10579 Apply a high-quality magnification filter designed for pixel art. This filter
10580 was originally created by Maxim Stepin.
10581
10582 It accepts the following option:
10583
10584 @table @option
10585 @item n
10586 Set the scaling dimension: @code{2} for @code{hq2x}, @code{3} for
10587 @code{hq3x} and @code{4} for @code{hq4x}.
10588 Default is @code{3}.
10589 @end table
10590
10591 @section hstack
10592 Stack input videos horizontally.
10593
10594 All streams must be of same pixel format and of same height.
10595
10596 Note that this filter is faster than using @ref{overlay} and @ref{pad} filter
10597 to create same output.
10598
10599 The filter accept the following option:
10600
10601 @table @option
10602 @item inputs
10603 Set number of input streams. Default is 2.
10604
10605 @item shortest
10606 If set to 1, force the output to terminate when the shortest input
10607 terminates. Default value is 0.
10608 @end table
10609
10610 @section hue
10611
10612 Modify the hue and/or the saturation of the input.
10613
10614 It accepts the following parameters:
10615
10616 @table @option
10617 @item h
10618 Specify the hue angle as a number of degrees. It accepts an expression,
10619 and defaults to "0".
10620
10621 @item s
10622 Specify the saturation in the [-10,10] range. It accepts an expression and
10623 defaults to "1".
10624
10625 @item H
10626 Specify the hue angle as a number of radians. It accepts an
10627 expression, and defaults to "0".
10628
10629 @item b
10630 Specify the brightness in the [-10,10] range. It accepts an expression and
10631 defaults to "0".
10632 @end table
10633
10634 @option{h} and @option{H} are mutually exclusive, and can't be
10635 specified at the same time.
10636
10637 The @option{b}, @option{h}, @option{H} and @option{s} option values are
10638 expressions containing the following constants:
10639
10640 @table @option
10641 @item n
10642 frame count of the input frame starting from 0
10643
10644 @item pts
10645 presentation timestamp of the input frame expressed in time base units
10646
10647 @item r
10648 frame rate of the input video, NAN if the input frame rate is unknown
10649
10650 @item t
10651 timestamp expressed in seconds, NAN if the input timestamp is unknown
10652
10653 @item tb
10654 time base of the input video
10655 @end table
10656
10657 @subsection Examples
10658
10659 @itemize
10660 @item
10661 Set the hue to 90 degrees and the saturation to 1.0:
10662 @example
10663 hue=h=90:s=1
10664 @end example
10665
10666 @item
10667 Same command but expressing the hue in radians:
10668 @example
10669 hue=H=PI/2:s=1
10670 @end example
10671
10672 @item
10673 Rotate hue and make the saturation swing between 0
10674 and 2 over a period of 1 second:
10675 @example
10676 hue="H=2*PI*t: s=sin(2*PI*t)+1"
10677 @end example
10678
10679 @item
10680 Apply a 3 seconds saturation fade-in effect starting at 0:
10681 @example
10682 hue="s=min(t/3\,1)"
10683 @end example
10684
10685 The general fade-in expression can be written as:
10686 @example
10687 hue="s=min(0\, max((t-START)/DURATION\, 1))"
10688 @end example
10689
10690 @item
10691 Apply a 3 seconds saturation fade-out effect starting at 5 seconds:
10692 @example
10693 hue="s=max(0\, min(1\, (8-t)/3))"
10694 @end example
10695
10696 The general fade-out expression can be written as:
10697 @example
10698 hue="s=max(0\, min(1\, (START+DURATION-t)/DURATION))"
10699 @end example
10700
10701 @end itemize
10702
10703 @subsection Commands
10704
10705 This filter supports the following commands:
10706 @table @option
10707 @item b
10708 @item s
10709 @item h
10710 @item H
10711 Modify the hue and/or the saturation and/or brightness of the input video.
10712 The command accepts the same syntax of the corresponding option.
10713
10714 If the specified expression is not valid, it is kept at its current
10715 value.
10716 @end table
10717
10718 @section hysteresis
10719
10720 Grow first stream into second stream by connecting components.
10721 This makes it possible to build more robust edge masks.
10722
10723 This filter accepts the following options:
10724
10725 @table @option
10726 @item planes
10727 Set which planes will be processed as bitmap, unprocessed planes will be
10728 copied from first stream.
10729 By default value 0xf, all planes will be processed.
10730
10731 @item threshold
10732 Set threshold which is used in filtering. If pixel component value is higher than
10733 this value filter algorithm for connecting components is activated.
10734 By default value is 0.
10735 @end table
10736
10737 @section idet
10738
10739 Detect video interlacing type.
10740
10741 This filter tries to detect if the input frames are interlaced, progressive,
10742 top or bottom field first. It will also try to detect fields that are
10743 repeated between adjacent frames (a sign of telecine).
10744
10745 Single frame detection considers only immediately adjacent frames when classifying each frame.
10746 Multiple frame detection incorporates the classification history of previous frames.
10747
10748 The filter will log these metadata values:
10749
10750 @table @option
10751 @item single.current_frame
10752 Detected type of current frame using single-frame detection. One of:
10753 ``tff'' (top field first), ``bff'' (bottom field first),
10754 ``progressive'', or ``undetermined''
10755
10756 @item single.tff
10757 Cumulative number of frames detected as top field first using single-frame detection.
10758
10759 @item multiple.tff
10760 Cumulative number of frames detected as top field first using multiple-frame detection.
10761
10762 @item single.bff
10763 Cumulative number of frames detected as bottom field first using single-frame detection.
10764
10765 @item multiple.current_frame
10766 Detected type of current frame using multiple-frame detection. One of:
10767 ``tff'' (top field first), ``bff'' (bottom field first),
10768 ``progressive'', or ``undetermined''
10769
10770 @item multiple.bff
10771 Cumulative number of frames detected as bottom field first using multiple-frame detection.
10772
10773 @item single.progressive
10774 Cumulative number of frames detected as progressive using single-frame detection.
10775
10776 @item multiple.progressive
10777 Cumulative number of frames detected as progressive using multiple-frame detection.
10778
10779 @item single.undetermined
10780 Cumulative number of frames that could not be classified using single-frame detection.
10781
10782 @item multiple.undetermined
10783 Cumulative number of frames that could not be classified using multiple-frame detection.
10784
10785 @item repeated.current_frame
10786 Which field in the current frame is repeated from the last. One of ``neither'', ``top'', or ``bottom''.
10787
10788 @item repeated.neither
10789 Cumulative number of frames with no repeated field.
10790
10791 @item repeated.top
10792 Cumulative number of frames with the top field repeated from the previous frame's top field.
10793
10794 @item repeated.bottom
10795 Cumulative number of frames with the bottom field repeated from the previous frame's bottom field.
10796 @end table
10797
10798 The filter accepts the following options:
10799
10800 @table @option
10801 @item intl_thres
10802 Set interlacing threshold.
10803 @item prog_thres
10804 Set progressive threshold.
10805 @item rep_thres
10806 Threshold for repeated field detection.
10807 @item half_life
10808 Number of frames after which a given frame's contribution to the
10809 statistics is halved (i.e., it contributes only 0.5 to its
10810 classification). The default of 0 means that all frames seen are given
10811 full weight of 1.0 forever.
10812 @item analyze_interlaced_flag
10813 When this is not 0 then idet will use the specified number of frames to determine
10814 if the interlaced flag is accurate, it will not count undetermined frames.
10815 If the flag is found to be accurate it will be used without any further
10816 computations, if it is found to be inaccurate it will be cleared without any
10817 further computations. This allows inserting the idet filter as a low computational
10818 method to clean up the interlaced flag
10819 @end table
10820
10821 @section il
10822
10823 Deinterleave or interleave fields.
10824
10825 This filter allows one to process interlaced images fields without
10826 deinterlacing them. Deinterleaving splits the input frame into 2
10827 fields (so called half pictures). Odd lines are moved to the top
10828 half of the output image, even lines to the bottom half.
10829 You can process (filter) them independently and then re-interleave them.
10830
10831 The filter accepts the following options:
10832
10833 @table @option
10834 @item luma_mode, l
10835 @item chroma_mode, c
10836 @item alpha_mode, a
10837 Available values for @var{luma_mode}, @var{chroma_mode} and
10838 @var{alpha_mode} are:
10839
10840 @table @samp
10841 @item none
10842 Do nothing.
10843
10844 @item deinterleave, d
10845 Deinterleave fields, placing one above the other.
10846
10847 @item interleave, i
10848 Interleave fields. Reverse the effect of deinterleaving.
10849 @end table
10850 Default value is @code{none}.
10851
10852 @item luma_swap, ls
10853 @item chroma_swap, cs
10854 @item alpha_swap, as
10855 Swap luma/chroma/alpha fields. Exchange even & odd lines. Default value is @code{0}.
10856 @end table
10857
10858 @section inflate
10859
10860 Apply inflate effect to the video.
10861
10862 This filter replaces the pixel by the local(3x3) average by taking into account
10863 only values higher than the pixel.
10864
10865 It accepts the following options:
10866
10867 @table @option
10868 @item threshold0
10869 @item threshold1
10870 @item threshold2
10871 @item threshold3
10872 Limit the maximum change for each plane, default is 65535.
10873 If 0, plane will remain unchanged.
10874 @end table
10875
10876 @section interlace
10877
10878 Simple interlacing filter from progressive contents. This interleaves upper (or
10879 lower) lines from odd frames with lower (or upper) lines from even frames,
10880 halving the frame rate and preserving image height.
10881
10882 @example
10883    Original        Original             New Frame
10884    Frame 'j'      Frame 'j+1'             (tff)
10885   ==========      ===========       ==================
10886     Line 0  -------------------->    Frame 'j' Line 0
10887     Line 1          Line 1  ---->   Frame 'j+1' Line 1
10888     Line 2 --------------------->    Frame 'j' Line 2
10889     Line 3          Line 3  ---->   Frame 'j+1' Line 3
10890      ...             ...                   ...
10891 New Frame + 1 will be generated by Frame 'j+2' and Frame 'j+3' and so on
10892 @end example
10893
10894 It accepts the following optional parameters:
10895
10896 @table @option
10897 @item scan
10898 This determines whether the interlaced frame is taken from the even
10899 (tff - default) or odd (bff) lines of the progressive frame.
10900
10901 @item lowpass
10902 Vertical lowpass filter to avoid twitter interlacing and
10903 reduce moire patterns.
10904
10905 @table @samp
10906 @item 0, off
10907 Disable vertical lowpass filter
10908
10909 @item 1, linear
10910 Enable linear filter (default)
10911
10912 @item 2, complex
10913 Enable complex filter. This will slightly less reduce twitter and moire
10914 but better retain detail and subjective sharpness impression.
10915
10916 @end table
10917 @end table
10918
10919 @section kerndeint
10920
10921 Deinterlace input video by applying Donald Graft's adaptive kernel
10922 deinterling. Work on interlaced parts of a video to produce
10923 progressive frames.
10924
10925 The description of the accepted parameters follows.
10926
10927 @table @option
10928 @item thresh
10929 Set the threshold which affects the filter's tolerance when
10930 determining if a pixel line must be processed. It must be an integer
10931 in the range [0,255] and defaults to 10. A value of 0 will result in
10932 applying the process on every pixels.
10933
10934 @item map
10935 Paint pixels exceeding the threshold value to white if set to 1.
10936 Default is 0.
10937
10938 @item order
10939 Set the fields order. Swap fields if set to 1, leave fields alone if
10940 0. Default is 0.
10941
10942 @item sharp
10943 Enable additional sharpening if set to 1. Default is 0.
10944
10945 @item twoway
10946 Enable twoway sharpening if set to 1. Default is 0.
10947 @end table
10948
10949 @subsection Examples
10950
10951 @itemize
10952 @item
10953 Apply default values:
10954 @example
10955 kerndeint=thresh=10:map=0:order=0:sharp=0:twoway=0
10956 @end example
10957
10958 @item
10959 Enable additional sharpening:
10960 @example
10961 kerndeint=sharp=1
10962 @end example
10963
10964 @item
10965 Paint processed pixels in white:
10966 @example
10967 kerndeint=map=1
10968 @end example
10969 @end itemize
10970
10971 @section lenscorrection
10972
10973 Correct radial lens distortion
10974
10975 This filter can be used to correct for radial distortion as can result from the use
10976 of wide angle lenses, and thereby re-rectify the image. To find the right parameters
10977 one can use tools available for example as part of opencv or simply trial-and-error.
10978 To use opencv use the calibration sample (under samples/cpp) from the opencv sources
10979 and extract the k1 and k2 coefficients from the resulting matrix.
10980
10981 Note that effectively the same filter is available in the open-source tools Krita and
10982 Digikam from the KDE project.
10983
10984 In contrast to the @ref{vignette} filter, which can also be used to compensate lens errors,
10985 this filter corrects the distortion of the image, whereas @ref{vignette} corrects the
10986 brightness distribution, so you may want to use both filters together in certain
10987 cases, though you will have to take care of ordering, i.e. whether vignetting should
10988 be applied before or after lens correction.
10989
10990 @subsection Options
10991
10992 The filter accepts the following options:
10993
10994 @table @option
10995 @item cx
10996 Relative x-coordinate of the focal point of the image, and thereby the center of the
10997 distortion. This value has a range [0,1] and is expressed as fractions of the image
10998 width. Default is 0.5.
10999 @item cy
11000 Relative y-coordinate of the focal point of the image, and thereby the center of the
11001 distortion. This value has a range [0,1] and is expressed as fractions of the image
11002 height. Default is 0.5.
11003 @item k1
11004 Coefficient of the quadratic correction term. This value has a range [-1,1]. 0 means
11005 no correction. Default is 0.
11006 @item k2
11007 Coefficient of the double quadratic correction term. This value has a range [-1,1].
11008 0 means no correction. Default is 0.
11009 @end table
11010
11011 The formula that generates the correction is:
11012
11013 @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)
11014
11015 where @var{r_0} is halve of the image diagonal and @var{r_src} and @var{r_tgt} are the
11016 distances from the focal point in the source and target images, respectively.
11017
11018 @section lensfun
11019
11020 Apply lens correction via the lensfun library (@url{http://lensfun.sourceforge.net/}).
11021
11022 The @code{lensfun} filter requires the camera make, camera model, and lens model
11023 to apply the lens correction. The filter will load the lensfun database and
11024 query it to find the corresponding camera and lens entries in the database. As
11025 long as these entries can be found with the given options, the filter can
11026 perform corrections on frames. Note that incomplete strings will result in the
11027 filter choosing the best match with the given options, and the filter will
11028 output the chosen camera and lens models (logged with level "info"). You must
11029 provide the make, camera model, and lens model as they are required.
11030
11031 The filter accepts the following options:
11032
11033 @table @option
11034 @item make
11035 The make of the camera (for example, "Canon"). This option is required.
11036
11037 @item model
11038 The model of the camera (for example, "Canon EOS 100D"). This option is
11039 required.
11040
11041 @item lens_model
11042 The model of the lens (for example, "Canon EF-S 18-55mm f/3.5-5.6 IS STM"). This
11043 option is required.
11044
11045 @item mode
11046 The type of correction to apply. The following values are valid options:
11047
11048 @table @samp
11049 @item vignetting
11050 Enables fixing lens vignetting.
11051
11052 @item geometry
11053 Enables fixing lens geometry. This is the default.
11054
11055 @item subpixel
11056 Enables fixing chromatic aberrations.
11057
11058 @item vig_geo
11059 Enables fixing lens vignetting and lens geometry.
11060
11061 @item vig_subpixel
11062 Enables fixing lens vignetting and chromatic aberrations.
11063
11064 @item distortion
11065 Enables fixing both lens geometry and chromatic aberrations.
11066
11067 @item all
11068 Enables all possible corrections.
11069
11070 @end table
11071 @item focal_length
11072 The focal length of the image/video (zoom; expected constant for video). For
11073 example, a 18--55mm lens has focal length range of [18--55], so a value in that
11074 range should be chosen when using that lens. Default 18.
11075
11076 @item aperture
11077 The aperture of the image/video (expected constant for video). Note that
11078 aperture is only used for vignetting correction. Default 3.5.
11079
11080 @item focus_distance
11081 The focus distance of the image/video (expected constant for video). Note that
11082 focus distance is only used for vignetting and only slightly affects the
11083 vignetting correction process. If unknown, leave it at the default value (which
11084 is 1000).
11085
11086 @item target_geometry
11087 The target geometry of the output image/video. The following values are valid
11088 options:
11089
11090 @table @samp
11091 @item rectilinear (default)
11092 @item fisheye
11093 @item panoramic
11094 @item equirectangular
11095 @item fisheye_orthographic
11096 @item fisheye_stereographic
11097 @item fisheye_equisolid
11098 @item fisheye_thoby
11099 @end table
11100 @item reverse
11101 Apply the reverse of image correction (instead of correcting distortion, apply
11102 it).
11103
11104 @item interpolation
11105 The type of interpolation used when correcting distortion. The following values
11106 are valid options:
11107
11108 @table @samp
11109 @item nearest
11110 @item linear (default)
11111 @item lanczos
11112 @end table
11113 @end table
11114
11115 @subsection Examples
11116
11117 @itemize
11118 @item
11119 Apply lens correction with make "Canon", camera model "Canon EOS 100D", and lens
11120 model "Canon EF-S 18-55mm f/3.5-5.6 IS STM" with focal length of "18" and
11121 aperture of "8.0".
11122
11123 @example
11124 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
11125 @end example
11126
11127 @item
11128 Apply the same as before, but only for the first 5 seconds of video.
11129
11130 @example
11131 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
11132 @end example
11133
11134 @end itemize
11135
11136 @section libvmaf
11137
11138 Obtain the VMAF (Video Multi-Method Assessment Fusion)
11139 score between two input videos.
11140
11141 The obtained VMAF score is printed through the logging system.
11142
11143 It requires Netflix's vmaf library (libvmaf) as a pre-requisite.
11144 After installing the library it can be enabled using:
11145 @code{./configure --enable-libvmaf --enable-version3}.
11146 If no model path is specified it uses the default model: @code{vmaf_v0.6.1.pkl}.
11147
11148 The filter has following options:
11149
11150 @table @option
11151 @item model_path
11152 Set the model path which is to be used for SVM.
11153 Default value: @code{"vmaf_v0.6.1.pkl"}
11154
11155 @item log_path
11156 Set the file path to be used to store logs.
11157
11158 @item log_fmt
11159 Set the format of the log file (xml or json).
11160
11161 @item enable_transform
11162 Enables transform for computing vmaf.
11163
11164 @item phone_model
11165 Invokes the phone model which will generate VMAF scores higher than in the
11166 regular model, which is more suitable for laptop, TV, etc. viewing conditions.
11167
11168 @item psnr
11169 Enables computing psnr along with vmaf.
11170
11171 @item ssim
11172 Enables computing ssim along with vmaf.
11173
11174 @item ms_ssim
11175 Enables computing ms_ssim along with vmaf.
11176
11177 @item pool
11178 Set the pool method (mean, min or harmonic mean) to be used for computing vmaf.
11179
11180 @item n_threads
11181 Set number of threads to be used when computing vmaf.
11182
11183 @item n_subsample
11184 Set interval for frame subsampling used when computing vmaf.
11185
11186 @item enable_conf_interval
11187 Enables confidence interval.
11188 @end table
11189
11190 This filter also supports the @ref{framesync} options.
11191
11192 On the below examples the input file @file{main.mpg} being processed is
11193 compared with the reference file @file{ref.mpg}.
11194
11195 @example
11196 ffmpeg -i main.mpg -i ref.mpg -lavfi libvmaf -f null -
11197 @end example
11198
11199 Example with options:
11200 @example
11201 ffmpeg -i main.mpg -i ref.mpg -lavfi libvmaf="psnr=1:enable-transform=1" -f null -
11202 @end example
11203
11204 @section limiter
11205
11206 Limits the pixel components values to the specified range [min, max].
11207
11208 The filter accepts the following options:
11209
11210 @table @option
11211 @item min
11212 Lower bound. Defaults to the lowest allowed value for the input.
11213
11214 @item max
11215 Upper bound. Defaults to the highest allowed value for the input.
11216
11217 @item planes
11218 Specify which planes will be processed. Defaults to all available.
11219 @end table
11220
11221 @section loop
11222
11223 Loop video frames.
11224
11225 The filter accepts the following options:
11226
11227 @table @option
11228 @item loop
11229 Set the number of loops. Setting this value to -1 will result in infinite loops.
11230 Default is 0.
11231
11232 @item size
11233 Set maximal size in number of frames. Default is 0.
11234
11235 @item start
11236 Set first frame of loop. Default is 0.
11237 @end table
11238
11239 @section lut1d
11240
11241 Apply a 1D LUT to an input video.
11242
11243 The filter accepts the following options:
11244
11245 @table @option
11246 @item file
11247 Set the 1D LUT file name.
11248
11249 Currently supported formats:
11250 @table @samp
11251 @item cube
11252 Iridas
11253 @end table
11254
11255 @item interp
11256 Select interpolation mode.
11257
11258 Available values are:
11259
11260 @table @samp
11261 @item nearest
11262 Use values from the nearest defined point.
11263 @item linear
11264 Interpolate values using the linear interpolation.
11265 @item cubic
11266 Interpolate values using the cubic interpolation.
11267 @end table
11268 @end table
11269
11270 @anchor{lut3d}
11271 @section lut3d
11272
11273 Apply a 3D LUT to an input video.
11274
11275 The filter accepts the following options:
11276
11277 @table @option
11278 @item file
11279 Set the 3D LUT file name.
11280
11281 Currently supported formats:
11282 @table @samp
11283 @item 3dl
11284 AfterEffects
11285 @item cube
11286 Iridas
11287 @item dat
11288 DaVinci
11289 @item m3d
11290 Pandora
11291 @end table
11292 @item interp
11293 Select interpolation mode.
11294
11295 Available values are:
11296
11297 @table @samp
11298 @item nearest
11299 Use values from the nearest defined point.
11300 @item trilinear
11301 Interpolate values using the 8 points defining a cube.
11302 @item tetrahedral
11303 Interpolate values using a tetrahedron.
11304 @end table
11305 @end table
11306
11307 This filter also supports the @ref{framesync} options.
11308
11309 @section lumakey
11310
11311 Turn certain luma values into transparency.
11312
11313 The filter accepts the following options:
11314
11315 @table @option
11316 @item threshold
11317 Set the luma which will be used as base for transparency.
11318 Default value is @code{0}.
11319
11320 @item tolerance
11321 Set the range of luma values to be keyed out.
11322 Default value is @code{0}.
11323
11324 @item softness
11325 Set the range of softness. Default value is @code{0}.
11326 Use this to control gradual transition from zero to full transparency.
11327 @end table
11328
11329 @section lut, lutrgb, lutyuv
11330
11331 Compute a look-up table for binding each pixel component input value
11332 to an output value, and apply it to the input video.
11333
11334 @var{lutyuv} applies a lookup table to a YUV input video, @var{lutrgb}
11335 to an RGB input video.
11336
11337 These filters accept the following parameters:
11338 @table @option
11339 @item c0
11340 set first pixel component expression
11341 @item c1
11342 set second pixel component expression
11343 @item c2
11344 set third pixel component expression
11345 @item c3
11346 set fourth pixel component expression, corresponds to the alpha component
11347
11348 @item r
11349 set red component expression
11350 @item g
11351 set green component expression
11352 @item b
11353 set blue component expression
11354 @item a
11355 alpha component expression
11356
11357 @item y
11358 set Y/luminance component expression
11359 @item u
11360 set U/Cb component expression
11361 @item v
11362 set V/Cr component expression
11363 @end table
11364
11365 Each of them specifies the expression to use for computing the lookup table for
11366 the corresponding pixel component values.
11367
11368 The exact component associated to each of the @var{c*} options depends on the
11369 format in input.
11370
11371 The @var{lut} filter requires either YUV or RGB pixel formats in input,
11372 @var{lutrgb} requires RGB pixel formats in input, and @var{lutyuv} requires YUV.
11373
11374 The expressions can contain the following constants and functions:
11375
11376 @table @option
11377 @item w
11378 @item h
11379 The input width and height.
11380
11381 @item val
11382 The input value for the pixel component.
11383
11384 @item clipval
11385 The input value, clipped to the @var{minval}-@var{maxval} range.
11386
11387 @item maxval
11388 The maximum value for the pixel component.
11389
11390 @item minval
11391 The minimum value for the pixel component.
11392
11393 @item negval
11394 The negated value for the pixel component value, clipped to the
11395 @var{minval}-@var{maxval} range; it corresponds to the expression
11396 "maxval-clipval+minval".
11397
11398 @item clip(val)
11399 The computed value in @var{val}, clipped to the
11400 @var{minval}-@var{maxval} range.
11401
11402 @item gammaval(gamma)
11403 The computed gamma correction value of the pixel component value,
11404 clipped to the @var{minval}-@var{maxval} range. It corresponds to the
11405 expression
11406 "pow((clipval-minval)/(maxval-minval)\,@var{gamma})*(maxval-minval)+minval"
11407
11408 @end table
11409
11410 All expressions default to "val".
11411
11412 @subsection Examples
11413
11414 @itemize
11415 @item
11416 Negate input video:
11417 @example
11418 lutrgb="r=maxval+minval-val:g=maxval+minval-val:b=maxval+minval-val"
11419 lutyuv="y=maxval+minval-val:u=maxval+minval-val:v=maxval+minval-val"
11420 @end example
11421
11422 The above is the same as:
11423 @example
11424 lutrgb="r=negval:g=negval:b=negval"
11425 lutyuv="y=negval:u=negval:v=negval"
11426 @end example
11427
11428 @item
11429 Negate luminance:
11430 @example
11431 lutyuv=y=negval
11432 @end example
11433
11434 @item
11435 Remove chroma components, turning the video into a graytone image:
11436 @example
11437 lutyuv="u=128:v=128"
11438 @end example
11439
11440 @item
11441 Apply a luma burning effect:
11442 @example
11443 lutyuv="y=2*val"
11444 @end example
11445
11446 @item
11447 Remove green and blue components:
11448 @example
11449 lutrgb="g=0:b=0"
11450 @end example
11451
11452 @item
11453 Set a constant alpha channel value on input:
11454 @example
11455 format=rgba,lutrgb=a="maxval-minval/2"
11456 @end example
11457
11458 @item
11459 Correct luminance gamma by a factor of 0.5:
11460 @example
11461 lutyuv=y=gammaval(0.5)
11462 @end example
11463
11464 @item
11465 Discard least significant bits of luma:
11466 @example
11467 lutyuv=y='bitand(val, 128+64+32)'
11468 @end example
11469
11470 @item
11471 Technicolor like effect:
11472 @example
11473 lutyuv=u='(val-maxval/2)*2+maxval/2':v='(val-maxval/2)*2+maxval/2'
11474 @end example
11475 @end itemize
11476
11477 @section lut2, tlut2
11478
11479 The @code{lut2} filter takes two input streams and outputs one
11480 stream.
11481
11482 The @code{tlut2} (time lut2) filter takes two consecutive frames
11483 from one single stream.
11484
11485 This filter accepts the following parameters:
11486 @table @option
11487 @item c0
11488 set first pixel component expression
11489 @item c1
11490 set second pixel component expression
11491 @item c2
11492 set third pixel component expression
11493 @item c3
11494 set fourth pixel component expression, corresponds to the alpha component
11495 @end table
11496
11497 Each of them specifies the expression to use for computing the lookup table for
11498 the corresponding pixel component values.
11499
11500 The exact component associated to each of the @var{c*} options depends on the
11501 format in inputs.
11502
11503 The expressions can contain the following constants:
11504
11505 @table @option
11506 @item w
11507 @item h
11508 The input width and height.
11509
11510 @item x
11511 The first input value for the pixel component.
11512
11513 @item y
11514 The second input value for the pixel component.
11515
11516 @item bdx
11517 The first input video bit depth.
11518
11519 @item bdy
11520 The second input video bit depth.
11521 @end table
11522
11523 All expressions default to "x".
11524
11525 @subsection Examples
11526
11527 @itemize
11528 @item
11529 Highlight differences between two RGB video streams:
11530 @example
11531 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)'
11532 @end example
11533
11534 @item
11535 Highlight differences between two YUV video streams:
11536 @example
11537 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)'
11538 @end example
11539
11540 @item
11541 Show max difference between two video streams:
11542 @example
11543 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)))'
11544 @end example
11545 @end itemize
11546
11547 @section maskedclamp
11548
11549 Clamp the first input stream with the second input and third input stream.
11550
11551 Returns the value of first stream to be between second input
11552 stream - @code{undershoot} and third input stream + @code{overshoot}.
11553
11554 This filter accepts the following options:
11555 @table @option
11556 @item undershoot
11557 Default value is @code{0}.
11558
11559 @item overshoot
11560 Default value is @code{0}.
11561
11562 @item planes
11563 Set which planes will be processed as bitmap, unprocessed planes will be
11564 copied from first stream.
11565 By default value 0xf, all planes will be processed.
11566 @end table
11567
11568 @section maskedmerge
11569
11570 Merge the first input stream with the second input stream using per pixel
11571 weights in the third input stream.
11572
11573 A value of 0 in the third stream pixel component means that pixel component
11574 from first stream is returned unchanged, while maximum value (eg. 255 for
11575 8-bit videos) means that pixel component from second stream is returned
11576 unchanged. Intermediate values define the amount of merging between both
11577 input stream's pixel components.
11578
11579 This filter accepts the following options:
11580 @table @option
11581 @item planes
11582 Set which planes will be processed as bitmap, unprocessed planes will be
11583 copied from first stream.
11584 By default value 0xf, all planes will be processed.
11585 @end table
11586
11587 @section mcdeint
11588
11589 Apply motion-compensation deinterlacing.
11590
11591 It needs one field per frame as input and must thus be used together
11592 with yadif=1/3 or equivalent.
11593
11594 This filter accepts the following options:
11595 @table @option
11596 @item mode
11597 Set the deinterlacing mode.
11598
11599 It accepts one of the following values:
11600 @table @samp
11601 @item fast
11602 @item medium
11603 @item slow
11604 use iterative motion estimation
11605 @item extra_slow
11606 like @samp{slow}, but use multiple reference frames.
11607 @end table
11608 Default value is @samp{fast}.
11609
11610 @item parity
11611 Set the picture field parity assumed for the input video. It must be
11612 one of the following values:
11613
11614 @table @samp
11615 @item 0, tff
11616 assume top field first
11617 @item 1, bff
11618 assume bottom field first
11619 @end table
11620
11621 Default value is @samp{bff}.
11622
11623 @item qp
11624 Set per-block quantization parameter (QP) used by the internal
11625 encoder.
11626
11627 Higher values should result in a smoother motion vector field but less
11628 optimal individual vectors. Default value is 1.
11629 @end table
11630
11631 @section mergeplanes
11632
11633 Merge color channel components from several video streams.
11634
11635 The filter accepts up to 4 input streams, and merge selected input
11636 planes to the output video.
11637
11638 This filter accepts the following options:
11639 @table @option
11640 @item mapping
11641 Set input to output plane mapping. Default is @code{0}.
11642
11643 The mappings is specified as a bitmap. It should be specified as a
11644 hexadecimal number in the form 0xAa[Bb[Cc[Dd]]]. 'Aa' describes the
11645 mapping for the first plane of the output stream. 'A' sets the number of
11646 the input stream to use (from 0 to 3), and 'a' the plane number of the
11647 corresponding input to use (from 0 to 3). The rest of the mappings is
11648 similar, 'Bb' describes the mapping for the output stream second
11649 plane, 'Cc' describes the mapping for the output stream third plane and
11650 'Dd' describes the mapping for the output stream fourth plane.
11651
11652 @item format
11653 Set output pixel format. Default is @code{yuva444p}.
11654 @end table
11655
11656 @subsection Examples
11657
11658 @itemize
11659 @item
11660 Merge three gray video streams of same width and height into single video stream:
11661 @example
11662 [a0][a1][a2]mergeplanes=0x001020:yuv444p
11663 @end example
11664
11665 @item
11666 Merge 1st yuv444p stream and 2nd gray video stream into yuva444p video stream:
11667 @example
11668 [a0][a1]mergeplanes=0x00010210:yuva444p
11669 @end example
11670
11671 @item
11672 Swap Y and A plane in yuva444p stream:
11673 @example
11674 format=yuva444p,mergeplanes=0x03010200:yuva444p
11675 @end example
11676
11677 @item
11678 Swap U and V plane in yuv420p stream:
11679 @example
11680 format=yuv420p,mergeplanes=0x000201:yuv420p
11681 @end example
11682
11683 @item
11684 Cast a rgb24 clip to yuv444p:
11685 @example
11686 format=rgb24,mergeplanes=0x000102:yuv444p
11687 @end example
11688 @end itemize
11689
11690 @section mestimate
11691
11692 Estimate and export motion vectors using block matching algorithms.
11693 Motion vectors are stored in frame side data to be used by other filters.
11694
11695 This filter accepts the following options:
11696 @table @option
11697 @item method
11698 Specify the motion estimation method. Accepts one of the following values:
11699
11700 @table @samp
11701 @item esa
11702 Exhaustive search algorithm.
11703 @item tss
11704 Three step search algorithm.
11705 @item tdls
11706 Two dimensional logarithmic search algorithm.
11707 @item ntss
11708 New three step search algorithm.
11709 @item fss
11710 Four step search algorithm.
11711 @item ds
11712 Diamond search algorithm.
11713 @item hexbs
11714 Hexagon-based search algorithm.
11715 @item epzs
11716 Enhanced predictive zonal search algorithm.
11717 @item umh
11718 Uneven multi-hexagon search algorithm.
11719 @end table
11720 Default value is @samp{esa}.
11721
11722 @item mb_size
11723 Macroblock size. Default @code{16}.
11724
11725 @item search_param
11726 Search parameter. Default @code{7}.
11727 @end table
11728
11729 @section midequalizer
11730
11731 Apply Midway Image Equalization effect using two video streams.
11732
11733 Midway Image Equalization adjusts a pair of images to have the same
11734 histogram, while maintaining their dynamics as much as possible. It's
11735 useful for e.g. matching exposures from a pair of stereo cameras.
11736
11737 This filter has two inputs and one output, which must be of same pixel format, but
11738 may be of different sizes. The output of filter is first input adjusted with
11739 midway histogram of both inputs.
11740
11741 This filter accepts the following option:
11742
11743 @table @option
11744 @item planes
11745 Set which planes to process. Default is @code{15}, which is all available planes.
11746 @end table
11747
11748 @section minterpolate
11749
11750 Convert the video to specified frame rate using motion interpolation.
11751
11752 This filter accepts the following options:
11753 @table @option
11754 @item fps
11755 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}.
11756
11757 @item mi_mode
11758 Motion interpolation mode. Following values are accepted:
11759 @table @samp
11760 @item dup
11761 Duplicate previous or next frame for interpolating new ones.
11762 @item blend
11763 Blend source frames. Interpolated frame is mean of previous and next frames.
11764 @item mci
11765 Motion compensated interpolation. Following options are effective when this mode is selected:
11766
11767 @table @samp
11768 @item mc_mode
11769 Motion compensation mode. Following values are accepted:
11770 @table @samp
11771 @item obmc
11772 Overlapped block motion compensation.
11773 @item aobmc
11774 Adaptive overlapped block motion compensation. Window weighting coefficients are controlled adaptively according to the reliabilities of the neighboring motion vectors to reduce oversmoothing.
11775 @end table
11776 Default mode is @samp{obmc}.
11777
11778 @item me_mode
11779 Motion estimation mode. Following values are accepted:
11780 @table @samp
11781 @item bidir
11782 Bidirectional motion estimation. Motion vectors are estimated for each source frame in both forward and backward directions.
11783 @item bilat
11784 Bilateral motion estimation. Motion vectors are estimated directly for interpolated frame.
11785 @end table
11786 Default mode is @samp{bilat}.
11787
11788 @item me
11789 The algorithm to be used for motion estimation. Following values are accepted:
11790 @table @samp
11791 @item esa
11792 Exhaustive search algorithm.
11793 @item tss
11794 Three step search algorithm.
11795 @item tdls
11796 Two dimensional logarithmic search algorithm.
11797 @item ntss
11798 New three step search algorithm.
11799 @item fss
11800 Four step search algorithm.
11801 @item ds
11802 Diamond search algorithm.
11803 @item hexbs
11804 Hexagon-based search algorithm.
11805 @item epzs
11806 Enhanced predictive zonal search algorithm.
11807 @item umh
11808 Uneven multi-hexagon search algorithm.
11809 @end table
11810 Default algorithm is @samp{epzs}.
11811
11812 @item mb_size
11813 Macroblock size. Default @code{16}.
11814
11815 @item search_param
11816 Motion estimation search parameter. Default @code{32}.
11817
11818 @item vsbmc
11819 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).
11820 @end table
11821 @end table
11822
11823 @item scd
11824 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:
11825 @table @samp
11826 @item none
11827 Disable scene change detection.
11828 @item fdiff
11829 Frame difference. Corresponding pixel values are compared and if it satisfies @var{scd_threshold} scene change is detected.
11830 @end table
11831 Default method is @samp{fdiff}.
11832
11833 @item scd_threshold
11834 Scene change detection threshold. Default is @code{5.0}.
11835 @end table
11836
11837 @section mix
11838
11839 Mix several video input streams into one video stream.
11840
11841 A description of the accepted options follows.
11842
11843 @table @option
11844 @item nb_inputs
11845 The number of inputs. If unspecified, it defaults to 2.
11846
11847 @item weights
11848 Specify weight of each input video stream as sequence.
11849 Each weight is separated by space. If number of weights
11850 is smaller than number of @var{frames} last specified
11851 weight will be used for all remaining unset weights.
11852
11853 @item scale
11854 Specify scale, if it is set it will be multiplied with sum
11855 of each weight multiplied with pixel values to give final destination
11856 pixel value. By default @var{scale} is auto scaled to sum of weights.
11857
11858 @item duration
11859 Specify how end of stream is determined.
11860 @table @samp
11861 @item longest
11862 The duration of the longest input. (default)
11863
11864 @item shortest
11865 The duration of the shortest input.
11866
11867 @item first
11868 The duration of the first input.
11869 @end table
11870 @end table
11871
11872 @section mpdecimate
11873
11874 Drop frames that do not differ greatly from the previous frame in
11875 order to reduce frame rate.
11876
11877 The main use of this filter is for very-low-bitrate encoding
11878 (e.g. streaming over dialup modem), but it could in theory be used for
11879 fixing movies that were inverse-telecined incorrectly.
11880
11881 A description of the accepted options follows.
11882
11883 @table @option
11884 @item max
11885 Set the maximum number of consecutive frames which can be dropped (if
11886 positive), or the minimum interval between dropped frames (if
11887 negative). If the value is 0, the frame is dropped disregarding the
11888 number of previous sequentially dropped frames.
11889
11890 Default value is 0.
11891
11892 @item hi
11893 @item lo
11894 @item frac
11895 Set the dropping threshold values.
11896
11897 Values for @option{hi} and @option{lo} are for 8x8 pixel blocks and
11898 represent actual pixel value differences, so a threshold of 64
11899 corresponds to 1 unit of difference for each pixel, or the same spread
11900 out differently over the block.
11901
11902 A frame is a candidate for dropping if no 8x8 blocks differ by more
11903 than a threshold of @option{hi}, and if no more than @option{frac} blocks (1
11904 meaning the whole image) differ by more than a threshold of @option{lo}.
11905
11906 Default value for @option{hi} is 64*12, default value for @option{lo} is
11907 64*5, and default value for @option{frac} is 0.33.
11908 @end table
11909
11910
11911 @section negate
11912
11913 Negate (invert) the input video.
11914
11915 It accepts the following option:
11916
11917 @table @option
11918
11919 @item negate_alpha
11920 With value 1, it negates the alpha component, if present. Default value is 0.
11921 @end table
11922
11923 @anchor{nlmeans}
11924 @section nlmeans
11925
11926 Denoise frames using Non-Local Means algorithm.
11927
11928 Each pixel is adjusted by looking for other pixels with similar contexts. This
11929 context similarity is defined by comparing their surrounding patches of size
11930 @option{p}x@option{p}. Patches are searched in an area of @option{r}x@option{r}
11931 around the pixel.
11932
11933 Note that the research area defines centers for patches, which means some
11934 patches will be made of pixels outside that research area.
11935
11936 The filter accepts the following options.
11937
11938 @table @option
11939 @item s
11940 Set denoising strength.
11941
11942 @item p
11943 Set patch size.
11944
11945 @item pc
11946 Same as @option{p} but for chroma planes.
11947
11948 The default value is @var{0} and means automatic.
11949
11950 @item r
11951 Set research size.
11952
11953 @item rc
11954 Same as @option{r} but for chroma planes.
11955
11956 The default value is @var{0} and means automatic.
11957 @end table
11958
11959 @section nnedi
11960
11961 Deinterlace video using neural network edge directed interpolation.
11962
11963 This filter accepts the following options:
11964
11965 @table @option
11966 @item weights
11967 Mandatory option, without binary file filter can not work.
11968 Currently file can be found here:
11969 https://github.com/dubhater/vapoursynth-nnedi3/blob/master/src/nnedi3_weights.bin
11970
11971 @item deint
11972 Set which frames to deinterlace, by default it is @code{all}.
11973 Can be @code{all} or @code{interlaced}.
11974
11975 @item field
11976 Set mode of operation.
11977
11978 Can be one of the following:
11979
11980 @table @samp
11981 @item af
11982 Use frame flags, both fields.
11983 @item a
11984 Use frame flags, single field.
11985 @item t
11986 Use top field only.
11987 @item b
11988 Use bottom field only.
11989 @item tf
11990 Use both fields, top first.
11991 @item bf
11992 Use both fields, bottom first.
11993 @end table
11994
11995 @item planes
11996 Set which planes to process, by default filter process all frames.
11997
11998 @item nsize
11999 Set size of local neighborhood around each pixel, used by the predictor neural
12000 network.
12001
12002 Can be one of the following:
12003
12004 @table @samp
12005 @item s8x6
12006 @item s16x6
12007 @item s32x6
12008 @item s48x6
12009 @item s8x4
12010 @item s16x4
12011 @item s32x4
12012 @end table
12013
12014 @item nns
12015 Set the number of neurons in predictor neural network.
12016 Can be one of the following:
12017
12018 @table @samp
12019 @item n16
12020 @item n32
12021 @item n64
12022 @item n128
12023 @item n256
12024 @end table
12025
12026 @item qual
12027 Controls the number of different neural network predictions that are blended
12028 together to compute the final output value. Can be @code{fast}, default or
12029 @code{slow}.
12030
12031 @item etype
12032 Set which set of weights to use in the predictor.
12033 Can be one of the following:
12034
12035 @table @samp
12036 @item a
12037 weights trained to minimize absolute error
12038 @item s
12039 weights trained to minimize squared error
12040 @end table
12041
12042 @item pscrn
12043 Controls whether or not the prescreener neural network is used to decide
12044 which pixels should be processed by the predictor neural network and which
12045 can be handled by simple cubic interpolation.
12046 The prescreener is trained to know whether cubic interpolation will be
12047 sufficient for a pixel or whether it should be predicted by the predictor nn.
12048 The computational complexity of the prescreener nn is much less than that of
12049 the predictor nn. Since most pixels can be handled by cubic interpolation,
12050 using the prescreener generally results in much faster processing.
12051 The prescreener is pretty accurate, so the difference between using it and not
12052 using it is almost always unnoticeable.
12053
12054 Can be one of the following:
12055
12056 @table @samp
12057 @item none
12058 @item original
12059 @item new
12060 @end table
12061
12062 Default is @code{new}.
12063
12064 @item fapprox
12065 Set various debugging flags.
12066 @end table
12067
12068 @section noformat
12069
12070 Force libavfilter not to use any of the specified pixel formats for the
12071 input to the next filter.
12072
12073 It accepts the following parameters:
12074 @table @option
12075
12076 @item pix_fmts
12077 A '|'-separated list of pixel format names, such as
12078 pix_fmts=yuv420p|monow|rgb24".
12079
12080 @end table
12081
12082 @subsection Examples
12083
12084 @itemize
12085 @item
12086 Force libavfilter to use a format different from @var{yuv420p} for the
12087 input to the vflip filter:
12088 @example
12089 noformat=pix_fmts=yuv420p,vflip
12090 @end example
12091
12092 @item
12093 Convert the input video to any of the formats not contained in the list:
12094 @example
12095 noformat=yuv420p|yuv444p|yuv410p
12096 @end example
12097 @end itemize
12098
12099 @section noise
12100
12101 Add noise on video input frame.
12102
12103 The filter accepts the following options:
12104
12105 @table @option
12106 @item all_seed
12107 @item c0_seed
12108 @item c1_seed
12109 @item c2_seed
12110 @item c3_seed
12111 Set noise seed for specific pixel component or all pixel components in case
12112 of @var{all_seed}. Default value is @code{123457}.
12113
12114 @item all_strength, alls
12115 @item c0_strength, c0s
12116 @item c1_strength, c1s
12117 @item c2_strength, c2s
12118 @item c3_strength, c3s
12119 Set noise strength for specific pixel component or all pixel components in case
12120 @var{all_strength}. Default value is @code{0}. Allowed range is [0, 100].
12121
12122 @item all_flags, allf
12123 @item c0_flags, c0f
12124 @item c1_flags, c1f
12125 @item c2_flags, c2f
12126 @item c3_flags, c3f
12127 Set pixel component flags or set flags for all components if @var{all_flags}.
12128 Available values for component flags are:
12129 @table @samp
12130 @item a
12131 averaged temporal noise (smoother)
12132 @item p
12133 mix random noise with a (semi)regular pattern
12134 @item t
12135 temporal noise (noise pattern changes between frames)
12136 @item u
12137 uniform noise (gaussian otherwise)
12138 @end table
12139 @end table
12140
12141 @subsection Examples
12142
12143 Add temporal and uniform noise to input video:
12144 @example
12145 noise=alls=20:allf=t+u
12146 @end example
12147
12148 @section normalize
12149
12150 Normalize RGB video (aka histogram stretching, contrast stretching).
12151 See: https://en.wikipedia.org/wiki/Normalization_(image_processing)
12152
12153 For each channel of each frame, the filter computes the input range and maps
12154 it linearly to the user-specified output range. The output range defaults
12155 to the full dynamic range from pure black to pure white.
12156
12157 Temporal smoothing can be used on the input range to reduce flickering (rapid
12158 changes in brightness) caused when small dark or bright objects enter or leave
12159 the scene. This is similar to the auto-exposure (automatic gain control) on a
12160 video camera, and, like a video camera, it may cause a period of over- or
12161 under-exposure of the video.
12162
12163 The R,G,B channels can be normalized independently, which may cause some
12164 color shifting, or linked together as a single channel, which prevents
12165 color shifting. Linked normalization preserves hue. Independent normalization
12166 does not, so it can be used to remove some color casts. Independent and linked
12167 normalization can be combined in any ratio.
12168
12169 The normalize filter accepts the following options:
12170
12171 @table @option
12172 @item blackpt
12173 @item whitept
12174 Colors which define the output range. The minimum input value is mapped to
12175 the @var{blackpt}. The maximum input value is mapped to the @var{whitept}.
12176 The defaults are black and white respectively. Specifying white for
12177 @var{blackpt} and black for @var{whitept} will give color-inverted,
12178 normalized video. Shades of grey can be used to reduce the dynamic range
12179 (contrast). Specifying saturated colors here can create some interesting
12180 effects.
12181
12182 @item smoothing
12183 The number of previous frames to use for temporal smoothing. The input range
12184 of each channel is smoothed using a rolling average over the current frame
12185 and the @var{smoothing} previous frames. The default is 0 (no temporal
12186 smoothing).
12187
12188 @item independence
12189 Controls the ratio of independent (color shifting) channel normalization to
12190 linked (color preserving) normalization. 0.0 is fully linked, 1.0 is fully
12191 independent. Defaults to 1.0 (fully independent).
12192
12193 @item strength
12194 Overall strength of the filter. 1.0 is full strength. 0.0 is a rather
12195 expensive no-op. Defaults to 1.0 (full strength).
12196
12197 @end table
12198
12199 @subsection Examples
12200
12201 Stretch video contrast to use the full dynamic range, with no temporal
12202 smoothing; may flicker depending on the source content:
12203 @example
12204 normalize=blackpt=black:whitept=white:smoothing=0
12205 @end example
12206
12207 As above, but with 50 frames of temporal smoothing; flicker should be
12208 reduced, depending on the source content:
12209 @example
12210 normalize=blackpt=black:whitept=white:smoothing=50
12211 @end example
12212
12213 As above, but with hue-preserving linked channel normalization:
12214 @example
12215 normalize=blackpt=black:whitept=white:smoothing=50:independence=0
12216 @end example
12217
12218 As above, but with half strength:
12219 @example
12220 normalize=blackpt=black:whitept=white:smoothing=50:independence=0:strength=0.5
12221 @end example
12222
12223 Map the darkest input color to red, the brightest input color to cyan:
12224 @example
12225 normalize=blackpt=red:whitept=cyan
12226 @end example
12227
12228 @section null
12229
12230 Pass the video source unchanged to the output.
12231
12232 @section ocr
12233 Optical Character Recognition
12234
12235 This filter uses Tesseract for optical character recognition. To enable
12236 compilation of this filter, you need to configure FFmpeg with
12237 @code{--enable-libtesseract}.
12238
12239 It accepts the following options:
12240
12241 @table @option
12242 @item datapath
12243 Set datapath to tesseract data. Default is to use whatever was
12244 set at installation.
12245
12246 @item language
12247 Set language, default is "eng".
12248
12249 @item whitelist
12250 Set character whitelist.
12251
12252 @item blacklist
12253 Set character blacklist.
12254 @end table
12255
12256 The filter exports recognized text as the frame metadata @code{lavfi.ocr.text}.
12257
12258 @section ocv
12259
12260 Apply a video transform using libopencv.
12261
12262 To enable this filter, install the libopencv library and headers and
12263 configure FFmpeg with @code{--enable-libopencv}.
12264
12265 It accepts the following parameters:
12266
12267 @table @option
12268
12269 @item filter_name
12270 The name of the libopencv filter to apply.
12271
12272 @item filter_params
12273 The parameters to pass to the libopencv filter. If not specified, the default
12274 values are assumed.
12275
12276 @end table
12277
12278 Refer to the official libopencv documentation for more precise
12279 information:
12280 @url{http://docs.opencv.org/master/modules/imgproc/doc/filtering.html}
12281
12282 Several libopencv filters are supported; see the following subsections.
12283
12284 @anchor{dilate}
12285 @subsection dilate
12286
12287 Dilate an image by using a specific structuring element.
12288 It corresponds to the libopencv function @code{cvDilate}.
12289
12290 It accepts the parameters: @var{struct_el}|@var{nb_iterations}.
12291
12292 @var{struct_el} represents a structuring element, and has the syntax:
12293 @var{cols}x@var{rows}+@var{anchor_x}x@var{anchor_y}/@var{shape}
12294
12295 @var{cols} and @var{rows} represent the number of columns and rows of
12296 the structuring element, @var{anchor_x} and @var{anchor_y} the anchor
12297 point, and @var{shape} the shape for the structuring element. @var{shape}
12298 must be "rect", "cross", "ellipse", or "custom".
12299
12300 If the value for @var{shape} is "custom", it must be followed by a
12301 string of the form "=@var{filename}". The file with name
12302 @var{filename} is assumed to represent a binary image, with each
12303 printable character corresponding to a bright pixel. When a custom
12304 @var{shape} is used, @var{cols} and @var{rows} are ignored, the number
12305 or columns and rows of the read file are assumed instead.
12306
12307 The default value for @var{struct_el} is "3x3+0x0/rect".
12308
12309 @var{nb_iterations} specifies the number of times the transform is
12310 applied to the image, and defaults to 1.
12311
12312 Some examples:
12313 @example
12314 # Use the default values
12315 ocv=dilate
12316
12317 # Dilate using a structuring element with a 5x5 cross, iterating two times
12318 ocv=filter_name=dilate:filter_params=5x5+2x2/cross|2
12319
12320 # Read the shape from the file diamond.shape, iterating two times.
12321 # The file diamond.shape may contain a pattern of characters like this
12322 #   *
12323 #  ***
12324 # *****
12325 #  ***
12326 #   *
12327 # The specified columns and rows are ignored
12328 # but the anchor point coordinates are not
12329 ocv=dilate:0x0+2x2/custom=diamond.shape|2
12330 @end example
12331
12332 @subsection erode
12333
12334 Erode an image by using a specific structuring element.
12335 It corresponds to the libopencv function @code{cvErode}.
12336
12337 It accepts the parameters: @var{struct_el}:@var{nb_iterations},
12338 with the same syntax and semantics as the @ref{dilate} filter.
12339
12340 @subsection smooth
12341
12342 Smooth the input video.
12343
12344 The filter takes the following parameters:
12345 @var{type}|@var{param1}|@var{param2}|@var{param3}|@var{param4}.
12346
12347 @var{type} is the type of smooth filter to apply, and must be one of
12348 the following values: "blur", "blur_no_scale", "median", "gaussian",
12349 or "bilateral". The default value is "gaussian".
12350
12351 The meaning of @var{param1}, @var{param2}, @var{param3}, and @var{param4}
12352 depend on the smooth type. @var{param1} and
12353 @var{param2} accept integer positive values or 0. @var{param3} and
12354 @var{param4} accept floating point values.
12355
12356 The default value for @var{param1} is 3. The default value for the
12357 other parameters is 0.
12358
12359 These parameters correspond to the parameters assigned to the
12360 libopencv function @code{cvSmooth}.
12361
12362 @section oscilloscope
12363
12364 2D Video Oscilloscope.
12365
12366 Useful to measure spatial impulse, step responses, chroma delays, etc.
12367
12368 It accepts the following parameters:
12369
12370 @table @option
12371 @item x
12372 Set scope center x position.
12373
12374 @item y
12375 Set scope center y position.
12376
12377 @item s
12378 Set scope size, relative to frame diagonal.
12379
12380 @item t
12381 Set scope tilt/rotation.
12382
12383 @item o
12384 Set trace opacity.
12385
12386 @item tx
12387 Set trace center x position.
12388
12389 @item ty
12390 Set trace center y position.
12391
12392 @item tw
12393 Set trace width, relative to width of frame.
12394
12395 @item th
12396 Set trace height, relative to height of frame.
12397
12398 @item c
12399 Set which components to trace. By default it traces first three components.
12400
12401 @item g
12402 Draw trace grid. By default is enabled.
12403
12404 @item st
12405 Draw some statistics. By default is enabled.
12406
12407 @item sc
12408 Draw scope. By default is enabled.
12409 @end table
12410
12411 @subsection Examples
12412
12413 @itemize
12414 @item
12415 Inspect full first row of video frame.
12416 @example
12417 oscilloscope=x=0.5:y=0:s=1
12418 @end example
12419
12420 @item
12421 Inspect full last row of video frame.
12422 @example
12423 oscilloscope=x=0.5:y=1:s=1
12424 @end example
12425
12426 @item
12427 Inspect full 5th line of video frame of height 1080.
12428 @example
12429 oscilloscope=x=0.5:y=5/1080:s=1
12430 @end example
12431
12432 @item
12433 Inspect full last column of video frame.
12434 @example
12435 oscilloscope=x=1:y=0.5:s=1:t=1
12436 @end example
12437
12438 @end itemize
12439
12440 @anchor{overlay}
12441 @section overlay
12442
12443 Overlay one video on top of another.
12444
12445 It takes two inputs and has one output. The first input is the "main"
12446 video on which the second input is overlaid.
12447
12448 It accepts the following parameters:
12449
12450 A description of the accepted options follows.
12451
12452 @table @option
12453 @item x
12454 @item y
12455 Set the expression for the x and y coordinates of the overlaid video
12456 on the main video. Default value is "0" for both expressions. In case
12457 the expression is invalid, it is set to a huge value (meaning that the
12458 overlay will not be displayed within the output visible area).
12459
12460 @item eof_action
12461 See @ref{framesync}.
12462
12463 @item eval
12464 Set when the expressions for @option{x}, and @option{y} are evaluated.
12465
12466 It accepts the following values:
12467 @table @samp
12468 @item init
12469 only evaluate expressions once during the filter initialization or
12470 when a command is processed
12471
12472 @item frame
12473 evaluate expressions for each incoming frame
12474 @end table
12475
12476 Default value is @samp{frame}.
12477
12478 @item shortest
12479 See @ref{framesync}.
12480
12481 @item format
12482 Set the format for the output video.
12483
12484 It accepts the following values:
12485 @table @samp
12486 @item yuv420
12487 force YUV420 output
12488
12489 @item yuv422
12490 force YUV422 output
12491
12492 @item yuv444
12493 force YUV444 output
12494
12495 @item rgb
12496 force packed RGB output
12497
12498 @item gbrp
12499 force planar RGB output
12500
12501 @item auto
12502 automatically pick format
12503 @end table
12504
12505 Default value is @samp{yuv420}.
12506
12507 @item repeatlast
12508 See @ref{framesync}.
12509
12510 @item alpha
12511 Set format of alpha of the overlaid video, it can be @var{straight} or
12512 @var{premultiplied}. Default is @var{straight}.
12513 @end table
12514
12515 The @option{x}, and @option{y} expressions can contain the following
12516 parameters.
12517
12518 @table @option
12519 @item main_w, W
12520 @item main_h, H
12521 The main input width and height.
12522
12523 @item overlay_w, w
12524 @item overlay_h, h
12525 The overlay input width and height.
12526
12527 @item x
12528 @item y
12529 The computed values for @var{x} and @var{y}. They are evaluated for
12530 each new frame.
12531
12532 @item hsub
12533 @item vsub
12534 horizontal and vertical chroma subsample values of the output
12535 format. For example for the pixel format "yuv422p" @var{hsub} is 2 and
12536 @var{vsub} is 1.
12537
12538 @item n
12539 the number of input frame, starting from 0
12540
12541 @item pos
12542 the position in the file of the input frame, NAN if unknown
12543
12544 @item t
12545 The timestamp, expressed in seconds. It's NAN if the input timestamp is unknown.
12546
12547 @end table
12548
12549 This filter also supports the @ref{framesync} options.
12550
12551 Note that the @var{n}, @var{pos}, @var{t} variables are available only
12552 when evaluation is done @emph{per frame}, and will evaluate to NAN
12553 when @option{eval} is set to @samp{init}.
12554
12555 Be aware that frames are taken from each input video in timestamp
12556 order, hence, if their initial timestamps differ, it is a good idea
12557 to pass the two inputs through a @var{setpts=PTS-STARTPTS} filter to
12558 have them begin in the same zero timestamp, as the example for
12559 the @var{movie} filter does.
12560
12561 You can chain together more overlays but you should test the
12562 efficiency of such approach.
12563
12564 @subsection Commands
12565
12566 This filter supports the following commands:
12567 @table @option
12568 @item x
12569 @item y
12570 Modify the x and y of the overlay input.
12571 The command accepts the same syntax of the corresponding option.
12572
12573 If the specified expression is not valid, it is kept at its current
12574 value.
12575 @end table
12576
12577 @subsection Examples
12578
12579 @itemize
12580 @item
12581 Draw the overlay at 10 pixels from the bottom right corner of the main
12582 video:
12583 @example
12584 overlay=main_w-overlay_w-10:main_h-overlay_h-10
12585 @end example
12586
12587 Using named options the example above becomes:
12588 @example
12589 overlay=x=main_w-overlay_w-10:y=main_h-overlay_h-10
12590 @end example
12591
12592 @item
12593 Insert a transparent PNG logo in the bottom left corner of the input,
12594 using the @command{ffmpeg} tool with the @code{-filter_complex} option:
12595 @example
12596 ffmpeg -i input -i logo -filter_complex 'overlay=10:main_h-overlay_h-10' output
12597 @end example
12598
12599 @item
12600 Insert 2 different transparent PNG logos (second logo on bottom
12601 right corner) using the @command{ffmpeg} tool:
12602 @example
12603 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
12604 @end example
12605
12606 @item
12607 Add a transparent color layer on top of the main video; @code{WxH}
12608 must specify the size of the main input to the overlay filter:
12609 @example
12610 color=color=red@@.3:size=WxH [over]; [in][over] overlay [out]
12611 @end example
12612
12613 @item
12614 Play an original video and a filtered version (here with the deshake
12615 filter) side by side using the @command{ffplay} tool:
12616 @example
12617 ffplay input.avi -vf 'split[a][b]; [a]pad=iw*2:ih[src]; [b]deshake[filt]; [src][filt]overlay=w'
12618 @end example
12619
12620 The above command is the same as:
12621 @example
12622 ffplay input.avi -vf 'split[b], pad=iw*2[src], [b]deshake, [src]overlay=w'
12623 @end example
12624
12625 @item
12626 Make a sliding overlay appearing from the left to the right top part of the
12627 screen starting since time 2:
12628 @example
12629 overlay=x='if(gte(t,2), -w+(t-2)*20, NAN)':y=0
12630 @end example
12631
12632 @item
12633 Compose output by putting two input videos side to side:
12634 @example
12635 ffmpeg -i left.avi -i right.avi -filter_complex "
12636 nullsrc=size=200x100 [background];
12637 [0:v] setpts=PTS-STARTPTS, scale=100x100 [left];
12638 [1:v] setpts=PTS-STARTPTS, scale=100x100 [right];
12639 [background][left]       overlay=shortest=1       [background+left];
12640 [background+left][right] overlay=shortest=1:x=100 [left+right]
12641 "
12642 @end example
12643
12644 @item
12645 Mask 10-20 seconds of a video by applying the delogo filter to a section
12646 @example
12647 ffmpeg -i test.avi -codec:v:0 wmv2 -ar 11025 -b:v 9000k
12648 -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]'
12649 masked.avi
12650 @end example
12651
12652 @item
12653 Chain several overlays in cascade:
12654 @example
12655 nullsrc=s=200x200 [bg];
12656 testsrc=s=100x100, split=4 [in0][in1][in2][in3];
12657 [in0] lutrgb=r=0, [bg]   overlay=0:0     [mid0];
12658 [in1] lutrgb=g=0, [mid0] overlay=100:0   [mid1];
12659 [in2] lutrgb=b=0, [mid1] overlay=0:100   [mid2];
12660 [in3] null,       [mid2] overlay=100:100 [out0]
12661 @end example
12662
12663 @end itemize
12664
12665 @section owdenoise
12666
12667 Apply Overcomplete Wavelet denoiser.
12668
12669 The filter accepts the following options:
12670
12671 @table @option
12672 @item depth
12673 Set depth.
12674
12675 Larger depth values will denoise lower frequency components more, but
12676 slow down filtering.
12677
12678 Must be an int in the range 8-16, default is @code{8}.
12679
12680 @item luma_strength, ls
12681 Set luma strength.
12682
12683 Must be a double value in the range 0-1000, default is @code{1.0}.
12684
12685 @item chroma_strength, cs
12686 Set chroma strength.
12687
12688 Must be a double value in the range 0-1000, default is @code{1.0}.
12689 @end table
12690
12691 @anchor{pad}
12692 @section pad
12693
12694 Add paddings to the input image, and place the original input at the
12695 provided @var{x}, @var{y} coordinates.
12696
12697 It accepts the following parameters:
12698
12699 @table @option
12700 @item width, w
12701 @item height, h
12702 Specify an expression for the size of the output image with the
12703 paddings added. If the value for @var{width} or @var{height} is 0, the
12704 corresponding input size is used for the output.
12705
12706 The @var{width} expression can reference the value set by the
12707 @var{height} expression, and vice versa.
12708
12709 The default value of @var{width} and @var{height} is 0.
12710
12711 @item x
12712 @item y
12713 Specify the offsets to place the input image at within the padded area,
12714 with respect to the top/left border of the output image.
12715
12716 The @var{x} expression can reference the value set by the @var{y}
12717 expression, and vice versa.
12718
12719 The default value of @var{x} and @var{y} is 0.
12720
12721 If @var{x} or @var{y} evaluate to a negative number, they'll be changed
12722 so the input image is centered on the padded area.
12723
12724 @item color
12725 Specify the color of the padded area. For the syntax of this option,
12726 check the @ref{color syntax,,"Color" section in the ffmpeg-utils
12727 manual,ffmpeg-utils}.
12728
12729 The default value of @var{color} is "black".
12730
12731 @item eval
12732 Specify when to evaluate  @var{width}, @var{height}, @var{x} and @var{y} expression.
12733
12734 It accepts the following values:
12735
12736 @table @samp
12737 @item init
12738 Only evaluate expressions once during the filter initialization or when
12739 a command is processed.
12740
12741 @item frame
12742 Evaluate expressions for each incoming frame.
12743
12744 @end table
12745
12746 Default value is @samp{init}.
12747
12748 @item aspect
12749 Pad to aspect instead to a resolution.
12750
12751 @end table
12752
12753 The value for the @var{width}, @var{height}, @var{x}, and @var{y}
12754 options are expressions containing the following constants:
12755
12756 @table @option
12757 @item in_w
12758 @item in_h
12759 The input video width and height.
12760
12761 @item iw
12762 @item ih
12763 These are the same as @var{in_w} and @var{in_h}.
12764
12765 @item out_w
12766 @item out_h
12767 The output width and height (the size of the padded area), as
12768 specified by the @var{width} and @var{height} expressions.
12769
12770 @item ow
12771 @item oh
12772 These are the same as @var{out_w} and @var{out_h}.
12773
12774 @item x
12775 @item y
12776 The x and y offsets as specified by the @var{x} and @var{y}
12777 expressions, or NAN if not yet specified.
12778
12779 @item a
12780 same as @var{iw} / @var{ih}
12781
12782 @item sar
12783 input sample aspect ratio
12784
12785 @item dar
12786 input display aspect ratio, it is the same as (@var{iw} / @var{ih}) * @var{sar}
12787
12788 @item hsub
12789 @item vsub
12790 The horizontal and vertical chroma subsample values. For example for the
12791 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
12792 @end table
12793
12794 @subsection Examples
12795
12796 @itemize
12797 @item
12798 Add paddings with the color "violet" to the input video. The output video
12799 size is 640x480, and the top-left corner of the input video is placed at
12800 column 0, row 40
12801 @example
12802 pad=640:480:0:40:violet
12803 @end example
12804
12805 The example above is equivalent to the following command:
12806 @example
12807 pad=width=640:height=480:x=0:y=40:color=violet
12808 @end example
12809
12810 @item
12811 Pad the input to get an output with dimensions increased by 3/2,
12812 and put the input video at the center of the padded area:
12813 @example
12814 pad="3/2*iw:3/2*ih:(ow-iw)/2:(oh-ih)/2"
12815 @end example
12816
12817 @item
12818 Pad the input to get a squared output with size equal to the maximum
12819 value between the input width and height, and put the input video at
12820 the center of the padded area:
12821 @example
12822 pad="max(iw\,ih):ow:(ow-iw)/2:(oh-ih)/2"
12823 @end example
12824
12825 @item
12826 Pad the input to get a final w/h ratio of 16:9:
12827 @example
12828 pad="ih*16/9:ih:(ow-iw)/2:(oh-ih)/2"
12829 @end example
12830
12831 @item
12832 In case of anamorphic video, in order to set the output display aspect
12833 correctly, it is necessary to use @var{sar} in the expression,
12834 according to the relation:
12835 @example
12836 (ih * X / ih) * sar = output_dar
12837 X = output_dar / sar
12838 @end example
12839
12840 Thus the previous example needs to be modified to:
12841 @example
12842 pad="ih*16/9/sar:ih:(ow-iw)/2:(oh-ih)/2"
12843 @end example
12844
12845 @item
12846 Double the output size and put the input video in the bottom-right
12847 corner of the output padded area:
12848 @example
12849 pad="2*iw:2*ih:ow-iw:oh-ih"
12850 @end example
12851 @end itemize
12852
12853 @anchor{palettegen}
12854 @section palettegen
12855
12856 Generate one palette for a whole video stream.
12857
12858 It accepts the following options:
12859
12860 @table @option
12861 @item max_colors
12862 Set the maximum number of colors to quantize in the palette.
12863 Note: the palette will still contain 256 colors; the unused palette entries
12864 will be black.
12865
12866 @item reserve_transparent
12867 Create a palette of 255 colors maximum and reserve the last one for
12868 transparency. Reserving the transparency color is useful for GIF optimization.
12869 If not set, the maximum of colors in the palette will be 256. You probably want
12870 to disable this option for a standalone image.
12871 Set by default.
12872
12873 @item transparency_color
12874 Set the color that will be used as background for transparency.
12875
12876 @item stats_mode
12877 Set statistics mode.
12878
12879 It accepts the following values:
12880 @table @samp
12881 @item full
12882 Compute full frame histograms.
12883 @item diff
12884 Compute histograms only for the part that differs from previous frame. This
12885 might be relevant to give more importance to the moving part of your input if
12886 the background is static.
12887 @item single
12888 Compute new histogram for each frame.
12889 @end table
12890
12891 Default value is @var{full}.
12892 @end table
12893
12894 The filter also exports the frame metadata @code{lavfi.color_quant_ratio}
12895 (@code{nb_color_in / nb_color_out}) which you can use to evaluate the degree of
12896 color quantization of the palette. This information is also visible at
12897 @var{info} logging level.
12898
12899 @subsection Examples
12900
12901 @itemize
12902 @item
12903 Generate a representative palette of a given video using @command{ffmpeg}:
12904 @example
12905 ffmpeg -i input.mkv -vf palettegen palette.png
12906 @end example
12907 @end itemize
12908
12909 @section paletteuse
12910
12911 Use a palette to downsample an input video stream.
12912
12913 The filter takes two inputs: one video stream and a palette. The palette must
12914 be a 256 pixels image.
12915
12916 It accepts the following options:
12917
12918 @table @option
12919 @item dither
12920 Select dithering mode. Available algorithms are:
12921 @table @samp
12922 @item bayer
12923 Ordered 8x8 bayer dithering (deterministic)
12924 @item heckbert
12925 Dithering as defined by Paul Heckbert in 1982 (simple error diffusion).
12926 Note: this dithering is sometimes considered "wrong" and is included as a
12927 reference.
12928 @item floyd_steinberg
12929 Floyd and Steingberg dithering (error diffusion)
12930 @item sierra2
12931 Frankie Sierra dithering v2 (error diffusion)
12932 @item sierra2_4a
12933 Frankie Sierra dithering v2 "Lite" (error diffusion)
12934 @end table
12935
12936 Default is @var{sierra2_4a}.
12937
12938 @item bayer_scale
12939 When @var{bayer} dithering is selected, this option defines the scale of the
12940 pattern (how much the crosshatch pattern is visible). A low value means more
12941 visible pattern for less banding, and higher value means less visible pattern
12942 at the cost of more banding.
12943
12944 The option must be an integer value in the range [0,5]. Default is @var{2}.
12945
12946 @item diff_mode
12947 If set, define the zone to process
12948
12949 @table @samp
12950 @item rectangle
12951 Only the changing rectangle will be reprocessed. This is similar to GIF
12952 cropping/offsetting compression mechanism. This option can be useful for speed
12953 if only a part of the image is changing, and has use cases such as limiting the
12954 scope of the error diffusal @option{dither} to the rectangle that bounds the
12955 moving scene (it leads to more deterministic output if the scene doesn't change
12956 much, and as a result less moving noise and better GIF compression).
12957 @end table
12958
12959 Default is @var{none}.
12960
12961 @item new
12962 Take new palette for each output frame.
12963
12964 @item alpha_threshold
12965 Sets the alpha threshold for transparency. Alpha values above this threshold
12966 will be treated as completely opaque, and values below this threshold will be
12967 treated as completely transparent.
12968
12969 The option must be an integer value in the range [0,255]. Default is @var{128}.
12970 @end table
12971
12972 @subsection Examples
12973
12974 @itemize
12975 @item
12976 Use a palette (generated for example with @ref{palettegen}) to encode a GIF
12977 using @command{ffmpeg}:
12978 @example
12979 ffmpeg -i input.mkv -i palette.png -lavfi paletteuse output.gif
12980 @end example
12981 @end itemize
12982
12983 @section perspective
12984
12985 Correct perspective of video not recorded perpendicular to the screen.
12986
12987 A description of the accepted parameters follows.
12988
12989 @table @option
12990 @item x0
12991 @item y0
12992 @item x1
12993 @item y1
12994 @item x2
12995 @item y2
12996 @item x3
12997 @item y3
12998 Set coordinates expression for top left, top right, bottom left and bottom right corners.
12999 Default values are @code{0:0:W:0:0:H:W:H} with which perspective will remain unchanged.
13000 If the @code{sense} option is set to @code{source}, then the specified points will be sent
13001 to the corners of the destination. If the @code{sense} option is set to @code{destination},
13002 then the corners of the source will be sent to the specified coordinates.
13003
13004 The expressions can use the following variables:
13005
13006 @table @option
13007 @item W
13008 @item H
13009 the width and height of video frame.
13010 @item in
13011 Input frame count.
13012 @item on
13013 Output frame count.
13014 @end table
13015
13016 @item interpolation
13017 Set interpolation for perspective correction.
13018
13019 It accepts the following values:
13020 @table @samp
13021 @item linear
13022 @item cubic
13023 @end table
13024
13025 Default value is @samp{linear}.
13026
13027 @item sense
13028 Set interpretation of coordinate options.
13029
13030 It accepts the following values:
13031 @table @samp
13032 @item 0, source
13033
13034 Send point in the source specified by the given coordinates to
13035 the corners of the destination.
13036
13037 @item 1, destination
13038
13039 Send the corners of the source to the point in the destination specified
13040 by the given coordinates.
13041
13042 Default value is @samp{source}.
13043 @end table
13044
13045 @item eval
13046 Set when the expressions for coordinates @option{x0,y0,...x3,y3} are evaluated.
13047
13048 It accepts the following values:
13049 @table @samp
13050 @item init
13051 only evaluate expressions once during the filter initialization or
13052 when a command is processed
13053
13054 @item frame
13055 evaluate expressions for each incoming frame
13056 @end table
13057
13058 Default value is @samp{init}.
13059 @end table
13060
13061 @section phase
13062
13063 Delay interlaced video by one field time so that the field order changes.
13064
13065 The intended use is to fix PAL movies that have been captured with the
13066 opposite field order to the film-to-video transfer.
13067
13068 A description of the accepted parameters follows.
13069
13070 @table @option
13071 @item mode
13072 Set phase mode.
13073
13074 It accepts the following values:
13075 @table @samp
13076 @item t
13077 Capture field order top-first, transfer bottom-first.
13078 Filter will delay the bottom field.
13079
13080 @item b
13081 Capture field order bottom-first, transfer top-first.
13082 Filter will delay the top field.
13083
13084 @item p
13085 Capture and transfer with the same field order. This mode only exists
13086 for the documentation of the other options to refer to, but if you
13087 actually select it, the filter will faithfully do nothing.
13088
13089 @item a
13090 Capture field order determined automatically by field flags, transfer
13091 opposite.
13092 Filter selects among @samp{t} and @samp{b} modes on a frame by frame
13093 basis using field flags. If no field information is available,
13094 then this works just like @samp{u}.
13095
13096 @item u
13097 Capture unknown or varying, transfer opposite.
13098 Filter selects among @samp{t} and @samp{b} on a frame by frame basis by
13099 analyzing the images and selecting the alternative that produces best
13100 match between the fields.
13101
13102 @item T
13103 Capture top-first, transfer unknown or varying.
13104 Filter selects among @samp{t} and @samp{p} using image analysis.
13105
13106 @item B
13107 Capture bottom-first, transfer unknown or varying.
13108 Filter selects among @samp{b} and @samp{p} using image analysis.
13109
13110 @item A
13111 Capture determined by field flags, transfer unknown or varying.
13112 Filter selects among @samp{t}, @samp{b} and @samp{p} using field flags and
13113 image analysis. If no field information is available, then this works just
13114 like @samp{U}. This is the default mode.
13115
13116 @item U
13117 Both capture and transfer unknown or varying.
13118 Filter selects among @samp{t}, @samp{b} and @samp{p} using image analysis only.
13119 @end table
13120 @end table
13121
13122 @section pixdesctest
13123
13124 Pixel format descriptor test filter, mainly useful for internal
13125 testing. The output video should be equal to the input video.
13126
13127 For example:
13128 @example
13129 format=monow, pixdesctest
13130 @end example
13131
13132 can be used to test the monowhite pixel format descriptor definition.
13133
13134 @section pixscope
13135
13136 Display sample values of color channels. Mainly useful for checking color
13137 and levels. Minimum supported resolution is 640x480.
13138
13139 The filters accept the following options:
13140
13141 @table @option
13142 @item x
13143 Set scope X position, relative offset on X axis.
13144
13145 @item y
13146 Set scope Y position, relative offset on Y axis.
13147
13148 @item w
13149 Set scope width.
13150
13151 @item h
13152 Set scope height.
13153
13154 @item o
13155 Set window opacity. This window also holds statistics about pixel area.
13156
13157 @item wx
13158 Set window X position, relative offset on X axis.
13159
13160 @item wy
13161 Set window Y position, relative offset on Y axis.
13162 @end table
13163
13164 @section pp
13165
13166 Enable the specified chain of postprocessing subfilters using libpostproc. This
13167 library should be automatically selected with a GPL build (@code{--enable-gpl}).
13168 Subfilters must be separated by '/' and can be disabled by prepending a '-'.
13169 Each subfilter and some options have a short and a long name that can be used
13170 interchangeably, i.e. dr/dering are the same.
13171
13172 The filters accept the following options:
13173
13174 @table @option
13175 @item subfilters
13176 Set postprocessing subfilters string.
13177 @end table
13178
13179 All subfilters share common options to determine their scope:
13180
13181 @table @option
13182 @item a/autoq
13183 Honor the quality commands for this subfilter.
13184
13185 @item c/chrom
13186 Do chrominance filtering, too (default).
13187
13188 @item y/nochrom
13189 Do luminance filtering only (no chrominance).
13190
13191 @item n/noluma
13192 Do chrominance filtering only (no luminance).
13193 @end table
13194
13195 These options can be appended after the subfilter name, separated by a '|'.
13196
13197 Available subfilters are:
13198
13199 @table @option
13200 @item hb/hdeblock[|difference[|flatness]]
13201 Horizontal deblocking filter
13202 @table @option
13203 @item difference
13204 Difference factor where higher values mean more deblocking (default: @code{32}).
13205 @item flatness
13206 Flatness threshold where lower values mean more deblocking (default: @code{39}).
13207 @end table
13208
13209 @item vb/vdeblock[|difference[|flatness]]
13210 Vertical deblocking filter
13211 @table @option
13212 @item difference
13213 Difference factor where higher values mean more deblocking (default: @code{32}).
13214 @item flatness
13215 Flatness threshold where lower values mean more deblocking (default: @code{39}).
13216 @end table
13217
13218 @item ha/hadeblock[|difference[|flatness]]
13219 Accurate horizontal deblocking filter
13220 @table @option
13221 @item difference
13222 Difference factor where higher values mean more deblocking (default: @code{32}).
13223 @item flatness
13224 Flatness threshold where lower values mean more deblocking (default: @code{39}).
13225 @end table
13226
13227 @item va/vadeblock[|difference[|flatness]]
13228 Accurate vertical deblocking filter
13229 @table @option
13230 @item difference
13231 Difference factor where higher values mean more deblocking (default: @code{32}).
13232 @item flatness
13233 Flatness threshold where lower values mean more deblocking (default: @code{39}).
13234 @end table
13235 @end table
13236
13237 The horizontal and vertical deblocking filters share the difference and
13238 flatness values so you cannot set different horizontal and vertical
13239 thresholds.
13240
13241 @table @option
13242 @item h1/x1hdeblock
13243 Experimental horizontal deblocking filter
13244
13245 @item v1/x1vdeblock
13246 Experimental vertical deblocking filter
13247
13248 @item dr/dering
13249 Deringing filter
13250
13251 @item tn/tmpnoise[|threshold1[|threshold2[|threshold3]]], temporal noise reducer
13252 @table @option
13253 @item threshold1
13254 larger -> stronger filtering
13255 @item threshold2
13256 larger -> stronger filtering
13257 @item threshold3
13258 larger -> stronger filtering
13259 @end table
13260
13261 @item al/autolevels[:f/fullyrange], automatic brightness / contrast correction
13262 @table @option
13263 @item f/fullyrange
13264 Stretch luminance to @code{0-255}.
13265 @end table
13266
13267 @item lb/linblenddeint
13268 Linear blend deinterlacing filter that deinterlaces the given block by
13269 filtering all lines with a @code{(1 2 1)} filter.
13270
13271 @item li/linipoldeint
13272 Linear interpolating deinterlacing filter that deinterlaces the given block by
13273 linearly interpolating every second line.
13274
13275 @item ci/cubicipoldeint
13276 Cubic interpolating deinterlacing filter deinterlaces the given block by
13277 cubically interpolating every second line.
13278
13279 @item md/mediandeint
13280 Median deinterlacing filter that deinterlaces the given block by applying a
13281 median filter to every second line.
13282
13283 @item fd/ffmpegdeint
13284 FFmpeg deinterlacing filter that deinterlaces the given block by filtering every
13285 second line with a @code{(-1 4 2 4 -1)} filter.
13286
13287 @item l5/lowpass5
13288 Vertically applied FIR lowpass deinterlacing filter that deinterlaces the given
13289 block by filtering all lines with a @code{(-1 2 6 2 -1)} filter.
13290
13291 @item fq/forceQuant[|quantizer]
13292 Overrides the quantizer table from the input with the constant quantizer you
13293 specify.
13294 @table @option
13295 @item quantizer
13296 Quantizer to use
13297 @end table
13298
13299 @item de/default
13300 Default pp filter combination (@code{hb|a,vb|a,dr|a})
13301
13302 @item fa/fast
13303 Fast pp filter combination (@code{h1|a,v1|a,dr|a})
13304
13305 @item ac
13306 High quality pp filter combination (@code{ha|a|128|7,va|a,dr|a})
13307 @end table
13308
13309 @subsection Examples
13310
13311 @itemize
13312 @item
13313 Apply horizontal and vertical deblocking, deringing and automatic
13314 brightness/contrast:
13315 @example
13316 pp=hb/vb/dr/al
13317 @end example
13318
13319 @item
13320 Apply default filters without brightness/contrast correction:
13321 @example
13322 pp=de/-al
13323 @end example
13324
13325 @item
13326 Apply default filters and temporal denoiser:
13327 @example
13328 pp=default/tmpnoise|1|2|3
13329 @end example
13330
13331 @item
13332 Apply deblocking on luminance only, and switch vertical deblocking on or off
13333 automatically depending on available CPU time:
13334 @example
13335 pp=hb|y/vb|a
13336 @end example
13337 @end itemize
13338
13339 @section pp7
13340 Apply Postprocessing filter 7. It is variant of the @ref{spp} filter,
13341 similar to spp = 6 with 7 point DCT, where only the center sample is
13342 used after IDCT.
13343
13344 The filter accepts the following options:
13345
13346 @table @option
13347 @item qp
13348 Force a constant quantization parameter. It accepts an integer in range
13349 0 to 63. If not set, the filter will use the QP from the video stream
13350 (if available).
13351
13352 @item mode
13353 Set thresholding mode. Available modes are:
13354
13355 @table @samp
13356 @item hard
13357 Set hard thresholding.
13358 @item soft
13359 Set soft thresholding (better de-ringing effect, but likely blurrier).
13360 @item medium
13361 Set medium thresholding (good results, default).
13362 @end table
13363 @end table
13364
13365 @section premultiply
13366 Apply alpha premultiply effect to input video stream using first plane
13367 of second stream as alpha.
13368
13369 Both streams must have same dimensions and same pixel format.
13370
13371 The filter accepts the following option:
13372
13373 @table @option
13374 @item planes
13375 Set which planes will be processed, unprocessed planes will be copied.
13376 By default value 0xf, all planes will be processed.
13377
13378 @item inplace
13379 Do not require 2nd input for processing, instead use alpha plane from input stream.
13380 @end table
13381
13382 @section prewitt
13383 Apply prewitt operator to input video stream.
13384
13385 The filter accepts the following option:
13386
13387 @table @option
13388 @item planes
13389 Set which planes will be processed, unprocessed planes will be copied.
13390 By default value 0xf, all planes will be processed.
13391
13392 @item scale
13393 Set value which will be multiplied with filtered result.
13394
13395 @item delta
13396 Set value which will be added to filtered result.
13397 @end table
13398
13399 @anchor{program_opencl}
13400 @section program_opencl
13401
13402 Filter video using an OpenCL program.
13403
13404 @table @option
13405
13406 @item source
13407 OpenCL program source file.
13408
13409 @item kernel
13410 Kernel name in program.
13411
13412 @item inputs
13413 Number of inputs to the filter.  Defaults to 1.
13414
13415 @item size, s
13416 Size of output frames.  Defaults to the same as the first input.
13417
13418 @end table
13419
13420 The program source file must contain a kernel function with the given name,
13421 which will be run once for each plane of the output.  Each run on a plane
13422 gets enqueued as a separate 2D global NDRange with one work-item for each
13423 pixel to be generated.  The global ID offset for each work-item is therefore
13424 the coordinates of a pixel in the destination image.
13425
13426 The kernel function needs to take the following arguments:
13427 @itemize
13428 @item
13429 Destination image, @var{__write_only image2d_t}.
13430
13431 This image will become the output; the kernel should write all of it.
13432 @item
13433 Frame index, @var{unsigned int}.
13434
13435 This is a counter starting from zero and increasing by one for each frame.
13436 @item
13437 Source images, @var{__read_only image2d_t}.
13438
13439 These are the most recent images on each input.  The kernel may read from
13440 them to generate the output, but they can't be written to.
13441 @end itemize
13442
13443 Example programs:
13444
13445 @itemize
13446 @item
13447 Copy the input to the output (output must be the same size as the input).
13448 @verbatim
13449 __kernel void copy(__write_only image2d_t destination,
13450                    unsigned int index,
13451                    __read_only  image2d_t source)
13452 {
13453     const sampler_t sampler = CLK_NORMALIZED_COORDS_FALSE;
13454
13455     int2 location = (int2)(get_global_id(0), get_global_id(1));
13456
13457     float4 value = read_imagef(source, sampler, location);
13458
13459     write_imagef(destination, location, value);
13460 }
13461 @end verbatim
13462
13463 @item
13464 Apply a simple transformation, rotating the input by an amount increasing
13465 with the index counter.  Pixel values are linearly interpolated by the
13466 sampler, and the output need not have the same dimensions as the input.
13467 @verbatim
13468 __kernel void rotate_image(__write_only image2d_t dst,
13469                            unsigned int index,
13470                            __read_only  image2d_t src)
13471 {
13472     const sampler_t sampler = (CLK_NORMALIZED_COORDS_FALSE |
13473                                CLK_FILTER_LINEAR);
13474
13475     float angle = (float)index / 100.0f;
13476
13477     float2 dst_dim = convert_float2(get_image_dim(dst));
13478     float2 src_dim = convert_float2(get_image_dim(src));
13479
13480     float2 dst_cen = dst_dim / 2.0f;
13481     float2 src_cen = src_dim / 2.0f;
13482
13483     int2   dst_loc = (int2)(get_global_id(0), get_global_id(1));
13484
13485     float2 dst_pos = convert_float2(dst_loc) - dst_cen;
13486     float2 src_pos = {
13487         cos(angle) * dst_pos.x - sin(angle) * dst_pos.y,
13488         sin(angle) * dst_pos.x + cos(angle) * dst_pos.y
13489     };
13490     src_pos = src_pos * src_dim / dst_dim;
13491
13492     float2 src_loc = src_pos + src_cen;
13493
13494     if (src_loc.x < 0.0f      || src_loc.y < 0.0f ||
13495         src_loc.x > src_dim.x || src_loc.y > src_dim.y)
13496         write_imagef(dst, dst_loc, 0.5f);
13497     else
13498         write_imagef(dst, dst_loc, read_imagef(src, sampler, src_loc));
13499 }
13500 @end verbatim
13501
13502 @item
13503 Blend two inputs together, with the amount of each input used varying
13504 with the index counter.
13505 @verbatim
13506 __kernel void blend_images(__write_only image2d_t dst,
13507                            unsigned int index,
13508                            __read_only  image2d_t src1,
13509                            __read_only  image2d_t src2)
13510 {
13511     const sampler_t sampler = (CLK_NORMALIZED_COORDS_FALSE |
13512                                CLK_FILTER_LINEAR);
13513
13514     float blend = (cos((float)index / 50.0f) + 1.0f) / 2.0f;
13515
13516     int2  dst_loc = (int2)(get_global_id(0), get_global_id(1));
13517     int2 src1_loc = dst_loc * get_image_dim(src1) / get_image_dim(dst);
13518     int2 src2_loc = dst_loc * get_image_dim(src2) / get_image_dim(dst);
13519
13520     float4 val1 = read_imagef(src1, sampler, src1_loc);
13521     float4 val2 = read_imagef(src2, sampler, src2_loc);
13522
13523     write_imagef(dst, dst_loc, val1 * blend + val2 * (1.0f - blend));
13524 }
13525 @end verbatim
13526
13527 @end itemize
13528
13529 @section pseudocolor
13530
13531 Alter frame colors in video with pseudocolors.
13532
13533 This filter accept the following options:
13534
13535 @table @option
13536 @item c0
13537 set pixel first component expression
13538
13539 @item c1
13540 set pixel second component expression
13541
13542 @item c2
13543 set pixel third component expression
13544
13545 @item c3
13546 set pixel fourth component expression, corresponds to the alpha component
13547
13548 @item i
13549 set component to use as base for altering colors
13550 @end table
13551
13552 Each of them specifies the expression to use for computing the lookup table for
13553 the corresponding pixel component values.
13554
13555 The expressions can contain the following constants and functions:
13556
13557 @table @option
13558 @item w
13559 @item h
13560 The input width and height.
13561
13562 @item val
13563 The input value for the pixel component.
13564
13565 @item ymin, umin, vmin, amin
13566 The minimum allowed component value.
13567
13568 @item ymax, umax, vmax, amax
13569 The maximum allowed component value.
13570 @end table
13571
13572 All expressions default to "val".
13573
13574 @subsection Examples
13575
13576 @itemize
13577 @item
13578 Change too high luma values to gradient:
13579 @example
13580 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'"
13581 @end example
13582 @end itemize
13583
13584 @section psnr
13585
13586 Obtain the average, maximum and minimum PSNR (Peak Signal to Noise
13587 Ratio) between two input videos.
13588
13589 This filter takes in input two input videos, the first input is
13590 considered the "main" source and is passed unchanged to the
13591 output. The second input is used as a "reference" video for computing
13592 the PSNR.
13593
13594 Both video inputs must have the same resolution and pixel format for
13595 this filter to work correctly. Also it assumes that both inputs
13596 have the same number of frames, which are compared one by one.
13597
13598 The obtained average PSNR is printed through the logging system.
13599
13600 The filter stores the accumulated MSE (mean squared error) of each
13601 frame, and at the end of the processing it is averaged across all frames
13602 equally, and the following formula is applied to obtain the PSNR:
13603
13604 @example
13605 PSNR = 10*log10(MAX^2/MSE)
13606 @end example
13607
13608 Where MAX is the average of the maximum values of each component of the
13609 image.
13610
13611 The description of the accepted parameters follows.
13612
13613 @table @option
13614 @item stats_file, f
13615 If specified the filter will use the named file to save the PSNR of
13616 each individual frame. When filename equals "-" the data is sent to
13617 standard output.
13618
13619 @item stats_version
13620 Specifies which version of the stats file format to use. Details of
13621 each format are written below.
13622 Default value is 1.
13623
13624 @item stats_add_max
13625 Determines whether the max value is output to the stats log.
13626 Default value is 0.
13627 Requires stats_version >= 2. If this is set and stats_version < 2,
13628 the filter will return an error.
13629 @end table
13630
13631 This filter also supports the @ref{framesync} options.
13632
13633 The file printed if @var{stats_file} is selected, contains a sequence of
13634 key/value pairs of the form @var{key}:@var{value} for each compared
13635 couple of frames.
13636
13637 If a @var{stats_version} greater than 1 is specified, a header line precedes
13638 the list of per-frame-pair stats, with key value pairs following the frame
13639 format with the following parameters:
13640
13641 @table @option
13642 @item psnr_log_version
13643 The version of the log file format. Will match @var{stats_version}.
13644
13645 @item fields
13646 A comma separated list of the per-frame-pair parameters included in
13647 the log.
13648 @end table
13649
13650 A description of each shown per-frame-pair parameter follows:
13651
13652 @table @option
13653 @item n
13654 sequential number of the input frame, starting from 1
13655
13656 @item mse_avg
13657 Mean Square Error pixel-by-pixel average difference of the compared
13658 frames, averaged over all the image components.
13659
13660 @item mse_y, mse_u, mse_v, mse_r, mse_g, mse_b, mse_a
13661 Mean Square Error pixel-by-pixel average difference of the compared
13662 frames for the component specified by the suffix.
13663
13664 @item psnr_y, psnr_u, psnr_v, psnr_r, psnr_g, psnr_b, psnr_a
13665 Peak Signal to Noise ratio of the compared frames for the component
13666 specified by the suffix.
13667
13668 @item max_avg, max_y, max_u, max_v
13669 Maximum allowed value for each channel, and average over all
13670 channels.
13671 @end table
13672
13673 For example:
13674 @example
13675 movie=ref_movie.mpg, setpts=PTS-STARTPTS [main];
13676 [main][ref] psnr="stats_file=stats.log" [out]
13677 @end example
13678
13679 On this example the input file being processed is compared with the
13680 reference file @file{ref_movie.mpg}. The PSNR of each individual frame
13681 is stored in @file{stats.log}.
13682
13683 @anchor{pullup}
13684 @section pullup
13685
13686 Pulldown reversal (inverse telecine) filter, capable of handling mixed
13687 hard-telecine, 24000/1001 fps progressive, and 30000/1001 fps progressive
13688 content.
13689
13690 The pullup filter is designed to take advantage of future context in making
13691 its decisions. This filter is stateless in the sense that it does not lock
13692 onto a pattern to follow, but it instead looks forward to the following
13693 fields in order to identify matches and rebuild progressive frames.
13694
13695 To produce content with an even framerate, insert the fps filter after
13696 pullup, use @code{fps=24000/1001} if the input frame rate is 29.97fps,
13697 @code{fps=24} for 30fps and the (rare) telecined 25fps input.
13698
13699 The filter accepts the following options:
13700
13701 @table @option
13702 @item jl
13703 @item jr
13704 @item jt
13705 @item jb
13706 These options set the amount of "junk" to ignore at the left, right, top, and
13707 bottom of the image, respectively. Left and right are in units of 8 pixels,
13708 while top and bottom are in units of 2 lines.
13709 The default is 8 pixels on each side.
13710
13711 @item sb
13712 Set the strict breaks. Setting this option to 1 will reduce the chances of
13713 filter generating an occasional mismatched frame, but it may also cause an
13714 excessive number of frames to be dropped during high motion sequences.
13715 Conversely, setting it to -1 will make filter match fields more easily.
13716 This may help processing of video where there is slight blurring between
13717 the fields, but may also cause there to be interlaced frames in the output.
13718 Default value is @code{0}.
13719
13720 @item mp
13721 Set the metric plane to use. It accepts the following values:
13722 @table @samp
13723 @item l
13724 Use luma plane.
13725
13726 @item u
13727 Use chroma blue plane.
13728
13729 @item v
13730 Use chroma red plane.
13731 @end table
13732
13733 This option may be set to use chroma plane instead of the default luma plane
13734 for doing filter's computations. This may improve accuracy on very clean
13735 source material, but more likely will decrease accuracy, especially if there
13736 is chroma noise (rainbow effect) or any grayscale video.
13737 The main purpose of setting @option{mp} to a chroma plane is to reduce CPU
13738 load and make pullup usable in realtime on slow machines.
13739 @end table
13740
13741 For best results (without duplicated frames in the output file) it is
13742 necessary to change the output frame rate. For example, to inverse
13743 telecine NTSC input:
13744 @example
13745 ffmpeg -i input -vf pullup -r 24000/1001 ...
13746 @end example
13747
13748 @section qp
13749
13750 Change video quantization parameters (QP).
13751
13752 The filter accepts the following option:
13753
13754 @table @option
13755 @item qp
13756 Set expression for quantization parameter.
13757 @end table
13758
13759 The expression is evaluated through the eval API and can contain, among others,
13760 the following constants:
13761
13762 @table @var
13763 @item known
13764 1 if index is not 129, 0 otherwise.
13765
13766 @item qp
13767 Sequential index starting from -129 to 128.
13768 @end table
13769
13770 @subsection Examples
13771
13772 @itemize
13773 @item
13774 Some equation like:
13775 @example
13776 qp=2+2*sin(PI*qp)
13777 @end example
13778 @end itemize
13779
13780 @section random
13781
13782 Flush video frames from internal cache of frames into a random order.
13783 No frame is discarded.
13784 Inspired by @ref{frei0r} nervous filter.
13785
13786 @table @option
13787 @item frames
13788 Set size in number of frames of internal cache, in range from @code{2} to
13789 @code{512}. Default is @code{30}.
13790
13791 @item seed
13792 Set seed for random number generator, must be an integer included between
13793 @code{0} and @code{UINT32_MAX}. If not specified, or if explicitly set to
13794 less than @code{0}, the filter will try to use a good random seed on a
13795 best effort basis.
13796 @end table
13797
13798 @section readeia608
13799
13800 Read closed captioning (EIA-608) information from the top lines of a video frame.
13801
13802 This filter adds frame metadata for @code{lavfi.readeia608.X.cc} and
13803 @code{lavfi.readeia608.X.line}, where @code{X} is the number of the identified line
13804 with EIA-608 data (starting from 0). A description of each metadata value follows:
13805
13806 @table @option
13807 @item lavfi.readeia608.X.cc
13808 The two bytes stored as EIA-608 data (printed in hexadecimal).
13809
13810 @item lavfi.readeia608.X.line
13811 The number of the line on which the EIA-608 data was identified and read.
13812 @end table
13813
13814 This filter accepts the following options:
13815
13816 @table @option
13817 @item scan_min
13818 Set the line to start scanning for EIA-608 data. Default is @code{0}.
13819
13820 @item scan_max
13821 Set the line to end scanning for EIA-608 data. Default is @code{29}.
13822
13823 @item mac
13824 Set minimal acceptable amplitude change for sync codes detection.
13825 Default is @code{0.2}. Allowed range is @code{[0.001 - 1]}.
13826
13827 @item spw
13828 Set the ratio of width reserved for sync code detection.
13829 Default is @code{0.27}. Allowed range is @code{[0.01 - 0.7]}.
13830
13831 @item mhd
13832 Set the max peaks height difference for sync code detection.
13833 Default is @code{0.1}. Allowed range is @code{[0.0 - 0.5]}.
13834
13835 @item mpd
13836 Set max peaks period difference for sync code detection.
13837 Default is @code{0.1}. Allowed range is @code{[0.0 - 0.5]}.
13838
13839 @item msd
13840 Set the first two max start code bits differences.
13841 Default is @code{0.02}. Allowed range is @code{[0.0 - 0.5]}.
13842
13843 @item bhd
13844 Set the minimum ratio of bits height compared to 3rd start code bit.
13845 Default is @code{0.75}. Allowed range is @code{[0.01 - 1]}.
13846
13847 @item th_w
13848 Set the white color threshold. Default is @code{0.35}. Allowed range is @code{[0.1 - 1]}.
13849
13850 @item th_b
13851 Set the black color threshold. Default is @code{0.15}. Allowed range is @code{[0.0 - 0.5]}.
13852
13853 @item chp
13854 Enable checking the parity bit. In the event of a parity error, the filter will output
13855 @code{0x00} for that character. Default is false.
13856 @end table
13857
13858 @subsection Examples
13859
13860 @itemize
13861 @item
13862 Output a csv with presentation time and the first two lines of identified EIA-608 captioning data.
13863 @example
13864 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
13865 @end example
13866 @end itemize
13867
13868 @section readvitc
13869
13870 Read vertical interval timecode (VITC) information from the top lines of a
13871 video frame.
13872
13873 The filter adds frame metadata key @code{lavfi.readvitc.tc_str} with the
13874 timecode value, if a valid timecode has been detected. Further metadata key
13875 @code{lavfi.readvitc.found} is set to 0/1 depending on whether
13876 timecode data has been found or not.
13877
13878 This filter accepts the following options:
13879
13880 @table @option
13881 @item scan_max
13882 Set the maximum number of lines to scan for VITC data. If the value is set to
13883 @code{-1} the full video frame is scanned. Default is @code{45}.
13884
13885 @item thr_b
13886 Set the luma threshold for black. Accepts float numbers in the range [0.0,1.0],
13887 default value is @code{0.2}. The value must be equal or less than @code{thr_w}.
13888
13889 @item thr_w
13890 Set the luma threshold for white. Accepts float numbers in the range [0.0,1.0],
13891 default value is @code{0.6}. The value must be equal or greater than @code{thr_b}.
13892 @end table
13893
13894 @subsection Examples
13895
13896 @itemize
13897 @item
13898 Detect and draw VITC data onto the video frame; if no valid VITC is detected,
13899 draw @code{--:--:--:--} as a placeholder:
13900 @example
13901 ffmpeg -i input.avi -filter:v 'readvitc,drawtext=fontfile=FreeMono.ttf:text=%@{metadata\\:lavfi.readvitc.tc_str\\:--\\\\\\:--\\\\\\:--\\\\\\:--@}:x=(w-tw)/2:y=400-ascent'
13902 @end example
13903 @end itemize
13904
13905 @section remap
13906
13907 Remap pixels using 2nd: Xmap and 3rd: Ymap input video stream.
13908
13909 Destination pixel at position (X, Y) will be picked from source (x, y) position
13910 where x = Xmap(X, Y) and y = Ymap(X, Y). If mapping values are out of range, zero
13911 value for pixel will be used for destination pixel.
13912
13913 Xmap and Ymap input video streams must be of same dimensions. Output video stream
13914 will have Xmap/Ymap video stream dimensions.
13915 Xmap and Ymap input video streams are 16bit depth, single channel.
13916
13917 @section removegrain
13918
13919 The removegrain filter is a spatial denoiser for progressive video.
13920
13921 @table @option
13922 @item m0
13923 Set mode for the first plane.
13924
13925 @item m1
13926 Set mode for the second plane.
13927
13928 @item m2
13929 Set mode for the third plane.
13930
13931 @item m3
13932 Set mode for the fourth plane.
13933 @end table
13934
13935 Range of mode is from 0 to 24. Description of each mode follows:
13936
13937 @table @var
13938 @item 0
13939 Leave input plane unchanged. Default.
13940
13941 @item 1
13942 Clips the pixel with the minimum and maximum of the 8 neighbour pixels.
13943
13944 @item 2
13945 Clips the pixel with the second minimum and maximum of the 8 neighbour pixels.
13946
13947 @item 3
13948 Clips the pixel with the third minimum and maximum of the 8 neighbour pixels.
13949
13950 @item 4
13951 Clips the pixel with the fourth minimum and maximum of the 8 neighbour pixels.
13952 This is equivalent to a median filter.
13953
13954 @item 5
13955 Line-sensitive clipping giving the minimal change.
13956
13957 @item 6
13958 Line-sensitive clipping, intermediate.
13959
13960 @item 7
13961 Line-sensitive clipping, intermediate.
13962
13963 @item 8
13964 Line-sensitive clipping, intermediate.
13965
13966 @item 9
13967 Line-sensitive clipping on a line where the neighbours pixels are the closest.
13968
13969 @item 10
13970 Replaces the target pixel with the closest neighbour.
13971
13972 @item 11
13973 [1 2 1] horizontal and vertical kernel blur.
13974
13975 @item 12
13976 Same as mode 11.
13977
13978 @item 13
13979 Bob mode, interpolates top field from the line where the neighbours
13980 pixels are the closest.
13981
13982 @item 14
13983 Bob mode, interpolates bottom field from the line where the neighbours
13984 pixels are the closest.
13985
13986 @item 15
13987 Bob mode, interpolates top field. Same as 13 but with a more complicated
13988 interpolation formula.
13989
13990 @item 16
13991 Bob mode, interpolates bottom field. Same as 14 but with a more complicated
13992 interpolation formula.
13993
13994 @item 17
13995 Clips the pixel with the minimum and maximum of respectively the maximum and
13996 minimum of each pair of opposite neighbour pixels.
13997
13998 @item 18
13999 Line-sensitive clipping using opposite neighbours whose greatest distance from
14000 the current pixel is minimal.
14001
14002 @item 19
14003 Replaces the pixel with the average of its 8 neighbours.
14004
14005 @item 20
14006 Averages the 9 pixels ([1 1 1] horizontal and vertical blur).
14007
14008 @item 21
14009 Clips pixels using the averages of opposite neighbour.
14010
14011 @item 22
14012 Same as mode 21 but simpler and faster.
14013
14014 @item 23
14015 Small edge and halo removal, but reputed useless.
14016
14017 @item 24
14018 Similar as 23.
14019 @end table
14020
14021 @section removelogo
14022
14023 Suppress a TV station logo, using an image file to determine which
14024 pixels comprise the logo. It works by filling in the pixels that
14025 comprise the logo with neighboring pixels.
14026
14027 The filter accepts the following options:
14028
14029 @table @option
14030 @item filename, f
14031 Set the filter bitmap file, which can be any image format supported by
14032 libavformat. The width and height of the image file must match those of the
14033 video stream being processed.
14034 @end table
14035
14036 Pixels in the provided bitmap image with a value of zero are not
14037 considered part of the logo, non-zero pixels are considered part of
14038 the logo. If you use white (255) for the logo and black (0) for the
14039 rest, you will be safe. For making the filter bitmap, it is
14040 recommended to take a screen capture of a black frame with the logo
14041 visible, and then using a threshold filter followed by the erode
14042 filter once or twice.
14043
14044 If needed, little splotches can be fixed manually. Remember that if
14045 logo pixels are not covered, the filter quality will be much
14046 reduced. Marking too many pixels as part of the logo does not hurt as
14047 much, but it will increase the amount of blurring needed to cover over
14048 the image and will destroy more information than necessary, and extra
14049 pixels will slow things down on a large logo.
14050
14051 @section repeatfields
14052
14053 This filter uses the repeat_field flag from the Video ES headers and hard repeats
14054 fields based on its value.
14055
14056 @section reverse
14057
14058 Reverse a video clip.
14059
14060 Warning: This filter requires memory to buffer the entire clip, so trimming
14061 is suggested.
14062
14063 @subsection Examples
14064
14065 @itemize
14066 @item
14067 Take the first 5 seconds of a clip, and reverse it.
14068 @example
14069 trim=end=5,reverse
14070 @end example
14071 @end itemize
14072
14073 @section roberts
14074 Apply roberts cross operator to input video stream.
14075
14076 The filter accepts the following option:
14077
14078 @table @option
14079 @item planes
14080 Set which planes will be processed, unprocessed planes will be copied.
14081 By default value 0xf, all planes will be processed.
14082
14083 @item scale
14084 Set value which will be multiplied with filtered result.
14085
14086 @item delta
14087 Set value which will be added to filtered result.
14088 @end table
14089
14090 @section rotate
14091
14092 Rotate video by an arbitrary angle expressed in radians.
14093
14094 The filter accepts the following options:
14095
14096 A description of the optional parameters follows.
14097 @table @option
14098 @item angle, a
14099 Set an expression for the angle by which to rotate the input video
14100 clockwise, expressed as a number of radians. A negative value will
14101 result in a counter-clockwise rotation. By default it is set to "0".
14102
14103 This expression is evaluated for each frame.
14104
14105 @item out_w, ow
14106 Set the output width expression, default value is "iw".
14107 This expression is evaluated just once during configuration.
14108
14109 @item out_h, oh
14110 Set the output height expression, default value is "ih".
14111 This expression is evaluated just once during configuration.
14112
14113 @item bilinear
14114 Enable bilinear interpolation if set to 1, a value of 0 disables
14115 it. Default value is 1.
14116
14117 @item fillcolor, c
14118 Set the color used to fill the output area not covered by the rotated
14119 image. For the general syntax of this option, check the
14120 @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
14121 If the special value "none" is selected then no
14122 background is printed (useful for example if the background is never shown).
14123
14124 Default value is "black".
14125 @end table
14126
14127 The expressions for the angle and the output size can contain the
14128 following constants and functions:
14129
14130 @table @option
14131 @item n
14132 sequential number of the input frame, starting from 0. It is always NAN
14133 before the first frame is filtered.
14134
14135 @item t
14136 time in seconds of the input frame, it is set to 0 when the filter is
14137 configured. It is always NAN before the first frame is filtered.
14138
14139 @item hsub
14140 @item vsub
14141 horizontal and vertical chroma subsample values. For example for the
14142 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
14143
14144 @item in_w, iw
14145 @item in_h, ih
14146 the input video width and height
14147
14148 @item out_w, ow
14149 @item out_h, oh
14150 the output width and height, that is the size of the padded area as
14151 specified by the @var{width} and @var{height} expressions
14152
14153 @item rotw(a)
14154 @item roth(a)
14155 the minimal width/height required for completely containing the input
14156 video rotated by @var{a} radians.
14157
14158 These are only available when computing the @option{out_w} and
14159 @option{out_h} expressions.
14160 @end table
14161
14162 @subsection Examples
14163
14164 @itemize
14165 @item
14166 Rotate the input by PI/6 radians clockwise:
14167 @example
14168 rotate=PI/6
14169 @end example
14170
14171 @item
14172 Rotate the input by PI/6 radians counter-clockwise:
14173 @example
14174 rotate=-PI/6
14175 @end example
14176
14177 @item
14178 Rotate the input by 45 degrees clockwise:
14179 @example
14180 rotate=45*PI/180
14181 @end example
14182
14183 @item
14184 Apply a constant rotation with period T, starting from an angle of PI/3:
14185 @example
14186 rotate=PI/3+2*PI*t/T
14187 @end example
14188
14189 @item
14190 Make the input video rotation oscillating with a period of T
14191 seconds and an amplitude of A radians:
14192 @example
14193 rotate=A*sin(2*PI/T*t)
14194 @end example
14195
14196 @item
14197 Rotate the video, output size is chosen so that the whole rotating
14198 input video is always completely contained in the output:
14199 @example
14200 rotate='2*PI*t:ow=hypot(iw,ih):oh=ow'
14201 @end example
14202
14203 @item
14204 Rotate the video, reduce the output size so that no background is ever
14205 shown:
14206 @example
14207 rotate=2*PI*t:ow='min(iw,ih)/sqrt(2)':oh=ow:c=none
14208 @end example
14209 @end itemize
14210
14211 @subsection Commands
14212
14213 The filter supports the following commands:
14214
14215 @table @option
14216 @item a, angle
14217 Set the angle expression.
14218 The command accepts the same syntax of the corresponding option.
14219
14220 If the specified expression is not valid, it is kept at its current
14221 value.
14222 @end table
14223
14224 @section sab
14225
14226 Apply Shape Adaptive Blur.
14227
14228 The filter accepts the following options:
14229
14230 @table @option
14231 @item luma_radius, lr
14232 Set luma blur filter strength, must be a value in range 0.1-4.0, default
14233 value is 1.0. A greater value will result in a more blurred image, and
14234 in slower processing.
14235
14236 @item luma_pre_filter_radius, lpfr
14237 Set luma pre-filter radius, must be a value in the 0.1-2.0 range, default
14238 value is 1.0.
14239
14240 @item luma_strength, ls
14241 Set luma maximum difference between pixels to still be considered, must
14242 be a value in the 0.1-100.0 range, default value is 1.0.
14243
14244 @item chroma_radius, cr
14245 Set chroma blur filter strength, must be a value in range -0.9-4.0. A
14246 greater value will result in a more blurred image, and in slower
14247 processing.
14248
14249 @item chroma_pre_filter_radius, cpfr
14250 Set chroma pre-filter radius, must be a value in the -0.9-2.0 range.
14251
14252 @item chroma_strength, cs
14253 Set chroma maximum difference between pixels to still be considered,
14254 must be a value in the -0.9-100.0 range.
14255 @end table
14256
14257 Each chroma option value, if not explicitly specified, is set to the
14258 corresponding luma option value.
14259
14260 @anchor{scale}
14261 @section scale
14262
14263 Scale (resize) the input video, using the libswscale library.
14264
14265 The scale filter forces the output display aspect ratio to be the same
14266 of the input, by changing the output sample aspect ratio.
14267
14268 If the input image format is different from the format requested by
14269 the next filter, the scale filter will convert the input to the
14270 requested format.
14271
14272 @subsection Options
14273 The filter accepts the following options, or any of the options
14274 supported by the libswscale scaler.
14275
14276 See @ref{scaler_options,,the ffmpeg-scaler manual,ffmpeg-scaler} for
14277 the complete list of scaler options.
14278
14279 @table @option
14280 @item width, w
14281 @item height, h
14282 Set the output video dimension expression. Default value is the input
14283 dimension.
14284
14285 If the @var{width} or @var{w} value is 0, the input width is used for
14286 the output. If the @var{height} or @var{h} value is 0, the input height
14287 is used for the output.
14288
14289 If one and only one of the values is -n with n >= 1, the scale filter
14290 will use a value that maintains the aspect ratio of the input image,
14291 calculated from the other specified dimension. After that it will,
14292 however, make sure that the calculated dimension is divisible by n and
14293 adjust the value if necessary.
14294
14295 If both values are -n with n >= 1, the behavior will be identical to
14296 both values being set to 0 as previously detailed.
14297
14298 See below for the list of accepted constants for use in the dimension
14299 expression.
14300
14301 @item eval
14302 Specify when to evaluate @var{width} and @var{height} expression. It accepts the following values:
14303
14304 @table @samp
14305 @item init
14306 Only evaluate expressions once during the filter initialization or when a command is processed.
14307
14308 @item frame
14309 Evaluate expressions for each incoming frame.
14310
14311 @end table
14312
14313 Default value is @samp{init}.
14314
14315
14316 @item interl
14317 Set the interlacing mode. It accepts the following values:
14318
14319 @table @samp
14320 @item 1
14321 Force interlaced aware scaling.
14322
14323 @item 0
14324 Do not apply interlaced scaling.
14325
14326 @item -1
14327 Select interlaced aware scaling depending on whether the source frames
14328 are flagged as interlaced or not.
14329 @end table
14330
14331 Default value is @samp{0}.
14332
14333 @item flags
14334 Set libswscale scaling flags. See
14335 @ref{sws_flags,,the ffmpeg-scaler manual,ffmpeg-scaler} for the
14336 complete list of values. If not explicitly specified the filter applies
14337 the default flags.
14338
14339
14340 @item param0, param1
14341 Set libswscale input parameters for scaling algorithms that need them. See
14342 @ref{sws_params,,the ffmpeg-scaler manual,ffmpeg-scaler} for the
14343 complete documentation. If not explicitly specified the filter applies
14344 empty parameters.
14345
14346
14347
14348 @item size, s
14349 Set the video size. For the syntax of this option, check the
14350 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
14351
14352 @item in_color_matrix
14353 @item out_color_matrix
14354 Set in/output YCbCr color space type.
14355
14356 This allows the autodetected value to be overridden as well as allows forcing
14357 a specific value used for the output and encoder.
14358
14359 If not specified, the color space type depends on the pixel format.
14360
14361 Possible values:
14362
14363 @table @samp
14364 @item auto
14365 Choose automatically.
14366
14367 @item bt709
14368 Format conforming to International Telecommunication Union (ITU)
14369 Recommendation BT.709.
14370
14371 @item fcc
14372 Set color space conforming to the United States Federal Communications
14373 Commission (FCC) Code of Federal Regulations (CFR) Title 47 (2003) 73.682 (a).
14374
14375 @item bt601
14376 Set color space conforming to:
14377
14378 @itemize
14379 @item
14380 ITU Radiocommunication Sector (ITU-R) Recommendation BT.601
14381
14382 @item
14383 ITU-R Rec. BT.470-6 (1998) Systems B, B1, and G
14384
14385 @item
14386 Society of Motion Picture and Television Engineers (SMPTE) ST 170:2004
14387
14388 @end itemize
14389
14390 @item smpte240m
14391 Set color space conforming to SMPTE ST 240:1999.
14392 @end table
14393
14394 @item in_range
14395 @item out_range
14396 Set in/output YCbCr sample range.
14397
14398 This allows the autodetected value to be overridden as well as allows forcing
14399 a specific value used for the output and encoder. If not specified, the
14400 range depends on the pixel format. Possible values:
14401
14402 @table @samp
14403 @item auto/unknown
14404 Choose automatically.
14405
14406 @item jpeg/full/pc
14407 Set full range (0-255 in case of 8-bit luma).
14408
14409 @item mpeg/limited/tv
14410 Set "MPEG" range (16-235 in case of 8-bit luma).
14411 @end table
14412
14413 @item force_original_aspect_ratio
14414 Enable decreasing or increasing output video width or height if necessary to
14415 keep the original aspect ratio. Possible values:
14416
14417 @table @samp
14418 @item disable
14419 Scale the video as specified and disable this feature.
14420
14421 @item decrease
14422 The output video dimensions will automatically be decreased if needed.
14423
14424 @item increase
14425 The output video dimensions will automatically be increased if needed.
14426
14427 @end table
14428
14429 One useful instance of this option is that when you know a specific device's
14430 maximum allowed resolution, you can use this to limit the output video to
14431 that, while retaining the aspect ratio. For example, device A allows
14432 1280x720 playback, and your video is 1920x800. Using this option (set it to
14433 decrease) and specifying 1280x720 to the command line makes the output
14434 1280x533.
14435
14436 Please note that this is a different thing than specifying -1 for @option{w}
14437 or @option{h}, you still need to specify the output resolution for this option
14438 to work.
14439
14440 @end table
14441
14442 The values of the @option{w} and @option{h} options are expressions
14443 containing the following constants:
14444
14445 @table @var
14446 @item in_w
14447 @item in_h
14448 The input width and height
14449
14450 @item iw
14451 @item ih
14452 These are the same as @var{in_w} and @var{in_h}.
14453
14454 @item out_w
14455 @item out_h
14456 The output (scaled) width and height
14457
14458 @item ow
14459 @item oh
14460 These are the same as @var{out_w} and @var{out_h}
14461
14462 @item a
14463 The same as @var{iw} / @var{ih}
14464
14465 @item sar
14466 input sample aspect ratio
14467
14468 @item dar
14469 The input display aspect ratio. Calculated from @code{(iw / ih) * sar}.
14470
14471 @item hsub
14472 @item vsub
14473 horizontal and vertical input chroma subsample values. For example for the
14474 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
14475
14476 @item ohsub
14477 @item ovsub
14478 horizontal and vertical output chroma subsample values. For example for the
14479 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
14480 @end table
14481
14482 @subsection Examples
14483
14484 @itemize
14485 @item
14486 Scale the input video to a size of 200x100
14487 @example
14488 scale=w=200:h=100
14489 @end example
14490
14491 This is equivalent to:
14492 @example
14493 scale=200:100
14494 @end example
14495
14496 or:
14497 @example
14498 scale=200x100
14499 @end example
14500
14501 @item
14502 Specify a size abbreviation for the output size:
14503 @example
14504 scale=qcif
14505 @end example
14506
14507 which can also be written as:
14508 @example
14509 scale=size=qcif
14510 @end example
14511
14512 @item
14513 Scale the input to 2x:
14514 @example
14515 scale=w=2*iw:h=2*ih
14516 @end example
14517
14518 @item
14519 The above is the same as:
14520 @example
14521 scale=2*in_w:2*in_h
14522 @end example
14523
14524 @item
14525 Scale the input to 2x with forced interlaced scaling:
14526 @example
14527 scale=2*iw:2*ih:interl=1
14528 @end example
14529
14530 @item
14531 Scale the input to half size:
14532 @example
14533 scale=w=iw/2:h=ih/2
14534 @end example
14535
14536 @item
14537 Increase the width, and set the height to the same size:
14538 @example
14539 scale=3/2*iw:ow
14540 @end example
14541
14542 @item
14543 Seek Greek harmony:
14544 @example
14545 scale=iw:1/PHI*iw
14546 scale=ih*PHI:ih
14547 @end example
14548
14549 @item
14550 Increase the height, and set the width to 3/2 of the height:
14551 @example
14552 scale=w=3/2*oh:h=3/5*ih
14553 @end example
14554
14555 @item
14556 Increase the size, making the size a multiple of the chroma
14557 subsample values:
14558 @example
14559 scale="trunc(3/2*iw/hsub)*hsub:trunc(3/2*ih/vsub)*vsub"
14560 @end example
14561
14562 @item
14563 Increase the width to a maximum of 500 pixels,
14564 keeping the same aspect ratio as the input:
14565 @example
14566 scale=w='min(500\, iw*3/2):h=-1'
14567 @end example
14568
14569 @item
14570 Make pixels square by combining scale and setsar:
14571 @example
14572 scale='trunc(ih*dar):ih',setsar=1/1
14573 @end example
14574
14575 @item
14576 Make pixels square by combining scale and setsar,
14577 making sure the resulting resolution is even (required by some codecs):
14578 @example
14579 scale='trunc(ih*dar/2)*2:trunc(ih/2)*2',setsar=1/1
14580 @end example
14581 @end itemize
14582
14583 @subsection Commands
14584
14585 This filter supports the following commands:
14586 @table @option
14587 @item width, w
14588 @item height, h
14589 Set the output video dimension expression.
14590 The command accepts the same syntax of the corresponding option.
14591
14592 If the specified expression is not valid, it is kept at its current
14593 value.
14594 @end table
14595
14596 @section scale_npp
14597
14598 Use the NVIDIA Performance Primitives (libnpp) to perform scaling and/or pixel
14599 format conversion on CUDA video frames. Setting the output width and height
14600 works in the same way as for the @var{scale} filter.
14601
14602 The following additional options are accepted:
14603 @table @option
14604 @item format
14605 The pixel format of the output CUDA frames. If set to the string "same" (the
14606 default), the input format will be kept. Note that automatic format negotiation
14607 and conversion is not yet supported for hardware frames
14608
14609 @item interp_algo
14610 The interpolation algorithm used for resizing. One of the following:
14611 @table @option
14612 @item nn
14613 Nearest neighbour.
14614
14615 @item linear
14616 @item cubic
14617 @item cubic2p_bspline
14618 2-parameter cubic (B=1, C=0)
14619
14620 @item cubic2p_catmullrom
14621 2-parameter cubic (B=0, C=1/2)
14622
14623 @item cubic2p_b05c03
14624 2-parameter cubic (B=1/2, C=3/10)
14625
14626 @item super
14627 Supersampling
14628
14629 @item lanczos
14630 @end table
14631
14632 @end table
14633
14634 @section scale2ref
14635
14636 Scale (resize) the input video, based on a reference video.
14637
14638 See the scale filter for available options, scale2ref supports the same but
14639 uses the reference video instead of the main input as basis. scale2ref also
14640 supports the following additional constants for the @option{w} and
14641 @option{h} options:
14642
14643 @table @var
14644 @item main_w
14645 @item main_h
14646 The main input video's width and height
14647
14648 @item main_a
14649 The same as @var{main_w} / @var{main_h}
14650
14651 @item main_sar
14652 The main input video's sample aspect ratio
14653
14654 @item main_dar, mdar
14655 The main input video's display aspect ratio. Calculated from
14656 @code{(main_w / main_h) * main_sar}.
14657
14658 @item main_hsub
14659 @item main_vsub
14660 The main input video's horizontal and vertical chroma subsample values.
14661 For example for the pixel format "yuv422p" @var{hsub} is 2 and @var{vsub}
14662 is 1.
14663 @end table
14664
14665 @subsection Examples
14666
14667 @itemize
14668 @item
14669 Scale a subtitle stream (b) to match the main video (a) in size before overlaying
14670 @example
14671 'scale2ref[b][a];[a][b]overlay'
14672 @end example
14673 @end itemize
14674
14675 @anchor{selectivecolor}
14676 @section selectivecolor
14677
14678 Adjust cyan, magenta, yellow and black (CMYK) to certain ranges of colors (such
14679 as "reds", "yellows", "greens", "cyans", ...). The adjustment range is defined
14680 by the "purity" of the color (that is, how saturated it already is).
14681
14682 This filter is similar to the Adobe Photoshop Selective Color tool.
14683
14684 The filter accepts the following options:
14685
14686 @table @option
14687 @item correction_method
14688 Select color correction method.
14689
14690 Available values are:
14691 @table @samp
14692 @item absolute
14693 Specified adjustments are applied "as-is" (added/subtracted to original pixel
14694 component value).
14695 @item relative
14696 Specified adjustments are relative to the original component value.
14697 @end table
14698 Default is @code{absolute}.
14699 @item reds
14700 Adjustments for red pixels (pixels where the red component is the maximum)
14701 @item yellows
14702 Adjustments for yellow pixels (pixels where the blue component is the minimum)
14703 @item greens
14704 Adjustments for green pixels (pixels where the green component is the maximum)
14705 @item cyans
14706 Adjustments for cyan pixels (pixels where the red component is the minimum)
14707 @item blues
14708 Adjustments for blue pixels (pixels where the blue component is the maximum)
14709 @item magentas
14710 Adjustments for magenta pixels (pixels where the green component is the minimum)
14711 @item whites
14712 Adjustments for white pixels (pixels where all components are greater than 128)
14713 @item neutrals
14714 Adjustments for all pixels except pure black and pure white
14715 @item blacks
14716 Adjustments for black pixels (pixels where all components are lesser than 128)
14717 @item psfile
14718 Specify a Photoshop selective color file (@code{.asv}) to import the settings from.
14719 @end table
14720
14721 All the adjustment settings (@option{reds}, @option{yellows}, ...) accept up to
14722 4 space separated floating point adjustment values in the [-1,1] range,
14723 respectively to adjust the amount of cyan, magenta, yellow and black for the
14724 pixels of its range.
14725
14726 @subsection Examples
14727
14728 @itemize
14729 @item
14730 Increase cyan by 50% and reduce yellow by 33% in every green areas, and
14731 increase magenta by 27% in blue areas:
14732 @example
14733 selectivecolor=greens=.5 0 -.33 0:blues=0 .27
14734 @end example
14735
14736 @item
14737 Use a Photoshop selective color preset:
14738 @example
14739 selectivecolor=psfile=MySelectiveColorPresets/Misty.asv
14740 @end example
14741 @end itemize
14742
14743 @anchor{separatefields}
14744 @section separatefields
14745
14746 The @code{separatefields} takes a frame-based video input and splits
14747 each frame into its components fields, producing a new half height clip
14748 with twice the frame rate and twice the frame count.
14749
14750 This filter use field-dominance information in frame to decide which
14751 of each pair of fields to place first in the output.
14752 If it gets it wrong use @ref{setfield} filter before @code{separatefields} filter.
14753
14754 @section setdar, setsar
14755
14756 The @code{setdar} filter sets the Display Aspect Ratio for the filter
14757 output video.
14758
14759 This is done by changing the specified Sample (aka Pixel) Aspect
14760 Ratio, according to the following equation:
14761 @example
14762 @var{DAR} = @var{HORIZONTAL_RESOLUTION} / @var{VERTICAL_RESOLUTION} * @var{SAR}
14763 @end example
14764
14765 Keep in mind that the @code{setdar} filter does not modify the pixel
14766 dimensions of the video frame. Also, the display aspect ratio set by
14767 this filter may be changed by later filters in the filterchain,
14768 e.g. in case of scaling or if another "setdar" or a "setsar" filter is
14769 applied.
14770
14771 The @code{setsar} filter sets the Sample (aka Pixel) Aspect Ratio for
14772 the filter output video.
14773
14774 Note that as a consequence of the application of this filter, the
14775 output display aspect ratio will change according to the equation
14776 above.
14777
14778 Keep in mind that the sample aspect ratio set by the @code{setsar}
14779 filter may be changed by later filters in the filterchain, e.g. if
14780 another "setsar" or a "setdar" filter is applied.
14781
14782 It accepts the following parameters:
14783
14784 @table @option
14785 @item r, ratio, dar (@code{setdar} only), sar (@code{setsar} only)
14786 Set the aspect ratio used by the filter.
14787
14788 The parameter can be a floating point number string, an expression, or
14789 a string of the form @var{num}:@var{den}, where @var{num} and
14790 @var{den} are the numerator and denominator of the aspect ratio. If
14791 the parameter is not specified, it is assumed the value "0".
14792 In case the form "@var{num}:@var{den}" is used, the @code{:} character
14793 should be escaped.
14794
14795 @item max
14796 Set the maximum integer value to use for expressing numerator and
14797 denominator when reducing the expressed aspect ratio to a rational.
14798 Default value is @code{100}.
14799
14800 @end table
14801
14802 The parameter @var{sar} is an expression containing
14803 the following constants:
14804
14805 @table @option
14806 @item E, PI, PHI
14807 These are approximated values for the mathematical constants e
14808 (Euler's number), pi (Greek pi), and phi (the golden ratio).
14809
14810 @item w, h
14811 The input width and height.
14812
14813 @item a
14814 These are the same as @var{w} / @var{h}.
14815
14816 @item sar
14817 The input sample aspect ratio.
14818
14819 @item dar
14820 The input display aspect ratio. It is the same as
14821 (@var{w} / @var{h}) * @var{sar}.
14822
14823 @item hsub, vsub
14824 Horizontal and vertical chroma subsample values. For example, for the
14825 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
14826 @end table
14827
14828 @subsection Examples
14829
14830 @itemize
14831
14832 @item
14833 To change the display aspect ratio to 16:9, specify one of the following:
14834 @example
14835 setdar=dar=1.77777
14836 setdar=dar=16/9
14837 @end example
14838
14839 @item
14840 To change the sample aspect ratio to 10:11, specify:
14841 @example
14842 setsar=sar=10/11
14843 @end example
14844
14845 @item
14846 To set a display aspect ratio of 16:9, and specify a maximum integer value of
14847 1000 in the aspect ratio reduction, use the command:
14848 @example
14849 setdar=ratio=16/9:max=1000
14850 @end example
14851
14852 @end itemize
14853
14854 @anchor{setfield}
14855 @section setfield
14856
14857 Force field for the output video frame.
14858
14859 The @code{setfield} filter marks the interlace type field for the
14860 output frames. It does not change the input frame, but only sets the
14861 corresponding property, which affects how the frame is treated by
14862 following filters (e.g. @code{fieldorder} or @code{yadif}).
14863
14864 The filter accepts the following options:
14865
14866 @table @option
14867
14868 @item mode
14869 Available values are:
14870
14871 @table @samp
14872 @item auto
14873 Keep the same field property.
14874
14875 @item bff
14876 Mark the frame as bottom-field-first.
14877
14878 @item tff
14879 Mark the frame as top-field-first.
14880
14881 @item prog
14882 Mark the frame as progressive.
14883 @end table
14884 @end table
14885
14886 @section showinfo
14887
14888 Show a line containing various information for each input video frame.
14889 The input video is not modified.
14890
14891 The shown line contains a sequence of key/value pairs of the form
14892 @var{key}:@var{value}.
14893
14894 The following values are shown in the output:
14895
14896 @table @option
14897 @item n
14898 The (sequential) number of the input frame, starting from 0.
14899
14900 @item pts
14901 The Presentation TimeStamp of the input frame, expressed as a number of
14902 time base units. The time base unit depends on the filter input pad.
14903
14904 @item pts_time
14905 The Presentation TimeStamp of the input frame, expressed as a number of
14906 seconds.
14907
14908 @item pos
14909 The position of the frame in the input stream, or -1 if this information is
14910 unavailable and/or meaningless (for example in case of synthetic video).
14911
14912 @item fmt
14913 The pixel format name.
14914
14915 @item sar
14916 The sample aspect ratio of the input frame, expressed in the form
14917 @var{num}/@var{den}.
14918
14919 @item s
14920 The size of the input frame. For the syntax of this option, check the
14921 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
14922
14923 @item i
14924 The type of interlaced mode ("P" for "progressive", "T" for top field first, "B"
14925 for bottom field first).
14926
14927 @item iskey
14928 This is 1 if the frame is a key frame, 0 otherwise.
14929
14930 @item type
14931 The picture type of the input frame ("I" for an I-frame, "P" for a
14932 P-frame, "B" for a B-frame, or "?" for an unknown type).
14933 Also refer to the documentation of the @code{AVPictureType} enum and of
14934 the @code{av_get_picture_type_char} function defined in
14935 @file{libavutil/avutil.h}.
14936
14937 @item checksum
14938 The Adler-32 checksum (printed in hexadecimal) of all the planes of the input frame.
14939
14940 @item plane_checksum
14941 The Adler-32 checksum (printed in hexadecimal) of each plane of the input frame,
14942 expressed in the form "[@var{c0} @var{c1} @var{c2} @var{c3}]".
14943 @end table
14944
14945 @section showpalette
14946
14947 Displays the 256 colors palette of each frame. This filter is only relevant for
14948 @var{pal8} pixel format frames.
14949
14950 It accepts the following option:
14951
14952 @table @option
14953 @item s
14954 Set the size of the box used to represent one palette color entry. Default is
14955 @code{30} (for a @code{30x30} pixel box).
14956 @end table
14957
14958 @section shuffleframes
14959
14960 Reorder and/or duplicate and/or drop video frames.
14961
14962 It accepts the following parameters:
14963
14964 @table @option
14965 @item mapping
14966 Set the destination indexes of input frames.
14967 This is space or '|' separated list of indexes that maps input frames to output
14968 frames. Number of indexes also sets maximal value that each index may have.
14969 '-1' index have special meaning and that is to drop frame.
14970 @end table
14971
14972 The first frame has the index 0. The default is to keep the input unchanged.
14973
14974 @subsection Examples
14975
14976 @itemize
14977 @item
14978 Swap second and third frame of every three frames of the input:
14979 @example
14980 ffmpeg -i INPUT -vf "shuffleframes=0 2 1" OUTPUT
14981 @end example
14982
14983 @item
14984 Swap 10th and 1st frame of every ten frames of the input:
14985 @example
14986 ffmpeg -i INPUT -vf "shuffleframes=9 1 2 3 4 5 6 7 8 0" OUTPUT
14987 @end example
14988 @end itemize
14989
14990 @section shuffleplanes
14991
14992 Reorder and/or duplicate video planes.
14993
14994 It accepts the following parameters:
14995
14996 @table @option
14997
14998 @item map0
14999 The index of the input plane to be used as the first output plane.
15000
15001 @item map1
15002 The index of the input plane to be used as the second output plane.
15003
15004 @item map2
15005 The index of the input plane to be used as the third output plane.
15006
15007 @item map3
15008 The index of the input plane to be used as the fourth output plane.
15009
15010 @end table
15011
15012 The first plane has the index 0. The default is to keep the input unchanged.
15013
15014 @subsection Examples
15015
15016 @itemize
15017 @item
15018 Swap the second and third planes of the input:
15019 @example
15020 ffmpeg -i INPUT -vf shuffleplanes=0:2:1:3 OUTPUT
15021 @end example
15022 @end itemize
15023
15024 @anchor{signalstats}
15025 @section signalstats
15026 Evaluate various visual metrics that assist in determining issues associated
15027 with the digitization of analog video media.
15028
15029 By default the filter will log these metadata values:
15030
15031 @table @option
15032 @item YMIN
15033 Display the minimal Y value contained within the input frame. Expressed in
15034 range of [0-255].
15035
15036 @item YLOW
15037 Display the Y value at the 10% percentile within the input frame. Expressed in
15038 range of [0-255].
15039
15040 @item YAVG
15041 Display the average Y value within the input frame. Expressed in range of
15042 [0-255].
15043
15044 @item YHIGH
15045 Display the Y value at the 90% percentile within the input frame. Expressed in
15046 range of [0-255].
15047
15048 @item YMAX
15049 Display the maximum Y value contained within the input frame. Expressed in
15050 range of [0-255].
15051
15052 @item UMIN
15053 Display the minimal U value contained within the input frame. Expressed in
15054 range of [0-255].
15055
15056 @item ULOW
15057 Display the U value at the 10% percentile within the input frame. Expressed in
15058 range of [0-255].
15059
15060 @item UAVG
15061 Display the average U value within the input frame. Expressed in range of
15062 [0-255].
15063
15064 @item UHIGH
15065 Display the U value at the 90% percentile within the input frame. Expressed in
15066 range of [0-255].
15067
15068 @item UMAX
15069 Display the maximum U value contained within the input frame. Expressed in
15070 range of [0-255].
15071
15072 @item VMIN
15073 Display the minimal V value contained within the input frame. Expressed in
15074 range of [0-255].
15075
15076 @item VLOW
15077 Display the V value at the 10% percentile within the input frame. Expressed in
15078 range of [0-255].
15079
15080 @item VAVG
15081 Display the average V value within the input frame. Expressed in range of
15082 [0-255].
15083
15084 @item VHIGH
15085 Display the V value at the 90% percentile within the input frame. Expressed in
15086 range of [0-255].
15087
15088 @item VMAX
15089 Display the maximum V value contained within the input frame. Expressed in
15090 range of [0-255].
15091
15092 @item SATMIN
15093 Display the minimal saturation value contained within the input frame.
15094 Expressed in range of [0-~181.02].
15095
15096 @item SATLOW
15097 Display the saturation value at the 10% percentile within the input frame.
15098 Expressed in range of [0-~181.02].
15099
15100 @item SATAVG
15101 Display the average saturation value within the input frame. Expressed in range
15102 of [0-~181.02].
15103
15104 @item SATHIGH
15105 Display the saturation value at the 90% percentile within the input frame.
15106 Expressed in range of [0-~181.02].
15107
15108 @item SATMAX
15109 Display the maximum saturation value contained within the input frame.
15110 Expressed in range of [0-~181.02].
15111
15112 @item HUEMED
15113 Display the median value for hue within the input frame. Expressed in range of
15114 [0-360].
15115
15116 @item HUEAVG
15117 Display the average value for hue within the input frame. Expressed in range of
15118 [0-360].
15119
15120 @item YDIF
15121 Display the average of sample value difference between all values of the Y
15122 plane in the current frame and corresponding values of the previous input frame.
15123 Expressed in range of [0-255].
15124
15125 @item UDIF
15126 Display the average of sample value difference between all values of the U
15127 plane in the current frame and corresponding values of the previous input frame.
15128 Expressed in range of [0-255].
15129
15130 @item VDIF
15131 Display the average of sample value difference between all values of the V
15132 plane in the current frame and corresponding values of the previous input frame.
15133 Expressed in range of [0-255].
15134
15135 @item YBITDEPTH
15136 Display bit depth of Y plane in current frame.
15137 Expressed in range of [0-16].
15138
15139 @item UBITDEPTH
15140 Display bit depth of U plane in current frame.
15141 Expressed in range of [0-16].
15142
15143 @item VBITDEPTH
15144 Display bit depth of V plane in current frame.
15145 Expressed in range of [0-16].
15146 @end table
15147
15148 The filter accepts the following options:
15149
15150 @table @option
15151 @item stat
15152 @item out
15153
15154 @option{stat} specify an additional form of image analysis.
15155 @option{out} output video with the specified type of pixel highlighted.
15156
15157 Both options accept the following values:
15158
15159 @table @samp
15160 @item tout
15161 Identify @var{temporal outliers} pixels. A @var{temporal outlier} is a pixel
15162 unlike the neighboring pixels of the same field. Examples of temporal outliers
15163 include the results of video dropouts, head clogs, or tape tracking issues.
15164
15165 @item vrep
15166 Identify @var{vertical line repetition}. Vertical line repetition includes
15167 similar rows of pixels within a frame. In born-digital video vertical line
15168 repetition is common, but this pattern is uncommon in video digitized from an
15169 analog source. When it occurs in video that results from the digitization of an
15170 analog source it can indicate concealment from a dropout compensator.
15171
15172 @item brng
15173 Identify pixels that fall outside of legal broadcast range.
15174 @end table
15175
15176 @item color, c
15177 Set the highlight color for the @option{out} option. The default color is
15178 yellow.
15179 @end table
15180
15181 @subsection Examples
15182
15183 @itemize
15184 @item
15185 Output data of various video metrics:
15186 @example
15187 ffprobe -f lavfi movie=example.mov,signalstats="stat=tout+vrep+brng" -show_frames
15188 @end example
15189
15190 @item
15191 Output specific data about the minimum and maximum values of the Y plane per frame:
15192 @example
15193 ffprobe -f lavfi movie=example.mov,signalstats -show_entries frame_tags=lavfi.signalstats.YMAX,lavfi.signalstats.YMIN
15194 @end example
15195
15196 @item
15197 Playback video while highlighting pixels that are outside of broadcast range in red.
15198 @example
15199 ffplay example.mov -vf signalstats="out=brng:color=red"
15200 @end example
15201
15202 @item
15203 Playback video with signalstats metadata drawn over the frame.
15204 @example
15205 ffplay example.mov -vf signalstats=stat=brng+vrep+tout,drawtext=fontfile=FreeSerif.ttf:textfile=signalstat_drawtext.txt
15206 @end example
15207
15208 The contents of signalstat_drawtext.txt used in the command are:
15209 @example
15210 time %@{pts:hms@}
15211 Y (%@{metadata:lavfi.signalstats.YMIN@}-%@{metadata:lavfi.signalstats.YMAX@})
15212 U (%@{metadata:lavfi.signalstats.UMIN@}-%@{metadata:lavfi.signalstats.UMAX@})
15213 V (%@{metadata:lavfi.signalstats.VMIN@}-%@{metadata:lavfi.signalstats.VMAX@})
15214 saturation maximum: %@{metadata:lavfi.signalstats.SATMAX@}
15215
15216 @end example
15217 @end itemize
15218
15219 @anchor{signature}
15220 @section signature
15221
15222 Calculates the MPEG-7 Video Signature. The filter can handle more than one
15223 input. In this case the matching between the inputs can be calculated additionally.
15224 The filter always passes through the first input. The signature of each stream can
15225 be written into a file.
15226
15227 It accepts the following options:
15228
15229 @table @option
15230 @item detectmode
15231 Enable or disable the matching process.
15232
15233 Available values are:
15234
15235 @table @samp
15236 @item off
15237 Disable the calculation of a matching (default).
15238 @item full
15239 Calculate the matching for the whole video and output whether the whole video
15240 matches or only parts.
15241 @item fast
15242 Calculate only until a matching is found or the video ends. Should be faster in
15243 some cases.
15244 @end table
15245
15246 @item nb_inputs
15247 Set the number of inputs. The option value must be a non negative integer.
15248 Default value is 1.
15249
15250 @item filename
15251 Set the path to which the output is written. If there is more than one input,
15252 the path must be a prototype, i.e. must contain %d or %0nd (where n is a positive
15253 integer), that will be replaced with the input number. If no filename is
15254 specified, no output will be written. This is the default.
15255
15256 @item format
15257 Choose the output format.
15258
15259 Available values are:
15260
15261 @table @samp
15262 @item binary
15263 Use the specified binary representation (default).
15264 @item xml
15265 Use the specified xml representation.
15266 @end table
15267
15268 @item th_d
15269 Set threshold to detect one word as similar. The option value must be an integer
15270 greater than zero. The default value is 9000.
15271
15272 @item th_dc
15273 Set threshold to detect all words as similar. The option value must be an integer
15274 greater than zero. The default value is 60000.
15275
15276 @item th_xh
15277 Set threshold to detect frames as similar. The option value must be an integer
15278 greater than zero. The default value is 116.
15279
15280 @item th_di
15281 Set the minimum length of a sequence in frames to recognize it as matching
15282 sequence. The option value must be a non negative integer value.
15283 The default value is 0.
15284
15285 @item th_it
15286 Set the minimum relation, that matching frames to all frames must have.
15287 The option value must be a double value between 0 and 1. The default value is 0.5.
15288 @end table
15289
15290 @subsection Examples
15291
15292 @itemize
15293 @item
15294 To calculate the signature of an input video and store it in signature.bin:
15295 @example
15296 ffmpeg -i input.mkv -vf signature=filename=signature.bin -map 0:v -f null -
15297 @end example
15298
15299 @item
15300 To detect whether two videos match and store the signatures in XML format in
15301 signature0.xml and signature1.xml:
15302 @example
15303 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 -
15304 @end example
15305
15306 @end itemize
15307
15308 @anchor{smartblur}
15309 @section smartblur
15310
15311 Blur the input video without impacting the outlines.
15312
15313 It accepts the following options:
15314
15315 @table @option
15316 @item luma_radius, lr
15317 Set the luma radius. The option value must be a float number in
15318 the range [0.1,5.0] that specifies the variance of the gaussian filter
15319 used to blur the image (slower if larger). Default value is 1.0.
15320
15321 @item luma_strength, ls
15322 Set the luma strength. The option value must be a float number
15323 in the range [-1.0,1.0] that configures the blurring. A value included
15324 in [0.0,1.0] will blur the image whereas a value included in
15325 [-1.0,0.0] will sharpen the image. Default value is 1.0.
15326
15327 @item luma_threshold, lt
15328 Set the luma threshold used as a coefficient to determine
15329 whether a pixel should be blurred or not. The option value must be an
15330 integer in the range [-30,30]. A value of 0 will filter all the image,
15331 a value included in [0,30] will filter flat areas and a value included
15332 in [-30,0] will filter edges. Default value is 0.
15333
15334 @item chroma_radius, cr
15335 Set the chroma radius. The option value must be a float number in
15336 the range [0.1,5.0] that specifies the variance of the gaussian filter
15337 used to blur the image (slower if larger). Default value is @option{luma_radius}.
15338
15339 @item chroma_strength, cs
15340 Set the chroma strength. The option value must be a float number
15341 in the range [-1.0,1.0] that configures the blurring. A value included
15342 in [0.0,1.0] will blur the image whereas a value included in
15343 [-1.0,0.0] will sharpen the image. Default value is @option{luma_strength}.
15344
15345 @item chroma_threshold, ct
15346 Set the chroma threshold used as a coefficient to determine
15347 whether a pixel should be blurred or not. The option value must be an
15348 integer in the range [-30,30]. A value of 0 will filter all the image,
15349 a value included in [0,30] will filter flat areas and a value included
15350 in [-30,0] will filter edges. Default value is @option{luma_threshold}.
15351 @end table
15352
15353 If a chroma option is not explicitly set, the corresponding luma value
15354 is set.
15355
15356 @section ssim
15357
15358 Obtain the SSIM (Structural SImilarity Metric) between two input videos.
15359
15360 This filter takes in input two input videos, the first input is
15361 considered the "main" source and is passed unchanged to the
15362 output. The second input is used as a "reference" video for computing
15363 the SSIM.
15364
15365 Both video inputs must have the same resolution and pixel format for
15366 this filter to work correctly. Also it assumes that both inputs
15367 have the same number of frames, which are compared one by one.
15368
15369 The filter stores the calculated SSIM of each frame.
15370
15371 The description of the accepted parameters follows.
15372
15373 @table @option
15374 @item stats_file, f
15375 If specified the filter will use the named file to save the SSIM of
15376 each individual frame. When filename equals "-" the data is sent to
15377 standard output.
15378 @end table
15379
15380 The file printed if @var{stats_file} is selected, contains a sequence of
15381 key/value pairs of the form @var{key}:@var{value} for each compared
15382 couple of frames.
15383
15384 A description of each shown parameter follows:
15385
15386 @table @option
15387 @item n
15388 sequential number of the input frame, starting from 1
15389
15390 @item Y, U, V, R, G, B
15391 SSIM of the compared frames for the component specified by the suffix.
15392
15393 @item All
15394 SSIM of the compared frames for the whole frame.
15395
15396 @item dB
15397 Same as above but in dB representation.
15398 @end table
15399
15400 This filter also supports the @ref{framesync} options.
15401
15402 For example:
15403 @example
15404 movie=ref_movie.mpg, setpts=PTS-STARTPTS [main];
15405 [main][ref] ssim="stats_file=stats.log" [out]
15406 @end example
15407
15408 On this example the input file being processed is compared with the
15409 reference file @file{ref_movie.mpg}. The SSIM of each individual frame
15410 is stored in @file{stats.log}.
15411
15412 Another example with both psnr and ssim at same time:
15413 @example
15414 ffmpeg -i main.mpg -i ref.mpg -lavfi  "ssim;[0:v][1:v]psnr" -f null -
15415 @end example
15416
15417 @section stereo3d
15418
15419 Convert between different stereoscopic image formats.
15420
15421 The filters accept the following options:
15422
15423 @table @option
15424 @item in
15425 Set stereoscopic image format of input.
15426
15427 Available values for input image formats are:
15428 @table @samp
15429 @item sbsl
15430 side by side parallel (left eye left, right eye right)
15431
15432 @item sbsr
15433 side by side crosseye (right eye left, left eye right)
15434
15435 @item sbs2l
15436 side by side parallel with half width resolution
15437 (left eye left, right eye right)
15438
15439 @item sbs2r
15440 side by side crosseye with half width resolution
15441 (right eye left, left eye right)
15442
15443 @item abl
15444 above-below (left eye above, right eye below)
15445
15446 @item abr
15447 above-below (right eye above, left eye below)
15448
15449 @item ab2l
15450 above-below with half height resolution
15451 (left eye above, right eye below)
15452
15453 @item ab2r
15454 above-below with half height resolution
15455 (right eye above, left eye below)
15456
15457 @item al
15458 alternating frames (left eye first, right eye second)
15459
15460 @item ar
15461 alternating frames (right eye first, left eye second)
15462
15463 @item irl
15464 interleaved rows (left eye has top row, right eye starts on next row)
15465
15466 @item irr
15467 interleaved rows (right eye has top row, left eye starts on next row)
15468
15469 @item icl
15470 interleaved columns, left eye first
15471
15472 @item icr
15473 interleaved columns, right eye first
15474
15475 Default value is @samp{sbsl}.
15476 @end table
15477
15478 @item out
15479 Set stereoscopic image format of output.
15480
15481 @table @samp
15482 @item sbsl
15483 side by side parallel (left eye left, right eye right)
15484
15485 @item sbsr
15486 side by side crosseye (right eye left, left eye right)
15487
15488 @item sbs2l
15489 side by side parallel with half width resolution
15490 (left eye left, right eye right)
15491
15492 @item sbs2r
15493 side by side crosseye with half width resolution
15494 (right eye left, left eye right)
15495
15496 @item abl
15497 above-below (left eye above, right eye below)
15498
15499 @item abr
15500 above-below (right eye above, left eye below)
15501
15502 @item ab2l
15503 above-below with half height resolution
15504 (left eye above, right eye below)
15505
15506 @item ab2r
15507 above-below with half height resolution
15508 (right eye above, left eye below)
15509
15510 @item al
15511 alternating frames (left eye first, right eye second)
15512
15513 @item ar
15514 alternating frames (right eye first, left eye second)
15515
15516 @item irl
15517 interleaved rows (left eye has top row, right eye starts on next row)
15518
15519 @item irr
15520 interleaved rows (right eye has top row, left eye starts on next row)
15521
15522 @item arbg
15523 anaglyph red/blue gray
15524 (red filter on left eye, blue filter on right eye)
15525
15526 @item argg
15527 anaglyph red/green gray
15528 (red filter on left eye, green filter on right eye)
15529
15530 @item arcg
15531 anaglyph red/cyan gray
15532 (red filter on left eye, cyan filter on right eye)
15533
15534 @item arch
15535 anaglyph red/cyan half colored
15536 (red filter on left eye, cyan filter on right eye)
15537
15538 @item arcc
15539 anaglyph red/cyan color
15540 (red filter on left eye, cyan filter on right eye)
15541
15542 @item arcd
15543 anaglyph red/cyan color optimized with the least squares projection of dubois
15544 (red filter on left eye, cyan filter on right eye)
15545
15546 @item agmg
15547 anaglyph green/magenta gray
15548 (green filter on left eye, magenta filter on right eye)
15549
15550 @item agmh
15551 anaglyph green/magenta half colored
15552 (green filter on left eye, magenta filter on right eye)
15553
15554 @item agmc
15555 anaglyph green/magenta colored
15556 (green filter on left eye, magenta filter on right eye)
15557
15558 @item agmd
15559 anaglyph green/magenta color optimized with the least squares projection of dubois
15560 (green filter on left eye, magenta filter on right eye)
15561
15562 @item aybg
15563 anaglyph yellow/blue gray
15564 (yellow filter on left eye, blue filter on right eye)
15565
15566 @item aybh
15567 anaglyph yellow/blue half colored
15568 (yellow filter on left eye, blue filter on right eye)
15569
15570 @item aybc
15571 anaglyph yellow/blue colored
15572 (yellow filter on left eye, blue filter on right eye)
15573
15574 @item aybd
15575 anaglyph yellow/blue color optimized with the least squares projection of dubois
15576 (yellow filter on left eye, blue filter on right eye)
15577
15578 @item ml
15579 mono output (left eye only)
15580
15581 @item mr
15582 mono output (right eye only)
15583
15584 @item chl
15585 checkerboard, left eye first
15586
15587 @item chr
15588 checkerboard, right eye first
15589
15590 @item icl
15591 interleaved columns, left eye first
15592
15593 @item icr
15594 interleaved columns, right eye first
15595
15596 @item hdmi
15597 HDMI frame pack
15598 @end table
15599
15600 Default value is @samp{arcd}.
15601 @end table
15602
15603 @subsection Examples
15604
15605 @itemize
15606 @item
15607 Convert input video from side by side parallel to anaglyph yellow/blue dubois:
15608 @example
15609 stereo3d=sbsl:aybd
15610 @end example
15611
15612 @item
15613 Convert input video from above below (left eye above, right eye below) to side by side crosseye.
15614 @example
15615 stereo3d=abl:sbsr
15616 @end example
15617 @end itemize
15618
15619 @section streamselect, astreamselect
15620 Select video or audio streams.
15621
15622 The filter accepts the following options:
15623
15624 @table @option
15625 @item inputs
15626 Set number of inputs. Default is 2.
15627
15628 @item map
15629 Set input indexes to remap to outputs.
15630 @end table
15631
15632 @subsection Commands
15633
15634 The @code{streamselect} and @code{astreamselect} filter supports the following
15635 commands:
15636
15637 @table @option
15638 @item map
15639 Set input indexes to remap to outputs.
15640 @end table
15641
15642 @subsection Examples
15643
15644 @itemize
15645 @item
15646 Select first 5 seconds 1st stream and rest of time 2nd stream:
15647 @example
15648 sendcmd='5.0 streamselect map 1',streamselect=inputs=2:map=0
15649 @end example
15650
15651 @item
15652 Same as above, but for audio:
15653 @example
15654 asendcmd='5.0 astreamselect map 1',astreamselect=inputs=2:map=0
15655 @end example
15656 @end itemize
15657
15658 @section sobel
15659 Apply sobel operator to input video stream.
15660
15661 The filter accepts the following option:
15662
15663 @table @option
15664 @item planes
15665 Set which planes will be processed, unprocessed planes will be copied.
15666 By default value 0xf, all planes will be processed.
15667
15668 @item scale
15669 Set value which will be multiplied with filtered result.
15670
15671 @item delta
15672 Set value which will be added to filtered result.
15673 @end table
15674
15675 @anchor{spp}
15676 @section spp
15677
15678 Apply a simple postprocessing filter that compresses and decompresses the image
15679 at several (or - in the case of @option{quality} level @code{6} - all) shifts
15680 and average the results.
15681
15682 The filter accepts the following options:
15683
15684 @table @option
15685 @item quality
15686 Set quality. This option defines the number of levels for averaging. It accepts
15687 an integer in the range 0-6. If set to @code{0}, the filter will have no
15688 effect. A value of @code{6} means the higher quality. For each increment of
15689 that value the speed drops by a factor of approximately 2.  Default value is
15690 @code{3}.
15691
15692 @item qp
15693 Force a constant quantization parameter. If not set, the filter will use the QP
15694 from the video stream (if available).
15695
15696 @item mode
15697 Set thresholding mode. Available modes are:
15698
15699 @table @samp
15700 @item hard
15701 Set hard thresholding (default).
15702 @item soft
15703 Set soft thresholding (better de-ringing effect, but likely blurrier).
15704 @end table
15705
15706 @item use_bframe_qp
15707 Enable the use of the QP from the B-Frames if set to @code{1}. Using this
15708 option may cause flicker since the B-Frames have often larger QP. Default is
15709 @code{0} (not enabled).
15710 @end table
15711
15712 @section sr
15713
15714 Scale the input by applying one of the super-resolution methods based on
15715 convolutional neural networks. Supported models:
15716
15717 @itemize
15718 @item
15719 Super-Resolution Convolutional Neural Network model (SRCNN).
15720 See @url{https://arxiv.org/abs/1501.00092}.
15721
15722 @item
15723 Efficient Sub-Pixel Convolutional Neural Network model (ESPCN).
15724 See @url{https://arxiv.org/abs/1609.05158}.
15725 @end itemize
15726
15727 Training scripts as well as scripts for model generation are provided in
15728 the repository at @url{https://github.com/HighVoltageRocknRoll/sr.git}.
15729
15730 The filter accepts the following options:
15731
15732 @table @option
15733 @item dnn_backend
15734 Specify which DNN backend to use for model loading and execution. This option accepts
15735 the following values:
15736
15737 @table @samp
15738 @item native
15739 Native implementation of DNN loading and execution.
15740
15741 @item tensorflow
15742 TensorFlow backend. To enable this backend you
15743 need to install the TensorFlow for C library (see
15744 @url{https://www.tensorflow.org/install/install_c}) and configure FFmpeg with
15745 @code{--enable-libtensorflow}
15746 @end table
15747
15748 Default value is @samp{native}.
15749
15750 @item model
15751 Set path to model file specifying network architecture and its parameters.
15752 Note that different backends use different file formats. TensorFlow backend
15753 can load files for both formats, while native backend can load files for only
15754 its format.
15755
15756 @item scale_factor
15757 Set scale factor for SRCNN model. Allowed values are @code{2}, @code{3} and @code{4}.
15758 Default value is @code{2}. Scale factor is necessary for SRCNN model, because it accepts
15759 input upscaled using bicubic upscaling with proper scale factor.
15760 @end table
15761
15762 @anchor{subtitles}
15763 @section subtitles
15764
15765 Draw subtitles on top of input video using the libass library.
15766
15767 To enable compilation of this filter you need to configure FFmpeg with
15768 @code{--enable-libass}. This filter also requires a build with libavcodec and
15769 libavformat to convert the passed subtitles file to ASS (Advanced Substation
15770 Alpha) subtitles format.
15771
15772 The filter accepts the following options:
15773
15774 @table @option
15775 @item filename, f
15776 Set the filename of the subtitle file to read. It must be specified.
15777
15778 @item original_size
15779 Specify the size of the original video, the video for which the ASS file
15780 was composed. For the syntax of this option, check the
15781 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
15782 Due to a misdesign in ASS aspect ratio arithmetic, this is necessary to
15783 correctly scale the fonts if the aspect ratio has been changed.
15784
15785 @item fontsdir
15786 Set a directory path containing fonts that can be used by the filter.
15787 These fonts will be used in addition to whatever the font provider uses.
15788
15789 @item alpha
15790 Process alpha channel, by default alpha channel is untouched.
15791
15792 @item charenc
15793 Set subtitles input character encoding. @code{subtitles} filter only. Only
15794 useful if not UTF-8.
15795
15796 @item stream_index, si
15797 Set subtitles stream index. @code{subtitles} filter only.
15798
15799 @item force_style
15800 Override default style or script info parameters of the subtitles. It accepts a
15801 string containing ASS style format @code{KEY=VALUE} couples separated by ",".
15802 @end table
15803
15804 If the first key is not specified, it is assumed that the first value
15805 specifies the @option{filename}.
15806
15807 For example, to render the file @file{sub.srt} on top of the input
15808 video, use the command:
15809 @example
15810 subtitles=sub.srt
15811 @end example
15812
15813 which is equivalent to:
15814 @example
15815 subtitles=filename=sub.srt
15816 @end example
15817
15818 To render the default subtitles stream from file @file{video.mkv}, use:
15819 @example
15820 subtitles=video.mkv
15821 @end example
15822
15823 To render the second subtitles stream from that file, use:
15824 @example
15825 subtitles=video.mkv:si=1
15826 @end example
15827
15828 To make the subtitles stream from @file{sub.srt} appear in 80% transparent blue
15829 @code{DejaVu Serif}, use:
15830 @example
15831 subtitles=sub.srt:force_style='FontName=DejaVu Serif,PrimaryColour=&HCCFF0000'
15832 @end example
15833
15834 @section super2xsai
15835
15836 Scale the input by 2x and smooth using the Super2xSaI (Scale and
15837 Interpolate) pixel art scaling algorithm.
15838
15839 Useful for enlarging pixel art images without reducing sharpness.
15840
15841 @section swaprect
15842
15843 Swap two rectangular objects in video.
15844
15845 This filter accepts the following options:
15846
15847 @table @option
15848 @item w
15849 Set object width.
15850
15851 @item h
15852 Set object height.
15853
15854 @item x1
15855 Set 1st rect x coordinate.
15856
15857 @item y1
15858 Set 1st rect y coordinate.
15859
15860 @item x2
15861 Set 2nd rect x coordinate.
15862
15863 @item y2
15864 Set 2nd rect y coordinate.
15865
15866 All expressions are evaluated once for each frame.
15867 @end table
15868
15869 The all options are expressions containing the following constants:
15870
15871 @table @option
15872 @item w
15873 @item h
15874 The input width and height.
15875
15876 @item a
15877 same as @var{w} / @var{h}
15878
15879 @item sar
15880 input sample aspect ratio
15881
15882 @item dar
15883 input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}
15884
15885 @item n
15886 The number of the input frame, starting from 0.
15887
15888 @item t
15889 The timestamp expressed in seconds. It's NAN if the input timestamp is unknown.
15890
15891 @item pos
15892 the position in the file of the input frame, NAN if unknown
15893 @end table
15894
15895 @section swapuv
15896 Swap U & V plane.
15897
15898 @section telecine
15899
15900 Apply telecine process to the video.
15901
15902 This filter accepts the following options:
15903
15904 @table @option
15905 @item first_field
15906 @table @samp
15907 @item top, t
15908 top field first
15909 @item bottom, b
15910 bottom field first
15911 The default value is @code{top}.
15912 @end table
15913
15914 @item pattern
15915 A string of numbers representing the pulldown pattern you wish to apply.
15916 The default value is @code{23}.
15917 @end table
15918
15919 @example
15920 Some typical patterns:
15921
15922 NTSC output (30i):
15923 27.5p: 32222
15924 24p: 23 (classic)
15925 24p: 2332 (preferred)
15926 20p: 33
15927 18p: 334
15928 16p: 3444
15929
15930 PAL output (25i):
15931 27.5p: 12222
15932 24p: 222222222223 ("Euro pulldown")
15933 16.67p: 33
15934 16p: 33333334
15935 @end example
15936
15937 @section threshold
15938
15939 Apply threshold effect to video stream.
15940
15941 This filter needs four video streams to perform thresholding.
15942 First stream is stream we are filtering.
15943 Second stream is holding threshold values, third stream is holding min values,
15944 and last, fourth stream is holding max values.
15945
15946 The filter accepts the following option:
15947
15948 @table @option
15949 @item planes
15950 Set which planes will be processed, unprocessed planes will be copied.
15951 By default value 0xf, all planes will be processed.
15952 @end table
15953
15954 For example if first stream pixel's component value is less then threshold value
15955 of pixel component from 2nd threshold stream, third stream value will picked,
15956 otherwise fourth stream pixel component value will be picked.
15957
15958 Using color source filter one can perform various types of thresholding:
15959
15960 @subsection Examples
15961
15962 @itemize
15963 @item
15964 Binary threshold, using gray color as threshold:
15965 @example
15966 ffmpeg -i 320x240.avi -f lavfi -i color=gray -f lavfi -i color=black -f lavfi -i color=white -lavfi threshold output.avi
15967 @end example
15968
15969 @item
15970 Inverted binary threshold, using gray color as threshold:
15971 @example
15972 ffmpeg -i 320x240.avi -f lavfi -i color=gray -f lavfi -i color=white -f lavfi -i color=black -lavfi threshold output.avi
15973 @end example
15974
15975 @item
15976 Truncate binary threshold, using gray color as threshold:
15977 @example
15978 ffmpeg -i 320x240.avi -f lavfi -i color=gray -i 320x240.avi -f lavfi -i color=gray -lavfi threshold output.avi
15979 @end example
15980
15981 @item
15982 Threshold to zero, using gray color as threshold:
15983 @example
15984 ffmpeg -i 320x240.avi -f lavfi -i color=gray -f lavfi -i color=white -i 320x240.avi -lavfi threshold output.avi
15985 @end example
15986
15987 @item
15988 Inverted threshold to zero, using gray color as threshold:
15989 @example
15990 ffmpeg -i 320x240.avi -f lavfi -i color=gray -i 320x240.avi -f lavfi -i color=white -lavfi threshold output.avi
15991 @end example
15992 @end itemize
15993
15994 @section thumbnail
15995 Select the most representative frame in a given sequence of consecutive frames.
15996
15997 The filter accepts the following options:
15998
15999 @table @option
16000 @item n
16001 Set the frames batch size to analyze; in a set of @var{n} frames, the filter
16002 will pick one of them, and then handle the next batch of @var{n} frames until
16003 the end. Default is @code{100}.
16004 @end table
16005
16006 Since the filter keeps track of the whole frames sequence, a bigger @var{n}
16007 value will result in a higher memory usage, so a high value is not recommended.
16008
16009 @subsection Examples
16010
16011 @itemize
16012 @item
16013 Extract one picture each 50 frames:
16014 @example
16015 thumbnail=50
16016 @end example
16017
16018 @item
16019 Complete example of a thumbnail creation with @command{ffmpeg}:
16020 @example
16021 ffmpeg -i in.avi -vf thumbnail,scale=300:200 -frames:v 1 out.png
16022 @end example
16023 @end itemize
16024
16025 @section tile
16026
16027 Tile several successive frames together.
16028
16029 The filter accepts the following options:
16030
16031 @table @option
16032
16033 @item layout
16034 Set the grid size (i.e. the number of lines and columns). For the syntax of
16035 this option, check the
16036 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
16037
16038 @item nb_frames
16039 Set the maximum number of frames to render in the given area. It must be less
16040 than or equal to @var{w}x@var{h}. The default value is @code{0}, meaning all
16041 the area will be used.
16042
16043 @item margin
16044 Set the outer border margin in pixels.
16045
16046 @item padding
16047 Set the inner border thickness (i.e. the number of pixels between frames). For
16048 more advanced padding options (such as having different values for the edges),
16049 refer to the pad video filter.
16050
16051 @item color
16052 Specify the color of the unused area. For the syntax of this option, check the
16053 @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
16054 The default value of @var{color} is "black".
16055
16056 @item overlap
16057 Set the number of frames to overlap when tiling several successive frames together.
16058 The value must be between @code{0} and @var{nb_frames - 1}.
16059
16060 @item init_padding
16061 Set the number of frames to initially be empty before displaying first output frame.
16062 This controls how soon will one get first output frame.
16063 The value must be between @code{0} and @var{nb_frames - 1}.
16064 @end table
16065
16066 @subsection Examples
16067
16068 @itemize
16069 @item
16070 Produce 8x8 PNG tiles of all keyframes (@option{-skip_frame nokey}) in a movie:
16071 @example
16072 ffmpeg -skip_frame nokey -i file.avi -vf 'scale=128:72,tile=8x8' -an -vsync 0 keyframes%03d.png
16073 @end example
16074 The @option{-vsync 0} is necessary to prevent @command{ffmpeg} from
16075 duplicating each output frame to accommodate the originally detected frame
16076 rate.
16077
16078 @item
16079 Display @code{5} pictures in an area of @code{3x2} frames,
16080 with @code{7} pixels between them, and @code{2} pixels of initial margin, using
16081 mixed flat and named options:
16082 @example
16083 tile=3x2:nb_frames=5:padding=7:margin=2
16084 @end example
16085 @end itemize
16086
16087 @section tinterlace
16088
16089 Perform various types of temporal field interlacing.
16090
16091 Frames are counted starting from 1, so the first input frame is
16092 considered odd.
16093
16094 The filter accepts the following options:
16095
16096 @table @option
16097
16098 @item mode
16099 Specify the mode of the interlacing. This option can also be specified
16100 as a value alone. See below for a list of values for this option.
16101
16102 Available values are:
16103
16104 @table @samp
16105 @item merge, 0
16106 Move odd frames into the upper field, even into the lower field,
16107 generating a double height frame at half frame rate.
16108 @example
16109  ------> time
16110 Input:
16111 Frame 1         Frame 2         Frame 3         Frame 4
16112
16113 11111           22222           33333           44444
16114 11111           22222           33333           44444
16115 11111           22222           33333           44444
16116 11111           22222           33333           44444
16117
16118 Output:
16119 11111                           33333
16120 22222                           44444
16121 11111                           33333
16122 22222                           44444
16123 11111                           33333
16124 22222                           44444
16125 11111                           33333
16126 22222                           44444
16127 @end example
16128
16129 @item drop_even, 1
16130 Only output odd frames, even frames are dropped, generating a frame with
16131 unchanged height at half frame rate.
16132
16133 @example
16134  ------> time
16135 Input:
16136 Frame 1         Frame 2         Frame 3         Frame 4
16137
16138 11111           22222           33333           44444
16139 11111           22222           33333           44444
16140 11111           22222           33333           44444
16141 11111           22222           33333           44444
16142
16143 Output:
16144 11111                           33333
16145 11111                           33333
16146 11111                           33333
16147 11111                           33333
16148 @end example
16149
16150 @item drop_odd, 2
16151 Only output even frames, odd frames are dropped, generating a frame with
16152 unchanged height at half frame rate.
16153
16154 @example
16155  ------> time
16156 Input:
16157 Frame 1         Frame 2         Frame 3         Frame 4
16158
16159 11111           22222           33333           44444
16160 11111           22222           33333           44444
16161 11111           22222           33333           44444
16162 11111           22222           33333           44444
16163
16164 Output:
16165                 22222                           44444
16166                 22222                           44444
16167                 22222                           44444
16168                 22222                           44444
16169 @end example
16170
16171 @item pad, 3
16172 Expand each frame to full height, but pad alternate lines with black,
16173 generating a frame with double height at the same input frame rate.
16174
16175 @example
16176  ------> time
16177 Input:
16178 Frame 1         Frame 2         Frame 3         Frame 4
16179
16180 11111           22222           33333           44444
16181 11111           22222           33333           44444
16182 11111           22222           33333           44444
16183 11111           22222           33333           44444
16184
16185 Output:
16186 11111           .....           33333           .....
16187 .....           22222           .....           44444
16188 11111           .....           33333           .....
16189 .....           22222           .....           44444
16190 11111           .....           33333           .....
16191 .....           22222           .....           44444
16192 11111           .....           33333           .....
16193 .....           22222           .....           44444
16194 @end example
16195
16196
16197 @item interleave_top, 4
16198 Interleave the upper field from odd frames with the lower field from
16199 even frames, generating a frame with unchanged height at half frame rate.
16200
16201 @example
16202  ------> time
16203 Input:
16204 Frame 1         Frame 2         Frame 3         Frame 4
16205
16206 11111<-         22222           33333<-         44444
16207 11111           22222<-         33333           44444<-
16208 11111<-         22222           33333<-         44444
16209 11111           22222<-         33333           44444<-
16210
16211 Output:
16212 11111                           33333
16213 22222                           44444
16214 11111                           33333
16215 22222                           44444
16216 @end example
16217
16218
16219 @item interleave_bottom, 5
16220 Interleave the lower field from odd frames with the upper field from
16221 even frames, generating a frame with unchanged height at half frame rate.
16222
16223 @example
16224  ------> time
16225 Input:
16226 Frame 1         Frame 2         Frame 3         Frame 4
16227
16228 11111           22222<-         33333           44444<-
16229 11111<-         22222           33333<-         44444
16230 11111           22222<-         33333           44444<-
16231 11111<-         22222           33333<-         44444
16232
16233 Output:
16234 22222                           44444
16235 11111                           33333
16236 22222                           44444
16237 11111                           33333
16238 @end example
16239
16240
16241 @item interlacex2, 6
16242 Double frame rate with unchanged height. Frames are inserted each
16243 containing the second temporal field from the previous input frame and
16244 the first temporal field from the next input frame. This mode relies on
16245 the top_field_first flag. Useful for interlaced video displays with no
16246 field synchronisation.
16247
16248 @example
16249  ------> time
16250 Input:
16251 Frame 1         Frame 2         Frame 3         Frame 4
16252
16253 11111           22222           33333           44444
16254  11111           22222           33333           44444
16255 11111           22222           33333           44444
16256  11111           22222           33333           44444
16257
16258 Output:
16259 11111   22222   22222   33333   33333   44444   44444
16260  11111   11111   22222   22222   33333   33333   44444
16261 11111   22222   22222   33333   33333   44444   44444
16262  11111   11111   22222   22222   33333   33333   44444
16263 @end example
16264
16265
16266 @item mergex2, 7
16267 Move odd frames into the upper field, even into the lower field,
16268 generating a double height frame at same frame rate.
16269
16270 @example
16271  ------> time
16272 Input:
16273 Frame 1         Frame 2         Frame 3         Frame 4
16274
16275 11111           22222           33333           44444
16276 11111           22222           33333           44444
16277 11111           22222           33333           44444
16278 11111           22222           33333           44444
16279
16280 Output:
16281 11111           33333           33333           55555
16282 22222           22222           44444           44444
16283 11111           33333           33333           55555
16284 22222           22222           44444           44444
16285 11111           33333           33333           55555
16286 22222           22222           44444           44444
16287 11111           33333           33333           55555
16288 22222           22222           44444           44444
16289 @end example
16290
16291 @end table
16292
16293 Numeric values are deprecated but are accepted for backward
16294 compatibility reasons.
16295
16296 Default mode is @code{merge}.
16297
16298 @item flags
16299 Specify flags influencing the filter process.
16300
16301 Available value for @var{flags} is:
16302
16303 @table @option
16304 @item low_pass_filter, vlfp
16305 Enable linear vertical low-pass filtering in the filter.
16306 Vertical low-pass filtering is required when creating an interlaced
16307 destination from a progressive source which contains high-frequency
16308 vertical detail. Filtering will reduce interlace 'twitter' and Moire
16309 patterning.
16310
16311 @item complex_filter, cvlfp
16312 Enable complex vertical low-pass filtering.
16313 This will slightly less reduce interlace 'twitter' and Moire
16314 patterning but better retain detail and subjective sharpness impression.
16315
16316 @end table
16317
16318 Vertical low-pass filtering can only be enabled for @option{mode}
16319 @var{interleave_top} and @var{interleave_bottom}.
16320
16321 @end table
16322
16323 @section tmix
16324
16325 Mix successive video frames.
16326
16327 A description of the accepted options follows.
16328
16329 @table @option
16330 @item frames
16331 The number of successive frames to mix. If unspecified, it defaults to 3.
16332
16333 @item weights
16334 Specify weight of each input video frame.
16335 Each weight is separated by space. If number of weights is smaller than
16336 number of @var{frames} last specified weight will be used for all remaining
16337 unset weights.
16338
16339 @item scale
16340 Specify scale, if it is set it will be multiplied with sum
16341 of each weight multiplied with pixel values to give final destination
16342 pixel value. By default @var{scale} is auto scaled to sum of weights.
16343 @end table
16344
16345 @subsection Examples
16346
16347 @itemize
16348 @item
16349 Average 7 successive frames:
16350 @example
16351 tmix=frames=7:weights="1 1 1 1 1 1 1"
16352 @end example
16353
16354 @item
16355 Apply simple temporal convolution:
16356 @example
16357 tmix=frames=3:weights="-1 3 -1"
16358 @end example
16359
16360 @item
16361 Similar as above but only showing temporal differences:
16362 @example
16363 tmix=frames=3:weights="-1 2 -1":scale=1
16364 @end example
16365 @end itemize
16366
16367 @section tonemap
16368 Tone map colors from different dynamic ranges.
16369
16370 This filter expects data in single precision floating point, as it needs to
16371 operate on (and can output) out-of-range values. Another filter, such as
16372 @ref{zscale}, is needed to convert the resulting frame to a usable format.
16373
16374 The tonemapping algorithms implemented only work on linear light, so input
16375 data should be linearized beforehand (and possibly correctly tagged).
16376
16377 @example
16378 ffmpeg -i INPUT -vf zscale=transfer=linear,tonemap=clip,zscale=transfer=bt709,format=yuv420p OUTPUT
16379 @end example
16380
16381 @subsection Options
16382 The filter accepts the following options.
16383
16384 @table @option
16385 @item tonemap
16386 Set the tone map algorithm to use.
16387
16388 Possible values are:
16389 @table @var
16390 @item none
16391 Do not apply any tone map, only desaturate overbright pixels.
16392
16393 @item clip
16394 Hard-clip any out-of-range values. Use it for perfect color accuracy for
16395 in-range values, while distorting out-of-range values.
16396
16397 @item linear
16398 Stretch the entire reference gamut to a linear multiple of the display.
16399
16400 @item gamma
16401 Fit a logarithmic transfer between the tone curves.
16402
16403 @item reinhard
16404 Preserve overall image brightness with a simple curve, using nonlinear
16405 contrast, which results in flattening details and degrading color accuracy.
16406
16407 @item hable
16408 Preserve both dark and bright details better than @var{reinhard}, at the cost
16409 of slightly darkening everything. Use it when detail preservation is more
16410 important than color and brightness accuracy.
16411
16412 @item mobius
16413 Smoothly map out-of-range values, while retaining contrast and colors for
16414 in-range material as much as possible. Use it when color accuracy is more
16415 important than detail preservation.
16416 @end table
16417
16418 Default is none.
16419
16420 @item param
16421 Tune the tone mapping algorithm.
16422
16423 This affects the following algorithms:
16424 @table @var
16425 @item none
16426 Ignored.
16427
16428 @item linear
16429 Specifies the scale factor to use while stretching.
16430 Default to 1.0.
16431
16432 @item gamma
16433 Specifies the exponent of the function.
16434 Default to 1.8.
16435
16436 @item clip
16437 Specify an extra linear coefficient to multiply into the signal before clipping.
16438 Default to 1.0.
16439
16440 @item reinhard
16441 Specify the local contrast coefficient at the display peak.
16442 Default to 0.5, which means that in-gamut values will be about half as bright
16443 as when clipping.
16444
16445 @item hable
16446 Ignored.
16447
16448 @item mobius
16449 Specify the transition point from linear to mobius transform. Every value
16450 below this point is guaranteed to be mapped 1:1. The higher the value, the
16451 more accurate the result will be, at the cost of losing bright details.
16452 Default to 0.3, which due to the steep initial slope still preserves in-range
16453 colors fairly accurately.
16454 @end table
16455
16456 @item desat
16457 Apply desaturation for highlights that exceed this level of brightness. The
16458 higher the parameter, the more color information will be preserved. This
16459 setting helps prevent unnaturally blown-out colors for super-highlights, by
16460 (smoothly) turning into white instead. This makes images feel more natural,
16461 at the cost of reducing information about out-of-range colors.
16462
16463 The default of 2.0 is somewhat conservative and will mostly just apply to
16464 skies or directly sunlit surfaces. A setting of 0.0 disables this option.
16465
16466 This option works only if the input frame has a supported color tag.
16467
16468 @item peak
16469 Override signal/nominal/reference peak with this value. Useful when the
16470 embedded peak information in display metadata is not reliable or when tone
16471 mapping from a lower range to a higher range.
16472 @end table
16473
16474 @anchor{transpose}
16475 @section transpose
16476
16477 Transpose rows with columns in the input video and optionally flip it.
16478
16479 It accepts the following parameters:
16480
16481 @table @option
16482
16483 @item dir
16484 Specify the transposition direction.
16485
16486 Can assume the following values:
16487 @table @samp
16488 @item 0, 4, cclock_flip
16489 Rotate by 90 degrees counterclockwise and vertically flip (default), that is:
16490 @example
16491 L.R     L.l
16492 . . ->  . .
16493 l.r     R.r
16494 @end example
16495
16496 @item 1, 5, clock
16497 Rotate by 90 degrees clockwise, that is:
16498 @example
16499 L.R     l.L
16500 . . ->  . .
16501 l.r     r.R
16502 @end example
16503
16504 @item 2, 6, cclock
16505 Rotate by 90 degrees counterclockwise, that is:
16506 @example
16507 L.R     R.r
16508 . . ->  . .
16509 l.r     L.l
16510 @end example
16511
16512 @item 3, 7, clock_flip
16513 Rotate by 90 degrees clockwise and vertically flip, that is:
16514 @example
16515 L.R     r.R
16516 . . ->  . .
16517 l.r     l.L
16518 @end example
16519 @end table
16520
16521 For values between 4-7, the transposition is only done if the input
16522 video geometry is portrait and not landscape. These values are
16523 deprecated, the @code{passthrough} option should be used instead.
16524
16525 Numerical values are deprecated, and should be dropped in favor of
16526 symbolic constants.
16527
16528 @item passthrough
16529 Do not apply the transposition if the input geometry matches the one
16530 specified by the specified value. It accepts the following values:
16531 @table @samp
16532 @item none
16533 Always apply transposition.
16534 @item portrait
16535 Preserve portrait geometry (when @var{height} >= @var{width}).
16536 @item landscape
16537 Preserve landscape geometry (when @var{width} >= @var{height}).
16538 @end table
16539
16540 Default value is @code{none}.
16541 @end table
16542
16543 For example to rotate by 90 degrees clockwise and preserve portrait
16544 layout:
16545 @example
16546 transpose=dir=1:passthrough=portrait
16547 @end example
16548
16549 The command above can also be specified as:
16550 @example
16551 transpose=1:portrait
16552 @end example
16553
16554 @section transpose_npp
16555
16556 Transpose rows with columns in the input video and optionally flip it.
16557 For more in depth examples see the @ref{transpose} video filter, which shares mostly the same options.
16558
16559 It accepts the following parameters:
16560
16561 @table @option
16562
16563 @item dir
16564 Specify the transposition direction.
16565
16566 Can assume the following values:
16567 @table @samp
16568 @item cclock_flip
16569 Rotate by 90 degrees counterclockwise and vertically flip. (default)
16570
16571 @item clock
16572 Rotate by 90 degrees clockwise.
16573
16574 @item cclock
16575 Rotate by 90 degrees counterclockwise.
16576
16577 @item clock_flip
16578 Rotate by 90 degrees clockwise and vertically flip.
16579 @end table
16580
16581 @item passthrough
16582 Do not apply the transposition if the input geometry matches the one
16583 specified by the specified value. It accepts the following values:
16584 @table @samp
16585 @item none
16586 Always apply transposition. (default)
16587 @item portrait
16588 Preserve portrait geometry (when @var{height} >= @var{width}).
16589 @item landscape
16590 Preserve landscape geometry (when @var{width} >= @var{height}).
16591 @end table
16592
16593 @end table
16594
16595 @section trim
16596 Trim the input so that the output contains one continuous subpart of the input.
16597
16598 It accepts the following parameters:
16599 @table @option
16600 @item start
16601 Specify the time of the start of the kept section, i.e. the frame with the
16602 timestamp @var{start} will be the first frame in the output.
16603
16604 @item end
16605 Specify the time of the first frame that will be dropped, i.e. the frame
16606 immediately preceding the one with the timestamp @var{end} will be the last
16607 frame in the output.
16608
16609 @item start_pts
16610 This is the same as @var{start}, except this option sets the start timestamp
16611 in timebase units instead of seconds.
16612
16613 @item end_pts
16614 This is the same as @var{end}, except this option sets the end timestamp
16615 in timebase units instead of seconds.
16616
16617 @item duration
16618 The maximum duration of the output in seconds.
16619
16620 @item start_frame
16621 The number of the first frame that should be passed to the output.
16622
16623 @item end_frame
16624 The number of the first frame that should be dropped.
16625 @end table
16626
16627 @option{start}, @option{end}, and @option{duration} are expressed as time
16628 duration specifications; see
16629 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
16630 for the accepted syntax.
16631
16632 Note that the first two sets of the start/end options and the @option{duration}
16633 option look at the frame timestamp, while the _frame variants simply count the
16634 frames that pass through the filter. Also note that this filter does not modify
16635 the timestamps. If you wish for the output timestamps to start at zero, insert a
16636 setpts filter after the trim filter.
16637
16638 If multiple start or end options are set, this filter tries to be greedy and
16639 keep all the frames that match at least one of the specified constraints. To keep
16640 only the part that matches all the constraints at once, chain multiple trim
16641 filters.
16642
16643 The defaults are such that all the input is kept. So it is possible to set e.g.
16644 just the end values to keep everything before the specified time.
16645
16646 Examples:
16647 @itemize
16648 @item
16649 Drop everything except the second minute of input:
16650 @example
16651 ffmpeg -i INPUT -vf trim=60:120
16652 @end example
16653
16654 @item
16655 Keep only the first second:
16656 @example
16657 ffmpeg -i INPUT -vf trim=duration=1
16658 @end example
16659
16660 @end itemize
16661
16662 @section unpremultiply
16663 Apply alpha unpremultiply effect to input video stream using first plane
16664 of second stream as alpha.
16665
16666 Both streams must have same dimensions and same pixel format.
16667
16668 The filter accepts the following option:
16669
16670 @table @option
16671 @item planes
16672 Set which planes will be processed, unprocessed planes will be copied.
16673 By default value 0xf, all planes will be processed.
16674
16675 If the format has 1 or 2 components, then luma is bit 0.
16676 If the format has 3 or 4 components:
16677 for RGB formats bit 0 is green, bit 1 is blue and bit 2 is red;
16678 for YUV formats bit 0 is luma, bit 1 is chroma-U and bit 2 is chroma-V.
16679 If present, the alpha channel is always the last bit.
16680
16681 @item inplace
16682 Do not require 2nd input for processing, instead use alpha plane from input stream.
16683 @end table
16684
16685 @anchor{unsharp}
16686 @section unsharp
16687
16688 Sharpen or blur the input video.
16689
16690 It accepts the following parameters:
16691
16692 @table @option
16693 @item luma_msize_x, lx
16694 Set the luma matrix horizontal size. It must be an odd integer between
16695 3 and 23. The default value is 5.
16696
16697 @item luma_msize_y, ly
16698 Set the luma matrix vertical size. It must be an odd integer between 3
16699 and 23. The default value is 5.
16700
16701 @item luma_amount, la
16702 Set the luma effect strength. It must be a floating point number, reasonable
16703 values lay between -1.5 and 1.5.
16704
16705 Negative values will blur the input video, while positive values will
16706 sharpen it, a value of zero will disable the effect.
16707
16708 Default value is 1.0.
16709
16710 @item chroma_msize_x, cx
16711 Set the chroma matrix horizontal size. It must be an odd integer
16712 between 3 and 23. The default value is 5.
16713
16714 @item chroma_msize_y, cy
16715 Set the chroma matrix vertical size. It must be an odd integer
16716 between 3 and 23. The default value is 5.
16717
16718 @item chroma_amount, ca
16719 Set the chroma effect strength. It must be a floating point number, reasonable
16720 values lay between -1.5 and 1.5.
16721
16722 Negative values will blur the input video, while positive values will
16723 sharpen it, a value of zero will disable the effect.
16724
16725 Default value is 0.0.
16726
16727 @end table
16728
16729 All parameters are optional and default to the equivalent of the
16730 string '5:5:1.0:5:5:0.0'.
16731
16732 @subsection Examples
16733
16734 @itemize
16735 @item
16736 Apply strong luma sharpen effect:
16737 @example
16738 unsharp=luma_msize_x=7:luma_msize_y=7:luma_amount=2.5
16739 @end example
16740
16741 @item
16742 Apply a strong blur of both luma and chroma parameters:
16743 @example
16744 unsharp=7:7:-2:7:7:-2
16745 @end example
16746 @end itemize
16747
16748 @section uspp
16749
16750 Apply ultra slow/simple postprocessing filter that compresses and decompresses
16751 the image at several (or - in the case of @option{quality} level @code{8} - all)
16752 shifts and average the results.
16753
16754 The way this differs from the behavior of spp is that uspp actually encodes &
16755 decodes each case with libavcodec Snow, whereas spp uses a simplified intra only 8x8
16756 DCT similar to MJPEG.
16757
16758 The filter accepts the following options:
16759
16760 @table @option
16761 @item quality
16762 Set quality. This option defines the number of levels for averaging. It accepts
16763 an integer in the range 0-8. If set to @code{0}, the filter will have no
16764 effect. A value of @code{8} means the higher quality. For each increment of
16765 that value the speed drops by a factor of approximately 2.  Default value is
16766 @code{3}.
16767
16768 @item qp
16769 Force a constant quantization parameter. If not set, the filter will use the QP
16770 from the video stream (if available).
16771 @end table
16772
16773 @section vaguedenoiser
16774
16775 Apply a wavelet based denoiser.
16776
16777 It transforms each frame from the video input into the wavelet domain,
16778 using Cohen-Daubechies-Feauveau 9/7. Then it applies some filtering to
16779 the obtained coefficients. It does an inverse wavelet transform after.
16780 Due to wavelet properties, it should give a nice smoothed result, and
16781 reduced noise, without blurring picture features.
16782
16783 This filter accepts the following options:
16784
16785 @table @option
16786 @item threshold
16787 The filtering strength. The higher, the more filtered the video will be.
16788 Hard thresholding can use a higher threshold than soft thresholding
16789 before the video looks overfiltered. Default value is 2.
16790
16791 @item method
16792 The filtering method the filter will use.
16793
16794 It accepts the following values:
16795 @table @samp
16796 @item hard
16797 All values under the threshold will be zeroed.
16798
16799 @item soft
16800 All values under the threshold will be zeroed. All values above will be
16801 reduced by the threshold.
16802
16803 @item garrote
16804 Scales or nullifies coefficients - intermediary between (more) soft and
16805 (less) hard thresholding.
16806 @end table
16807
16808 Default is garrote.
16809
16810 @item nsteps
16811 Number of times, the wavelet will decompose the picture. Picture can't
16812 be decomposed beyond a particular point (typically, 8 for a 640x480
16813 frame - as 2^9 = 512 > 480). Valid values are integers between 1 and 32. Default value is 6.
16814
16815 @item percent
16816 Partial of full denoising (limited coefficients shrinking), from 0 to 100. Default value is 85.
16817
16818 @item planes
16819 A list of the planes to process. By default all planes are processed.
16820 @end table
16821
16822 @section vectorscope
16823
16824 Display 2 color component values in the two dimensional graph (which is called
16825 a vectorscope).
16826
16827 This filter accepts the following options:
16828
16829 @table @option
16830 @item mode, m
16831 Set vectorscope mode.
16832
16833 It accepts the following values:
16834 @table @samp
16835 @item gray
16836 Gray values are displayed on graph, higher brightness means more pixels have
16837 same component color value on location in graph. This is the default mode.
16838
16839 @item color
16840 Gray values are displayed on graph. Surrounding pixels values which are not
16841 present in video frame are drawn in gradient of 2 color components which are
16842 set by option @code{x} and @code{y}. The 3rd color component is static.
16843
16844 @item color2
16845 Actual color components values present in video frame are displayed on graph.
16846
16847 @item color3
16848 Similar as color2 but higher frequency of same values @code{x} and @code{y}
16849 on graph increases value of another color component, which is luminance by
16850 default values of @code{x} and @code{y}.
16851
16852 @item color4
16853 Actual colors present in video frame are displayed on graph. If two different
16854 colors map to same position on graph then color with higher value of component
16855 not present in graph is picked.
16856
16857 @item color5
16858 Gray values are displayed on graph. Similar to @code{color} but with 3rd color
16859 component picked from radial gradient.
16860 @end table
16861
16862 @item x
16863 Set which color component will be represented on X-axis. Default is @code{1}.
16864
16865 @item y
16866 Set which color component will be represented on Y-axis. Default is @code{2}.
16867
16868 @item intensity, i
16869 Set intensity, used by modes: gray, color, color3 and color5 for increasing brightness
16870 of color component which represents frequency of (X, Y) location in graph.
16871
16872 @item envelope, e
16873 @table @samp
16874 @item none
16875 No envelope, this is default.
16876
16877 @item instant
16878 Instant envelope, even darkest single pixel will be clearly highlighted.
16879
16880 @item peak
16881 Hold maximum and minimum values presented in graph over time. This way you
16882 can still spot out of range values without constantly looking at vectorscope.
16883
16884 @item peak+instant
16885 Peak and instant envelope combined together.
16886 @end table
16887
16888 @item graticule, g
16889 Set what kind of graticule to draw.
16890 @table @samp
16891 @item none
16892 @item green
16893 @item color
16894 @end table
16895
16896 @item opacity, o
16897 Set graticule opacity.
16898
16899 @item flags, f
16900 Set graticule flags.
16901
16902 @table @samp
16903 @item white
16904 Draw graticule for white point.
16905
16906 @item black
16907 Draw graticule for black point.
16908
16909 @item name
16910 Draw color points short names.
16911 @end table
16912
16913 @item bgopacity, b
16914 Set background opacity.
16915
16916 @item lthreshold, l
16917 Set low threshold for color component not represented on X or Y axis.
16918 Values lower than this value will be ignored. Default is 0.
16919 Note this value is multiplied with actual max possible value one pixel component
16920 can have. So for 8-bit input and low threshold value of 0.1 actual threshold
16921 is 0.1 * 255 = 25.
16922
16923 @item hthreshold, h
16924 Set high threshold for color component not represented on X or Y axis.
16925 Values higher than this value will be ignored. Default is 1.
16926 Note this value is multiplied with actual max possible value one pixel component
16927 can have. So for 8-bit input and high threshold value of 0.9 actual threshold
16928 is 0.9 * 255 = 230.
16929
16930 @item colorspace, c
16931 Set what kind of colorspace to use when drawing graticule.
16932 @table @samp
16933 @item auto
16934 @item 601
16935 @item 709
16936 @end table
16937 Default is auto.
16938 @end table
16939
16940 @anchor{vidstabdetect}
16941 @section vidstabdetect
16942
16943 Analyze video stabilization/deshaking. Perform pass 1 of 2, see
16944 @ref{vidstabtransform} for pass 2.
16945
16946 This filter generates a file with relative translation and rotation
16947 transform information about subsequent frames, which is then used by
16948 the @ref{vidstabtransform} filter.
16949
16950 To enable compilation of this filter you need to configure FFmpeg with
16951 @code{--enable-libvidstab}.
16952
16953 This filter accepts the following options:
16954
16955 @table @option
16956 @item result
16957 Set the path to the file used to write the transforms information.
16958 Default value is @file{transforms.trf}.
16959
16960 @item shakiness
16961 Set how shaky the video is and how quick the camera is. It accepts an
16962 integer in the range 1-10, a value of 1 means little shakiness, a
16963 value of 10 means strong shakiness. Default value is 5.
16964
16965 @item accuracy
16966 Set the accuracy of the detection process. It must be a value in the
16967 range 1-15. A value of 1 means low accuracy, a value of 15 means high
16968 accuracy. Default value is 15.
16969
16970 @item stepsize
16971 Set stepsize of the search process. The region around minimum is
16972 scanned with 1 pixel resolution. Default value is 6.
16973
16974 @item mincontrast
16975 Set minimum contrast. Below this value a local measurement field is
16976 discarded. Must be a floating point value in the range 0-1. Default
16977 value is 0.3.
16978
16979 @item tripod
16980 Set reference frame number for tripod mode.
16981
16982 If enabled, the motion of the frames is compared to a reference frame
16983 in the filtered stream, identified by the specified number. The idea
16984 is to compensate all movements in a more-or-less static scene and keep
16985 the camera view absolutely still.
16986
16987 If set to 0, it is disabled. The frames are counted starting from 1.
16988
16989 @item show
16990 Show fields and transforms in the resulting frames. It accepts an
16991 integer in the range 0-2. Default value is 0, which disables any
16992 visualization.
16993 @end table
16994
16995 @subsection Examples
16996
16997 @itemize
16998 @item
16999 Use default values:
17000 @example
17001 vidstabdetect
17002 @end example
17003
17004 @item
17005 Analyze strongly shaky movie and put the results in file
17006 @file{mytransforms.trf}:
17007 @example
17008 vidstabdetect=shakiness=10:accuracy=15:result="mytransforms.trf"
17009 @end example
17010
17011 @item
17012 Visualize the result of internal transformations in the resulting
17013 video:
17014 @example
17015 vidstabdetect=show=1
17016 @end example
17017
17018 @item
17019 Analyze a video with medium shakiness using @command{ffmpeg}:
17020 @example
17021 ffmpeg -i input -vf vidstabdetect=shakiness=5:show=1 dummy.avi
17022 @end example
17023 @end itemize
17024
17025 @anchor{vidstabtransform}
17026 @section vidstabtransform
17027
17028 Video stabilization/deshaking: pass 2 of 2,
17029 see @ref{vidstabdetect} for pass 1.
17030
17031 Read a file with transform information for each frame and
17032 apply/compensate them. Together with the @ref{vidstabdetect}
17033 filter this can be used to deshake videos. See also
17034 @url{http://public.hronopik.de/vid.stab}. It is important to also use
17035 the @ref{unsharp} filter, see below.
17036
17037 To enable compilation of this filter you need to configure FFmpeg with
17038 @code{--enable-libvidstab}.
17039
17040 @subsection Options
17041
17042 @table @option
17043 @item input
17044 Set path to the file used to read the transforms. Default value is
17045 @file{transforms.trf}.
17046
17047 @item smoothing
17048 Set the number of frames (value*2 + 1) used for lowpass filtering the
17049 camera movements. Default value is 10.
17050
17051 For example a number of 10 means that 21 frames are used (10 in the
17052 past and 10 in the future) to smoothen the motion in the video. A
17053 larger value leads to a smoother video, but limits the acceleration of
17054 the camera (pan/tilt movements). 0 is a special case where a static
17055 camera is simulated.
17056
17057 @item optalgo
17058 Set the camera path optimization algorithm.
17059
17060 Accepted values are:
17061 @table @samp
17062 @item gauss
17063 gaussian kernel low-pass filter on camera motion (default)
17064 @item avg
17065 averaging on transformations
17066 @end table
17067
17068 @item maxshift
17069 Set maximal number of pixels to translate frames. Default value is -1,
17070 meaning no limit.
17071
17072 @item maxangle
17073 Set maximal angle in radians (degree*PI/180) to rotate frames. Default
17074 value is -1, meaning no limit.
17075
17076 @item crop
17077 Specify how to deal with borders that may be visible due to movement
17078 compensation.
17079
17080 Available values are:
17081 @table @samp
17082 @item keep
17083 keep image information from previous frame (default)
17084 @item black
17085 fill the border black
17086 @end table
17087
17088 @item invert
17089 Invert transforms if set to 1. Default value is 0.
17090
17091 @item relative
17092 Consider transforms as relative to previous frame if set to 1,
17093 absolute if set to 0. Default value is 0.
17094
17095 @item zoom
17096 Set percentage to zoom. A positive value will result in a zoom-in
17097 effect, a negative value in a zoom-out effect. Default value is 0 (no
17098 zoom).
17099
17100 @item optzoom
17101 Set optimal zooming to avoid borders.
17102
17103 Accepted values are:
17104 @table @samp
17105 @item 0
17106 disabled
17107 @item 1
17108 optimal static zoom value is determined (only very strong movements
17109 will lead to visible borders) (default)
17110 @item 2
17111 optimal adaptive zoom value is determined (no borders will be
17112 visible), see @option{zoomspeed}
17113 @end table
17114
17115 Note that the value given at zoom is added to the one calculated here.
17116
17117 @item zoomspeed
17118 Set percent to zoom maximally each frame (enabled when
17119 @option{optzoom} is set to 2). Range is from 0 to 5, default value is
17120 0.25.
17121
17122 @item interpol
17123 Specify type of interpolation.
17124
17125 Available values are:
17126 @table @samp
17127 @item no
17128 no interpolation
17129 @item linear
17130 linear only horizontal
17131 @item bilinear
17132 linear in both directions (default)
17133 @item bicubic
17134 cubic in both directions (slow)
17135 @end table
17136
17137 @item tripod
17138 Enable virtual tripod mode if set to 1, which is equivalent to
17139 @code{relative=0:smoothing=0}. Default value is 0.
17140
17141 Use also @code{tripod} option of @ref{vidstabdetect}.
17142
17143 @item debug
17144 Increase log verbosity if set to 1. Also the detected global motions
17145 are written to the temporary file @file{global_motions.trf}. Default
17146 value is 0.
17147 @end table
17148
17149 @subsection Examples
17150
17151 @itemize
17152 @item
17153 Use @command{ffmpeg} for a typical stabilization with default values:
17154 @example
17155 ffmpeg -i inp.mpeg -vf vidstabtransform,unsharp=5:5:0.8:3:3:0.4 inp_stabilized.mpeg
17156 @end example
17157
17158 Note the use of the @ref{unsharp} filter which is always recommended.
17159
17160 @item
17161 Zoom in a bit more and load transform data from a given file:
17162 @example
17163 vidstabtransform=zoom=5:input="mytransforms.trf"
17164 @end example
17165
17166 @item
17167 Smoothen the video even more:
17168 @example
17169 vidstabtransform=smoothing=30
17170 @end example
17171 @end itemize
17172
17173 @section vflip
17174
17175 Flip the input video vertically.
17176
17177 For example, to vertically flip a video with @command{ffmpeg}:
17178 @example
17179 ffmpeg -i in.avi -vf "vflip" out.avi
17180 @end example
17181
17182 @section vfrdet
17183
17184 Detect variable frame rate video.
17185
17186 This filter tries to detect if the input is variable or constant frame rate.
17187
17188 At end it will output number of frames detected as having variable delta pts,
17189 and ones with constant delta pts.
17190 If there was frames with variable delta, than it will also show min and max delta
17191 encountered.
17192
17193 @anchor{vignette}
17194 @section vignette
17195
17196 Make or reverse a natural vignetting effect.
17197
17198 The filter accepts the following options:
17199
17200 @table @option
17201 @item angle, a
17202 Set lens angle expression as a number of radians.
17203
17204 The value is clipped in the @code{[0,PI/2]} range.
17205
17206 Default value: @code{"PI/5"}
17207
17208 @item x0
17209 @item y0
17210 Set center coordinates expressions. Respectively @code{"w/2"} and @code{"h/2"}
17211 by default.
17212
17213 @item mode
17214 Set forward/backward mode.
17215
17216 Available modes are:
17217 @table @samp
17218 @item forward
17219 The larger the distance from the central point, the darker the image becomes.
17220
17221 @item backward
17222 The larger the distance from the central point, the brighter the image becomes.
17223 This can be used to reverse a vignette effect, though there is no automatic
17224 detection to extract the lens @option{angle} and other settings (yet). It can
17225 also be used to create a burning effect.
17226 @end table
17227
17228 Default value is @samp{forward}.
17229
17230 @item eval
17231 Set evaluation mode for the expressions (@option{angle}, @option{x0}, @option{y0}).
17232
17233 It accepts the following values:
17234 @table @samp
17235 @item init
17236 Evaluate expressions only once during the filter initialization.
17237
17238 @item frame
17239 Evaluate expressions for each incoming frame. This is way slower than the
17240 @samp{init} mode since it requires all the scalers to be re-computed, but it
17241 allows advanced dynamic expressions.
17242 @end table
17243
17244 Default value is @samp{init}.
17245
17246 @item dither
17247 Set dithering to reduce the circular banding effects. Default is @code{1}
17248 (enabled).
17249
17250 @item aspect
17251 Set vignette aspect. This setting allows one to adjust the shape of the vignette.
17252 Setting this value to the SAR of the input will make a rectangular vignetting
17253 following the dimensions of the video.
17254
17255 Default is @code{1/1}.
17256 @end table
17257
17258 @subsection Expressions
17259
17260 The @option{alpha}, @option{x0} and @option{y0} expressions can contain the
17261 following parameters.
17262
17263 @table @option
17264 @item w
17265 @item h
17266 input width and height
17267
17268 @item n
17269 the number of input frame, starting from 0
17270
17271 @item pts
17272 the PTS (Presentation TimeStamp) time of the filtered video frame, expressed in
17273 @var{TB} units, NAN if undefined
17274
17275 @item r
17276 frame rate of the input video, NAN if the input frame rate is unknown
17277
17278 @item t
17279 the PTS (Presentation TimeStamp) of the filtered video frame,
17280 expressed in seconds, NAN if undefined
17281
17282 @item tb
17283 time base of the input video
17284 @end table
17285
17286
17287 @subsection Examples
17288
17289 @itemize
17290 @item
17291 Apply simple strong vignetting effect:
17292 @example
17293 vignette=PI/4
17294 @end example
17295
17296 @item
17297 Make a flickering vignetting:
17298 @example
17299 vignette='PI/4+random(1)*PI/50':eval=frame
17300 @end example
17301
17302 @end itemize
17303
17304 @section vmafmotion
17305
17306 Obtain the average vmaf motion score of a video.
17307 It is one of the component filters of VMAF.
17308
17309 The obtained average motion score is printed through the logging system.
17310
17311 In the below example the input file @file{ref.mpg} is being processed and score
17312 is computed.
17313
17314 @example
17315 ffmpeg -i ref.mpg -lavfi vmafmotion -f null -
17316 @end example
17317
17318 @section vstack
17319 Stack input videos vertically.
17320
17321 All streams must be of same pixel format and of same width.
17322
17323 Note that this filter is faster than using @ref{overlay} and @ref{pad} filter
17324 to create same output.
17325
17326 The filter accept the following option:
17327
17328 @table @option
17329 @item inputs
17330 Set number of input streams. Default is 2.
17331
17332 @item shortest
17333 If set to 1, force the output to terminate when the shortest input
17334 terminates. Default value is 0.
17335 @end table
17336
17337 @section w3fdif
17338
17339 Deinterlace the input video ("w3fdif" stands for "Weston 3 Field
17340 Deinterlacing Filter").
17341
17342 Based on the process described by Martin Weston for BBC R&D, and
17343 implemented based on the de-interlace algorithm written by Jim
17344 Easterbrook for BBC R&D, the Weston 3 field deinterlacing filter
17345 uses filter coefficients calculated by BBC R&D.
17346
17347 There are two sets of filter coefficients, so called "simple":
17348 and "complex". Which set of filter coefficients is used can
17349 be set by passing an optional parameter:
17350
17351 @table @option
17352 @item filter
17353 Set the interlacing filter coefficients. Accepts one of the following values:
17354
17355 @table @samp
17356 @item simple
17357 Simple filter coefficient set.
17358 @item complex
17359 More-complex filter coefficient set.
17360 @end table
17361 Default value is @samp{complex}.
17362
17363 @item deint
17364 Specify which frames to deinterlace. Accept one of the following values:
17365
17366 @table @samp
17367 @item all
17368 Deinterlace all frames,
17369 @item interlaced
17370 Only deinterlace frames marked as interlaced.
17371 @end table
17372
17373 Default value is @samp{all}.
17374 @end table
17375
17376 @section waveform
17377 Video waveform monitor.
17378
17379 The waveform monitor plots color component intensity. By default luminance
17380 only. Each column of the waveform corresponds to a column of pixels in the
17381 source video.
17382
17383 It accepts the following options:
17384
17385 @table @option
17386 @item mode, m
17387 Can be either @code{row}, or @code{column}. Default is @code{column}.
17388 In row mode, the graph on the left side represents color component value 0 and
17389 the right side represents value = 255. In column mode, the top side represents
17390 color component value = 0 and bottom side represents value = 255.
17391
17392 @item intensity, i
17393 Set intensity. Smaller values are useful to find out how many values of the same
17394 luminance are distributed across input rows/columns.
17395 Default value is @code{0.04}. Allowed range is [0, 1].
17396
17397 @item mirror, r
17398 Set mirroring mode. @code{0} means unmirrored, @code{1} means mirrored.
17399 In mirrored mode, higher values will be represented on the left
17400 side for @code{row} mode and at the top for @code{column} mode. Default is
17401 @code{1} (mirrored).
17402
17403 @item display, d
17404 Set display mode.
17405 It accepts the following values:
17406 @table @samp
17407 @item overlay
17408 Presents information identical to that in the @code{parade}, except
17409 that the graphs representing color components are superimposed directly
17410 over one another.
17411
17412 This display mode makes it easier to spot relative differences or similarities
17413 in overlapping areas of the color components that are supposed to be identical,
17414 such as neutral whites, grays, or blacks.
17415
17416 @item stack
17417 Display separate graph for the color components side by side in
17418 @code{row} mode or one below the other in @code{column} mode.
17419
17420 @item parade
17421 Display separate graph for the color components side by side in
17422 @code{column} mode or one below the other in @code{row} mode.
17423
17424 Using this display mode makes it easy to spot color casts in the highlights
17425 and shadows of an image, by comparing the contours of the top and the bottom
17426 graphs of each waveform. Since whites, grays, and blacks are characterized
17427 by exactly equal amounts of red, green, and blue, neutral areas of the picture
17428 should display three waveforms of roughly equal width/height. If not, the
17429 correction is easy to perform by making level adjustments the three waveforms.
17430 @end table
17431 Default is @code{stack}.
17432
17433 @item components, c
17434 Set which color components to display. Default is 1, which means only luminance
17435 or red color component if input is in RGB colorspace. If is set for example to
17436 7 it will display all 3 (if) available color components.
17437
17438 @item envelope, e
17439 @table @samp
17440 @item none
17441 No envelope, this is default.
17442
17443 @item instant
17444 Instant envelope, minimum and maximum values presented in graph will be easily
17445 visible even with small @code{step} value.
17446
17447 @item peak
17448 Hold minimum and maximum values presented in graph across time. This way you
17449 can still spot out of range values without constantly looking at waveforms.
17450
17451 @item peak+instant
17452 Peak and instant envelope combined together.
17453 @end table
17454
17455 @item filter, f
17456 @table @samp
17457 @item lowpass
17458 No filtering, this is default.
17459
17460 @item flat
17461 Luma and chroma combined together.
17462
17463 @item aflat
17464 Similar as above, but shows difference between blue and red chroma.
17465
17466 @item xflat
17467 Similar as above, but use different colors.
17468
17469 @item chroma
17470 Displays only chroma.
17471
17472 @item color
17473 Displays actual color value on waveform.
17474
17475 @item acolor
17476 Similar as above, but with luma showing frequency of chroma values.
17477 @end table
17478
17479 @item graticule, g
17480 Set which graticule to display.
17481
17482 @table @samp
17483 @item none
17484 Do not display graticule.
17485
17486 @item green
17487 Display green graticule showing legal broadcast ranges.
17488
17489 @item orange
17490 Display orange graticule showing legal broadcast ranges.
17491 @end table
17492
17493 @item opacity, o
17494 Set graticule opacity.
17495
17496 @item flags, fl
17497 Set graticule flags.
17498
17499 @table @samp
17500 @item numbers
17501 Draw numbers above lines. By default enabled.
17502
17503 @item dots
17504 Draw dots instead of lines.
17505 @end table
17506
17507 @item scale, s
17508 Set scale used for displaying graticule.
17509
17510 @table @samp
17511 @item digital
17512 @item millivolts
17513 @item ire
17514 @end table
17515 Default is digital.
17516
17517 @item bgopacity, b
17518 Set background opacity.
17519 @end table
17520
17521 @section weave, doubleweave
17522
17523 The @code{weave} takes a field-based video input and join
17524 each two sequential fields into single frame, producing a new double
17525 height clip with half the frame rate and half the frame count.
17526
17527 The @code{doubleweave} works same as @code{weave} but without
17528 halving frame rate and frame count.
17529
17530 It accepts the following option:
17531
17532 @table @option
17533 @item first_field
17534 Set first field. Available values are:
17535
17536 @table @samp
17537 @item top, t
17538 Set the frame as top-field-first.
17539
17540 @item bottom, b
17541 Set the frame as bottom-field-first.
17542 @end table
17543 @end table
17544
17545 @subsection Examples
17546
17547 @itemize
17548 @item
17549 Interlace video using @ref{select} and @ref{separatefields} filter:
17550 @example
17551 separatefields,select=eq(mod(n,4),0)+eq(mod(n,4),3),weave
17552 @end example
17553 @end itemize
17554
17555 @section xbr
17556 Apply the xBR high-quality magnification filter which is designed for pixel
17557 art. It follows a set of edge-detection rules, see
17558 @url{https://forums.libretro.com/t/xbr-algorithm-tutorial/123}.
17559
17560 It accepts the following option:
17561
17562 @table @option
17563 @item n
17564 Set the scaling dimension: @code{2} for @code{2xBR}, @code{3} for
17565 @code{3xBR} and @code{4} for @code{4xBR}.
17566 Default is @code{3}.
17567 @end table
17568
17569 @anchor{yadif}
17570 @section yadif
17571
17572 Deinterlace the input video ("yadif" means "yet another deinterlacing
17573 filter").
17574
17575 It accepts the following parameters:
17576
17577
17578 @table @option
17579
17580 @item mode
17581 The interlacing mode to adopt. It accepts one of the following values:
17582
17583 @table @option
17584 @item 0, send_frame
17585 Output one frame for each frame.
17586 @item 1, send_field
17587 Output one frame for each field.
17588 @item 2, send_frame_nospatial
17589 Like @code{send_frame}, but it skips the spatial interlacing check.
17590 @item 3, send_field_nospatial
17591 Like @code{send_field}, but it skips the spatial interlacing check.
17592 @end table
17593
17594 The default value is @code{send_frame}.
17595
17596 @item parity
17597 The picture field parity assumed for the input interlaced video. It accepts one
17598 of the following values:
17599
17600 @table @option
17601 @item 0, tff
17602 Assume the top field is first.
17603 @item 1, bff
17604 Assume the bottom field is first.
17605 @item -1, auto
17606 Enable automatic detection of field parity.
17607 @end table
17608
17609 The default value is @code{auto}.
17610 If the interlacing is unknown or the decoder does not export this information,
17611 top field first will be assumed.
17612
17613 @item deint
17614 Specify which frames to deinterlace. Accept one of the following
17615 values:
17616
17617 @table @option
17618 @item 0, all
17619 Deinterlace all frames.
17620 @item 1, interlaced
17621 Only deinterlace frames marked as interlaced.
17622 @end table
17623
17624 The default value is @code{all}.
17625 @end table
17626
17627 @section zoompan
17628
17629 Apply Zoom & Pan effect.
17630
17631 This filter accepts the following options:
17632
17633 @table @option
17634 @item zoom, z
17635 Set the zoom expression. Default is 1.
17636
17637 @item x
17638 @item y
17639 Set the x and y expression. Default is 0.
17640
17641 @item d
17642 Set the duration expression in number of frames.
17643 This sets for how many number of frames effect will last for
17644 single input image.
17645
17646 @item s
17647 Set the output image size, default is 'hd720'.
17648
17649 @item fps
17650 Set the output frame rate, default is '25'.
17651 @end table
17652
17653 Each expression can contain the following constants:
17654
17655 @table @option
17656 @item in_w, iw
17657 Input width.
17658
17659 @item in_h, ih
17660 Input height.
17661
17662 @item out_w, ow
17663 Output width.
17664
17665 @item out_h, oh
17666 Output height.
17667
17668 @item in
17669 Input frame count.
17670
17671 @item on
17672 Output frame count.
17673
17674 @item x
17675 @item y
17676 Last calculated 'x' and 'y' position from 'x' and 'y' expression
17677 for current input frame.
17678
17679 @item px
17680 @item py
17681 'x' and 'y' of last output frame of previous input frame or 0 when there was
17682 not yet such frame (first input frame).
17683
17684 @item zoom
17685 Last calculated zoom from 'z' expression for current input frame.
17686
17687 @item pzoom
17688 Last calculated zoom of last output frame of previous input frame.
17689
17690 @item duration
17691 Number of output frames for current input frame. Calculated from 'd' expression
17692 for each input frame.
17693
17694 @item pduration
17695 number of output frames created for previous input frame
17696
17697 @item a
17698 Rational number: input width / input height
17699
17700 @item sar
17701 sample aspect ratio
17702
17703 @item dar
17704 display aspect ratio
17705
17706 @end table
17707
17708 @subsection Examples
17709
17710 @itemize
17711 @item
17712 Zoom-in up to 1.5 and pan at same time to some spot near center of picture:
17713 @example
17714 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
17715 @end example
17716
17717 @item
17718 Zoom-in up to 1.5 and pan always at center of picture:
17719 @example
17720 zoompan=z='min(zoom+0.0015,1.5)':d=700:x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)'
17721 @end example
17722
17723 @item
17724 Same as above but without pausing:
17725 @example
17726 zoompan=z='min(max(zoom,pzoom)+0.0015,1.5)':d=1:x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)'
17727 @end example
17728 @end itemize
17729
17730 @anchor{zscale}
17731 @section zscale
17732 Scale (resize) the input video, using the z.lib library:
17733 @url{https://github.com/sekrit-twc/zimg}. To enable compilation of this
17734 filter, you need to configure FFmpeg with @code{--enable-libzimg}.
17735
17736 The zscale filter forces the output display aspect ratio to be the same
17737 as the input, by changing the output sample aspect ratio.
17738
17739 If the input image format is different from the format requested by
17740 the next filter, the zscale filter will convert the input to the
17741 requested format.
17742
17743 @subsection Options
17744 The filter accepts the following options.
17745
17746 @table @option
17747 @item width, w
17748 @item height, h
17749 Set the output video dimension expression. Default value is the input
17750 dimension.
17751
17752 If the @var{width} or @var{w} value is 0, the input width is used for
17753 the output. If the @var{height} or @var{h} value is 0, the input height
17754 is used for the output.
17755
17756 If one and only one of the values is -n with n >= 1, the zscale filter
17757 will use a value that maintains the aspect ratio of the input image,
17758 calculated from the other specified dimension. After that it will,
17759 however, make sure that the calculated dimension is divisible by n and
17760 adjust the value if necessary.
17761
17762 If both values are -n with n >= 1, the behavior will be identical to
17763 both values being set to 0 as previously detailed.
17764
17765 See below for the list of accepted constants for use in the dimension
17766 expression.
17767
17768 @item size, s
17769 Set the video size. For the syntax of this option, check the
17770 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
17771
17772 @item dither, d
17773 Set the dither type.
17774
17775 Possible values are:
17776 @table @var
17777 @item none
17778 @item ordered
17779 @item random
17780 @item error_diffusion
17781 @end table
17782
17783 Default is none.
17784
17785 @item filter, f
17786 Set the resize filter type.
17787
17788 Possible values are:
17789 @table @var
17790 @item point
17791 @item bilinear
17792 @item bicubic
17793 @item spline16
17794 @item spline36
17795 @item lanczos
17796 @end table
17797
17798 Default is bilinear.
17799
17800 @item range, r
17801 Set the color range.
17802
17803 Possible values are:
17804 @table @var
17805 @item input
17806 @item limited
17807 @item full
17808 @end table
17809
17810 Default is same as input.
17811
17812 @item primaries, p
17813 Set the color primaries.
17814
17815 Possible values are:
17816 @table @var
17817 @item input
17818 @item 709
17819 @item unspecified
17820 @item 170m
17821 @item 240m
17822 @item 2020
17823 @end table
17824
17825 Default is same as input.
17826
17827 @item transfer, t
17828 Set the transfer characteristics.
17829
17830 Possible values are:
17831 @table @var
17832 @item input
17833 @item 709
17834 @item unspecified
17835 @item 601
17836 @item linear
17837 @item 2020_10
17838 @item 2020_12
17839 @item smpte2084
17840 @item iec61966-2-1
17841 @item arib-std-b67
17842 @end table
17843
17844 Default is same as input.
17845
17846 @item matrix, m
17847 Set the colorspace matrix.
17848
17849 Possible value are:
17850 @table @var
17851 @item input
17852 @item 709
17853 @item unspecified
17854 @item 470bg
17855 @item 170m
17856 @item 2020_ncl
17857 @item 2020_cl
17858 @end table
17859
17860 Default is same as input.
17861
17862 @item rangein, rin
17863 Set the input color range.
17864
17865 Possible values are:
17866 @table @var
17867 @item input
17868 @item limited
17869 @item full
17870 @end table
17871
17872 Default is same as input.
17873
17874 @item primariesin, pin
17875 Set the input color primaries.
17876
17877 Possible values are:
17878 @table @var
17879 @item input
17880 @item 709
17881 @item unspecified
17882 @item 170m
17883 @item 240m
17884 @item 2020
17885 @end table
17886
17887 Default is same as input.
17888
17889 @item transferin, tin
17890 Set the input transfer characteristics.
17891
17892 Possible values are:
17893 @table @var
17894 @item input
17895 @item 709
17896 @item unspecified
17897 @item 601
17898 @item linear
17899 @item 2020_10
17900 @item 2020_12
17901 @end table
17902
17903 Default is same as input.
17904
17905 @item matrixin, min
17906 Set the input colorspace matrix.
17907
17908 Possible value are:
17909 @table @var
17910 @item input
17911 @item 709
17912 @item unspecified
17913 @item 470bg
17914 @item 170m
17915 @item 2020_ncl
17916 @item 2020_cl
17917 @end table
17918
17919 @item chromal, c
17920 Set the output chroma location.
17921
17922 Possible values are:
17923 @table @var
17924 @item input
17925 @item left
17926 @item center
17927 @item topleft
17928 @item top
17929 @item bottomleft
17930 @item bottom
17931 @end table
17932
17933 @item chromalin, cin
17934 Set the input chroma location.
17935
17936 Possible values are:
17937 @table @var
17938 @item input
17939 @item left
17940 @item center
17941 @item topleft
17942 @item top
17943 @item bottomleft
17944 @item bottom
17945 @end table
17946
17947 @item npl
17948 Set the nominal peak luminance.
17949 @end table
17950
17951 The values of the @option{w} and @option{h} options are expressions
17952 containing the following constants:
17953
17954 @table @var
17955 @item in_w
17956 @item in_h
17957 The input width and height
17958
17959 @item iw
17960 @item ih
17961 These are the same as @var{in_w} and @var{in_h}.
17962
17963 @item out_w
17964 @item out_h
17965 The output (scaled) width and height
17966
17967 @item ow
17968 @item oh
17969 These are the same as @var{out_w} and @var{out_h}
17970
17971 @item a
17972 The same as @var{iw} / @var{ih}
17973
17974 @item sar
17975 input sample aspect ratio
17976
17977 @item dar
17978 The input display aspect ratio. Calculated from @code{(iw / ih) * sar}.
17979
17980 @item hsub
17981 @item vsub
17982 horizontal and vertical input chroma subsample values. For example for the
17983 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
17984
17985 @item ohsub
17986 @item ovsub
17987 horizontal and vertical output chroma subsample values. For example for the
17988 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
17989 @end table
17990
17991 @table @option
17992 @end table
17993
17994 @c man end VIDEO FILTERS
17995
17996 @chapter Video Sources
17997 @c man begin VIDEO SOURCES
17998
17999 Below is a description of the currently available video sources.
18000
18001 @section buffer
18002
18003 Buffer video frames, and make them available to the filter chain.
18004
18005 This source is mainly intended for a programmatic use, in particular
18006 through the interface defined in @file{libavfilter/vsrc_buffer.h}.
18007
18008 It accepts the following parameters:
18009
18010 @table @option
18011
18012 @item video_size
18013 Specify the size (width and height) of the buffered video frames. For the
18014 syntax of this option, check the
18015 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
18016
18017 @item width
18018 The input video width.
18019
18020 @item height
18021 The input video height.
18022
18023 @item pix_fmt
18024 A string representing the pixel format of the buffered video frames.
18025 It may be a number corresponding to a pixel format, or a pixel format
18026 name.
18027
18028 @item time_base
18029 Specify the timebase assumed by the timestamps of the buffered frames.
18030
18031 @item frame_rate
18032 Specify the frame rate expected for the video stream.
18033
18034 @item pixel_aspect, sar
18035 The sample (pixel) aspect ratio of the input video.
18036
18037 @item sws_param
18038 Specify the optional parameters to be used for the scale filter which
18039 is automatically inserted when an input change is detected in the
18040 input size or format.
18041
18042 @item hw_frames_ctx
18043 When using a hardware pixel format, this should be a reference to an
18044 AVHWFramesContext describing input frames.
18045 @end table
18046
18047 For example:
18048 @example
18049 buffer=width=320:height=240:pix_fmt=yuv410p:time_base=1/24:sar=1
18050 @end example
18051
18052 will instruct the source to accept video frames with size 320x240 and
18053 with format "yuv410p", assuming 1/24 as the timestamps timebase and
18054 square pixels (1:1 sample aspect ratio).
18055 Since the pixel format with name "yuv410p" corresponds to the number 6
18056 (check the enum AVPixelFormat definition in @file{libavutil/pixfmt.h}),
18057 this example corresponds to:
18058 @example
18059 buffer=size=320x240:pixfmt=6:time_base=1/24:pixel_aspect=1/1
18060 @end example
18061
18062 Alternatively, the options can be specified as a flat string, but this
18063 syntax is deprecated:
18064
18065 @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}]
18066
18067 @section cellauto
18068
18069 Create a pattern generated by an elementary cellular automaton.
18070
18071 The initial state of the cellular automaton can be defined through the
18072 @option{filename} and @option{pattern} options. If such options are
18073 not specified an initial state is created randomly.
18074
18075 At each new frame a new row in the video is filled with the result of
18076 the cellular automaton next generation. The behavior when the whole
18077 frame is filled is defined by the @option{scroll} option.
18078
18079 This source accepts the following options:
18080
18081 @table @option
18082 @item filename, f
18083 Read the initial cellular automaton state, i.e. the starting row, from
18084 the specified file.
18085 In the file, each non-whitespace character is considered an alive
18086 cell, a newline will terminate the row, and further characters in the
18087 file will be ignored.
18088
18089 @item pattern, p
18090 Read the initial cellular automaton state, i.e. the starting row, from
18091 the specified string.
18092
18093 Each non-whitespace character in the string is considered an alive
18094 cell, a newline will terminate the row, and further characters in the
18095 string will be ignored.
18096
18097 @item rate, r
18098 Set the video rate, that is the number of frames generated per second.
18099 Default is 25.
18100
18101 @item random_fill_ratio, ratio
18102 Set the random fill ratio for the initial cellular automaton row. It
18103 is a floating point number value ranging from 0 to 1, defaults to
18104 1/PHI.
18105
18106 This option is ignored when a file or a pattern is specified.
18107
18108 @item random_seed, seed
18109 Set the seed for filling randomly the initial row, must be an integer
18110 included between 0 and UINT32_MAX. If not specified, or if explicitly
18111 set to -1, the filter will try to use a good random seed on a best
18112 effort basis.
18113
18114 @item rule
18115 Set the cellular automaton rule, it is a number ranging from 0 to 255.
18116 Default value is 110.
18117
18118 @item size, s
18119 Set the size of the output video. For the syntax of this option, check the
18120 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
18121
18122 If @option{filename} or @option{pattern} is specified, the size is set
18123 by default to the width of the specified initial state row, and the
18124 height is set to @var{width} * PHI.
18125
18126 If @option{size} is set, it must contain the width of the specified
18127 pattern string, and the specified pattern will be centered in the
18128 larger row.
18129
18130 If a filename or a pattern string is not specified, the size value
18131 defaults to "320x518" (used for a randomly generated initial state).
18132
18133 @item scroll
18134 If set to 1, scroll the output upward when all the rows in the output
18135 have been already filled. If set to 0, the new generated row will be
18136 written over the top row just after the bottom row is filled.
18137 Defaults to 1.
18138
18139 @item start_full, full
18140 If set to 1, completely fill the output with generated rows before
18141 outputting the first frame.
18142 This is the default behavior, for disabling set the value to 0.
18143
18144 @item stitch
18145 If set to 1, stitch the left and right row edges together.
18146 This is the default behavior, for disabling set the value to 0.
18147 @end table
18148
18149 @subsection Examples
18150
18151 @itemize
18152 @item
18153 Read the initial state from @file{pattern}, and specify an output of
18154 size 200x400.
18155 @example
18156 cellauto=f=pattern:s=200x400
18157 @end example
18158
18159 @item
18160 Generate a random initial row with a width of 200 cells, with a fill
18161 ratio of 2/3:
18162 @example
18163 cellauto=ratio=2/3:s=200x200
18164 @end example
18165
18166 @item
18167 Create a pattern generated by rule 18 starting by a single alive cell
18168 centered on an initial row with width 100:
18169 @example
18170 cellauto=p=@@:s=100x400:full=0:rule=18
18171 @end example
18172
18173 @item
18174 Specify a more elaborated initial pattern:
18175 @example
18176 cellauto=p='@@@@ @@ @@@@':s=100x400:full=0:rule=18
18177 @end example
18178
18179 @end itemize
18180
18181 @anchor{coreimagesrc}
18182 @section coreimagesrc
18183 Video source generated on GPU using Apple's CoreImage API on OSX.
18184
18185 This video source is a specialized version of the @ref{coreimage} video filter.
18186 Use a core image generator at the beginning of the applied filterchain to
18187 generate the content.
18188
18189 The coreimagesrc video source accepts the following options:
18190 @table @option
18191 @item list_generators
18192 List all available generators along with all their respective options as well as
18193 possible minimum and maximum values along with the default values.
18194 @example
18195 list_generators=true
18196 @end example
18197
18198 @item size, s
18199 Specify the size of the sourced video. For the syntax of this option, check the
18200 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
18201 The default value is @code{320x240}.
18202
18203 @item rate, r
18204 Specify the frame rate of the sourced video, as the number of frames
18205 generated per second. It has to be a string in the format
18206 @var{frame_rate_num}/@var{frame_rate_den}, an integer number, a floating point
18207 number or a valid video frame rate abbreviation. The default value is
18208 "25".
18209
18210 @item sar
18211 Set the sample aspect ratio of the sourced video.
18212
18213 @item duration, d
18214 Set the duration of the sourced video. See
18215 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
18216 for the accepted syntax.
18217
18218 If not specified, or the expressed duration is negative, the video is
18219 supposed to be generated forever.
18220 @end table
18221
18222 Additionally, all options of the @ref{coreimage} video filter are accepted.
18223 A complete filterchain can be used for further processing of the
18224 generated input without CPU-HOST transfer. See @ref{coreimage} documentation
18225 and examples for details.
18226
18227 @subsection Examples
18228
18229 @itemize
18230
18231 @item
18232 Use CIQRCodeGenerator to create a QR code for the FFmpeg homepage,
18233 given as complete and escaped command-line for Apple's standard bash shell:
18234 @example
18235 ffmpeg -f lavfi -i coreimagesrc=s=100x100:filter=CIQRCodeGenerator@@inputMessage=https\\\\\://FFmpeg.org/@@inputCorrectionLevel=H -frames:v 1 QRCode.png
18236 @end example
18237 This example is equivalent to the QRCode example of @ref{coreimage} without the
18238 need for a nullsrc video source.
18239 @end itemize
18240
18241
18242 @section mandelbrot
18243
18244 Generate a Mandelbrot set fractal, and progressively zoom towards the
18245 point specified with @var{start_x} and @var{start_y}.
18246
18247 This source accepts the following options:
18248
18249 @table @option
18250
18251 @item end_pts
18252 Set the terminal pts value. Default value is 400.
18253
18254 @item end_scale
18255 Set the terminal scale value.
18256 Must be a floating point value. Default value is 0.3.
18257
18258 @item inner
18259 Set the inner coloring mode, that is the algorithm used to draw the
18260 Mandelbrot fractal internal region.
18261
18262 It shall assume one of the following values:
18263 @table @option
18264 @item black
18265 Set black mode.
18266 @item convergence
18267 Show time until convergence.
18268 @item mincol
18269 Set color based on point closest to the origin of the iterations.
18270 @item period
18271 Set period mode.
18272 @end table
18273
18274 Default value is @var{mincol}.
18275
18276 @item bailout
18277 Set the bailout value. Default value is 10.0.
18278
18279 @item maxiter
18280 Set the maximum of iterations performed by the rendering
18281 algorithm. Default value is 7189.
18282
18283 @item outer
18284 Set outer coloring mode.
18285 It shall assume one of following values:
18286 @table @option
18287 @item iteration_count
18288 Set iteration cound mode.
18289 @item normalized_iteration_count
18290 set normalized iteration count mode.
18291 @end table
18292 Default value is @var{normalized_iteration_count}.
18293
18294 @item rate, r
18295 Set frame rate, expressed as number of frames per second. Default
18296 value is "25".
18297
18298 @item size, s
18299 Set frame size. For the syntax of this option, check the @ref{video size syntax,,"Video
18300 size" section in the ffmpeg-utils manual,ffmpeg-utils}. Default value is "640x480".
18301
18302 @item start_scale
18303 Set the initial scale value. Default value is 3.0.
18304
18305 @item start_x
18306 Set the initial x position. Must be a floating point value between
18307 -100 and 100. Default value is -0.743643887037158704752191506114774.
18308
18309 @item start_y
18310 Set the initial y position. Must be a floating point value between
18311 -100 and 100. Default value is -0.131825904205311970493132056385139.
18312 @end table
18313
18314 @section mptestsrc
18315
18316 Generate various test patterns, as generated by the MPlayer test filter.
18317
18318 The size of the generated video is fixed, and is 256x256.
18319 This source is useful in particular for testing encoding features.
18320
18321 This source accepts the following options:
18322
18323 @table @option
18324
18325 @item rate, r
18326 Specify the frame rate of the sourced video, as the number of frames
18327 generated per second. It has to be a string in the format
18328 @var{frame_rate_num}/@var{frame_rate_den}, an integer number, a floating point
18329 number or a valid video frame rate abbreviation. The default value is
18330 "25".
18331
18332 @item duration, d
18333 Set the duration of the sourced video. See
18334 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
18335 for the accepted syntax.
18336
18337 If not specified, or the expressed duration is negative, the video is
18338 supposed to be generated forever.
18339
18340 @item test, t
18341
18342 Set the number or the name of the test to perform. Supported tests are:
18343 @table @option
18344 @item dc_luma
18345 @item dc_chroma
18346 @item freq_luma
18347 @item freq_chroma
18348 @item amp_luma
18349 @item amp_chroma
18350 @item cbp
18351 @item mv
18352 @item ring1
18353 @item ring2
18354 @item all
18355
18356 @end table
18357
18358 Default value is "all", which will cycle through the list of all tests.
18359 @end table
18360
18361 Some examples:
18362 @example
18363 mptestsrc=t=dc_luma
18364 @end example
18365
18366 will generate a "dc_luma" test pattern.
18367
18368 @section frei0r_src
18369
18370 Provide a frei0r source.
18371
18372 To enable compilation of this filter you need to install the frei0r
18373 header and configure FFmpeg with @code{--enable-frei0r}.
18374
18375 This source accepts the following parameters:
18376
18377 @table @option
18378
18379 @item size
18380 The size of the video to generate. For the syntax of this option, check the
18381 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
18382
18383 @item framerate
18384 The framerate of the generated video. It may be a string of the form
18385 @var{num}/@var{den} or a frame rate abbreviation.
18386
18387 @item filter_name
18388 The name to the frei0r source to load. For more information regarding frei0r and
18389 how to set the parameters, read the @ref{frei0r} section in the video filters
18390 documentation.
18391
18392 @item filter_params
18393 A '|'-separated list of parameters to pass to the frei0r source.
18394
18395 @end table
18396
18397 For example, to generate a frei0r partik0l source with size 200x200
18398 and frame rate 10 which is overlaid on the overlay filter main input:
18399 @example
18400 frei0r_src=size=200x200:framerate=10:filter_name=partik0l:filter_params=1234 [overlay]; [in][overlay] overlay
18401 @end example
18402
18403 @section life
18404
18405 Generate a life pattern.
18406
18407 This source is based on a generalization of John Conway's life game.
18408
18409 The sourced input represents a life grid, each pixel represents a cell
18410 which can be in one of two possible states, alive or dead. Every cell
18411 interacts with its eight neighbours, which are the cells that are
18412 horizontally, vertically, or diagonally adjacent.
18413
18414 At each interaction the grid evolves according to the adopted rule,
18415 which specifies the number of neighbor alive cells which will make a
18416 cell stay alive or born. The @option{rule} option allows one to specify
18417 the rule to adopt.
18418
18419 This source accepts the following options:
18420
18421 @table @option
18422 @item filename, f
18423 Set the file from which to read the initial grid state. In the file,
18424 each non-whitespace character is considered an alive cell, and newline
18425 is used to delimit the end of each row.
18426
18427 If this option is not specified, the initial grid is generated
18428 randomly.
18429
18430 @item rate, r
18431 Set the video rate, that is the number of frames generated per second.
18432 Default is 25.
18433
18434 @item random_fill_ratio, ratio
18435 Set the random fill ratio for the initial random grid. It is a
18436 floating point number value ranging from 0 to 1, defaults to 1/PHI.
18437 It is ignored when a file is specified.
18438
18439 @item random_seed, seed
18440 Set the seed for filling the initial random grid, must be an integer
18441 included between 0 and UINT32_MAX. If not specified, or if explicitly
18442 set to -1, the filter will try to use a good random seed on a best
18443 effort basis.
18444
18445 @item rule
18446 Set the life rule.
18447
18448 A rule can be specified with a code of the kind "S@var{NS}/B@var{NB}",
18449 where @var{NS} and @var{NB} are sequences of numbers in the range 0-8,
18450 @var{NS} specifies the number of alive neighbor cells which make a
18451 live cell stay alive, and @var{NB} the number of alive neighbor cells
18452 which make a dead cell to become alive (i.e. to "born").
18453 "s" and "b" can be used in place of "S" and "B", respectively.
18454
18455 Alternatively a rule can be specified by an 18-bits integer. The 9
18456 high order bits are used to encode the next cell state if it is alive
18457 for each number of neighbor alive cells, the low order bits specify
18458 the rule for "borning" new cells. Higher order bits encode for an
18459 higher number of neighbor cells.
18460 For example the number 6153 = @code{(12<<9)+9} specifies a stay alive
18461 rule of 12 and a born rule of 9, which corresponds to "S23/B03".
18462
18463 Default value is "S23/B3", which is the original Conway's game of life
18464 rule, and will keep a cell alive if it has 2 or 3 neighbor alive
18465 cells, and will born a new cell if there are three alive cells around
18466 a dead cell.
18467
18468 @item size, s
18469 Set the size of the output video. For the syntax of this option, check the
18470 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
18471
18472 If @option{filename} is specified, the size is set by default to the
18473 same size of the input file. If @option{size} is set, it must contain
18474 the size specified in the input file, and the initial grid defined in
18475 that file is centered in the larger resulting area.
18476
18477 If a filename is not specified, the size value defaults to "320x240"
18478 (used for a randomly generated initial grid).
18479
18480 @item stitch
18481 If set to 1, stitch the left and right grid edges together, and the
18482 top and bottom edges also. Defaults to 1.
18483
18484 @item mold
18485 Set cell mold speed. If set, a dead cell will go from @option{death_color} to
18486 @option{mold_color} with a step of @option{mold}. @option{mold} can have a
18487 value from 0 to 255.
18488
18489 @item life_color
18490 Set the color of living (or new born) cells.
18491
18492 @item death_color
18493 Set the color of dead cells. If @option{mold} is set, this is the first color
18494 used to represent a dead cell.
18495
18496 @item mold_color
18497 Set mold color, for definitely dead and moldy cells.
18498
18499 For the syntax of these 3 color options, check the @ref{color syntax,,"Color" section in the
18500 ffmpeg-utils manual,ffmpeg-utils}.
18501 @end table
18502
18503 @subsection Examples
18504
18505 @itemize
18506 @item
18507 Read a grid from @file{pattern}, and center it on a grid of size
18508 300x300 pixels:
18509 @example
18510 life=f=pattern:s=300x300
18511 @end example
18512
18513 @item
18514 Generate a random grid of size 200x200, with a fill ratio of 2/3:
18515 @example
18516 life=ratio=2/3:s=200x200
18517 @end example
18518
18519 @item
18520 Specify a custom rule for evolving a randomly generated grid:
18521 @example
18522 life=rule=S14/B34
18523 @end example
18524
18525 @item
18526 Full example with slow death effect (mold) using @command{ffplay}:
18527 @example
18528 ffplay -f lavfi life=s=300x200:mold=10:r=60:ratio=0.1:death_color=#C83232:life_color=#00ff00,scale=1200:800:flags=16
18529 @end example
18530 @end itemize
18531
18532 @anchor{allrgb}
18533 @anchor{allyuv}
18534 @anchor{color}
18535 @anchor{haldclutsrc}
18536 @anchor{nullsrc}
18537 @anchor{pal75bars}
18538 @anchor{pal100bars}
18539 @anchor{rgbtestsrc}
18540 @anchor{smptebars}
18541 @anchor{smptehdbars}
18542 @anchor{testsrc}
18543 @anchor{testsrc2}
18544 @anchor{yuvtestsrc}
18545 @section allrgb, allyuv, color, haldclutsrc, nullsrc, pal75bars, pal100bars, rgbtestsrc, smptebars, smptehdbars, testsrc, testsrc2, yuvtestsrc
18546
18547 The @code{allrgb} source returns frames of size 4096x4096 of all rgb colors.
18548
18549 The @code{allyuv} source returns frames of size 4096x4096 of all yuv colors.
18550
18551 The @code{color} source provides an uniformly colored input.
18552
18553 The @code{haldclutsrc} source provides an identity Hald CLUT. See also
18554 @ref{haldclut} filter.
18555
18556 The @code{nullsrc} source returns unprocessed video frames. It is
18557 mainly useful to be employed in analysis / debugging tools, or as the
18558 source for filters which ignore the input data.
18559
18560 The @code{pal75bars} source generates a color bars pattern, based on
18561 EBU PAL recommendations with 75% color levels.
18562
18563 The @code{pal100bars} source generates a color bars pattern, based on
18564 EBU PAL recommendations with 100% color levels.
18565
18566 The @code{rgbtestsrc} source generates an RGB test pattern useful for
18567 detecting RGB vs BGR issues. You should see a red, green and blue
18568 stripe from top to bottom.
18569
18570 The @code{smptebars} source generates a color bars pattern, based on
18571 the SMPTE Engineering Guideline EG 1-1990.
18572
18573 The @code{smptehdbars} source generates a color bars pattern, based on
18574 the SMPTE RP 219-2002.
18575
18576 The @code{testsrc} source generates a test video pattern, showing a
18577 color pattern, a scrolling gradient and a timestamp. This is mainly
18578 intended for testing purposes.
18579
18580 The @code{testsrc2} source is similar to testsrc, but supports more
18581 pixel formats instead of just @code{rgb24}. This allows using it as an
18582 input for other tests without requiring a format conversion.
18583
18584 The @code{yuvtestsrc} source generates an YUV test pattern. You should
18585 see a y, cb and cr stripe from top to bottom.
18586
18587 The sources accept the following parameters:
18588
18589 @table @option
18590
18591 @item level
18592 Specify the level of the Hald CLUT, only available in the @code{haldclutsrc}
18593 source. A level of @code{N} generates a picture of @code{N*N*N} by @code{N*N*N}
18594 pixels to be used as identity matrix for 3D lookup tables. Each component is
18595 coded on a @code{1/(N*N)} scale.
18596
18597 @item color, c
18598 Specify the color of the source, only available in the @code{color}
18599 source. For the syntax of this option, check the
18600 @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
18601
18602 @item size, s
18603 Specify the size of the sourced video. For the syntax of this option, check the
18604 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
18605 The default value is @code{320x240}.
18606
18607 This option is not available with the @code{allrgb}, @code{allyuv}, and
18608 @code{haldclutsrc} filters.
18609
18610 @item rate, r
18611 Specify the frame rate of the sourced video, as the number of frames
18612 generated per second. It has to be a string in the format
18613 @var{frame_rate_num}/@var{frame_rate_den}, an integer number, a floating point
18614 number or a valid video frame rate abbreviation. The default value is
18615 "25".
18616
18617 @item duration, d
18618 Set the duration of the sourced video. See
18619 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
18620 for the accepted syntax.
18621
18622 If not specified, or the expressed duration is negative, the video is
18623 supposed to be generated forever.
18624
18625 @item sar
18626 Set the sample aspect ratio of the sourced video.
18627
18628 @item alpha
18629 Specify the alpha (opacity) of the background, only available in the
18630 @code{testsrc2} source. The value must be between 0 (fully transparent) and
18631 255 (fully opaque, the default).
18632
18633 @item decimals, n
18634 Set the number of decimals to show in the timestamp, only available in the
18635 @code{testsrc} source.
18636
18637 The displayed timestamp value will correspond to the original
18638 timestamp value multiplied by the power of 10 of the specified
18639 value. Default value is 0.
18640 @end table
18641
18642 @subsection Examples
18643
18644 @itemize
18645 @item
18646 Generate a video with a duration of 5.3 seconds, with size
18647 176x144 and a frame rate of 10 frames per second:
18648 @example
18649 testsrc=duration=5.3:size=qcif:rate=10
18650 @end example
18651
18652 @item
18653 The following graph description will generate a red source
18654 with an opacity of 0.2, with size "qcif" and a frame rate of 10
18655 frames per second:
18656 @example
18657 color=c=red@@0.2:s=qcif:r=10
18658 @end example
18659
18660 @item
18661 If the input content is to be ignored, @code{nullsrc} can be used. The
18662 following command generates noise in the luminance plane by employing
18663 the @code{geq} filter:
18664 @example
18665 nullsrc=s=256x256, geq=random(1)*255:128:128
18666 @end example
18667 @end itemize
18668
18669 @subsection Commands
18670
18671 The @code{color} source supports the following commands:
18672
18673 @table @option
18674 @item c, color
18675 Set the color of the created image. Accepts the same syntax of the
18676 corresponding @option{color} option.
18677 @end table
18678
18679 @section openclsrc
18680
18681 Generate video using an OpenCL program.
18682
18683 @table @option
18684
18685 @item source
18686 OpenCL program source file.
18687
18688 @item kernel
18689 Kernel name in program.
18690
18691 @item size, s
18692 Size of frames to generate.  This must be set.
18693
18694 @item format
18695 Pixel format to use for the generated frames.  This must be set.
18696
18697 @item rate, r
18698 Number of frames generated every second.  Default value is '25'.
18699
18700 @end table
18701
18702 For details of how the program loading works, see the @ref{program_opencl}
18703 filter.
18704
18705 Example programs:
18706
18707 @itemize
18708 @item
18709 Generate a colour ramp by setting pixel values from the position of the pixel
18710 in the output image.  (Note that this will work with all pixel formats, but
18711 the generated output will not be the same.)
18712 @verbatim
18713 __kernel void ramp(__write_only image2d_t dst,
18714                    unsigned int index)
18715 {
18716     int2 loc = (int2)(get_global_id(0), get_global_id(1));
18717
18718     float4 val;
18719     val.xy = val.zw = convert_float2(loc) / convert_float2(get_image_dim(dst));
18720
18721     write_imagef(dst, loc, val);
18722 }
18723 @end verbatim
18724
18725 @item
18726 Generate a Sierpinski carpet pattern, panning by a single pixel each frame.
18727 @verbatim
18728 __kernel void sierpinski_carpet(__write_only image2d_t dst,
18729                                 unsigned int index)
18730 {
18731     int2 loc = (int2)(get_global_id(0), get_global_id(1));
18732
18733     float4 value = 0.0f;
18734     int x = loc.x + index;
18735     int y = loc.y + index;
18736     while (x > 0 || y > 0) {
18737         if (x % 3 == 1 && y % 3 == 1) {
18738             value = 1.0f;
18739             break;
18740         }
18741         x /= 3;
18742         y /= 3;
18743     }
18744
18745     write_imagef(dst, loc, value);
18746 }
18747 @end verbatim
18748
18749 @end itemize
18750
18751 @c man end VIDEO SOURCES
18752
18753 @chapter Video Sinks
18754 @c man begin VIDEO SINKS
18755
18756 Below is a description of the currently available video sinks.
18757
18758 @section buffersink
18759
18760 Buffer video frames, and make them available to the end of the filter
18761 graph.
18762
18763 This sink is mainly intended for programmatic use, in particular
18764 through the interface defined in @file{libavfilter/buffersink.h}
18765 or the options system.
18766
18767 It accepts a pointer to an AVBufferSinkContext structure, which
18768 defines the incoming buffers' formats, to be passed as the opaque
18769 parameter to @code{avfilter_init_filter} for initialization.
18770
18771 @section nullsink
18772
18773 Null video sink: do absolutely nothing with the input video. It is
18774 mainly useful as a template and for use in analysis / debugging
18775 tools.
18776
18777 @c man end VIDEO SINKS
18778
18779 @chapter Multimedia Filters
18780 @c man begin MULTIMEDIA FILTERS
18781
18782 Below is a description of the currently available multimedia filters.
18783
18784 @section abitscope
18785
18786 Convert input audio to a video output, displaying the audio bit scope.
18787
18788 The filter accepts the following options:
18789
18790 @table @option
18791 @item rate, r
18792 Set frame rate, expressed as number of frames per second. Default
18793 value is "25".
18794
18795 @item size, s
18796 Specify the video size for the output. For the syntax of this option, check the
18797 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
18798 Default value is @code{1024x256}.
18799
18800 @item colors
18801 Specify list of colors separated by space or by '|' which will be used to
18802 draw channels. Unrecognized or missing colors will be replaced
18803 by white color.
18804 @end table
18805
18806 @section ahistogram
18807
18808 Convert input audio to a video output, displaying the volume histogram.
18809
18810 The filter accepts the following options:
18811
18812 @table @option
18813 @item dmode
18814 Specify how histogram is calculated.
18815
18816 It accepts the following values:
18817 @table @samp
18818 @item single
18819 Use single histogram for all channels.
18820 @item separate
18821 Use separate histogram for each channel.
18822 @end table
18823 Default is @code{single}.
18824
18825 @item rate, r
18826 Set frame rate, expressed as number of frames per second. Default
18827 value is "25".
18828
18829 @item size, s
18830 Specify the video size for the output. For the syntax of this option, check the
18831 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
18832 Default value is @code{hd720}.
18833
18834 @item scale
18835 Set display scale.
18836
18837 It accepts the following values:
18838 @table @samp
18839 @item log
18840 logarithmic
18841 @item sqrt
18842 square root
18843 @item cbrt
18844 cubic root
18845 @item lin
18846 linear
18847 @item rlog
18848 reverse logarithmic
18849 @end table
18850 Default is @code{log}.
18851
18852 @item ascale
18853 Set amplitude scale.
18854
18855 It accepts the following values:
18856 @table @samp
18857 @item log
18858 logarithmic
18859 @item lin
18860 linear
18861 @end table
18862 Default is @code{log}.
18863
18864 @item acount
18865 Set how much frames to accumulate in histogram.
18866 Defauls is 1. Setting this to -1 accumulates all frames.
18867
18868 @item rheight
18869 Set histogram ratio of window height.
18870
18871 @item slide
18872 Set sonogram sliding.
18873
18874 It accepts the following values:
18875 @table @samp
18876 @item replace
18877 replace old rows with new ones.
18878 @item scroll
18879 scroll from top to bottom.
18880 @end table
18881 Default is @code{replace}.
18882 @end table
18883
18884 @section aphasemeter
18885
18886 Measures phase of input audio, which is exported as metadata @code{lavfi.aphasemeter.phase},
18887 representing mean phase of current audio frame. A video output can also be produced and is
18888 enabled by default. The audio is passed through as first output.
18889
18890 Audio will be rematrixed to stereo if it has a different channel layout. Phase value is in
18891 range @code{[-1, 1]} where @code{-1} means left and right channels are completely out of phase
18892 and @code{1} means channels are in phase.
18893
18894 The filter accepts the following options, all related to its video output:
18895
18896 @table @option
18897 @item rate, r
18898 Set the output frame rate. Default value is @code{25}.
18899
18900 @item size, s
18901 Set the video size for the output. For the syntax of this option, check the
18902 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
18903 Default value is @code{800x400}.
18904
18905 @item rc
18906 @item gc
18907 @item bc
18908 Specify the red, green, blue contrast. Default values are @code{2},
18909 @code{7} and @code{1}.
18910 Allowed range is @code{[0, 255]}.
18911
18912 @item mpc
18913 Set color which will be used for drawing median phase. If color is
18914 @code{none} which is default, no median phase value will be drawn.
18915
18916 @item video
18917 Enable video output. Default is enabled.
18918 @end table
18919
18920 @section avectorscope
18921
18922 Convert input audio to a video output, representing the audio vector
18923 scope.
18924
18925 The filter is used to measure the difference between channels of stereo
18926 audio stream. A monoaural signal, consisting of identical left and right
18927 signal, results in straight vertical line. Any stereo separation is visible
18928 as a deviation from this line, creating a Lissajous figure.
18929 If the straight (or deviation from it) but horizontal line appears this
18930 indicates that the left and right channels are out of phase.
18931
18932 The filter accepts the following options:
18933
18934 @table @option
18935 @item mode, m
18936 Set the vectorscope mode.
18937
18938 Available values are:
18939 @table @samp
18940 @item lissajous
18941 Lissajous rotated by 45 degrees.
18942
18943 @item lissajous_xy
18944 Same as above but not rotated.
18945
18946 @item polar
18947 Shape resembling half of circle.
18948 @end table
18949
18950 Default value is @samp{lissajous}.
18951
18952 @item size, s
18953 Set the video size for the output. For the syntax of this option, check the
18954 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
18955 Default value is @code{400x400}.
18956
18957 @item rate, r
18958 Set the output frame rate. Default value is @code{25}.
18959
18960 @item rc
18961 @item gc
18962 @item bc
18963 @item ac
18964 Specify the red, green, blue and alpha contrast. Default values are @code{40},
18965 @code{160}, @code{80} and @code{255}.
18966 Allowed range is @code{[0, 255]}.
18967
18968 @item rf
18969 @item gf
18970 @item bf
18971 @item af
18972 Specify the red, green, blue and alpha fade. Default values are @code{15},
18973 @code{10}, @code{5} and @code{5}.
18974 Allowed range is @code{[0, 255]}.
18975
18976 @item zoom
18977 Set the zoom factor. Default value is @code{1}. Allowed range is @code{[0, 10]}.
18978 Values lower than @var{1} will auto adjust zoom factor to maximal possible value.
18979
18980 @item draw
18981 Set the vectorscope drawing mode.
18982
18983 Available values are:
18984 @table @samp
18985 @item dot
18986 Draw dot for each sample.
18987
18988 @item line
18989 Draw line between previous and current sample.
18990 @end table
18991
18992 Default value is @samp{dot}.
18993
18994 @item scale
18995 Specify amplitude scale of audio samples.
18996
18997 Available values are:
18998 @table @samp
18999 @item lin
19000 Linear.
19001
19002 @item sqrt
19003 Square root.
19004
19005 @item cbrt
19006 Cubic root.
19007
19008 @item log
19009 Logarithmic.
19010 @end table
19011
19012 @item swap
19013 Swap left channel axis with right channel axis.
19014
19015 @item mirror
19016 Mirror axis.
19017
19018 @table @samp
19019 @item none
19020 No mirror.
19021
19022 @item x
19023 Mirror only x axis.
19024
19025 @item y
19026 Mirror only y axis.
19027
19028 @item xy
19029 Mirror both axis.
19030 @end table
19031
19032 @end table
19033
19034 @subsection Examples
19035
19036 @itemize
19037 @item
19038 Complete example using @command{ffplay}:
19039 @example
19040 ffplay -f lavfi 'amovie=input.mp3, asplit [a][out1];
19041              [a] avectorscope=zoom=1.3:rc=2:gc=200:bc=10:rf=1:gf=8:bf=7 [out0]'
19042 @end example
19043 @end itemize
19044
19045 @section bench, abench
19046
19047 Benchmark part of a filtergraph.
19048
19049 The filter accepts the following options:
19050
19051 @table @option
19052 @item action
19053 Start or stop a timer.
19054
19055 Available values are:
19056 @table @samp
19057 @item start
19058 Get the current time, set it as frame metadata (using the key
19059 @code{lavfi.bench.start_time}), and forward the frame to the next filter.
19060
19061 @item stop
19062 Get the current time and fetch the @code{lavfi.bench.start_time} metadata from
19063 the input frame metadata to get the time difference. Time difference, average,
19064 maximum and minimum time (respectively @code{t}, @code{avg}, @code{max} and
19065 @code{min}) are then printed. The timestamps are expressed in seconds.
19066 @end table
19067 @end table
19068
19069 @subsection Examples
19070
19071 @itemize
19072 @item
19073 Benchmark @ref{selectivecolor} filter:
19074 @example
19075 bench=start,selectivecolor=reds=-.2 .12 -.49,bench=stop
19076 @end example
19077 @end itemize
19078
19079 @section concat
19080
19081 Concatenate audio and video streams, joining them together one after the
19082 other.
19083
19084 The filter works on segments of synchronized video and audio streams. All
19085 segments must have the same number of streams of each type, and that will
19086 also be the number of streams at output.
19087
19088 The filter accepts the following options:
19089
19090 @table @option
19091
19092 @item n
19093 Set the number of segments. Default is 2.
19094
19095 @item v
19096 Set the number of output video streams, that is also the number of video
19097 streams in each segment. Default is 1.
19098
19099 @item a
19100 Set the number of output audio streams, that is also the number of audio
19101 streams in each segment. Default is 0.
19102
19103 @item unsafe
19104 Activate unsafe mode: do not fail if segments have a different format.
19105
19106 @end table
19107
19108 The filter has @var{v}+@var{a} outputs: first @var{v} video outputs, then
19109 @var{a} audio outputs.
19110
19111 There are @var{n}x(@var{v}+@var{a}) inputs: first the inputs for the first
19112 segment, in the same order as the outputs, then the inputs for the second
19113 segment, etc.
19114
19115 Related streams do not always have exactly the same duration, for various
19116 reasons including codec frame size or sloppy authoring. For that reason,
19117 related synchronized streams (e.g. a video and its audio track) should be
19118 concatenated at once. The concat filter will use the duration of the longest
19119 stream in each segment (except the last one), and if necessary pad shorter
19120 audio streams with silence.
19121
19122 For this filter to work correctly, all segments must start at timestamp 0.
19123
19124 All corresponding streams must have the same parameters in all segments; the
19125 filtering system will automatically select a common pixel format for video
19126 streams, and a common sample format, sample rate and channel layout for
19127 audio streams, but other settings, such as resolution, must be converted
19128 explicitly by the user.
19129
19130 Different frame rates are acceptable but will result in variable frame rate
19131 at output; be sure to configure the output file to handle it.
19132
19133 @subsection Examples
19134
19135 @itemize
19136 @item
19137 Concatenate an opening, an episode and an ending, all in bilingual version
19138 (video in stream 0, audio in streams 1 and 2):
19139 @example
19140 ffmpeg -i opening.mkv -i episode.mkv -i ending.mkv -filter_complex \
19141   '[0:0] [0:1] [0:2] [1:0] [1:1] [1:2] [2:0] [2:1] [2:2]
19142    concat=n=3:v=1:a=2 [v] [a1] [a2]' \
19143   -map '[v]' -map '[a1]' -map '[a2]' output.mkv
19144 @end example
19145
19146 @item
19147 Concatenate two parts, handling audio and video separately, using the
19148 (a)movie sources, and adjusting the resolution:
19149 @example
19150 movie=part1.mp4, scale=512:288 [v1] ; amovie=part1.mp4 [a1] ;
19151 movie=part2.mp4, scale=512:288 [v2] ; amovie=part2.mp4 [a2] ;
19152 [v1] [v2] concat [outv] ; [a1] [a2] concat=v=0:a=1 [outa]
19153 @end example
19154 Note that a desync will happen at the stitch if the audio and video streams
19155 do not have exactly the same duration in the first file.
19156
19157 @end itemize
19158
19159 @subsection Commands
19160
19161 This filter supports the following commands:
19162 @table @option
19163 @item next
19164 Close the current segment and step to the next one
19165 @end table
19166
19167 @section drawgraph, adrawgraph
19168
19169 Draw a graph using input video or audio metadata.
19170
19171 It accepts the following parameters:
19172
19173 @table @option
19174 @item m1
19175 Set 1st frame metadata key from which metadata values will be used to draw a graph.
19176
19177 @item fg1
19178 Set 1st foreground color expression.
19179
19180 @item m2
19181 Set 2nd frame metadata key from which metadata values will be used to draw a graph.
19182
19183 @item fg2
19184 Set 2nd foreground color expression.
19185
19186 @item m3
19187 Set 3rd frame metadata key from which metadata values will be used to draw a graph.
19188
19189 @item fg3
19190 Set 3rd foreground color expression.
19191
19192 @item m4
19193 Set 4th frame metadata key from which metadata values will be used to draw a graph.
19194
19195 @item fg4
19196 Set 4th foreground color expression.
19197
19198 @item min
19199 Set minimal value of metadata value.
19200
19201 @item max
19202 Set maximal value of metadata value.
19203
19204 @item bg
19205 Set graph background color. Default is white.
19206
19207 @item mode
19208 Set graph mode.
19209
19210 Available values for mode is:
19211 @table @samp
19212 @item bar
19213 @item dot
19214 @item line
19215 @end table
19216
19217 Default is @code{line}.
19218
19219 @item slide
19220 Set slide mode.
19221
19222 Available values for slide is:
19223 @table @samp
19224 @item frame
19225 Draw new frame when right border is reached.
19226
19227 @item replace
19228 Replace old columns with new ones.
19229
19230 @item scroll
19231 Scroll from right to left.
19232
19233 @item rscroll
19234 Scroll from left to right.
19235
19236 @item picture
19237 Draw single picture.
19238 @end table
19239
19240 Default is @code{frame}.
19241
19242 @item size
19243 Set size of graph video. For the syntax of this option, check the
19244 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
19245 The default value is @code{900x256}.
19246
19247 The foreground color expressions can use the following variables:
19248 @table @option
19249 @item MIN
19250 Minimal value of metadata value.
19251
19252 @item MAX
19253 Maximal value of metadata value.
19254
19255 @item VAL
19256 Current metadata key value.
19257 @end table
19258
19259 The color is defined as 0xAABBGGRR.
19260 @end table
19261
19262 Example using metadata from @ref{signalstats} filter:
19263 @example
19264 signalstats,drawgraph=lavfi.signalstats.YAVG:min=0:max=255
19265 @end example
19266
19267 Example using metadata from @ref{ebur128} filter:
19268 @example
19269 ebur128=metadata=1,adrawgraph=lavfi.r128.M:min=-120:max=5
19270 @end example
19271
19272 @anchor{ebur128}
19273 @section ebur128
19274
19275 EBU R128 scanner filter. This filter takes an audio stream as input and outputs
19276 it unchanged. By default, it logs a message at a frequency of 10Hz with the
19277 Momentary loudness (identified by @code{M}), Short-term loudness (@code{S}),
19278 Integrated loudness (@code{I}) and Loudness Range (@code{LRA}).
19279
19280 The filter also has a video output (see the @var{video} option) with a real
19281 time graph to observe the loudness evolution. The graphic contains the logged
19282 message mentioned above, so it is not printed anymore when this option is set,
19283 unless the verbose logging is set. The main graphing area contains the
19284 short-term loudness (3 seconds of analysis), and the gauge on the right is for
19285 the momentary loudness (400 milliseconds), but can optionally be configured
19286 to instead display short-term loudness (see @var{gauge}).
19287
19288 The green area marks a  +/- 1LU target range around the target loudness
19289 (-23LUFS by default, unless modified through @var{target}).
19290
19291 More information about the Loudness Recommendation EBU R128 on
19292 @url{http://tech.ebu.ch/loudness}.
19293
19294 The filter accepts the following options:
19295
19296 @table @option
19297
19298 @item video
19299 Activate the video output. The audio stream is passed unchanged whether this
19300 option is set or no. The video stream will be the first output stream if
19301 activated. Default is @code{0}.
19302
19303 @item size
19304 Set the video size. This option is for video only. For the syntax of this
19305 option, check the
19306 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
19307 Default and minimum resolution is @code{640x480}.
19308
19309 @item meter
19310 Set the EBU scale meter. Default is @code{9}. Common values are @code{9} and
19311 @code{18}, respectively for EBU scale meter +9 and EBU scale meter +18. Any
19312 other integer value between this range is allowed.
19313
19314 @item metadata
19315 Set metadata injection. If set to @code{1}, the audio input will be segmented
19316 into 100ms output frames, each of them containing various loudness information
19317 in metadata.  All the metadata keys are prefixed with @code{lavfi.r128.}.
19318
19319 Default is @code{0}.
19320
19321 @item framelog
19322 Force the frame logging level.
19323
19324 Available values are:
19325 @table @samp
19326 @item info
19327 information logging level
19328 @item verbose
19329 verbose logging level
19330 @end table
19331
19332 By default, the logging level is set to @var{info}. If the @option{video} or
19333 the @option{metadata} options are set, it switches to @var{verbose}.
19334
19335 @item peak
19336 Set peak mode(s).
19337
19338 Available modes can be cumulated (the option is a @code{flag} type). Possible
19339 values are:
19340 @table @samp
19341 @item none
19342 Disable any peak mode (default).
19343 @item sample
19344 Enable sample-peak mode.
19345
19346 Simple peak mode looking for the higher sample value. It logs a message
19347 for sample-peak (identified by @code{SPK}).
19348 @item true
19349 Enable true-peak mode.
19350
19351 If enabled, the peak lookup is done on an over-sampled version of the input
19352 stream for better peak accuracy. It logs a message for true-peak.
19353 (identified by @code{TPK}) and true-peak per frame (identified by @code{FTPK}).
19354 This mode requires a build with @code{libswresample}.
19355 @end table
19356
19357 @item dualmono
19358 Treat mono input files as "dual mono". If a mono file is intended for playback
19359 on a stereo system, its EBU R128 measurement will be perceptually incorrect.
19360 If set to @code{true}, this option will compensate for this effect.
19361 Multi-channel input files are not affected by this option.
19362
19363 @item panlaw
19364 Set a specific pan law to be used for the measurement of dual mono files.
19365 This parameter is optional, and has a default value of -3.01dB.
19366
19367 @item target
19368 Set a specific target level (in LUFS) used as relative zero in the visualization.
19369 This parameter is optional and has a default value of -23LUFS as specified
19370 by EBU R128. However, material published online may prefer a level of -16LUFS
19371 (e.g. for use with podcasts or video platforms).
19372
19373 @item gauge
19374 Set the value displayed by the gauge. Valid values are @code{momentary} and s
19375 @code{shortterm}. By default the momentary value will be used, but in certain
19376 scenarios it may be more useful to observe the short term value instead (e.g.
19377 live mixing).
19378
19379 @item scale
19380 Sets the display scale for the loudness. Valid parameters are @code{absolute}
19381 (in LUFS) or @code{relative} (LU) relative to the target. This only affects the
19382 video output, not the summary or continuous log output.
19383 @end table
19384
19385 @subsection Examples
19386
19387 @itemize
19388 @item
19389 Real-time graph using @command{ffplay}, with a EBU scale meter +18:
19390 @example
19391 ffplay -f lavfi -i "amovie=input.mp3,ebur128=video=1:meter=18 [out0][out1]"
19392 @end example
19393
19394 @item
19395 Run an analysis with @command{ffmpeg}:
19396 @example
19397 ffmpeg -nostats -i input.mp3 -filter_complex ebur128 -f null -
19398 @end example
19399 @end itemize
19400
19401 @section interleave, ainterleave
19402
19403 Temporally interleave frames from several inputs.
19404
19405 @code{interleave} works with video inputs, @code{ainterleave} with audio.
19406
19407 These filters read frames from several inputs and send the oldest
19408 queued frame to the output.
19409
19410 Input streams must have well defined, monotonically increasing frame
19411 timestamp values.
19412
19413 In order to submit one frame to output, these filters need to enqueue
19414 at least one frame for each input, so they cannot work in case one
19415 input is not yet terminated and will not receive incoming frames.
19416
19417 For example consider the case when one input is a @code{select} filter
19418 which always drops input frames. The @code{interleave} filter will keep
19419 reading from that input, but it will never be able to send new frames
19420 to output until the input sends an end-of-stream signal.
19421
19422 Also, depending on inputs synchronization, the filters will drop
19423 frames in case one input receives more frames than the other ones, and
19424 the queue is already filled.
19425
19426 These filters accept the following options:
19427
19428 @table @option
19429 @item nb_inputs, n
19430 Set the number of different inputs, it is 2 by default.
19431 @end table
19432
19433 @subsection Examples
19434
19435 @itemize
19436 @item
19437 Interleave frames belonging to different streams using @command{ffmpeg}:
19438 @example
19439 ffmpeg -i bambi.avi -i pr0n.mkv -filter_complex "[0:v][1:v] interleave" out.avi
19440 @end example
19441
19442 @item
19443 Add flickering blur effect:
19444 @example
19445 select='if(gt(random(0), 0.2), 1, 2)':n=2 [tmp], boxblur=2:2, [tmp] interleave
19446 @end example
19447 @end itemize
19448
19449 @section metadata, ametadata
19450
19451 Manipulate frame metadata.
19452
19453 This filter accepts the following options:
19454
19455 @table @option
19456 @item mode
19457 Set mode of operation of the filter.
19458
19459 Can be one of the following:
19460
19461 @table @samp
19462 @item select
19463 If both @code{value} and @code{key} is set, select frames
19464 which have such metadata. If only @code{key} is set, select
19465 every frame that has such key in metadata.
19466
19467 @item add
19468 Add new metadata @code{key} and @code{value}. If key is already available
19469 do nothing.
19470
19471 @item modify
19472 Modify value of already present key.
19473
19474 @item delete
19475 If @code{value} is set, delete only keys that have such value.
19476 Otherwise, delete key. If @code{key} is not set, delete all metadata values in
19477 the frame.
19478
19479 @item print
19480 Print key and its value if metadata was found. If @code{key} is not set print all
19481 metadata values available in frame.
19482 @end table
19483
19484 @item key
19485 Set key used with all modes. Must be set for all modes except @code{print} and @code{delete}.
19486
19487 @item value
19488 Set metadata value which will be used. This option is mandatory for
19489 @code{modify} and @code{add} mode.
19490
19491 @item function
19492 Which function to use when comparing metadata value and @code{value}.
19493
19494 Can be one of following:
19495
19496 @table @samp
19497 @item same_str
19498 Values are interpreted as strings, returns true if metadata value is same as @code{value}.
19499
19500 @item starts_with
19501 Values are interpreted as strings, returns true if metadata value starts with
19502 the @code{value} option string.
19503
19504 @item less
19505 Values are interpreted as floats, returns true if metadata value is less than @code{value}.
19506
19507 @item equal
19508 Values are interpreted as floats, returns true if @code{value} is equal with metadata value.
19509
19510 @item greater
19511 Values are interpreted as floats, returns true if metadata value is greater than @code{value}.
19512
19513 @item expr
19514 Values are interpreted as floats, returns true if expression from option @code{expr}
19515 evaluates to true.
19516 @end table
19517
19518 @item expr
19519 Set expression which is used when @code{function} is set to @code{expr}.
19520 The expression is evaluated through the eval API and can contain the following
19521 constants:
19522
19523 @table @option
19524 @item VALUE1
19525 Float representation of @code{value} from metadata key.
19526
19527 @item VALUE2
19528 Float representation of @code{value} as supplied by user in @code{value} option.
19529 @end table
19530
19531 @item file
19532 If specified in @code{print} mode, output is written to the named file. Instead of
19533 plain filename any writable url can be specified. Filename ``-'' is a shorthand
19534 for standard output. If @code{file} option is not set, output is written to the log
19535 with AV_LOG_INFO loglevel.
19536
19537 @end table
19538
19539 @subsection Examples
19540
19541 @itemize
19542 @item
19543 Print all metadata values for frames with key @code{lavfi.signalstats.YDIF} with values
19544 between 0 and 1.
19545 @example
19546 signalstats,metadata=print:key=lavfi.signalstats.YDIF:value=0:function=expr:expr='between(VALUE1,0,1)'
19547 @end example
19548 @item
19549 Print silencedetect output to file @file{metadata.txt}.
19550 @example
19551 silencedetect,ametadata=mode=print:file=metadata.txt
19552 @end example
19553 @item
19554 Direct all metadata to a pipe with file descriptor 4.
19555 @example
19556 metadata=mode=print:file='pipe\:4'
19557 @end example
19558 @end itemize
19559
19560 @section perms, aperms
19561
19562 Set read/write permissions for the output frames.
19563
19564 These filters are mainly aimed at developers to test direct path in the
19565 following filter in the filtergraph.
19566
19567 The filters accept the following options:
19568
19569 @table @option
19570 @item mode
19571 Select the permissions mode.
19572
19573 It accepts the following values:
19574 @table @samp
19575 @item none
19576 Do nothing. This is the default.
19577 @item ro
19578 Set all the output frames read-only.
19579 @item rw
19580 Set all the output frames directly writable.
19581 @item toggle
19582 Make the frame read-only if writable, and writable if read-only.
19583 @item random
19584 Set each output frame read-only or writable randomly.
19585 @end table
19586
19587 @item seed
19588 Set the seed for the @var{random} mode, must be an integer included between
19589 @code{0} and @code{UINT32_MAX}. If not specified, or if explicitly set to
19590 @code{-1}, the filter will try to use a good random seed on a best effort
19591 basis.
19592 @end table
19593
19594 Note: in case of auto-inserted filter between the permission filter and the
19595 following one, the permission might not be received as expected in that
19596 following filter. Inserting a @ref{format} or @ref{aformat} filter before the
19597 perms/aperms filter can avoid this problem.
19598
19599 @section realtime, arealtime
19600
19601 Slow down filtering to match real time approximately.
19602
19603 These filters will pause the filtering for a variable amount of time to
19604 match the output rate with the input timestamps.
19605 They are similar to the @option{re} option to @code{ffmpeg}.
19606
19607 They accept the following options:
19608
19609 @table @option
19610 @item limit
19611 Time limit for the pauses. Any pause longer than that will be considered
19612 a timestamp discontinuity and reset the timer. Default is 2 seconds.
19613 @end table
19614
19615 @anchor{select}
19616 @section select, aselect
19617
19618 Select frames to pass in output.
19619
19620 This filter accepts the following options:
19621
19622 @table @option
19623
19624 @item expr, e
19625 Set expression, which is evaluated for each input frame.
19626
19627 If the expression is evaluated to zero, the frame is discarded.
19628
19629 If the evaluation result is negative or NaN, the frame is sent to the
19630 first output; otherwise it is sent to the output with index
19631 @code{ceil(val)-1}, assuming that the input index starts from 0.
19632
19633 For example a value of @code{1.2} corresponds to the output with index
19634 @code{ceil(1.2)-1 = 2-1 = 1}, that is the second output.
19635
19636 @item outputs, n
19637 Set the number of outputs. The output to which to send the selected
19638 frame is based on the result of the evaluation. Default value is 1.
19639 @end table
19640
19641 The expression can contain the following constants:
19642
19643 @table @option
19644 @item n
19645 The (sequential) number of the filtered frame, starting from 0.
19646
19647 @item selected_n
19648 The (sequential) number of the selected frame, starting from 0.
19649
19650 @item prev_selected_n
19651 The sequential number of the last selected frame. It's NAN if undefined.
19652
19653 @item TB
19654 The timebase of the input timestamps.
19655
19656 @item pts
19657 The PTS (Presentation TimeStamp) of the filtered video frame,
19658 expressed in @var{TB} units. It's NAN if undefined.
19659
19660 @item t
19661 The PTS of the filtered video frame,
19662 expressed in seconds. It's NAN if undefined.
19663
19664 @item prev_pts
19665 The PTS of the previously filtered video frame. It's NAN if undefined.
19666
19667 @item prev_selected_pts
19668 The PTS of the last previously filtered video frame. It's NAN if undefined.
19669
19670 @item prev_selected_t
19671 The PTS of the last previously selected video frame, expressed in seconds. It's NAN if undefined.
19672
19673 @item start_pts
19674 The PTS of the first video frame in the video. It's NAN if undefined.
19675
19676 @item start_t
19677 The time of the first video frame in the video. It's NAN if undefined.
19678
19679 @item pict_type @emph{(video only)}
19680 The type of the filtered frame. It can assume one of the following
19681 values:
19682 @table @option
19683 @item I
19684 @item P
19685 @item B
19686 @item S
19687 @item SI
19688 @item SP
19689 @item BI
19690 @end table
19691
19692 @item interlace_type @emph{(video only)}
19693 The frame interlace type. It can assume one of the following values:
19694 @table @option
19695 @item PROGRESSIVE
19696 The frame is progressive (not interlaced).
19697 @item TOPFIRST
19698 The frame is top-field-first.
19699 @item BOTTOMFIRST
19700 The frame is bottom-field-first.
19701 @end table
19702
19703 @item consumed_sample_n @emph{(audio only)}
19704 the number of selected samples before the current frame
19705
19706 @item samples_n @emph{(audio only)}
19707 the number of samples in the current frame
19708
19709 @item sample_rate @emph{(audio only)}
19710 the input sample rate
19711
19712 @item key
19713 This is 1 if the filtered frame is a key-frame, 0 otherwise.
19714
19715 @item pos
19716 the position in the file of the filtered frame, -1 if the information
19717 is not available (e.g. for synthetic video)
19718
19719 @item scene @emph{(video only)}
19720 value between 0 and 1 to indicate a new scene; a low value reflects a low
19721 probability for the current frame to introduce a new scene, while a higher
19722 value means the current frame is more likely to be one (see the example below)
19723
19724 @item concatdec_select
19725 The concat demuxer can select only part of a concat input file by setting an
19726 inpoint and an outpoint, but the output packets may not be entirely contained
19727 in the selected interval. By using this variable, it is possible to skip frames
19728 generated by the concat demuxer which are not exactly contained in the selected
19729 interval.
19730
19731 This works by comparing the frame pts against the @var{lavf.concat.start_time}
19732 and the @var{lavf.concat.duration} packet metadata values which are also
19733 present in the decoded frames.
19734
19735 The @var{concatdec_select} variable is -1 if the frame pts is at least
19736 start_time and either the duration metadata is missing or the frame pts is less
19737 than start_time + duration, 0 otherwise, and NaN if the start_time metadata is
19738 missing.
19739
19740 That basically means that an input frame is selected if its pts is within the
19741 interval set by the concat demuxer.
19742
19743 @end table
19744
19745 The default value of the select expression is "1".
19746
19747 @subsection Examples
19748
19749 @itemize
19750 @item
19751 Select all frames in input:
19752 @example
19753 select
19754 @end example
19755
19756 The example above is the same as:
19757 @example
19758 select=1
19759 @end example
19760
19761 @item
19762 Skip all frames:
19763 @example
19764 select=0
19765 @end example
19766
19767 @item
19768 Select only I-frames:
19769 @example
19770 select='eq(pict_type\,I)'
19771 @end example
19772
19773 @item
19774 Select one frame every 100:
19775 @example
19776 select='not(mod(n\,100))'
19777 @end example
19778
19779 @item
19780 Select only frames contained in the 10-20 time interval:
19781 @example
19782 select=between(t\,10\,20)
19783 @end example
19784
19785 @item
19786 Select only I-frames contained in the 10-20 time interval:
19787 @example
19788 select=between(t\,10\,20)*eq(pict_type\,I)
19789 @end example
19790
19791 @item
19792 Select frames with a minimum distance of 10 seconds:
19793 @example
19794 select='isnan(prev_selected_t)+gte(t-prev_selected_t\,10)'
19795 @end example
19796
19797 @item
19798 Use aselect to select only audio frames with samples number > 100:
19799 @example
19800 aselect='gt(samples_n\,100)'
19801 @end example
19802
19803 @item
19804 Create a mosaic of the first scenes:
19805 @example
19806 ffmpeg -i video.avi -vf select='gt(scene\,0.4)',scale=160:120,tile -frames:v 1 preview.png
19807 @end example
19808
19809 Comparing @var{scene} against a value between 0.3 and 0.5 is generally a sane
19810 choice.
19811
19812 @item
19813 Send even and odd frames to separate outputs, and compose them:
19814 @example
19815 select=n=2:e='mod(n, 2)+1' [odd][even]; [odd] pad=h=2*ih [tmp]; [tmp][even] overlay=y=h
19816 @end example
19817
19818 @item
19819 Select useful frames from an ffconcat file which is using inpoints and
19820 outpoints but where the source files are not intra frame only.
19821 @example
19822 ffmpeg -copyts -vsync 0 -segment_time_metadata 1 -i input.ffconcat -vf select=concatdec_select -af aselect=concatdec_select output.avi
19823 @end example
19824 @end itemize
19825
19826 @section sendcmd, asendcmd
19827
19828 Send commands to filters in the filtergraph.
19829
19830 These filters read commands to be sent to other filters in the
19831 filtergraph.
19832
19833 @code{sendcmd} must be inserted between two video filters,
19834 @code{asendcmd} must be inserted between two audio filters, but apart
19835 from that they act the same way.
19836
19837 The specification of commands can be provided in the filter arguments
19838 with the @var{commands} option, or in a file specified by the
19839 @var{filename} option.
19840
19841 These filters accept the following options:
19842 @table @option
19843 @item commands, c
19844 Set the commands to be read and sent to the other filters.
19845 @item filename, f
19846 Set the filename of the commands to be read and sent to the other
19847 filters.
19848 @end table
19849
19850 @subsection Commands syntax
19851
19852 A commands description consists of a sequence of interval
19853 specifications, comprising a list of commands to be executed when a
19854 particular event related to that interval occurs. The occurring event
19855 is typically the current frame time entering or leaving a given time
19856 interval.
19857
19858 An interval is specified by the following syntax:
19859 @example
19860 @var{START}[-@var{END}] @var{COMMANDS};
19861 @end example
19862
19863 The time interval is specified by the @var{START} and @var{END} times.
19864 @var{END} is optional and defaults to the maximum time.
19865
19866 The current frame time is considered within the specified interval if
19867 it is included in the interval [@var{START}, @var{END}), that is when
19868 the time is greater or equal to @var{START} and is lesser than
19869 @var{END}.
19870
19871 @var{COMMANDS} consists of a sequence of one or more command
19872 specifications, separated by ",", relating to that interval.  The
19873 syntax of a command specification is given by:
19874 @example
19875 [@var{FLAGS}] @var{TARGET} @var{COMMAND} @var{ARG}
19876 @end example
19877
19878 @var{FLAGS} is optional and specifies the type of events relating to
19879 the time interval which enable sending the specified command, and must
19880 be a non-null sequence of identifier flags separated by "+" or "|" and
19881 enclosed between "[" and "]".
19882
19883 The following flags are recognized:
19884 @table @option
19885 @item enter
19886 The command is sent when the current frame timestamp enters the
19887 specified interval. In other words, the command is sent when the
19888 previous frame timestamp was not in the given interval, and the
19889 current is.
19890
19891 @item leave
19892 The command is sent when the current frame timestamp leaves the
19893 specified interval. In other words, the command is sent when the
19894 previous frame timestamp was in the given interval, and the
19895 current is not.
19896 @end table
19897
19898 If @var{FLAGS} is not specified, a default value of @code{[enter]} is
19899 assumed.
19900
19901 @var{TARGET} specifies the target of the command, usually the name of
19902 the filter class or a specific filter instance name.
19903
19904 @var{COMMAND} specifies the name of the command for the target filter.
19905
19906 @var{ARG} is optional and specifies the optional list of argument for
19907 the given @var{COMMAND}.
19908
19909 Between one interval specification and another, whitespaces, or
19910 sequences of characters starting with @code{#} until the end of line,
19911 are ignored and can be used to annotate comments.
19912
19913 A simplified BNF description of the commands specification syntax
19914 follows:
19915 @example
19916 @var{COMMAND_FLAG}  ::= "enter" | "leave"
19917 @var{COMMAND_FLAGS} ::= @var{COMMAND_FLAG} [(+|"|")@var{COMMAND_FLAG}]
19918 @var{COMMAND}       ::= ["[" @var{COMMAND_FLAGS} "]"] @var{TARGET} @var{COMMAND} [@var{ARG}]
19919 @var{COMMANDS}      ::= @var{COMMAND} [,@var{COMMANDS}]
19920 @var{INTERVAL}      ::= @var{START}[-@var{END}] @var{COMMANDS}
19921 @var{INTERVALS}     ::= @var{INTERVAL}[;@var{INTERVALS}]
19922 @end example
19923
19924 @subsection Examples
19925
19926 @itemize
19927 @item
19928 Specify audio tempo change at second 4:
19929 @example
19930 asendcmd=c='4.0 atempo tempo 1.5',atempo
19931 @end example
19932
19933 @item
19934 Target a specific filter instance:
19935 @example
19936 asendcmd=c='4.0 atempo@@my tempo 1.5',atempo@@my
19937 @end example
19938
19939 @item
19940 Specify a list of drawtext and hue commands in a file.
19941 @example
19942 # show text in the interval 5-10
19943 5.0-10.0 [enter] drawtext reinit 'fontfile=FreeSerif.ttf:text=hello world',
19944          [leave] drawtext reinit 'fontfile=FreeSerif.ttf:text=';
19945
19946 # desaturate the image in the interval 15-20
19947 15.0-20.0 [enter] hue s 0,
19948           [enter] drawtext reinit 'fontfile=FreeSerif.ttf:text=nocolor',
19949           [leave] hue s 1,
19950           [leave] drawtext reinit 'fontfile=FreeSerif.ttf:text=color';
19951
19952 # apply an exponential saturation fade-out effect, starting from time 25
19953 25 [enter] hue s exp(25-t)
19954 @end example
19955
19956 A filtergraph allowing to read and process the above command list
19957 stored in a file @file{test.cmd}, can be specified with:
19958 @example
19959 sendcmd=f=test.cmd,drawtext=fontfile=FreeSerif.ttf:text='',hue
19960 @end example
19961 @end itemize
19962
19963 @anchor{setpts}
19964 @section setpts, asetpts
19965
19966 Change the PTS (presentation timestamp) of the input frames.
19967
19968 @code{setpts} works on video frames, @code{asetpts} on audio frames.
19969
19970 This filter accepts the following options:
19971
19972 @table @option
19973
19974 @item expr
19975 The expression which is evaluated for each frame to construct its timestamp.
19976
19977 @end table
19978
19979 The expression is evaluated through the eval API and can contain the following
19980 constants:
19981
19982 @table @option
19983 @item FRAME_RATE, FR
19984 frame rate, only defined for constant frame-rate video
19985
19986 @item PTS
19987 The presentation timestamp in input
19988
19989 @item N
19990 The count of the input frame for video or the number of consumed samples,
19991 not including the current frame for audio, starting from 0.
19992
19993 @item NB_CONSUMED_SAMPLES
19994 The number of consumed samples, not including the current frame (only
19995 audio)
19996
19997 @item NB_SAMPLES, S
19998 The number of samples in the current frame (only audio)
19999
20000 @item SAMPLE_RATE, SR
20001 The audio sample rate.
20002
20003 @item STARTPTS
20004 The PTS of the first frame.
20005
20006 @item STARTT
20007 the time in seconds of the first frame
20008
20009 @item INTERLACED
20010 State whether the current frame is interlaced.
20011
20012 @item T
20013 the time in seconds of the current frame
20014
20015 @item POS
20016 original position in the file of the frame, or undefined if undefined
20017 for the current frame
20018
20019 @item PREV_INPTS
20020 The previous input PTS.
20021
20022 @item PREV_INT
20023 previous input time in seconds
20024
20025 @item PREV_OUTPTS
20026 The previous output PTS.
20027
20028 @item PREV_OUTT
20029 previous output time in seconds
20030
20031 @item RTCTIME
20032 The wallclock (RTC) time in microseconds. This is deprecated, use time(0)
20033 instead.
20034
20035 @item RTCSTART
20036 The wallclock (RTC) time at the start of the movie in microseconds.
20037
20038 @item TB
20039 The timebase of the input timestamps.
20040
20041 @end table
20042
20043 @subsection Examples
20044
20045 @itemize
20046 @item
20047 Start counting PTS from zero
20048 @example
20049 setpts=PTS-STARTPTS
20050 @end example
20051
20052 @item
20053 Apply fast motion effect:
20054 @example
20055 setpts=0.5*PTS
20056 @end example
20057
20058 @item
20059 Apply slow motion effect:
20060 @example
20061 setpts=2.0*PTS
20062 @end example
20063
20064 @item
20065 Set fixed rate of 25 frames per second:
20066 @example
20067 setpts=N/(25*TB)
20068 @end example
20069
20070 @item
20071 Set fixed rate 25 fps with some jitter:
20072 @example
20073 setpts='1/(25*TB) * (N + 0.05 * sin(N*2*PI/25))'
20074 @end example
20075
20076 @item
20077 Apply an offset of 10 seconds to the input PTS:
20078 @example
20079 setpts=PTS+10/TB
20080 @end example
20081
20082 @item
20083 Generate timestamps from a "live source" and rebase onto the current timebase:
20084 @example
20085 setpts='(RTCTIME - RTCSTART) / (TB * 1000000)'
20086 @end example
20087
20088 @item
20089 Generate timestamps by counting samples:
20090 @example
20091 asetpts=N/SR/TB
20092 @end example
20093
20094 @end itemize
20095
20096 @section setrange
20097
20098 Force color range for the output video frame.
20099
20100 The @code{setrange} filter marks the color range property for the
20101 output frames. It does not change the input frame, but only sets the
20102 corresponding property, which affects how the frame is treated by
20103 following filters.
20104
20105 The filter accepts the following options:
20106
20107 @table @option
20108
20109 @item range
20110 Available values are:
20111
20112 @table @samp
20113 @item auto
20114 Keep the same color range property.
20115
20116 @item unspecified, unknown
20117 Set the color range as unspecified.
20118
20119 @item limited, tv, mpeg
20120 Set the color range as limited.
20121
20122 @item full, pc, jpeg
20123 Set the color range as full.
20124 @end table
20125 @end table
20126
20127 @section settb, asettb
20128
20129 Set the timebase to use for the output frames timestamps.
20130 It is mainly useful for testing timebase configuration.
20131
20132 It accepts the following parameters:
20133
20134 @table @option
20135
20136 @item expr, tb
20137 The expression which is evaluated into the output timebase.
20138
20139 @end table
20140
20141 The value for @option{tb} is an arithmetic expression representing a
20142 rational. The expression can contain the constants "AVTB" (the default
20143 timebase), "intb" (the input timebase) and "sr" (the sample rate,
20144 audio only). Default value is "intb".
20145
20146 @subsection Examples
20147
20148 @itemize
20149 @item
20150 Set the timebase to 1/25:
20151 @example
20152 settb=expr=1/25
20153 @end example
20154
20155 @item
20156 Set the timebase to 1/10:
20157 @example
20158 settb=expr=0.1
20159 @end example
20160
20161 @item
20162 Set the timebase to 1001/1000:
20163 @example
20164 settb=1+0.001
20165 @end example
20166
20167 @item
20168 Set the timebase to 2*intb:
20169 @example
20170 settb=2*intb
20171 @end example
20172
20173 @item
20174 Set the default timebase value:
20175 @example
20176 settb=AVTB
20177 @end example
20178 @end itemize
20179
20180 @section showcqt
20181 Convert input audio to a video output representing frequency spectrum
20182 logarithmically using Brown-Puckette constant Q transform algorithm with
20183 direct frequency domain coefficient calculation (but the transform itself
20184 is not really constant Q, instead the Q factor is actually variable/clamped),
20185 with musical tone scale, from E0 to D#10.
20186
20187 The filter accepts the following options:
20188
20189 @table @option
20190 @item size, s
20191 Specify the video size for the output. It must be even. For the syntax of this option,
20192 check the @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
20193 Default value is @code{1920x1080}.
20194
20195 @item fps, rate, r
20196 Set the output frame rate. Default value is @code{25}.
20197
20198 @item bar_h
20199 Set the bargraph height. It must be even. Default value is @code{-1} which
20200 computes the bargraph height automatically.
20201
20202 @item axis_h
20203 Set the axis height. It must be even. Default value is @code{-1} which computes
20204 the axis height automatically.
20205
20206 @item sono_h
20207 Set the sonogram height. It must be even. Default value is @code{-1} which
20208 computes the sonogram height automatically.
20209
20210 @item fullhd
20211 Set the fullhd resolution. This option is deprecated, use @var{size}, @var{s}
20212 instead. Default value is @code{1}.
20213
20214 @item sono_v, volume
20215 Specify the sonogram volume expression. It can contain variables:
20216 @table @option
20217 @item bar_v
20218 the @var{bar_v} evaluated expression
20219 @item frequency, freq, f
20220 the frequency where it is evaluated
20221 @item timeclamp, tc
20222 the value of @var{timeclamp} option
20223 @end table
20224 and functions:
20225 @table @option
20226 @item a_weighting(f)
20227 A-weighting of equal loudness
20228 @item b_weighting(f)
20229 B-weighting of equal loudness
20230 @item c_weighting(f)
20231 C-weighting of equal loudness.
20232 @end table
20233 Default value is @code{16}.
20234
20235 @item bar_v, volume2
20236 Specify the bargraph volume expression. It can contain variables:
20237 @table @option
20238 @item sono_v
20239 the @var{sono_v} evaluated expression
20240 @item frequency, freq, f
20241 the frequency where it is evaluated
20242 @item timeclamp, tc
20243 the value of @var{timeclamp} option
20244 @end table
20245 and functions:
20246 @table @option
20247 @item a_weighting(f)
20248 A-weighting of equal loudness
20249 @item b_weighting(f)
20250 B-weighting of equal loudness
20251 @item c_weighting(f)
20252 C-weighting of equal loudness.
20253 @end table
20254 Default value is @code{sono_v}.
20255
20256 @item sono_g, gamma
20257 Specify the sonogram gamma. Lower gamma makes the spectrum more contrast,
20258 higher gamma makes the spectrum having more range. Default value is @code{3}.
20259 Acceptable range is @code{[1, 7]}.
20260
20261 @item bar_g, gamma2
20262 Specify the bargraph gamma. Default value is @code{1}. Acceptable range is
20263 @code{[1, 7]}.
20264
20265 @item bar_t
20266 Specify the bargraph transparency level. Lower value makes the bargraph sharper.
20267 Default value is @code{1}. Acceptable range is @code{[0, 1]}.
20268
20269 @item timeclamp, tc
20270 Specify the transform timeclamp. At low frequency, there is trade-off between
20271 accuracy in time domain and frequency domain. If timeclamp is lower,
20272 event in time domain is represented more accurately (such as fast bass drum),
20273 otherwise event in frequency domain is represented more accurately
20274 (such as bass guitar). Acceptable range is @code{[0.002, 1]}. Default value is @code{0.17}.
20275
20276 @item attack
20277 Set attack time in seconds. The default is @code{0} (disabled). Otherwise, it
20278 limits future samples by applying asymmetric windowing in time domain, useful
20279 when low latency is required. Accepted range is @code{[0, 1]}.
20280
20281 @item basefreq
20282 Specify the transform base frequency. Default value is @code{20.01523126408007475},
20283 which is frequency 50 cents below E0. Acceptable range is @code{[10, 100000]}.
20284
20285 @item endfreq
20286 Specify the transform end frequency. Default value is @code{20495.59681441799654},
20287 which is frequency 50 cents above D#10. Acceptable range is @code{[10, 100000]}.
20288
20289 @item coeffclamp
20290 This option is deprecated and ignored.
20291
20292 @item tlength
20293 Specify the transform length in time domain. Use this option to control accuracy
20294 trade-off between time domain and frequency domain at every frequency sample.
20295 It can contain variables:
20296 @table @option
20297 @item frequency, freq, f
20298 the frequency where it is evaluated
20299 @item timeclamp, tc
20300 the value of @var{timeclamp} option.
20301 @end table
20302 Default value is @code{384*tc/(384+tc*f)}.
20303
20304 @item count
20305 Specify the transform count for every video frame. Default value is @code{6}.
20306 Acceptable range is @code{[1, 30]}.
20307
20308 @item fcount
20309 Specify the transform count for every single pixel. Default value is @code{0},
20310 which makes it computed automatically. Acceptable range is @code{[0, 10]}.
20311
20312 @item fontfile
20313 Specify font file for use with freetype to draw the axis. If not specified,
20314 use embedded font. Note that drawing with font file or embedded font is not
20315 implemented with custom @var{basefreq} and @var{endfreq}, use @var{axisfile}
20316 option instead.
20317
20318 @item font
20319 Specify fontconfig pattern. This has lower priority than @var{fontfile}.
20320 The : in the pattern may be replaced by | to avoid unnecessary escaping.
20321
20322 @item fontcolor
20323 Specify font color expression. This is arithmetic expression that should return
20324 integer value 0xRRGGBB. It can contain variables:
20325 @table @option
20326 @item frequency, freq, f
20327 the frequency where it is evaluated
20328 @item timeclamp, tc
20329 the value of @var{timeclamp} option
20330 @end table
20331 and functions:
20332 @table @option
20333 @item midi(f)
20334 midi number of frequency f, some midi numbers: E0(16), C1(24), C2(36), A4(69)
20335 @item r(x), g(x), b(x)
20336 red, green, and blue value of intensity x.
20337 @end table
20338 Default value is @code{st(0, (midi(f)-59.5)/12);
20339 st(1, if(between(ld(0),0,1), 0.5-0.5*cos(2*PI*ld(0)), 0));
20340 r(1-ld(1)) + b(ld(1))}.
20341
20342 @item axisfile
20343 Specify image file to draw the axis. This option override @var{fontfile} and
20344 @var{fontcolor} option.
20345
20346 @item axis, text
20347 Enable/disable drawing text to the axis. If it is set to @code{0}, drawing to
20348 the axis is disabled, ignoring @var{fontfile} and @var{axisfile} option.
20349 Default value is @code{1}.
20350
20351 @item csp
20352 Set colorspace. The accepted values are:
20353 @table @samp
20354 @item unspecified
20355 Unspecified (default)
20356
20357 @item bt709
20358 BT.709
20359
20360 @item fcc
20361 FCC
20362
20363 @item bt470bg
20364 BT.470BG or BT.601-6 625
20365
20366 @item smpte170m
20367 SMPTE-170M or BT.601-6 525
20368
20369 @item smpte240m
20370 SMPTE-240M
20371
20372 @item bt2020ncl
20373 BT.2020 with non-constant luminance
20374
20375 @end table
20376
20377 @item cscheme
20378 Set spectrogram color scheme. This is list of floating point values with format
20379 @code{left_r|left_g|left_b|right_r|right_g|right_b}.
20380 The default is @code{1|0.5|0|0|0.5|1}.
20381
20382 @end table
20383
20384 @subsection Examples
20385
20386 @itemize
20387 @item
20388 Playing audio while showing the spectrum:
20389 @example
20390 ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt [out0]'
20391 @end example
20392
20393 @item
20394 Same as above, but with frame rate 30 fps:
20395 @example
20396 ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt=fps=30:count=5 [out0]'
20397 @end example
20398
20399 @item
20400 Playing at 1280x720:
20401 @example
20402 ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt=s=1280x720:count=4 [out0]'
20403 @end example
20404
20405 @item
20406 Disable sonogram display:
20407 @example
20408 sono_h=0
20409 @end example
20410
20411 @item
20412 A1 and its harmonics: A1, A2, (near)E3, A3:
20413 @example
20414 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),
20415                  asplit[a][out1]; [a] showcqt [out0]'
20416 @end example
20417
20418 @item
20419 Same as above, but with more accuracy in frequency domain:
20420 @example
20421 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),
20422                  asplit[a][out1]; [a] showcqt=timeclamp=0.5 [out0]'
20423 @end example
20424
20425 @item
20426 Custom volume:
20427 @example
20428 bar_v=10:sono_v=bar_v*a_weighting(f)
20429 @end example
20430
20431 @item
20432 Custom gamma, now spectrum is linear to the amplitude.
20433 @example
20434 bar_g=2:sono_g=2
20435 @end example
20436
20437 @item
20438 Custom tlength equation:
20439 @example
20440 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)))'
20441 @end example
20442
20443 @item
20444 Custom fontcolor and fontfile, C-note is colored green, others are colored blue:
20445 @example
20446 fontcolor='if(mod(floor(midi(f)+0.5),12), 0x0000FF, g(1))':fontfile=myfont.ttf
20447 @end example
20448
20449 @item
20450 Custom font using fontconfig:
20451 @example
20452 font='Courier New,Monospace,mono|bold'
20453 @end example
20454
20455 @item
20456 Custom frequency range with custom axis using image file:
20457 @example
20458 axisfile=myaxis.png:basefreq=40:endfreq=10000
20459 @end example
20460 @end itemize
20461
20462 @section showfreqs
20463
20464 Convert input audio to video output representing the audio power spectrum.
20465 Audio amplitude is on Y-axis while frequency is on X-axis.
20466
20467 The filter accepts the following options:
20468
20469 @table @option
20470 @item size, s
20471 Specify size of video. For the syntax of this option, check the
20472 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
20473 Default is @code{1024x512}.
20474
20475 @item mode
20476 Set display mode.
20477 This set how each frequency bin will be represented.
20478
20479 It accepts the following values:
20480 @table @samp
20481 @item line
20482 @item bar
20483 @item dot
20484 @end table
20485 Default is @code{bar}.
20486
20487 @item ascale
20488 Set amplitude scale.
20489
20490 It accepts the following values:
20491 @table @samp
20492 @item lin
20493 Linear scale.
20494
20495 @item sqrt
20496 Square root scale.
20497
20498 @item cbrt
20499 Cubic root scale.
20500
20501 @item log
20502 Logarithmic scale.
20503 @end table
20504 Default is @code{log}.
20505
20506 @item fscale
20507 Set frequency scale.
20508
20509 It accepts the following values:
20510 @table @samp
20511 @item lin
20512 Linear scale.
20513
20514 @item log
20515 Logarithmic scale.
20516
20517 @item rlog
20518 Reverse logarithmic scale.
20519 @end table
20520 Default is @code{lin}.
20521
20522 @item win_size
20523 Set window size.
20524
20525 It accepts the following values:
20526 @table @samp
20527 @item w16
20528 @item w32
20529 @item w64
20530 @item w128
20531 @item w256
20532 @item w512
20533 @item w1024
20534 @item w2048
20535 @item w4096
20536 @item w8192
20537 @item w16384
20538 @item w32768
20539 @item w65536
20540 @end table
20541 Default is @code{w2048}
20542
20543 @item win_func
20544 Set windowing function.
20545
20546 It accepts the following values:
20547 @table @samp
20548 @item rect
20549 @item bartlett
20550 @item hanning
20551 @item hamming
20552 @item blackman
20553 @item welch
20554 @item flattop
20555 @item bharris
20556 @item bnuttall
20557 @item bhann
20558 @item sine
20559 @item nuttall
20560 @item lanczos
20561 @item gauss
20562 @item tukey
20563 @item dolph
20564 @item cauchy
20565 @item parzen
20566 @item poisson
20567 @end table
20568 Default is @code{hanning}.
20569
20570 @item overlap
20571 Set window overlap. In range @code{[0, 1]}. Default is @code{1},
20572 which means optimal overlap for selected window function will be picked.
20573
20574 @item averaging
20575 Set time averaging. Setting this to 0 will display current maximal peaks.
20576 Default is @code{1}, which means time averaging is disabled.
20577
20578 @item colors
20579 Specify list of colors separated by space or by '|' which will be used to
20580 draw channel frequencies. Unrecognized or missing colors will be replaced
20581 by white color.
20582
20583 @item cmode
20584 Set channel display mode.
20585
20586 It accepts the following values:
20587 @table @samp
20588 @item combined
20589 @item separate
20590 @end table
20591 Default is @code{combined}.
20592
20593 @item minamp
20594 Set minimum amplitude used in @code{log} amplitude scaler.
20595
20596 @end table
20597
20598 @anchor{showspectrum}
20599 @section showspectrum
20600
20601 Convert input audio to a video output, representing the audio frequency
20602 spectrum.
20603
20604 The filter accepts the following options:
20605
20606 @table @option
20607 @item size, s
20608 Specify the video size for the output. For the syntax of this option, check the
20609 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
20610 Default value is @code{640x512}.
20611
20612 @item slide
20613 Specify how the spectrum should slide along the window.
20614
20615 It accepts the following values:
20616 @table @samp
20617 @item replace
20618 the samples start again on the left when they reach the right
20619 @item scroll
20620 the samples scroll from right to left
20621 @item fullframe
20622 frames are only produced when the samples reach the right
20623 @item rscroll
20624 the samples scroll from left to right
20625 @end table
20626
20627 Default value is @code{replace}.
20628
20629 @item mode
20630 Specify display mode.
20631
20632 It accepts the following values:
20633 @table @samp
20634 @item combined
20635 all channels are displayed in the same row
20636 @item separate
20637 all channels are displayed in separate rows
20638 @end table
20639
20640 Default value is @samp{combined}.
20641
20642 @item color
20643 Specify display color mode.
20644
20645 It accepts the following values:
20646 @table @samp
20647 @item channel
20648 each channel is displayed in a separate color
20649 @item intensity
20650 each channel is displayed using the same color scheme
20651 @item rainbow
20652 each channel is displayed using the rainbow color scheme
20653 @item moreland
20654 each channel is displayed using the moreland color scheme
20655 @item nebulae
20656 each channel is displayed using the nebulae color scheme
20657 @item fire
20658 each channel is displayed using the fire color scheme
20659 @item fiery
20660 each channel is displayed using the fiery color scheme
20661 @item fruit
20662 each channel is displayed using the fruit color scheme
20663 @item cool
20664 each channel is displayed using the cool color scheme
20665 @item magma
20666 each channel is displayed using the magma color scheme
20667 @item green
20668 each channel is displayed using the green color scheme
20669 @end table
20670
20671 Default value is @samp{channel}.
20672
20673 @item scale
20674 Specify scale used for calculating intensity color values.
20675
20676 It accepts the following values:
20677 @table @samp
20678 @item lin
20679 linear
20680 @item sqrt
20681 square root, default
20682 @item cbrt
20683 cubic root
20684 @item log
20685 logarithmic
20686 @item 4thrt
20687 4th root
20688 @item 5thrt
20689 5th root
20690 @end table
20691
20692 Default value is @samp{sqrt}.
20693
20694 @item saturation
20695 Set saturation modifier for displayed colors. Negative values provide
20696 alternative color scheme. @code{0} is no saturation at all.
20697 Saturation must be in [-10.0, 10.0] range.
20698 Default value is @code{1}.
20699
20700 @item win_func
20701 Set window function.
20702
20703 It accepts the following values:
20704 @table @samp
20705 @item rect
20706 @item bartlett
20707 @item hann
20708 @item hanning
20709 @item hamming
20710 @item blackman
20711 @item welch
20712 @item flattop
20713 @item bharris
20714 @item bnuttall
20715 @item bhann
20716 @item sine
20717 @item nuttall
20718 @item lanczos
20719 @item gauss
20720 @item tukey
20721 @item dolph
20722 @item cauchy
20723 @item parzen
20724 @item poisson
20725 @end table
20726
20727 Default value is @code{hann}.
20728
20729 @item orientation
20730 Set orientation of time vs frequency axis. Can be @code{vertical} or
20731 @code{horizontal}. Default is @code{vertical}.
20732
20733 @item overlap
20734 Set ratio of overlap window. Default value is @code{0}.
20735 When value is @code{1} overlap is set to recommended size for specific
20736 window function currently used.
20737
20738 @item gain
20739 Set scale gain for calculating intensity color values.
20740 Default value is @code{1}.
20741
20742 @item data
20743 Set which data to display. Can be @code{magnitude}, default or @code{phase}.
20744
20745 @item rotation
20746 Set color rotation, must be in [-1.0, 1.0] range.
20747 Default value is @code{0}.
20748
20749 @item start
20750 Set start frequency from which to display spectrogram. Default is @code{0}.
20751
20752 @item stop
20753 Set stop frequency to which to display spectrogram. Default is @code{0}.
20754
20755 @item fps
20756 Set upper frame rate limit. Default is @code{auto}, unlimited.
20757
20758 @item legend
20759 Draw time and frequency axes and legends. Default is disabled.
20760 @end table
20761
20762 The usage is very similar to the showwaves filter; see the examples in that
20763 section.
20764
20765 @subsection Examples
20766
20767 @itemize
20768 @item
20769 Large window with logarithmic color scaling:
20770 @example
20771 showspectrum=s=1280x480:scale=log
20772 @end example
20773
20774 @item
20775 Complete example for a colored and sliding spectrum per channel using @command{ffplay}:
20776 @example
20777 ffplay -f lavfi 'amovie=input.mp3, asplit [a][out1];
20778              [a] showspectrum=mode=separate:color=intensity:slide=1:scale=cbrt [out0]'
20779 @end example
20780 @end itemize
20781
20782 @section showspectrumpic
20783
20784 Convert input audio to a single video frame, representing the audio frequency
20785 spectrum.
20786
20787 The filter accepts the following options:
20788
20789 @table @option
20790 @item size, s
20791 Specify the video size for the output. For the syntax of this option, check the
20792 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
20793 Default value is @code{4096x2048}.
20794
20795 @item mode
20796 Specify display mode.
20797
20798 It accepts the following values:
20799 @table @samp
20800 @item combined
20801 all channels are displayed in the same row
20802 @item separate
20803 all channels are displayed in separate rows
20804 @end table
20805 Default value is @samp{combined}.
20806
20807 @item color
20808 Specify display color mode.
20809
20810 It accepts the following values:
20811 @table @samp
20812 @item channel
20813 each channel is displayed in a separate color
20814 @item intensity
20815 each channel is displayed using the same color scheme
20816 @item rainbow
20817 each channel is displayed using the rainbow color scheme
20818 @item moreland
20819 each channel is displayed using the moreland color scheme
20820 @item nebulae
20821 each channel is displayed using the nebulae color scheme
20822 @item fire
20823 each channel is displayed using the fire color scheme
20824 @item fiery
20825 each channel is displayed using the fiery color scheme
20826 @item fruit
20827 each channel is displayed using the fruit color scheme
20828 @item cool
20829 each channel is displayed using the cool color scheme
20830 @item magma
20831 each channel is displayed using the magma color scheme
20832 @item green
20833 each channel is displayed using the green color scheme
20834 @end table
20835 Default value is @samp{intensity}.
20836
20837 @item scale
20838 Specify scale used for calculating intensity color values.
20839
20840 It accepts the following values:
20841 @table @samp
20842 @item lin
20843 linear
20844 @item sqrt
20845 square root, default
20846 @item cbrt
20847 cubic root
20848 @item log
20849 logarithmic
20850 @item 4thrt
20851 4th root
20852 @item 5thrt
20853 5th root
20854 @end table
20855 Default value is @samp{log}.
20856
20857 @item saturation
20858 Set saturation modifier for displayed colors. Negative values provide
20859 alternative color scheme. @code{0} is no saturation at all.
20860 Saturation must be in [-10.0, 10.0] range.
20861 Default value is @code{1}.
20862
20863 @item win_func
20864 Set window function.
20865
20866 It accepts the following values:
20867 @table @samp
20868 @item rect
20869 @item bartlett
20870 @item hann
20871 @item hanning
20872 @item hamming
20873 @item blackman
20874 @item welch
20875 @item flattop
20876 @item bharris
20877 @item bnuttall
20878 @item bhann
20879 @item sine
20880 @item nuttall
20881 @item lanczos
20882 @item gauss
20883 @item tukey
20884 @item dolph
20885 @item cauchy
20886 @item parzen
20887 @item poisson
20888 @end table
20889 Default value is @code{hann}.
20890
20891 @item orientation
20892 Set orientation of time vs frequency axis. Can be @code{vertical} or
20893 @code{horizontal}. Default is @code{vertical}.
20894
20895 @item gain
20896 Set scale gain for calculating intensity color values.
20897 Default value is @code{1}.
20898
20899 @item legend
20900 Draw time and frequency axes and legends. Default is enabled.
20901
20902 @item rotation
20903 Set color rotation, must be in [-1.0, 1.0] range.
20904 Default value is @code{0}.
20905
20906 @item start
20907 Set start frequency from which to display spectrogram. Default is @code{0}.
20908
20909 @item stop
20910 Set stop frequency to which to display spectrogram. Default is @code{0}.
20911 @end table
20912
20913 @subsection Examples
20914
20915 @itemize
20916 @item
20917 Extract an audio spectrogram of a whole audio track
20918 in a 1024x1024 picture using @command{ffmpeg}:
20919 @example
20920 ffmpeg -i audio.flac -lavfi showspectrumpic=s=1024x1024 spectrogram.png
20921 @end example
20922 @end itemize
20923
20924 @section showvolume
20925
20926 Convert input audio volume to a video output.
20927
20928 The filter accepts the following options:
20929
20930 @table @option
20931 @item rate, r
20932 Set video rate.
20933
20934 @item b
20935 Set border width, allowed range is [0, 5]. Default is 1.
20936
20937 @item w
20938 Set channel width, allowed range is [80, 8192]. Default is 400.
20939
20940 @item h
20941 Set channel height, allowed range is [1, 900]. Default is 20.
20942
20943 @item f
20944 Set fade, allowed range is [0, 1]. Default is 0.95.
20945
20946 @item c
20947 Set volume color expression.
20948
20949 The expression can use the following variables:
20950
20951 @table @option
20952 @item VOLUME
20953 Current max volume of channel in dB.
20954
20955 @item PEAK
20956 Current peak.
20957
20958 @item CHANNEL
20959 Current channel number, starting from 0.
20960 @end table
20961
20962 @item t
20963 If set, displays channel names. Default is enabled.
20964
20965 @item v
20966 If set, displays volume values. Default is enabled.
20967
20968 @item o
20969 Set orientation, can be horizontal: @code{h} or vertical: @code{v},
20970 default is @code{h}.
20971
20972 @item s
20973 Set step size, allowed range is [0, 5]. Default is 0, which means
20974 step is disabled.
20975
20976 @item p
20977 Set background opacity, allowed range is [0, 1]. Default is 0.
20978
20979 @item m
20980 Set metering mode, can be peak: @code{p} or rms: @code{r},
20981 default is @code{p}.
20982
20983 @item ds
20984 Set display scale, can be linear: @code{lin} or log: @code{log},
20985 default is @code{lin}.
20986
20987 @item dm
20988 In second.
20989 If set to > 0., display a line for the max level
20990 in the previous seconds.
20991 default is disabled: @code{0.}
20992
20993 @item dmc
20994 The color of the max line. Use when @code{dm} option is set to > 0.
20995 default is: @code{orange}
20996 @end table
20997
20998 @section showwaves
20999
21000 Convert input audio to a video output, representing the samples waves.
21001
21002 The filter accepts the following options:
21003
21004 @table @option
21005 @item size, s
21006 Specify the video size for the output. For the syntax of this option, check the
21007 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
21008 Default value is @code{600x240}.
21009
21010 @item mode
21011 Set display mode.
21012
21013 Available values are:
21014 @table @samp
21015 @item point
21016 Draw a point for each sample.
21017
21018 @item line
21019 Draw a vertical line for each sample.
21020
21021 @item p2p
21022 Draw a point for each sample and a line between them.
21023
21024 @item cline
21025 Draw a centered vertical line for each sample.
21026 @end table
21027
21028 Default value is @code{point}.
21029
21030 @item n
21031 Set the number of samples which are printed on the same column. A
21032 larger value will decrease the frame rate. Must be a positive
21033 integer. This option can be set only if the value for @var{rate}
21034 is not explicitly specified.
21035
21036 @item rate, r
21037 Set the (approximate) output frame rate. This is done by setting the
21038 option @var{n}. Default value is "25".
21039
21040 @item split_channels
21041 Set if channels should be drawn separately or overlap. Default value is 0.
21042
21043 @item colors
21044 Set colors separated by '|' which are going to be used for drawing of each channel.
21045
21046 @item scale
21047 Set amplitude scale.
21048
21049 Available values are:
21050 @table @samp
21051 @item lin
21052 Linear.
21053
21054 @item log
21055 Logarithmic.
21056
21057 @item sqrt
21058 Square root.
21059
21060 @item cbrt
21061 Cubic root.
21062 @end table
21063
21064 Default is linear.
21065
21066 @item draw
21067 Set the draw mode. This is mostly useful to set for high @var{n}.
21068
21069 Available values are:
21070 @table @samp
21071 @item scale
21072 Scale pixel values for each drawn sample.
21073
21074 @item full
21075 Draw every sample directly.
21076 @end table
21077
21078 Default value is @code{scale}.
21079 @end table
21080
21081 @subsection Examples
21082
21083 @itemize
21084 @item
21085 Output the input file audio and the corresponding video representation
21086 at the same time:
21087 @example
21088 amovie=a.mp3,asplit[out0],showwaves[out1]
21089 @end example
21090
21091 @item
21092 Create a synthetic signal and show it with showwaves, forcing a
21093 frame rate of 30 frames per second:
21094 @example
21095 aevalsrc=sin(1*2*PI*t)*sin(880*2*PI*t):cos(2*PI*200*t),asplit[out0],showwaves=r=30[out1]
21096 @end example
21097 @end itemize
21098
21099 @section showwavespic
21100
21101 Convert input audio to a single video frame, representing the samples waves.
21102
21103 The filter accepts the following options:
21104
21105 @table @option
21106 @item size, s
21107 Specify the video size for the output. For the syntax of this option, check the
21108 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
21109 Default value is @code{600x240}.
21110
21111 @item split_channels
21112 Set if channels should be drawn separately or overlap. Default value is 0.
21113
21114 @item colors
21115 Set colors separated by '|' which are going to be used for drawing of each channel.
21116
21117 @item scale
21118 Set amplitude scale.
21119
21120 Available values are:
21121 @table @samp
21122 @item lin
21123 Linear.
21124
21125 @item log
21126 Logarithmic.
21127
21128 @item sqrt
21129 Square root.
21130
21131 @item cbrt
21132 Cubic root.
21133 @end table
21134
21135 Default is linear.
21136 @end table
21137
21138 @subsection Examples
21139
21140 @itemize
21141 @item
21142 Extract a channel split representation of the wave form of a whole audio track
21143 in a 1024x800 picture using @command{ffmpeg}:
21144 @example
21145 ffmpeg -i audio.flac -lavfi showwavespic=split_channels=1:s=1024x800 waveform.png
21146 @end example
21147 @end itemize
21148
21149 @section sidedata, asidedata
21150
21151 Delete frame side data, or select frames based on it.
21152
21153 This filter accepts the following options:
21154
21155 @table @option
21156 @item mode
21157 Set mode of operation of the filter.
21158
21159 Can be one of the following:
21160
21161 @table @samp
21162 @item select
21163 Select every frame with side data of @code{type}.
21164
21165 @item delete
21166 Delete side data of @code{type}. If @code{type} is not set, delete all side
21167 data in the frame.
21168
21169 @end table
21170
21171 @item type
21172 Set side data type used with all modes. Must be set for @code{select} mode. For
21173 the list of frame side data types, refer to the @code{AVFrameSideDataType} enum
21174 in @file{libavutil/frame.h}. For example, to choose
21175 @code{AV_FRAME_DATA_PANSCAN} side data, you must specify @code{PANSCAN}.
21176
21177 @end table
21178
21179 @section spectrumsynth
21180
21181 Sythesize audio from 2 input video spectrums, first input stream represents
21182 magnitude across time and second represents phase across time.
21183 The filter will transform from frequency domain as displayed in videos back
21184 to time domain as presented in audio output.
21185
21186 This filter is primarily created for reversing processed @ref{showspectrum}
21187 filter outputs, but can synthesize sound from other spectrograms too.
21188 But in such case results are going to be poor if the phase data is not
21189 available, because in such cases phase data need to be recreated, usually
21190 its just recreated from random noise.
21191 For best results use gray only output (@code{channel} color mode in
21192 @ref{showspectrum} filter) and @code{log} scale for magnitude video and
21193 @code{lin} scale for phase video. To produce phase, for 2nd video, use
21194 @code{data} option. Inputs videos should generally use @code{fullframe}
21195 slide mode as that saves resources needed for decoding video.
21196
21197 The filter accepts the following options:
21198
21199 @table @option
21200 @item sample_rate
21201 Specify sample rate of output audio, the sample rate of audio from which
21202 spectrum was generated may differ.
21203
21204 @item channels
21205 Set number of channels represented in input video spectrums.
21206
21207 @item scale
21208 Set scale which was used when generating magnitude input spectrum.
21209 Can be @code{lin} or @code{log}. Default is @code{log}.
21210
21211 @item slide
21212 Set slide which was used when generating inputs spectrums.
21213 Can be @code{replace}, @code{scroll}, @code{fullframe} or @code{rscroll}.
21214 Default is @code{fullframe}.
21215
21216 @item win_func
21217 Set window function used for resynthesis.
21218
21219 @item overlap
21220 Set window overlap. In range @code{[0, 1]}. Default is @code{1},
21221 which means optimal overlap for selected window function will be picked.
21222
21223 @item orientation
21224 Set orientation of input videos. Can be @code{vertical} or @code{horizontal}.
21225 Default is @code{vertical}.
21226 @end table
21227
21228 @subsection Examples
21229
21230 @itemize
21231 @item
21232 First create magnitude and phase videos from audio, assuming audio is stereo with 44100 sample rate,
21233 then resynthesize videos back to audio with spectrumsynth:
21234 @example
21235 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
21236 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
21237 ffmpeg -i magnitude.nut -i phase.nut -lavfi spectrumsynth=channels=2:sample_rate=44100:win_func=hann:overlap=0.875:slide=fullframe output.flac
21238 @end example
21239 @end itemize
21240
21241 @section split, asplit
21242
21243 Split input into several identical outputs.
21244
21245 @code{asplit} works with audio input, @code{split} with video.
21246
21247 The filter accepts a single parameter which specifies the number of outputs. If
21248 unspecified, it defaults to 2.
21249
21250 @subsection Examples
21251
21252 @itemize
21253 @item
21254 Create two separate outputs from the same input:
21255 @example
21256 [in] split [out0][out1]
21257 @end example
21258
21259 @item
21260 To create 3 or more outputs, you need to specify the number of
21261 outputs, like in:
21262 @example
21263 [in] asplit=3 [out0][out1][out2]
21264 @end example
21265
21266 @item
21267 Create two separate outputs from the same input, one cropped and
21268 one padded:
21269 @example
21270 [in] split [splitout1][splitout2];
21271 [splitout1] crop=100:100:0:0    [cropout];
21272 [splitout2] pad=200:200:100:100 [padout];
21273 @end example
21274
21275 @item
21276 Create 5 copies of the input audio with @command{ffmpeg}:
21277 @example
21278 ffmpeg -i INPUT -filter_complex asplit=5 OUTPUT
21279 @end example
21280 @end itemize
21281
21282 @section zmq, azmq
21283
21284 Receive commands sent through a libzmq client, and forward them to
21285 filters in the filtergraph.
21286
21287 @code{zmq} and @code{azmq} work as a pass-through filters. @code{zmq}
21288 must be inserted between two video filters, @code{azmq} between two
21289 audio filters. Both are capable to send messages to any filter type.
21290
21291 To enable these filters you need to install the libzmq library and
21292 headers and configure FFmpeg with @code{--enable-libzmq}.
21293
21294 For more information about libzmq see:
21295 @url{http://www.zeromq.org/}
21296
21297 The @code{zmq} and @code{azmq} filters work as a libzmq server, which
21298 receives messages sent through a network interface defined by the
21299 @option{bind_address} (or the abbreviation "@option{b}") option.
21300 Default value of this option is @file{tcp://localhost:5555}. You may
21301 want to alter this value to your needs, but do not forget to escape any
21302 ':' signs (see @ref{filtergraph escaping}).
21303
21304 The received message must be in the form:
21305 @example
21306 @var{TARGET} @var{COMMAND} [@var{ARG}]
21307 @end example
21308
21309 @var{TARGET} specifies the target of the command, usually the name of
21310 the filter class or a specific filter instance name. The default
21311 filter instance name uses the pattern @samp{Parsed_<filter_name>_<index>},
21312 but you can override this by using the @samp{filter_name@@id} syntax
21313 (see @ref{Filtergraph syntax}).
21314
21315 @var{COMMAND} specifies the name of the command for the target filter.
21316
21317 @var{ARG} is optional and specifies the optional argument list for the
21318 given @var{COMMAND}.
21319
21320 Upon reception, the message is processed and the corresponding command
21321 is injected into the filtergraph. Depending on the result, the filter
21322 will send a reply to the client, adopting the format:
21323 @example
21324 @var{ERROR_CODE} @var{ERROR_REASON}
21325 @var{MESSAGE}
21326 @end example
21327
21328 @var{MESSAGE} is optional.
21329
21330 @subsection Examples
21331
21332 Look at @file{tools/zmqsend} for an example of a zmq client which can
21333 be used to send commands processed by these filters.
21334
21335 Consider the following filtergraph generated by @command{ffplay}.
21336 In this example the last overlay filter has an instance name. All other
21337 filters will have default instance names.
21338
21339 @example
21340 ffplay -dumpgraph 1 -f lavfi "
21341 color=s=100x100:c=red  [l];
21342 color=s=100x100:c=blue [r];
21343 nullsrc=s=200x100, zmq [bg];
21344 [bg][l]   overlay     [bg+l];
21345 [bg+l][r] overlay@@my=x=100 "
21346 @end example
21347
21348 To change the color of the left side of the video, the following
21349 command can be used:
21350 @example
21351 echo Parsed_color_0 c yellow | tools/zmqsend
21352 @end example
21353
21354 To change the right side:
21355 @example
21356 echo Parsed_color_1 c pink | tools/zmqsend
21357 @end example
21358
21359 To change the position of the right side:
21360 @example
21361 echo overlay@@my x 150 | tools/zmqsend
21362 @end example
21363
21364
21365 @c man end MULTIMEDIA FILTERS
21366
21367 @chapter Multimedia Sources
21368 @c man begin MULTIMEDIA SOURCES
21369
21370 Below is a description of the currently available multimedia sources.
21371
21372 @section amovie
21373
21374 This is the same as @ref{movie} source, except it selects an audio
21375 stream by default.
21376
21377 @anchor{movie}
21378 @section movie
21379
21380 Read audio and/or video stream(s) from a movie container.
21381
21382 It accepts the following parameters:
21383
21384 @table @option
21385 @item filename
21386 The name of the resource to read (not necessarily a file; it can also be a
21387 device or a stream accessed through some protocol).
21388
21389 @item format_name, f
21390 Specifies the format assumed for the movie to read, and can be either
21391 the name of a container or an input device. If not specified, the
21392 format is guessed from @var{movie_name} or by probing.
21393
21394 @item seek_point, sp
21395 Specifies the seek point in seconds. The frames will be output
21396 starting from this seek point. The parameter is evaluated with
21397 @code{av_strtod}, so the numerical value may be suffixed by an IS
21398 postfix. The default value is "0".
21399
21400 @item streams, s
21401 Specifies the streams to read. Several streams can be specified,
21402 separated by "+". The source will then have as many outputs, in the
21403 same order. The syntax is explained in the @ref{Stream specifiers,,"Stream specifiers"
21404 section in the ffmpeg manual,ffmpeg}. Two special names, "dv" and "da" specify
21405 respectively the default (best suited) video and audio stream. Default
21406 is "dv", or "da" if the filter is called as "amovie".
21407
21408 @item stream_index, si
21409 Specifies the index of the video stream to read. If the value is -1,
21410 the most suitable video stream will be automatically selected. The default
21411 value is "-1". Deprecated. If the filter is called "amovie", it will select
21412 audio instead of video.
21413
21414 @item loop
21415 Specifies how many times to read the stream in sequence.
21416 If the value is 0, the stream will be looped infinitely.
21417 Default value is "1".
21418
21419 Note that when the movie is looped the source timestamps are not
21420 changed, so it will generate non monotonically increasing timestamps.
21421
21422 @item discontinuity
21423 Specifies the time difference between frames above which the point is
21424 considered a timestamp discontinuity which is removed by adjusting the later
21425 timestamps.
21426 @end table
21427
21428 It allows overlaying a second video on top of the main input of
21429 a filtergraph, as shown in this graph:
21430 @example
21431 input -----------> deltapts0 --> overlay --> output
21432                                     ^
21433                                     |
21434 movie --> scale--> deltapts1 -------+
21435 @end example
21436 @subsection Examples
21437
21438 @itemize
21439 @item
21440 Skip 3.2 seconds from the start of the AVI file in.avi, and overlay it
21441 on top of the input labelled "in":
21442 @example
21443 movie=in.avi:seek_point=3.2, scale=180:-1, setpts=PTS-STARTPTS [over];
21444 [in] setpts=PTS-STARTPTS [main];
21445 [main][over] overlay=16:16 [out]
21446 @end example
21447
21448 @item
21449 Read from a video4linux2 device, and overlay it on top of the input
21450 labelled "in":
21451 @example
21452 movie=/dev/video0:f=video4linux2, scale=180:-1, setpts=PTS-STARTPTS [over];
21453 [in] setpts=PTS-STARTPTS [main];
21454 [main][over] overlay=16:16 [out]
21455 @end example
21456
21457 @item
21458 Read the first video stream and the audio stream with id 0x81 from
21459 dvd.vob; the video is connected to the pad named "video" and the audio is
21460 connected to the pad named "audio":
21461 @example
21462 movie=dvd.vob:s=v:0+#0x81 [video] [audio]
21463 @end example
21464 @end itemize
21465
21466 @subsection Commands
21467
21468 Both movie and amovie support the following commands:
21469 @table @option
21470 @item seek
21471 Perform seek using "av_seek_frame".
21472 The syntax is: seek @var{stream_index}|@var{timestamp}|@var{flags}
21473 @itemize
21474 @item
21475 @var{stream_index}: If stream_index is -1, a default
21476 stream is selected, and @var{timestamp} is automatically converted
21477 from AV_TIME_BASE units to the stream specific time_base.
21478 @item
21479 @var{timestamp}: Timestamp in AVStream.time_base units
21480 or, if no stream is specified, in AV_TIME_BASE units.
21481 @item
21482 @var{flags}: Flags which select direction and seeking mode.
21483 @end itemize
21484
21485 @item get_duration
21486 Get movie duration in AV_TIME_BASE units.
21487
21488 @end table
21489
21490 @c man end MULTIMEDIA SOURCES