]> git.sesse.net Git - ffmpeg/blob - doc/filters.texi
avfilter: add amultiply audio filter
[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 acrusher
497
498 Reduce audio bit resolution.
499
500 This filter is bit crusher with enhanced functionality. A bit crusher
501 is used to audibly reduce number of bits an audio signal is sampled
502 with. This doesn't change the bit depth at all, it just produces the
503 effect. Material reduced in bit depth sounds more harsh and "digital".
504 This filter is able to even round to continuous values instead of discrete
505 bit depths.
506 Additionally it has a D/C offset which results in different crushing of
507 the lower and the upper half of the signal.
508 An Anti-Aliasing setting is able to produce "softer" crushing sounds.
509
510 Another feature of this filter is the logarithmic mode.
511 This setting switches from linear distances between bits to logarithmic ones.
512 The result is a much more "natural" sounding crusher which doesn't gate low
513 signals for example. The human ear has a logarithmic perception,
514 so this kind of crushing is much more pleasant.
515 Logarithmic crushing is also able to get anti-aliased.
516
517 The filter accepts the following options:
518
519 @table @option
520 @item level_in
521 Set level in.
522
523 @item level_out
524 Set level out.
525
526 @item bits
527 Set bit reduction.
528
529 @item mix
530 Set mixing amount.
531
532 @item mode
533 Can be linear: @code{lin} or logarithmic: @code{log}.
534
535 @item dc
536 Set DC.
537
538 @item aa
539 Set anti-aliasing.
540
541 @item samples
542 Set sample reduction.
543
544 @item lfo
545 Enable LFO. By default disabled.
546
547 @item lforange
548 Set LFO range.
549
550 @item lforate
551 Set LFO rate.
552 @end table
553
554 @section acue
555
556 Delay audio filtering until a given wallclock timestamp. See the @ref{cue}
557 filter.
558
559 @section adeclick
560 Remove impulsive noise from input audio.
561
562 Samples detected as impulsive noise are replaced by interpolated samples using
563 autoregressive modelling.
564
565 @table @option
566 @item w
567 Set window size, in milliseconds. Allowed range is from @code{10} to
568 @code{100}. Default value is @code{55} milliseconds.
569 This sets size of window which will be processed at once.
570
571 @item o
572 Set window overlap, in percentage of window size. Allowed range is from
573 @code{50} to @code{95}. Default value is @code{75} percent.
574 Setting this to a very high value increases impulsive noise removal but makes
575 whole process much slower.
576
577 @item a
578 Set autoregression order, in percentage of window size. Allowed range is from
579 @code{0} to @code{25}. Default value is @code{2} percent. This option also
580 controls quality of interpolated samples using neighbour good samples.
581
582 @item t
583 Set threshold value. Allowed range is from @code{1} to @code{100}.
584 Default value is @code{2}.
585 This controls the strength of impulsive noise which is going to be removed.
586 The lower value, the more samples will be detected as impulsive noise.
587
588 @item b
589 Set burst fusion, in percentage of window size. Allowed range is @code{0} to
590 @code{10}. Default value is @code{2}.
591 If any two samples deteced as noise are spaced less than this value then any
592 sample inbetween those two samples will be also detected as noise.
593
594 @item m
595 Set overlap method.
596
597 It accepts the following values:
598 @table @option
599 @item a
600 Select overlap-add method. Even not interpolated samples are slightly
601 changed with this method.
602
603 @item s
604 Select overlap-save method. Not interpolated samples remain unchanged.
605 @end table
606
607 Default value is @code{a}.
608 @end table
609
610 @section adeclip
611 Remove clipped samples from input audio.
612
613 Samples detected as clipped are replaced by interpolated samples using
614 autoregressive modelling.
615
616 @table @option
617 @item w
618 Set window size, in milliseconds. Allowed range is from @code{10} to @code{100}.
619 Default value is @code{55} milliseconds.
620 This sets size of window which will be processed at once.
621
622 @item o
623 Set window overlap, in percentage of window size. Allowed range is from @code{50}
624 to @code{95}. Default value is @code{75} percent.
625
626 @item a
627 Set autoregression order, in percentage of window size. Allowed range is from
628 @code{0} to @code{25}. Default value is @code{8} percent. This option also controls
629 quality of interpolated samples using neighbour good samples.
630
631 @item t
632 Set threshold value. Allowed range is from @code{1} to @code{100}.
633 Default value is @code{10}. Higher values make clip detection less aggressive.
634
635 @item n
636 Set size of histogram used to detect clips. Allowed range is from @code{100} to @code{9999}.
637 Default value is @code{1000}. Higher values make clip detection less aggressive.
638
639 @item m
640 Set overlap method.
641
642 It accepts the following values:
643 @table @option
644 @item a
645 Select overlap-add method. Even not interpolated samples are slightly changed
646 with this method.
647
648 @item s
649 Select overlap-save method. Not interpolated samples remain unchanged.
650 @end table
651
652 Default value is @code{a}.
653 @end table
654
655 @section adelay
656
657 Delay one or more audio channels.
658
659 Samples in delayed channel are filled with silence.
660
661 The filter accepts the following option:
662
663 @table @option
664 @item delays
665 Set list of delays in milliseconds for each channel separated by '|'.
666 Unused delays will be silently ignored. If number of given delays is
667 smaller than number of channels all remaining channels will not be delayed.
668 If you want to delay exact number of samples, append 'S' to number.
669 @end table
670
671 @subsection Examples
672
673 @itemize
674 @item
675 Delay first channel by 1.5 seconds, the third channel by 0.5 seconds and leave
676 the second channel (and any other channels that may be present) unchanged.
677 @example
678 adelay=1500|0|500
679 @end example
680
681 @item
682 Delay second channel by 500 samples, the third channel by 700 samples and leave
683 the first channel (and any other channels that may be present) unchanged.
684 @example
685 adelay=0|500S|700S
686 @end example
687 @end itemize
688
689 @section aderivative, aintegral
690
691 Compute derivative/integral of audio stream.
692
693 Applying both filters one after another produces original audio.
694
695 @section aecho
696
697 Apply echoing to the input audio.
698
699 Echoes are reflected sound and can occur naturally amongst mountains
700 (and sometimes large buildings) when talking or shouting; digital echo
701 effects emulate this behaviour and are often used to help fill out the
702 sound of a single instrument or vocal. The time difference between the
703 original signal and the reflection is the @code{delay}, and the
704 loudness of the reflected signal is the @code{decay}.
705 Multiple echoes can have different delays and decays.
706
707 A description of the accepted parameters follows.
708
709 @table @option
710 @item in_gain
711 Set input gain of reflected signal. Default is @code{0.6}.
712
713 @item out_gain
714 Set output gain of reflected signal. Default is @code{0.3}.
715
716 @item delays
717 Set list of time intervals in milliseconds between original signal and reflections
718 separated by '|'. Allowed range for each @code{delay} is @code{(0 - 90000.0]}.
719 Default is @code{1000}.
720
721 @item decays
722 Set list of loudness of reflected signals separated by '|'.
723 Allowed range for each @code{decay} is @code{(0 - 1.0]}.
724 Default is @code{0.5}.
725 @end table
726
727 @subsection Examples
728
729 @itemize
730 @item
731 Make it sound as if there are twice as many instruments as are actually playing:
732 @example
733 aecho=0.8:0.88:60:0.4
734 @end example
735
736 @item
737 If delay is very short, then it sound like a (metallic) robot playing music:
738 @example
739 aecho=0.8:0.88:6:0.4
740 @end example
741
742 @item
743 A longer delay will sound like an open air concert in the mountains:
744 @example
745 aecho=0.8:0.9:1000:0.3
746 @end example
747
748 @item
749 Same as above but with one more mountain:
750 @example
751 aecho=0.8:0.9:1000|1800:0.3|0.25
752 @end example
753 @end itemize
754
755 @section aemphasis
756 Audio emphasis filter creates or restores material directly taken from LPs or
757 emphased CDs with different filter curves. E.g. to store music on vinyl the
758 signal has to be altered by a filter first to even out the disadvantages of
759 this recording medium.
760 Once the material is played back the inverse filter has to be applied to
761 restore the distortion of the frequency response.
762
763 The filter accepts the following options:
764
765 @table @option
766 @item level_in
767 Set input gain.
768
769 @item level_out
770 Set output gain.
771
772 @item mode
773 Set filter mode. For restoring material use @code{reproduction} mode, otherwise
774 use @code{production} mode. Default is @code{reproduction} mode.
775
776 @item type
777 Set filter type. Selects medium. Can be one of the following:
778
779 @table @option
780 @item col
781 select Columbia.
782 @item emi
783 select EMI.
784 @item bsi
785 select BSI (78RPM).
786 @item riaa
787 select RIAA.
788 @item cd
789 select Compact Disc (CD).
790 @item 50fm
791 select 50µs (FM).
792 @item 75fm
793 select 75µs (FM).
794 @item 50kf
795 select 50µs (FM-KF).
796 @item 75kf
797 select 75µs (FM-KF).
798 @end table
799 @end table
800
801 @section aeval
802
803 Modify an audio signal according to the specified expressions.
804
805 This filter accepts one or more expressions (one for each channel),
806 which are evaluated and used to modify a corresponding audio signal.
807
808 It accepts the following parameters:
809
810 @table @option
811 @item exprs
812 Set the '|'-separated expressions list for each separate channel. If
813 the number of input channels is greater than the number of
814 expressions, the last specified expression is used for the remaining
815 output channels.
816
817 @item channel_layout, c
818 Set output channel layout. If not specified, the channel layout is
819 specified by the number of expressions. If set to @samp{same}, it will
820 use by default the same input channel layout.
821 @end table
822
823 Each expression in @var{exprs} can contain the following constants and functions:
824
825 @table @option
826 @item ch
827 channel number of the current expression
828
829 @item n
830 number of the evaluated sample, starting from 0
831
832 @item s
833 sample rate
834
835 @item t
836 time of the evaluated sample expressed in seconds
837
838 @item nb_in_channels
839 @item nb_out_channels
840 input and output number of channels
841
842 @item val(CH)
843 the value of input channel with number @var{CH}
844 @end table
845
846 Note: this filter is slow. For faster processing you should use a
847 dedicated filter.
848
849 @subsection Examples
850
851 @itemize
852 @item
853 Half volume:
854 @example
855 aeval=val(ch)/2:c=same
856 @end example
857
858 @item
859 Invert phase of the second channel:
860 @example
861 aeval=val(0)|-val(1)
862 @end example
863 @end itemize
864
865 @anchor{afade}
866 @section afade
867
868 Apply fade-in/out effect to input audio.
869
870 A description of the accepted parameters follows.
871
872 @table @option
873 @item type, t
874 Specify the effect type, can be either @code{in} for fade-in, or
875 @code{out} for a fade-out effect. Default is @code{in}.
876
877 @item start_sample, ss
878 Specify the number of the start sample for starting to apply the fade
879 effect. Default is 0.
880
881 @item nb_samples, ns
882 Specify the number of samples for which the fade effect has to last. At
883 the end of the fade-in effect the output audio will have the same
884 volume as the input audio, at the end of the fade-out transition
885 the output audio will be silence. Default is 44100.
886
887 @item start_time, st
888 Specify the start time of the fade effect. Default is 0.
889 The value must be specified as a time duration; see
890 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
891 for the accepted syntax.
892 If set this option is used instead of @var{start_sample}.
893
894 @item duration, d
895 Specify the duration of the fade effect. See
896 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
897 for the accepted syntax.
898 At the end of the fade-in effect the output audio will have the same
899 volume as the input audio, at the end of the fade-out transition
900 the output audio will be silence.
901 By default the duration is determined by @var{nb_samples}.
902 If set this option is used instead of @var{nb_samples}.
903
904 @item curve
905 Set curve for fade transition.
906
907 It accepts the following values:
908 @table @option
909 @item tri
910 select triangular, linear slope (default)
911 @item qsin
912 select quarter of sine wave
913 @item hsin
914 select half of sine wave
915 @item esin
916 select exponential sine wave
917 @item log
918 select logarithmic
919 @item ipar
920 select inverted parabola
921 @item qua
922 select quadratic
923 @item cub
924 select cubic
925 @item squ
926 select square root
927 @item cbr
928 select cubic root
929 @item par
930 select parabola
931 @item exp
932 select exponential
933 @item iqsin
934 select inverted quarter of sine wave
935 @item ihsin
936 select inverted half of sine wave
937 @item dese
938 select double-exponential seat
939 @item desi
940 select double-exponential sigmoid
941 @end table
942 @end table
943
944 @subsection Examples
945
946 @itemize
947 @item
948 Fade in first 15 seconds of audio:
949 @example
950 afade=t=in:ss=0:d=15
951 @end example
952
953 @item
954 Fade out last 25 seconds of a 900 seconds audio:
955 @example
956 afade=t=out:st=875:d=25
957 @end example
958 @end itemize
959
960 @section afftfilt
961 Apply arbitrary expressions to samples in frequency domain.
962
963 @table @option
964 @item real
965 Set frequency domain real expression for each separate channel separated
966 by '|'. Default is "1".
967 If the number of input channels is greater than the number of
968 expressions, the last specified expression is used for the remaining
969 output channels.
970
971 @item imag
972 Set frequency domain imaginary expression for each separate channel
973 separated by '|'. If not set, @var{real} option is used.
974
975 Each expression in @var{real} and @var{imag} can contain the following
976 constants:
977
978 @table @option
979 @item sr
980 sample rate
981
982 @item b
983 current frequency bin number
984
985 @item nb
986 number of available bins
987
988 @item ch
989 channel number of the current expression
990
991 @item chs
992 number of channels
993
994 @item pts
995 current frame pts
996 @end table
997
998 @item win_size
999 Set window size.
1000
1001 It accepts the following values:
1002 @table @samp
1003 @item w16
1004 @item w32
1005 @item w64
1006 @item w128
1007 @item w256
1008 @item w512
1009 @item w1024
1010 @item w2048
1011 @item w4096
1012 @item w8192
1013 @item w16384
1014 @item w32768
1015 @item w65536
1016 @end table
1017 Default is @code{w4096}
1018
1019 @item win_func
1020 Set window function. Default is @code{hann}.
1021
1022 @item overlap
1023 Set window overlap. If set to 1, the recommended overlap for selected
1024 window function will be picked. Default is @code{0.75}.
1025 @end table
1026
1027 @subsection Examples
1028
1029 @itemize
1030 @item
1031 Leave almost only low frequencies in audio:
1032 @example
1033 afftfilt="1-clip((b/nb)*b,0,1)"
1034 @end example
1035 @end itemize
1036
1037 @anchor{afir}
1038 @section afir
1039
1040 Apply an arbitrary Frequency Impulse Response filter.
1041
1042 This filter is designed for applying long FIR filters,
1043 up to 30 seconds long.
1044
1045 It can be used as component for digital crossover filters,
1046 room equalization, cross talk cancellation, wavefield synthesis,
1047 auralization, ambiophonics and ambisonics.
1048
1049 This filter uses second stream as FIR coefficients.
1050 If second stream holds single channel, it will be used
1051 for all input channels in first stream, otherwise
1052 number of channels in second stream must be same as
1053 number of channels in first stream.
1054
1055 It accepts the following parameters:
1056
1057 @table @option
1058 @item dry
1059 Set dry gain. This sets input gain.
1060
1061 @item wet
1062 Set wet gain. This sets final output gain.
1063
1064 @item length
1065 Set Impulse Response filter length. Default is 1, which means whole IR is processed.
1066
1067 @item again
1068 Enable applying gain measured from power of IR.
1069
1070 @item maxir
1071 Set max allowed Impulse Response filter duration in seconds. Default is 30 seconds.
1072 Allowed range is 0.1 to 60 seconds.
1073
1074 @item response
1075 Show IR frequency reponse, magnitude and phase in additional video stream.
1076 By default it is disabled.
1077
1078 @item channel
1079 Set for which IR channel to display frequency response. By default is first channel
1080 displayed. This option is used only when @var{response} is enabled.
1081
1082 @item size
1083 Set video stream size. This option is used only when @var{response} is enabled.
1084 @end table
1085
1086 @subsection Examples
1087
1088 @itemize
1089 @item
1090 Apply reverb to stream using mono IR file as second input, complete command using ffmpeg:
1091 @example
1092 ffmpeg -i input.wav -i middle_tunnel_1way_mono.wav -lavfi afir output.wav
1093 @end example
1094 @end itemize
1095
1096 @anchor{aformat}
1097 @section aformat
1098
1099 Set output format constraints for the input audio. The framework will
1100 negotiate the most appropriate format to minimize conversions.
1101
1102 It accepts the following parameters:
1103 @table @option
1104
1105 @item sample_fmts
1106 A '|'-separated list of requested sample formats.
1107
1108 @item sample_rates
1109 A '|'-separated list of requested sample rates.
1110
1111 @item channel_layouts
1112 A '|'-separated list of requested channel layouts.
1113
1114 See @ref{channel layout syntax,,the Channel Layout section in the ffmpeg-utils(1) manual,ffmpeg-utils}
1115 for the required syntax.
1116 @end table
1117
1118 If a parameter is omitted, all values are allowed.
1119
1120 Force the output to either unsigned 8-bit or signed 16-bit stereo
1121 @example
1122 aformat=sample_fmts=u8|s16:channel_layouts=stereo
1123 @end example
1124
1125 @section agate
1126
1127 A gate is mainly used to reduce lower parts of a signal. This kind of signal
1128 processing reduces disturbing noise between useful signals.
1129
1130 Gating is done by detecting the volume below a chosen level @var{threshold}
1131 and dividing it by the factor set with @var{ratio}. The bottom of the noise
1132 floor is set via @var{range}. Because an exact manipulation of the signal
1133 would cause distortion of the waveform the reduction can be levelled over
1134 time. This is done by setting @var{attack} and @var{release}.
1135
1136 @var{attack} determines how long the signal has to fall below the threshold
1137 before any reduction will occur and @var{release} sets the time the signal
1138 has to rise above the threshold to reduce the reduction again.
1139 Shorter signals than the chosen attack time will be left untouched.
1140
1141 @table @option
1142 @item level_in
1143 Set input level before filtering.
1144 Default is 1. Allowed range is from 0.015625 to 64.
1145
1146 @item range
1147 Set the level of gain reduction when the signal is below the threshold.
1148 Default is 0.06125. Allowed range is from 0 to 1.
1149
1150 @item threshold
1151 If a signal rises above this level the gain reduction is released.
1152 Default is 0.125. Allowed range is from 0 to 1.
1153
1154 @item ratio
1155 Set a ratio by which the signal is reduced.
1156 Default is 2. Allowed range is from 1 to 9000.
1157
1158 @item attack
1159 Amount of milliseconds the signal has to rise above the threshold before gain
1160 reduction stops.
1161 Default is 20 milliseconds. Allowed range is from 0.01 to 9000.
1162
1163 @item release
1164 Amount of milliseconds the signal has to fall below the threshold before the
1165 reduction is increased again. Default is 250 milliseconds.
1166 Allowed range is from 0.01 to 9000.
1167
1168 @item makeup
1169 Set amount of amplification of signal after processing.
1170 Default is 1. Allowed range is from 1 to 64.
1171
1172 @item knee
1173 Curve the sharp knee around the threshold to enter gain reduction more softly.
1174 Default is 2.828427125. Allowed range is from 1 to 8.
1175
1176 @item detection
1177 Choose if exact signal should be taken for detection or an RMS like one.
1178 Default is @code{rms}. Can be @code{peak} or @code{rms}.
1179
1180 @item link
1181 Choose if the average level between all channels or the louder channel affects
1182 the reduction.
1183 Default is @code{average}. Can be @code{average} or @code{maximum}.
1184 @end table
1185
1186 @section aiir
1187
1188 Apply an arbitrary Infinite Impulse Response filter.
1189
1190 It accepts the following parameters:
1191
1192 @table @option
1193 @item z
1194 Set numerator/zeros coefficients.
1195
1196 @item p
1197 Set denominator/poles coefficients.
1198
1199 @item k
1200 Set channels gains.
1201
1202 @item dry_gain
1203 Set input gain.
1204
1205 @item wet_gain
1206 Set output gain.
1207
1208 @item f
1209 Set coefficients format.
1210
1211 @table @samp
1212 @item tf
1213 transfer function
1214 @item zp
1215 Z-plane zeros/poles, cartesian (default)
1216 @item pr
1217 Z-plane zeros/poles, polar radians
1218 @item pd
1219 Z-plane zeros/poles, polar degrees
1220 @end table
1221
1222 @item r
1223 Set kind of processing.
1224 Can be @code{d} - direct or @code{s} - serial cascading. Defauls is @code{s}.
1225
1226 @item e
1227 Set filtering precision.
1228
1229 @table @samp
1230 @item dbl
1231 double-precision floating-point (default)
1232 @item flt
1233 single-precision floating-point
1234 @item i32
1235 32-bit integers
1236 @item i16
1237 16-bit integers
1238 @end table
1239
1240 @item response
1241 Show IR frequency reponse, magnitude and phase in additional video stream.
1242 By default it is disabled.
1243
1244 @item channel
1245 Set for which IR channel to display frequency response. By default is first channel
1246 displayed. This option is used only when @var{response} is enabled.
1247
1248 @item size
1249 Set video stream size. This option is used only when @var{response} is enabled.
1250 @end table
1251
1252 Coefficients in @code{tf} format are separated by spaces and are in ascending
1253 order.
1254
1255 Coefficients in @code{zp} format are separated by spaces and order of coefficients
1256 doesn't matter. Coefficients in @code{zp} format are complex numbers with @var{i}
1257 imaginary unit.
1258
1259 Different coefficients and gains can be provided for every channel, in such case
1260 use '|' to separate coefficients or gains. Last provided coefficients will be
1261 used for all remaining channels.
1262
1263 @subsection Examples
1264
1265 @itemize
1266 @item
1267 Apply 2 pole elliptic notch at arround 5000Hz for 48000 Hz sample rate:
1268 @example
1269 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
1270 @end example
1271
1272 @item
1273 Same as above but in @code{zp} format:
1274 @example
1275 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
1276 @end example
1277 @end itemize
1278
1279 @section alimiter
1280
1281 The limiter prevents an input signal from rising over a desired threshold.
1282 This limiter uses lookahead technology to prevent your signal from distorting.
1283 It means that there is a small delay after the signal is processed. Keep in mind
1284 that the delay it produces is the attack time you set.
1285
1286 The filter accepts the following options:
1287
1288 @table @option
1289 @item level_in
1290 Set input gain. Default is 1.
1291
1292 @item level_out
1293 Set output gain. Default is 1.
1294
1295 @item limit
1296 Don't let signals above this level pass the limiter. Default is 1.
1297
1298 @item attack
1299 The limiter will reach its attenuation level in this amount of time in
1300 milliseconds. Default is 5 milliseconds.
1301
1302 @item release
1303 Come back from limiting to attenuation 1.0 in this amount of milliseconds.
1304 Default is 50 milliseconds.
1305
1306 @item asc
1307 When gain reduction is always needed ASC takes care of releasing to an
1308 average reduction level rather than reaching a reduction of 0 in the release
1309 time.
1310
1311 @item asc_level
1312 Select how much the release time is affected by ASC, 0 means nearly no changes
1313 in release time while 1 produces higher release times.
1314
1315 @item level
1316 Auto level output signal. Default is enabled.
1317 This normalizes audio back to 0dB if enabled.
1318 @end table
1319
1320 Depending on picked setting it is recommended to upsample input 2x or 4x times
1321 with @ref{aresample} before applying this filter.
1322
1323 @section allpass
1324
1325 Apply a two-pole all-pass filter with central frequency (in Hz)
1326 @var{frequency}, and filter-width @var{width}.
1327 An all-pass filter changes the audio's frequency to phase relationship
1328 without changing its frequency to amplitude relationship.
1329
1330 The filter accepts the following options:
1331
1332 @table @option
1333 @item frequency, f
1334 Set frequency in Hz.
1335
1336 @item width_type, t
1337 Set method to specify band-width of filter.
1338 @table @option
1339 @item h
1340 Hz
1341 @item q
1342 Q-Factor
1343 @item o
1344 octave
1345 @item s
1346 slope
1347 @item k
1348 kHz
1349 @end table
1350
1351 @item width, w
1352 Specify the band-width of a filter in width_type units.
1353
1354 @item channels, c
1355 Specify which channels to filter, by default all available are filtered.
1356 @end table
1357
1358 @subsection Commands
1359
1360 This filter supports the following commands:
1361 @table @option
1362 @item frequency, f
1363 Change allpass frequency.
1364 Syntax for the command is : "@var{frequency}"
1365
1366 @item width_type, t
1367 Change allpass width_type.
1368 Syntax for the command is : "@var{width_type}"
1369
1370 @item width, w
1371 Change allpass width.
1372 Syntax for the command is : "@var{width}"
1373 @end table
1374
1375 @section aloop
1376
1377 Loop audio samples.
1378
1379 The filter accepts the following options:
1380
1381 @table @option
1382 @item loop
1383 Set the number of loops. Setting this value to -1 will result in infinite loops.
1384 Default is 0.
1385
1386 @item size
1387 Set maximal number of samples. Default is 0.
1388
1389 @item start
1390 Set first sample of loop. Default is 0.
1391 @end table
1392
1393 @anchor{amerge}
1394 @section amerge
1395
1396 Merge two or more audio streams into a single multi-channel stream.
1397
1398 The filter accepts the following options:
1399
1400 @table @option
1401
1402 @item inputs
1403 Set the number of inputs. Default is 2.
1404
1405 @end table
1406
1407 If the channel layouts of the inputs are disjoint, and therefore compatible,
1408 the channel layout of the output will be set accordingly and the channels
1409 will be reordered as necessary. If the channel layouts of the inputs are not
1410 disjoint, the output will have all the channels of the first input then all
1411 the channels of the second input, in that order, and the channel layout of
1412 the output will be the default value corresponding to the total number of
1413 channels.
1414
1415 For example, if the first input is in 2.1 (FL+FR+LF) and the second input
1416 is FC+BL+BR, then the output will be in 5.1, with the channels in the
1417 following order: a1, a2, b1, a3, b2, b3 (a1 is the first channel of the
1418 first input, b1 is the first channel of the second input).
1419
1420 On the other hand, if both input are in stereo, the output channels will be
1421 in the default order: a1, a2, b1, b2, and the channel layout will be
1422 arbitrarily set to 4.0, which may or may not be the expected value.
1423
1424 All inputs must have the same sample rate, and format.
1425
1426 If inputs do not have the same duration, the output will stop with the
1427 shortest.
1428
1429 @subsection Examples
1430
1431 @itemize
1432 @item
1433 Merge two mono files into a stereo stream:
1434 @example
1435 amovie=left.wav [l] ; amovie=right.mp3 [r] ; [l] [r] amerge
1436 @end example
1437
1438 @item
1439 Multiple merges assuming 1 video stream and 6 audio streams in @file{input.mkv}:
1440 @example
1441 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
1442 @end example
1443 @end itemize
1444
1445 @section amix
1446
1447 Mixes multiple audio inputs into a single output.
1448
1449 Note that this filter only supports float samples (the @var{amerge}
1450 and @var{pan} audio filters support many formats). If the @var{amix}
1451 input has integer samples then @ref{aresample} will be automatically
1452 inserted to perform the conversion to float samples.
1453
1454 For example
1455 @example
1456 ffmpeg -i INPUT1 -i INPUT2 -i INPUT3 -filter_complex amix=inputs=3:duration=first:dropout_transition=3 OUTPUT
1457 @end example
1458 will mix 3 input audio streams to a single output with the same duration as the
1459 first input and a dropout transition time of 3 seconds.
1460
1461 It accepts the following parameters:
1462 @table @option
1463
1464 @item inputs
1465 The number of inputs. If unspecified, it defaults to 2.
1466
1467 @item duration
1468 How to determine the end-of-stream.
1469 @table @option
1470
1471 @item longest
1472 The duration of the longest input. (default)
1473
1474 @item shortest
1475 The duration of the shortest input.
1476
1477 @item first
1478 The duration of the first input.
1479
1480 @end table
1481
1482 @item dropout_transition
1483 The transition time, in seconds, for volume renormalization when an input
1484 stream ends. The default value is 2 seconds.
1485
1486 @item weights
1487 Specify weight of each input audio stream as sequence.
1488 Each weight is separated by space. By default all inputs have same weight.
1489 @end table
1490
1491 @section amultiply
1492
1493 Multiply first audio stream with second audio stream and store result
1494 in output audio stream. Multiplication is done by multiplying each
1495 sample from first stream with sample at same position from second stream.
1496
1497 With this element-wise multiplication one can create amplitude fades and
1498 amplitude modulations.
1499
1500 @section anequalizer
1501
1502 High-order parametric multiband equalizer for each channel.
1503
1504 It accepts the following parameters:
1505 @table @option
1506 @item params
1507
1508 This option string is in format:
1509 "c@var{chn} f=@var{cf} w=@var{w} g=@var{g} t=@var{f} | ..."
1510 Each equalizer band is separated by '|'.
1511
1512 @table @option
1513 @item chn
1514 Set channel number to which equalization will be applied.
1515 If input doesn't have that channel the entry is ignored.
1516
1517 @item f
1518 Set central frequency for band.
1519 If input doesn't have that frequency the entry is ignored.
1520
1521 @item w
1522 Set band width in hertz.
1523
1524 @item g
1525 Set band gain in dB.
1526
1527 @item t
1528 Set filter type for band, optional, can be:
1529
1530 @table @samp
1531 @item 0
1532 Butterworth, this is default.
1533
1534 @item 1
1535 Chebyshev type 1.
1536
1537 @item 2
1538 Chebyshev type 2.
1539 @end table
1540 @end table
1541
1542 @item curves
1543 With this option activated frequency response of anequalizer is displayed
1544 in video stream.
1545
1546 @item size
1547 Set video stream size. Only useful if curves option is activated.
1548
1549 @item mgain
1550 Set max gain that will be displayed. Only useful if curves option is activated.
1551 Setting this to a reasonable value makes it possible to display gain which is derived from
1552 neighbour bands which are too close to each other and thus produce higher gain
1553 when both are activated.
1554
1555 @item fscale
1556 Set frequency scale used to draw frequency response in video output.
1557 Can be linear or logarithmic. Default is logarithmic.
1558
1559 @item colors
1560 Set color for each channel curve which is going to be displayed in video stream.
1561 This is list of color names separated by space or by '|'.
1562 Unrecognised or missing colors will be replaced by white color.
1563 @end table
1564
1565 @subsection Examples
1566
1567 @itemize
1568 @item
1569 Lower gain by 10 of central frequency 200Hz and width 100 Hz
1570 for first 2 channels using Chebyshev type 1 filter:
1571 @example
1572 anequalizer=c0 f=200 w=100 g=-10 t=1|c1 f=200 w=100 g=-10 t=1
1573 @end example
1574 @end itemize
1575
1576 @subsection Commands
1577
1578 This filter supports the following commands:
1579 @table @option
1580 @item change
1581 Alter existing filter parameters.
1582 Syntax for the commands is : "@var{fN}|f=@var{freq}|w=@var{width}|g=@var{gain}"
1583
1584 @var{fN} is existing filter number, starting from 0, if no such filter is available
1585 error is returned.
1586 @var{freq} set new frequency parameter.
1587 @var{width} set new width parameter in herz.
1588 @var{gain} set new gain parameter in dB.
1589
1590 Full filter invocation with asendcmd may look like this:
1591 asendcmd=c='4.0 anequalizer change 0|f=200|w=50|g=1',anequalizer=...
1592 @end table
1593
1594 @section anull
1595
1596 Pass the audio source unchanged to the output.
1597
1598 @section apad
1599
1600 Pad the end of an audio stream with silence.
1601
1602 This can be used together with @command{ffmpeg} @option{-shortest} to
1603 extend audio streams to the same length as the video stream.
1604
1605 A description of the accepted options follows.
1606
1607 @table @option
1608 @item packet_size
1609 Set silence packet size. Default value is 4096.
1610
1611 @item pad_len
1612 Set the number of samples of silence to add to the end. After the
1613 value is reached, the stream is terminated. This option is mutually
1614 exclusive with @option{whole_len}.
1615
1616 @item whole_len
1617 Set the minimum total number of samples in the output audio stream. If
1618 the value is longer than the input audio length, silence is added to
1619 the end, until the value is reached. This option is mutually exclusive
1620 with @option{pad_len}.
1621 @end table
1622
1623 If neither the @option{pad_len} nor the @option{whole_len} option is
1624 set, the filter will add silence to the end of the input stream
1625 indefinitely.
1626
1627 @subsection Examples
1628
1629 @itemize
1630 @item
1631 Add 1024 samples of silence to the end of the input:
1632 @example
1633 apad=pad_len=1024
1634 @end example
1635
1636 @item
1637 Make sure the audio output will contain at least 10000 samples, pad
1638 the input with silence if required:
1639 @example
1640 apad=whole_len=10000
1641 @end example
1642
1643 @item
1644 Use @command{ffmpeg} to pad the audio input with silence, so that the
1645 video stream will always result the shortest and will be converted
1646 until the end in the output file when using the @option{shortest}
1647 option:
1648 @example
1649 ffmpeg -i VIDEO -i AUDIO -filter_complex "[1:0]apad" -shortest OUTPUT
1650 @end example
1651 @end itemize
1652
1653 @section aphaser
1654 Add a phasing effect to the input audio.
1655
1656 A phaser filter creates series of peaks and troughs in the frequency spectrum.
1657 The position of the peaks and troughs are modulated so that they vary over time, creating a sweeping effect.
1658
1659 A description of the accepted parameters follows.
1660
1661 @table @option
1662 @item in_gain
1663 Set input gain. Default is 0.4.
1664
1665 @item out_gain
1666 Set output gain. Default is 0.74
1667
1668 @item delay
1669 Set delay in milliseconds. Default is 3.0.
1670
1671 @item decay
1672 Set decay. Default is 0.4.
1673
1674 @item speed
1675 Set modulation speed in Hz. Default is 0.5.
1676
1677 @item type
1678 Set modulation type. Default is triangular.
1679
1680 It accepts the following values:
1681 @table @samp
1682 @item triangular, t
1683 @item sinusoidal, s
1684 @end table
1685 @end table
1686
1687 @section apulsator
1688
1689 Audio pulsator is something between an autopanner and a tremolo.
1690 But it can produce funny stereo effects as well. Pulsator changes the volume
1691 of the left and right channel based on a LFO (low frequency oscillator) with
1692 different waveforms and shifted phases.
1693 This filter have the ability to define an offset between left and right
1694 channel. An offset of 0 means that both LFO shapes match each other.
1695 The left and right channel are altered equally - a conventional tremolo.
1696 An offset of 50% means that the shape of the right channel is exactly shifted
1697 in phase (or moved backwards about half of the frequency) - pulsator acts as
1698 an autopanner. At 1 both curves match again. Every setting in between moves the
1699 phase shift gapless between all stages and produces some "bypassing" sounds with
1700 sine and triangle waveforms. The more you set the offset near 1 (starting from
1701 the 0.5) the faster the signal passes from the left to the right speaker.
1702
1703 The filter accepts the following options:
1704
1705 @table @option
1706 @item level_in
1707 Set input gain. By default it is 1. Range is [0.015625 - 64].
1708
1709 @item level_out
1710 Set output gain. By default it is 1. Range is [0.015625 - 64].
1711
1712 @item mode
1713 Set waveform shape the LFO will use. Can be one of: sine, triangle, square,
1714 sawup or sawdown. Default is sine.
1715
1716 @item amount
1717 Set modulation. Define how much of original signal is affected by the LFO.
1718
1719 @item offset_l
1720 Set left channel offset. Default is 0. Allowed range is [0 - 1].
1721
1722 @item offset_r
1723 Set right channel offset. Default is 0.5. Allowed range is [0 - 1].
1724
1725 @item width
1726 Set pulse width. Default is 1. Allowed range is [0 - 2].
1727
1728 @item timing
1729 Set possible timing mode. Can be one of: bpm, ms or hz. Default is hz.
1730
1731 @item bpm
1732 Set bpm. Default is 120. Allowed range is [30 - 300]. Only used if timing
1733 is set to bpm.
1734
1735 @item ms
1736 Set ms. Default is 500. Allowed range is [10 - 2000]. Only used if timing
1737 is set to ms.
1738
1739 @item hz
1740 Set frequency in Hz. Default is 2. Allowed range is [0.01 - 100]. Only used
1741 if timing is set to hz.
1742 @end table
1743
1744 @anchor{aresample}
1745 @section aresample
1746
1747 Resample the input audio to the specified parameters, using the
1748 libswresample library. If none are specified then the filter will
1749 automatically convert between its input and output.
1750
1751 This filter is also able to stretch/squeeze the audio data to make it match
1752 the timestamps or to inject silence / cut out audio to make it match the
1753 timestamps, do a combination of both or do neither.
1754
1755 The filter accepts the syntax
1756 [@var{sample_rate}:]@var{resampler_options}, where @var{sample_rate}
1757 expresses a sample rate and @var{resampler_options} is a list of
1758 @var{key}=@var{value} pairs, separated by ":". See the
1759 @ref{Resampler Options,,"Resampler Options" section in the
1760 ffmpeg-resampler(1) manual,ffmpeg-resampler}
1761 for the complete list of supported options.
1762
1763 @subsection Examples
1764
1765 @itemize
1766 @item
1767 Resample the input audio to 44100Hz:
1768 @example
1769 aresample=44100
1770 @end example
1771
1772 @item
1773 Stretch/squeeze samples to the given timestamps, with a maximum of 1000
1774 samples per second compensation:
1775 @example
1776 aresample=async=1000
1777 @end example
1778 @end itemize
1779
1780 @section areverse
1781
1782 Reverse an audio clip.
1783
1784 Warning: This filter requires memory to buffer the entire clip, so trimming
1785 is suggested.
1786
1787 @subsection Examples
1788
1789 @itemize
1790 @item
1791 Take the first 5 seconds of a clip, and reverse it.
1792 @example
1793 atrim=end=5,areverse
1794 @end example
1795 @end itemize
1796
1797 @section asetnsamples
1798
1799 Set the number of samples per each output audio frame.
1800
1801 The last output packet may contain a different number of samples, as
1802 the filter will flush all the remaining samples when the input audio
1803 signals its end.
1804
1805 The filter accepts the following options:
1806
1807 @table @option
1808
1809 @item nb_out_samples, n
1810 Set the number of frames per each output audio frame. The number is
1811 intended as the number of samples @emph{per each channel}.
1812 Default value is 1024.
1813
1814 @item pad, p
1815 If set to 1, the filter will pad the last audio frame with zeroes, so
1816 that the last frame will contain the same number of samples as the
1817 previous ones. Default value is 1.
1818 @end table
1819
1820 For example, to set the number of per-frame samples to 1234 and
1821 disable padding for the last frame, use:
1822 @example
1823 asetnsamples=n=1234:p=0
1824 @end example
1825
1826 @section asetrate
1827
1828 Set the sample rate without altering the PCM data.
1829 This will result in a change of speed and pitch.
1830
1831 The filter accepts the following options:
1832
1833 @table @option
1834 @item sample_rate, r
1835 Set the output sample rate. Default is 44100 Hz.
1836 @end table
1837
1838 @section ashowinfo
1839
1840 Show a line containing various information for each input audio frame.
1841 The input audio is not modified.
1842
1843 The shown line contains a sequence of key/value pairs of the form
1844 @var{key}:@var{value}.
1845
1846 The following values are shown in the output:
1847
1848 @table @option
1849 @item n
1850 The (sequential) number of the input frame, starting from 0.
1851
1852 @item pts
1853 The presentation timestamp of the input frame, in time base units; the time base
1854 depends on the filter input pad, and is usually 1/@var{sample_rate}.
1855
1856 @item pts_time
1857 The presentation timestamp of the input frame in seconds.
1858
1859 @item pos
1860 position of the frame in the input stream, -1 if this information in
1861 unavailable and/or meaningless (for example in case of synthetic audio)
1862
1863 @item fmt
1864 The sample format.
1865
1866 @item chlayout
1867 The channel layout.
1868
1869 @item rate
1870 The sample rate for the audio frame.
1871
1872 @item nb_samples
1873 The number of samples (per channel) in the frame.
1874
1875 @item checksum
1876 The Adler-32 checksum (printed in hexadecimal) of the audio data. For planar
1877 audio, the data is treated as if all the planes were concatenated.
1878
1879 @item plane_checksums
1880 A list of Adler-32 checksums for each data plane.
1881 @end table
1882
1883 @anchor{astats}
1884 @section astats
1885
1886 Display time domain statistical information about the audio channels.
1887 Statistics are calculated and displayed for each audio channel and,
1888 where applicable, an overall figure is also given.
1889
1890 It accepts the following option:
1891 @table @option
1892 @item length
1893 Short window length in seconds, used for peak and trough RMS measurement.
1894 Default is @code{0.05} (50 milliseconds). Allowed range is @code{[0.01 - 10]}.
1895
1896 @item metadata
1897
1898 Set metadata injection. All the metadata keys are prefixed with @code{lavfi.astats.X},
1899 where @code{X} is channel number starting from 1 or string @code{Overall}. Default is
1900 disabled.
1901
1902 Available keys for each channel are:
1903 DC_offset
1904 Min_level
1905 Max_level
1906 Min_difference
1907 Max_difference
1908 Mean_difference
1909 RMS_difference
1910 Peak_level
1911 RMS_peak
1912 RMS_trough
1913 Crest_factor
1914 Flat_factor
1915 Peak_count
1916 Bit_depth
1917 Dynamic_range
1918
1919 and for Overall:
1920 DC_offset
1921 Min_level
1922 Max_level
1923 Min_difference
1924 Max_difference
1925 Mean_difference
1926 RMS_difference
1927 Peak_level
1928 RMS_level
1929 RMS_peak
1930 RMS_trough
1931 Flat_factor
1932 Peak_count
1933 Bit_depth
1934 Number_of_samples
1935
1936 For example full key look like this @code{lavfi.astats.1.DC_offset} or
1937 this @code{lavfi.astats.Overall.Peak_count}.
1938
1939 For description what each key means read below.
1940
1941 @item reset
1942 Set number of frame after which stats are going to be recalculated.
1943 Default is disabled.
1944 @end table
1945
1946 A description of each shown parameter follows:
1947
1948 @table @option
1949 @item DC offset
1950 Mean amplitude displacement from zero.
1951
1952 @item Min level
1953 Minimal sample level.
1954
1955 @item Max level
1956 Maximal sample level.
1957
1958 @item Min difference
1959 Minimal difference between two consecutive samples.
1960
1961 @item Max difference
1962 Maximal difference between two consecutive samples.
1963
1964 @item Mean difference
1965 Mean difference between two consecutive samples.
1966 The average of each difference between two consecutive samples.
1967
1968 @item RMS difference
1969 Root Mean Square difference between two consecutive samples.
1970
1971 @item Peak level dB
1972 @item RMS level dB
1973 Standard peak and RMS level measured in dBFS.
1974
1975 @item RMS peak dB
1976 @item RMS trough dB
1977 Peak and trough values for RMS level measured over a short window.
1978
1979 @item Crest factor
1980 Standard ratio of peak to RMS level (note: not in dB).
1981
1982 @item Flat factor
1983 Flatness (i.e. consecutive samples with the same value) of the signal at its peak levels
1984 (i.e. either @var{Min level} or @var{Max level}).
1985
1986 @item Peak count
1987 Number of occasions (not the number of samples) that the signal attained either
1988 @var{Min level} or @var{Max level}.
1989
1990 @item Bit depth
1991 Overall bit depth of audio. Number of bits used for each sample.
1992
1993 @item Dynamic range
1994 Measured dynamic range of audio in dB.
1995 @end table
1996
1997 @section atempo
1998
1999 Adjust audio tempo.
2000
2001 The filter accepts exactly one parameter, the audio tempo. If not
2002 specified then the filter will assume nominal 1.0 tempo. Tempo must
2003 be in the [0.5, 100.0] range.
2004
2005 Note that tempo greater than 2 will skip some samples rather than
2006 blend them in.  If for any reason this is a concern it is always
2007 possible to daisy-chain several instances of atempo to achieve the
2008 desired product tempo.
2009
2010 @subsection Examples
2011
2012 @itemize
2013 @item
2014 Slow down audio to 80% tempo:
2015 @example
2016 atempo=0.8
2017 @end example
2018
2019 @item
2020 To speed up audio to 300% tempo:
2021 @example
2022 atempo=3
2023 @end example
2024
2025 @item
2026 To speed up audio to 300% tempo by daisy-chaining two atempo instances:
2027 @example
2028 atempo=sqrt(3),atempo=sqrt(3)
2029 @end example
2030 @end itemize
2031
2032 @section atrim
2033
2034 Trim the input so that the output contains one continuous subpart of the input.
2035
2036 It accepts the following parameters:
2037 @table @option
2038 @item start
2039 Timestamp (in seconds) of the start of the section to keep. I.e. the audio
2040 sample with the timestamp @var{start} will be the first sample in the output.
2041
2042 @item end
2043 Specify time of the first audio sample that will be dropped, i.e. the
2044 audio sample immediately preceding the one with the timestamp @var{end} will be
2045 the last sample in the output.
2046
2047 @item start_pts
2048 Same as @var{start}, except this option sets the start timestamp in samples
2049 instead of seconds.
2050
2051 @item end_pts
2052 Same as @var{end}, except this option sets the end timestamp in samples instead
2053 of seconds.
2054
2055 @item duration
2056 The maximum duration of the output in seconds.
2057
2058 @item start_sample
2059 The number of the first sample that should be output.
2060
2061 @item end_sample
2062 The number of the first sample that should be dropped.
2063 @end table
2064
2065 @option{start}, @option{end}, and @option{duration} are expressed as time
2066 duration specifications; see
2067 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}.
2068
2069 Note that the first two sets of the start/end options and the @option{duration}
2070 option look at the frame timestamp, while the _sample options simply count the
2071 samples that pass through the filter. So start/end_pts and start/end_sample will
2072 give different results when the timestamps are wrong, inexact or do not start at
2073 zero. Also note that this filter does not modify the timestamps. If you wish
2074 to have the output timestamps start at zero, insert the asetpts filter after the
2075 atrim filter.
2076
2077 If multiple start or end options are set, this filter tries to be greedy and
2078 keep all samples that match at least one of the specified constraints. To keep
2079 only the part that matches all the constraints at once, chain multiple atrim
2080 filters.
2081
2082 The defaults are such that all the input is kept. So it is possible to set e.g.
2083 just the end values to keep everything before the specified time.
2084
2085 Examples:
2086 @itemize
2087 @item
2088 Drop everything except the second minute of input:
2089 @example
2090 ffmpeg -i INPUT -af atrim=60:120
2091 @end example
2092
2093 @item
2094 Keep only the first 1000 samples:
2095 @example
2096 ffmpeg -i INPUT -af atrim=end_sample=1000
2097 @end example
2098
2099 @end itemize
2100
2101 @section bandpass
2102
2103 Apply a two-pole Butterworth band-pass filter with central
2104 frequency @var{frequency}, and (3dB-point) band-width width.
2105 The @var{csg} option selects a constant skirt gain (peak gain = Q)
2106 instead of the default: constant 0dB peak gain.
2107 The filter roll off at 6dB per octave (20dB per decade).
2108
2109 The filter accepts the following options:
2110
2111 @table @option
2112 @item frequency, f
2113 Set the filter's central frequency. Default is @code{3000}.
2114
2115 @item csg
2116 Constant skirt gain if set to 1. Defaults to 0.
2117
2118 @item width_type, t
2119 Set method to specify band-width of filter.
2120 @table @option
2121 @item h
2122 Hz
2123 @item q
2124 Q-Factor
2125 @item o
2126 octave
2127 @item s
2128 slope
2129 @item k
2130 kHz
2131 @end table
2132
2133 @item width, w
2134 Specify the band-width of a filter in width_type units.
2135
2136 @item channels, c
2137 Specify which channels to filter, by default all available are filtered.
2138 @end table
2139
2140 @subsection Commands
2141
2142 This filter supports the following commands:
2143 @table @option
2144 @item frequency, f
2145 Change bandpass frequency.
2146 Syntax for the command is : "@var{frequency}"
2147
2148 @item width_type, t
2149 Change bandpass width_type.
2150 Syntax for the command is : "@var{width_type}"
2151
2152 @item width, w
2153 Change bandpass width.
2154 Syntax for the command is : "@var{width}"
2155 @end table
2156
2157 @section bandreject
2158
2159 Apply a two-pole Butterworth band-reject filter with central
2160 frequency @var{frequency}, and (3dB-point) band-width @var{width}.
2161 The filter roll off at 6dB per octave (20dB per decade).
2162
2163 The filter accepts the following options:
2164
2165 @table @option
2166 @item frequency, f
2167 Set the filter's central frequency. Default is @code{3000}.
2168
2169 @item width_type, t
2170 Set method to specify band-width of filter.
2171 @table @option
2172 @item h
2173 Hz
2174 @item q
2175 Q-Factor
2176 @item o
2177 octave
2178 @item s
2179 slope
2180 @item k
2181 kHz
2182 @end table
2183
2184 @item width, w
2185 Specify the band-width of a filter in width_type units.
2186
2187 @item channels, c
2188 Specify which channels to filter, by default all available are filtered.
2189 @end table
2190
2191 @subsection Commands
2192
2193 This filter supports the following commands:
2194 @table @option
2195 @item frequency, f
2196 Change bandreject frequency.
2197 Syntax for the command is : "@var{frequency}"
2198
2199 @item width_type, t
2200 Change bandreject width_type.
2201 Syntax for the command is : "@var{width_type}"
2202
2203 @item width, w
2204 Change bandreject width.
2205 Syntax for the command is : "@var{width}"
2206 @end table
2207
2208 @section bass, lowshelf
2209
2210 Boost or cut the bass (lower) frequencies of the audio using a two-pole
2211 shelving filter with a response similar to that of a standard
2212 hi-fi's tone-controls. This is also known as shelving equalisation (EQ).
2213
2214 The filter accepts the following options:
2215
2216 @table @option
2217 @item gain, g
2218 Give the gain at 0 Hz. Its useful range is about -20
2219 (for a large cut) to +20 (for a large boost).
2220 Beware of clipping when using a positive gain.
2221
2222 @item frequency, f
2223 Set the filter's central frequency and so can be used
2224 to extend or reduce the frequency range to be boosted or cut.
2225 The default value is @code{100} Hz.
2226
2227 @item width_type, t
2228 Set method to specify band-width of filter.
2229 @table @option
2230 @item h
2231 Hz
2232 @item q
2233 Q-Factor
2234 @item o
2235 octave
2236 @item s
2237 slope
2238 @item k
2239 kHz
2240 @end table
2241
2242 @item width, w
2243 Determine how steep is the filter's shelf transition.
2244
2245 @item channels, c
2246 Specify which channels to filter, by default all available are filtered.
2247 @end table
2248
2249 @subsection Commands
2250
2251 This filter supports the following commands:
2252 @table @option
2253 @item frequency, f
2254 Change bass frequency.
2255 Syntax for the command is : "@var{frequency}"
2256
2257 @item width_type, t
2258 Change bass width_type.
2259 Syntax for the command is : "@var{width_type}"
2260
2261 @item width, w
2262 Change bass width.
2263 Syntax for the command is : "@var{width}"
2264
2265 @item gain, g
2266 Change bass gain.
2267 Syntax for the command is : "@var{gain}"
2268 @end table
2269
2270 @section biquad
2271
2272 Apply a biquad IIR filter with the given coefficients.
2273 Where @var{b0}, @var{b1}, @var{b2} and @var{a0}, @var{a1}, @var{a2}
2274 are the numerator and denominator coefficients respectively.
2275 and @var{channels}, @var{c} specify which channels to filter, by default all
2276 available are filtered.
2277
2278 @subsection Commands
2279
2280 This filter supports the following commands:
2281 @table @option
2282 @item a0
2283 @item a1
2284 @item a2
2285 @item b0
2286 @item b1
2287 @item b2
2288 Change biquad parameter.
2289 Syntax for the command is : "@var{value}"
2290 @end table
2291
2292 @section bs2b
2293 Bauer stereo to binaural transformation, which improves headphone listening of
2294 stereo audio records.
2295
2296 To enable compilation of this filter you need to configure FFmpeg with
2297 @code{--enable-libbs2b}.
2298
2299 It accepts the following parameters:
2300 @table @option
2301
2302 @item profile
2303 Pre-defined crossfeed level.
2304 @table @option
2305
2306 @item default
2307 Default level (fcut=700, feed=50).
2308
2309 @item cmoy
2310 Chu Moy circuit (fcut=700, feed=60).
2311
2312 @item jmeier
2313 Jan Meier circuit (fcut=650, feed=95).
2314
2315 @end table
2316
2317 @item fcut
2318 Cut frequency (in Hz).
2319
2320 @item feed
2321 Feed level (in Hz).
2322
2323 @end table
2324
2325 @section channelmap
2326
2327 Remap input channels to new locations.
2328
2329 It accepts the following parameters:
2330 @table @option
2331 @item map
2332 Map channels from input to output. The argument is a '|'-separated list of
2333 mappings, each in the @code{@var{in_channel}-@var{out_channel}} or
2334 @var{in_channel} form. @var{in_channel} can be either the name of the input
2335 channel (e.g. FL for front left) or its index in the input channel layout.
2336 @var{out_channel} is the name of the output channel or its index in the output
2337 channel layout. If @var{out_channel} is not given then it is implicitly an
2338 index, starting with zero and increasing by one for each mapping.
2339
2340 @item channel_layout
2341 The channel layout of the output stream.
2342 @end table
2343
2344 If no mapping is present, the filter will implicitly map input channels to
2345 output channels, preserving indices.
2346
2347 @subsection Examples
2348
2349 @itemize
2350 @item
2351 For example, assuming a 5.1+downmix input MOV file,
2352 @example
2353 ffmpeg -i in.mov -filter 'channelmap=map=DL-FL|DR-FR' out.wav
2354 @end example
2355 will create an output WAV file tagged as stereo from the downmix channels of
2356 the input.
2357
2358 @item
2359 To fix a 5.1 WAV improperly encoded in AAC's native channel order
2360 @example
2361 ffmpeg -i in.wav -filter 'channelmap=1|2|0|5|3|4:5.1' out.wav
2362 @end example
2363 @end itemize
2364
2365 @section channelsplit
2366
2367 Split each channel from an input audio stream into a separate output stream.
2368
2369 It accepts the following parameters:
2370 @table @option
2371 @item channel_layout
2372 The channel layout of the input stream. The default is "stereo".
2373 @item channels
2374 A channel layout describing the channels to be extracted as separate output streams
2375 or "all" to extract each input channel as a separate stream. The default is "all".
2376
2377 Choosing channels not present in channel layout in the input will result in an error.
2378 @end table
2379
2380 @subsection Examples
2381
2382 @itemize
2383 @item
2384 For example, assuming a stereo input MP3 file,
2385 @example
2386 ffmpeg -i in.mp3 -filter_complex channelsplit out.mkv
2387 @end example
2388 will create an output Matroska file with two audio streams, one containing only
2389 the left channel and the other the right channel.
2390
2391 @item
2392 Split a 5.1 WAV file into per-channel files:
2393 @example
2394 ffmpeg -i in.wav -filter_complex
2395 'channelsplit=channel_layout=5.1[FL][FR][FC][LFE][SL][SR]'
2396 -map '[FL]' front_left.wav -map '[FR]' front_right.wav -map '[FC]'
2397 front_center.wav -map '[LFE]' lfe.wav -map '[SL]' side_left.wav -map '[SR]'
2398 side_right.wav
2399 @end example
2400
2401 @item
2402 Extract only LFE from a 5.1 WAV file:
2403 @example
2404 ffmpeg -i in.wav -filter_complex 'channelsplit=channel_layout=5.1:channels=LFE[LFE]'
2405 -map '[LFE]' lfe.wav
2406 @end example
2407 @end itemize
2408
2409 @section chorus
2410 Add a chorus effect to the audio.
2411
2412 Can make a single vocal sound like a chorus, but can also be applied to instrumentation.
2413
2414 Chorus resembles an echo effect with a short delay, but whereas with echo the delay is
2415 constant, with chorus, it is varied using using sinusoidal or triangular modulation.
2416 The modulation depth defines the range the modulated delay is played before or after
2417 the delay. Hence the delayed sound will sound slower or faster, that is the delayed
2418 sound tuned around the original one, like in a chorus where some vocals are slightly
2419 off key.
2420
2421 It accepts the following parameters:
2422 @table @option
2423 @item in_gain
2424 Set input gain. Default is 0.4.
2425
2426 @item out_gain
2427 Set output gain. Default is 0.4.
2428
2429 @item delays
2430 Set delays. A typical delay is around 40ms to 60ms.
2431
2432 @item decays
2433 Set decays.
2434
2435 @item speeds
2436 Set speeds.
2437
2438 @item depths
2439 Set depths.
2440 @end table
2441
2442 @subsection Examples
2443
2444 @itemize
2445 @item
2446 A single delay:
2447 @example
2448 chorus=0.7:0.9:55:0.4:0.25:2
2449 @end example
2450
2451 @item
2452 Two delays:
2453 @example
2454 chorus=0.6:0.9:50|60:0.4|0.32:0.25|0.4:2|1.3
2455 @end example
2456
2457 @item
2458 Fuller sounding chorus with three delays:
2459 @example
2460 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
2461 @end example
2462 @end itemize
2463
2464 @section compand
2465 Compress or expand the audio's dynamic range.
2466
2467 It accepts the following parameters:
2468
2469 @table @option
2470
2471 @item attacks
2472 @item decays
2473 A list of times in seconds for each channel over which the instantaneous level
2474 of the input signal is averaged to determine its volume. @var{attacks} refers to
2475 increase of volume and @var{decays} refers to decrease of volume. For most
2476 situations, the attack time (response to the audio getting louder) should be
2477 shorter than the decay time, because the human ear is more sensitive to sudden
2478 loud audio than sudden soft audio. A typical value for attack is 0.3 seconds and
2479 a typical value for decay is 0.8 seconds.
2480 If specified number of attacks & decays is lower than number of channels, the last
2481 set attack/decay will be used for all remaining channels.
2482
2483 @item points
2484 A list of points for the transfer function, specified in dB relative to the
2485 maximum possible signal amplitude. Each key points list must be defined using
2486 the following syntax: @code{x0/y0|x1/y1|x2/y2|....} or
2487 @code{x0/y0 x1/y1 x2/y2 ....}
2488
2489 The input values must be in strictly increasing order but the transfer function
2490 does not have to be monotonically rising. The point @code{0/0} is assumed but
2491 may be overridden (by @code{0/out-dBn}). Typical values for the transfer
2492 function are @code{-70/-70|-60/-20|1/0}.
2493
2494 @item soft-knee
2495 Set the curve radius in dB for all joints. It defaults to 0.01.
2496
2497 @item gain
2498 Set the additional gain in dB to be applied at all points on the transfer
2499 function. This allows for easy adjustment of the overall gain.
2500 It defaults to 0.
2501
2502 @item volume
2503 Set an initial volume, in dB, to be assumed for each channel when filtering
2504 starts. This permits the user to supply a nominal level initially, so that, for
2505 example, a very large gain is not applied to initial signal levels before the
2506 companding has begun to operate. A typical value for audio which is initially
2507 quiet is -90 dB. It defaults to 0.
2508
2509 @item delay
2510 Set a delay, in seconds. The input audio is analyzed immediately, but audio is
2511 delayed before being fed to the volume adjuster. Specifying a delay
2512 approximately equal to the attack/decay times allows the filter to effectively
2513 operate in predictive rather than reactive mode. It defaults to 0.
2514
2515 @end table
2516
2517 @subsection Examples
2518
2519 @itemize
2520 @item
2521 Make music with both quiet and loud passages suitable for listening to in a
2522 noisy environment:
2523 @example
2524 compand=.3|.3:1|1:-90/-60|-60/-40|-40/-30|-20/-20:6:0:-90:0.2
2525 @end example
2526
2527 Another example for audio with whisper and explosion parts:
2528 @example
2529 compand=0|0:1|1:-90/-900|-70/-70|-30/-9|0/-3:6:0:0:0
2530 @end example
2531
2532 @item
2533 A noise gate for when the noise is at a lower level than the signal:
2534 @example
2535 compand=.1|.1:.2|.2:-900/-900|-50.1/-900|-50/-50:.01:0:-90:.1
2536 @end example
2537
2538 @item
2539 Here is another noise gate, this time for when the noise is at a higher level
2540 than the signal (making it, in some ways, similar to squelch):
2541 @example
2542 compand=.1|.1:.1|.1:-45.1/-45.1|-45/-900|0/-900:.01:45:-90:.1
2543 @end example
2544
2545 @item
2546 2:1 compression starting at -6dB:
2547 @example
2548 compand=points=-80/-80|-6/-6|0/-3.8|20/3.5
2549 @end example
2550
2551 @item
2552 2:1 compression starting at -9dB:
2553 @example
2554 compand=points=-80/-80|-9/-9|0/-5.3|20/2.9
2555 @end example
2556
2557 @item
2558 2:1 compression starting at -12dB:
2559 @example
2560 compand=points=-80/-80|-12/-12|0/-6.8|20/1.9
2561 @end example
2562
2563 @item
2564 2:1 compression starting at -18dB:
2565 @example
2566 compand=points=-80/-80|-18/-18|0/-9.8|20/0.7
2567 @end example
2568
2569 @item
2570 3:1 compression starting at -15dB:
2571 @example
2572 compand=points=-80/-80|-15/-15|0/-10.8|20/-5.2
2573 @end example
2574
2575 @item
2576 Compressor/Gate:
2577 @example
2578 compand=points=-80/-105|-62/-80|-15.4/-15.4|0/-12|20/-7.6
2579 @end example
2580
2581 @item
2582 Expander:
2583 @example
2584 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
2585 @end example
2586
2587 @item
2588 Hard limiter at -6dB:
2589 @example
2590 compand=attacks=0:points=-80/-80|-6/-6|20/-6
2591 @end example
2592
2593 @item
2594 Hard limiter at -12dB:
2595 @example
2596 compand=attacks=0:points=-80/-80|-12/-12|20/-12
2597 @end example
2598
2599 @item
2600 Hard noise gate at -35 dB:
2601 @example
2602 compand=attacks=0:points=-80/-115|-35.1/-80|-35/-35|20/20
2603 @end example
2604
2605 @item
2606 Soft limiter:
2607 @example
2608 compand=attacks=0:points=-80/-80|-12.4/-12.4|-6/-8|0/-6.8|20/-2.8
2609 @end example
2610 @end itemize
2611
2612 @section compensationdelay
2613
2614 Compensation Delay Line is a metric based delay to compensate differing
2615 positions of microphones or speakers.
2616
2617 For example, you have recorded guitar with two microphones placed in
2618 different location. Because the front of sound wave has fixed speed in
2619 normal conditions, the phasing of microphones can vary and depends on
2620 their location and interposition. The best sound mix can be achieved when
2621 these microphones are in phase (synchronized). Note that distance of
2622 ~30 cm between microphones makes one microphone to capture signal in
2623 antiphase to another microphone. That makes the final mix sounding moody.
2624 This filter helps to solve phasing problems by adding different delays
2625 to each microphone track and make them synchronized.
2626
2627 The best result can be reached when you take one track as base and
2628 synchronize other tracks one by one with it.
2629 Remember that synchronization/delay tolerance depends on sample rate, too.
2630 Higher sample rates will give more tolerance.
2631
2632 It accepts the following parameters:
2633
2634 @table @option
2635 @item mm
2636 Set millimeters distance. This is compensation distance for fine tuning.
2637 Default is 0.
2638
2639 @item cm
2640 Set cm distance. This is compensation distance for tightening distance setup.
2641 Default is 0.
2642
2643 @item m
2644 Set meters distance. This is compensation distance for hard distance setup.
2645 Default is 0.
2646
2647 @item dry
2648 Set dry amount. Amount of unprocessed (dry) signal.
2649 Default is 0.
2650
2651 @item wet
2652 Set wet amount. Amount of processed (wet) signal.
2653 Default is 1.
2654
2655 @item temp
2656 Set temperature degree in Celsius. This is the temperature of the environment.
2657 Default is 20.
2658 @end table
2659
2660 @section crossfeed
2661 Apply headphone crossfeed filter.
2662
2663 Crossfeed is the process of blending the left and right channels of stereo
2664 audio recording.
2665 It is mainly used to reduce extreme stereo separation of low frequencies.
2666
2667 The intent is to produce more speaker like sound to the listener.
2668
2669 The filter accepts the following options:
2670
2671 @table @option
2672 @item strength
2673 Set strength of crossfeed. Default is 0.2. Allowed range is from 0 to 1.
2674 This sets gain of low shelf filter for side part of stereo image.
2675 Default is -6dB. Max allowed is -30db when strength is set to 1.
2676
2677 @item range
2678 Set soundstage wideness. Default is 0.5. Allowed range is from 0 to 1.
2679 This sets cut off frequency of low shelf filter. Default is cut off near
2680 1550 Hz. With range set to 1 cut off frequency is set to 2100 Hz.
2681
2682 @item level_in
2683 Set input gain. Default is 0.9.
2684
2685 @item level_out
2686 Set output gain. Default is 1.
2687 @end table
2688
2689 @section crystalizer
2690 Simple algorithm to expand audio dynamic range.
2691
2692 The filter accepts the following options:
2693
2694 @table @option
2695 @item i
2696 Sets the intensity of effect (default: 2.0). Must be in range between 0.0
2697 (unchanged sound) to 10.0 (maximum effect).
2698
2699 @item c
2700 Enable clipping. By default is enabled.
2701 @end table
2702
2703 @section dcshift
2704 Apply a DC shift to the audio.
2705
2706 This can be useful to remove a DC offset (caused perhaps by a hardware problem
2707 in the recording chain) from the audio. The effect of a DC offset is reduced
2708 headroom and hence volume. The @ref{astats} filter can be used to determine if
2709 a signal has a DC offset.
2710
2711 @table @option
2712 @item shift
2713 Set the DC shift, allowed range is [-1, 1]. It indicates the amount to shift
2714 the audio.
2715
2716 @item limitergain
2717 Optional. It should have a value much less than 1 (e.g. 0.05 or 0.02) and is
2718 used to prevent clipping.
2719 @end table
2720
2721 @section drmeter
2722 Measure audio dynamic range.
2723
2724 DR values of 14 and higher is found in very dynamic material. DR of 8 to 13
2725 is found in transition material. And anything less that 8 have very poor dynamics
2726 and is very compressed.
2727
2728 The filter accepts the following options:
2729
2730 @table @option
2731 @item length
2732 Set window length in seconds used to split audio into segments of equal length.
2733 Default is 3 seconds.
2734 @end table
2735
2736 @section dynaudnorm
2737 Dynamic Audio Normalizer.
2738
2739 This filter applies a certain amount of gain to the input audio in order
2740 to bring its peak magnitude to a target level (e.g. 0 dBFS). However, in
2741 contrast to more "simple" normalization algorithms, the Dynamic Audio
2742 Normalizer *dynamically* re-adjusts the gain factor to the input audio.
2743 This allows for applying extra gain to the "quiet" sections of the audio
2744 while avoiding distortions or clipping the "loud" sections. In other words:
2745 The Dynamic Audio Normalizer will "even out" the volume of quiet and loud
2746 sections, in the sense that the volume of each section is brought to the
2747 same target level. Note, however, that the Dynamic Audio Normalizer achieves
2748 this goal *without* applying "dynamic range compressing". It will retain 100%
2749 of the dynamic range *within* each section of the audio file.
2750
2751 @table @option
2752 @item f
2753 Set the frame length in milliseconds. In range from 10 to 8000 milliseconds.
2754 Default is 500 milliseconds.
2755 The Dynamic Audio Normalizer processes the input audio in small chunks,
2756 referred to as frames. This is required, because a peak magnitude has no
2757 meaning for just a single sample value. Instead, we need to determine the
2758 peak magnitude for a contiguous sequence of sample values. While a "standard"
2759 normalizer would simply use the peak magnitude of the complete file, the
2760 Dynamic Audio Normalizer determines the peak magnitude individually for each
2761 frame. The length of a frame is specified in milliseconds. By default, the
2762 Dynamic Audio Normalizer uses a frame length of 500 milliseconds, which has
2763 been found to give good results with most files.
2764 Note that the exact frame length, in number of samples, will be determined
2765 automatically, based on the sampling rate of the individual input audio file.
2766
2767 @item g
2768 Set the Gaussian filter window size. In range from 3 to 301, must be odd
2769 number. Default is 31.
2770 Probably the most important parameter of the Dynamic Audio Normalizer is the
2771 @code{window size} of the Gaussian smoothing filter. The filter's window size
2772 is specified in frames, centered around the current frame. For the sake of
2773 simplicity, this must be an odd number. Consequently, the default value of 31
2774 takes into account the current frame, as well as the 15 preceding frames and
2775 the 15 subsequent frames. Using a larger window results in a stronger
2776 smoothing effect and thus in less gain variation, i.e. slower gain
2777 adaptation. Conversely, using a smaller window results in a weaker smoothing
2778 effect and thus in more gain variation, i.e. faster gain adaptation.
2779 In other words, the more you increase this value, the more the Dynamic Audio
2780 Normalizer will behave like a "traditional" normalization filter. On the
2781 contrary, the more you decrease this value, the more the Dynamic Audio
2782 Normalizer will behave like a dynamic range compressor.
2783
2784 @item p
2785 Set the target peak value. This specifies the highest permissible magnitude
2786 level for the normalized audio input. This filter will try to approach the
2787 target peak magnitude as closely as possible, but at the same time it also
2788 makes sure that the normalized signal will never exceed the peak magnitude.
2789 A frame's maximum local gain factor is imposed directly by the target peak
2790 magnitude. The default value is 0.95 and thus leaves a headroom of 5%*.
2791 It is not recommended to go above this value.
2792
2793 @item m
2794 Set the maximum gain factor. In range from 1.0 to 100.0. Default is 10.0.
2795 The Dynamic Audio Normalizer determines the maximum possible (local) gain
2796 factor for each input frame, i.e. the maximum gain factor that does not
2797 result in clipping or distortion. The maximum gain factor is determined by
2798 the frame's highest magnitude sample. However, the Dynamic Audio Normalizer
2799 additionally bounds the frame's maximum gain factor by a predetermined
2800 (global) maximum gain factor. This is done in order to avoid excessive gain
2801 factors in "silent" or almost silent frames. By default, the maximum gain
2802 factor is 10.0, For most inputs the default value should be sufficient and
2803 it usually is not recommended to increase this value. Though, for input
2804 with an extremely low overall volume level, it may be necessary to allow even
2805 higher gain factors. Note, however, that the Dynamic Audio Normalizer does
2806 not simply apply a "hard" threshold (i.e. cut off values above the threshold).
2807 Instead, a "sigmoid" threshold function will be applied. This way, the
2808 gain factors will smoothly approach the threshold value, but never exceed that
2809 value.
2810
2811 @item r
2812 Set the target RMS. In range from 0.0 to 1.0. Default is 0.0 - disabled.
2813 By default, the Dynamic Audio Normalizer performs "peak" normalization.
2814 This means that the maximum local gain factor for each frame is defined
2815 (only) by the frame's highest magnitude sample. This way, the samples can
2816 be amplified as much as possible without exceeding the maximum signal
2817 level, i.e. without clipping. Optionally, however, the Dynamic Audio
2818 Normalizer can also take into account the frame's root mean square,
2819 abbreviated RMS. In electrical engineering, the RMS is commonly used to
2820 determine the power of a time-varying signal. It is therefore considered
2821 that the RMS is a better approximation of the "perceived loudness" than
2822 just looking at the signal's peak magnitude. Consequently, by adjusting all
2823 frames to a constant RMS value, a uniform "perceived loudness" can be
2824 established. If a target RMS value has been specified, a frame's local gain
2825 factor is defined as the factor that would result in exactly that RMS value.
2826 Note, however, that the maximum local gain factor is still restricted by the
2827 frame's highest magnitude sample, in order to prevent clipping.
2828
2829 @item n
2830 Enable channels coupling. By default is enabled.
2831 By default, the Dynamic Audio Normalizer will amplify all channels by the same
2832 amount. This means the same gain factor will be applied to all channels, i.e.
2833 the maximum possible gain factor is determined by the "loudest" channel.
2834 However, in some recordings, it may happen that the volume of the different
2835 channels is uneven, e.g. one channel may be "quieter" than the other one(s).
2836 In this case, this option can be used to disable the channel coupling. This way,
2837 the gain factor will be determined independently for each channel, depending
2838 only on the individual channel's highest magnitude sample. This allows for
2839 harmonizing the volume of the different channels.
2840
2841 @item c
2842 Enable DC bias correction. By default is disabled.
2843 An audio signal (in the time domain) is a sequence of sample values.
2844 In the Dynamic Audio Normalizer these sample values are represented in the
2845 -1.0 to 1.0 range, regardless of the original input format. Normally, the
2846 audio signal, or "waveform", should be centered around the zero point.
2847 That means if we calculate the mean value of all samples in a file, or in a
2848 single frame, then the result should be 0.0 or at least very close to that
2849 value. If, however, there is a significant deviation of the mean value from
2850 0.0, in either positive or negative direction, this is referred to as a
2851 DC bias or DC offset. Since a DC bias is clearly undesirable, the Dynamic
2852 Audio Normalizer provides optional DC bias correction.
2853 With DC bias correction enabled, the Dynamic Audio Normalizer will determine
2854 the mean value, or "DC correction" offset, of each input frame and subtract
2855 that value from all of the frame's sample values which ensures those samples
2856 are centered around 0.0 again. Also, in order to avoid "gaps" at the frame
2857 boundaries, the DC correction offset values will be interpolated smoothly
2858 between neighbouring frames.
2859
2860 @item b
2861 Enable alternative boundary mode. By default is disabled.
2862 The Dynamic Audio Normalizer takes into account a certain neighbourhood
2863 around each frame. This includes the preceding frames as well as the
2864 subsequent frames. However, for the "boundary" frames, located at the very
2865 beginning and at the very end of the audio file, not all neighbouring
2866 frames are available. In particular, for the first few frames in the audio
2867 file, the preceding frames are not known. And, similarly, for the last few
2868 frames in the audio file, the subsequent frames are not known. Thus, the
2869 question arises which gain factors should be assumed for the missing frames
2870 in the "boundary" region. The Dynamic Audio Normalizer implements two modes
2871 to deal with this situation. The default boundary mode assumes a gain factor
2872 of exactly 1.0 for the missing frames, resulting in a smooth "fade in" and
2873 "fade out" at the beginning and at the end of the input, respectively.
2874
2875 @item s
2876 Set the compress factor. In range from 0.0 to 30.0. Default is 0.0.
2877 By default, the Dynamic Audio Normalizer does not apply "traditional"
2878 compression. This means that signal peaks will not be pruned and thus the
2879 full dynamic range will be retained within each local neighbourhood. However,
2880 in some cases it may be desirable to combine the Dynamic Audio Normalizer's
2881 normalization algorithm with a more "traditional" compression.
2882 For this purpose, the Dynamic Audio Normalizer provides an optional compression
2883 (thresholding) function. If (and only if) the compression feature is enabled,
2884 all input frames will be processed by a soft knee thresholding function prior
2885 to the actual normalization process. Put simply, the thresholding function is
2886 going to prune all samples whose magnitude exceeds a certain threshold value.
2887 However, the Dynamic Audio Normalizer does not simply apply a fixed threshold
2888 value. Instead, the threshold value will be adjusted for each individual
2889 frame.
2890 In general, smaller parameters result in stronger compression, and vice versa.
2891 Values below 3.0 are not recommended, because audible distortion may appear.
2892 @end table
2893
2894 @section earwax
2895
2896 Make audio easier to listen to on headphones.
2897
2898 This filter adds `cues' to 44.1kHz stereo (i.e. audio CD format) audio
2899 so that when listened to on headphones the stereo image is moved from
2900 inside your head (standard for headphones) to outside and in front of
2901 the listener (standard for speakers).
2902
2903 Ported from SoX.
2904
2905 @section equalizer
2906
2907 Apply a two-pole peaking equalisation (EQ) filter. With this
2908 filter, the signal-level at and around a selected frequency can
2909 be increased or decreased, whilst (unlike bandpass and bandreject
2910 filters) that at all other frequencies is unchanged.
2911
2912 In order to produce complex equalisation curves, this filter can
2913 be given several times, each with a different central frequency.
2914
2915 The filter accepts the following options:
2916
2917 @table @option
2918 @item frequency, f
2919 Set the filter's central frequency in Hz.
2920
2921 @item width_type, t
2922 Set method to specify band-width of filter.
2923 @table @option
2924 @item h
2925 Hz
2926 @item q
2927 Q-Factor
2928 @item o
2929 octave
2930 @item s
2931 slope
2932 @item k
2933 kHz
2934 @end table
2935
2936 @item width, w
2937 Specify the band-width of a filter in width_type units.
2938
2939 @item gain, g
2940 Set the required gain or attenuation in dB.
2941 Beware of clipping when using a positive gain.
2942
2943 @item channels, c
2944 Specify which channels to filter, by default all available are filtered.
2945 @end table
2946
2947 @subsection Examples
2948 @itemize
2949 @item
2950 Attenuate 10 dB at 1000 Hz, with a bandwidth of 200 Hz:
2951 @example
2952 equalizer=f=1000:t=h:width=200:g=-10
2953 @end example
2954
2955 @item
2956 Apply 2 dB gain at 1000 Hz with Q 1 and attenuate 5 dB at 100 Hz with Q 2:
2957 @example
2958 equalizer=f=1000:t=q:w=1:g=2,equalizer=f=100:t=q:w=2:g=-5
2959 @end example
2960 @end itemize
2961
2962 @subsection Commands
2963
2964 This filter supports the following commands:
2965 @table @option
2966 @item frequency, f
2967 Change equalizer frequency.
2968 Syntax for the command is : "@var{frequency}"
2969
2970 @item width_type, t
2971 Change equalizer width_type.
2972 Syntax for the command is : "@var{width_type}"
2973
2974 @item width, w
2975 Change equalizer width.
2976 Syntax for the command is : "@var{width}"
2977
2978 @item gain, g
2979 Change equalizer gain.
2980 Syntax for the command is : "@var{gain}"
2981 @end table
2982
2983 @section extrastereo
2984
2985 Linearly increases the difference between left and right channels which
2986 adds some sort of "live" effect to playback.
2987
2988 The filter accepts the following options:
2989
2990 @table @option
2991 @item m
2992 Sets the difference coefficient (default: 2.5). 0.0 means mono sound
2993 (average of both channels), with 1.0 sound will be unchanged, with
2994 -1.0 left and right channels will be swapped.
2995
2996 @item c
2997 Enable clipping. By default is enabled.
2998 @end table
2999
3000 @section firequalizer
3001 Apply FIR Equalization using arbitrary frequency response.
3002
3003 The filter accepts the following option:
3004
3005 @table @option
3006 @item gain
3007 Set gain curve equation (in dB). The expression can contain variables:
3008 @table @option
3009 @item f
3010 the evaluated frequency
3011 @item sr
3012 sample rate
3013 @item ch
3014 channel number, set to 0 when multichannels evaluation is disabled
3015 @item chid
3016 channel id, see libavutil/channel_layout.h, set to the first channel id when
3017 multichannels evaluation is disabled
3018 @item chs
3019 number of channels
3020 @item chlayout
3021 channel_layout, see libavutil/channel_layout.h
3022
3023 @end table
3024 and functions:
3025 @table @option
3026 @item gain_interpolate(f)
3027 interpolate gain on frequency f based on gain_entry
3028 @item cubic_interpolate(f)
3029 same as gain_interpolate, but smoother
3030 @end table
3031 This option is also available as command. Default is @code{gain_interpolate(f)}.
3032
3033 @item gain_entry
3034 Set gain entry for gain_interpolate function. The expression can
3035 contain functions:
3036 @table @option
3037 @item entry(f, g)
3038 store gain entry at frequency f with value g
3039 @end table
3040 This option is also available as command.
3041
3042 @item delay
3043 Set filter delay in seconds. Higher value means more accurate.
3044 Default is @code{0.01}.
3045
3046 @item accuracy
3047 Set filter accuracy in Hz. Lower value means more accurate.
3048 Default is @code{5}.
3049
3050 @item wfunc
3051 Set window function. Acceptable values are:
3052 @table @option
3053 @item rectangular
3054 rectangular window, useful when gain curve is already smooth
3055 @item hann
3056 hann window (default)
3057 @item hamming
3058 hamming window
3059 @item blackman
3060 blackman window
3061 @item nuttall3
3062 3-terms continuous 1st derivative nuttall window
3063 @item mnuttall3
3064 minimum 3-terms discontinuous nuttall window
3065 @item nuttall
3066 4-terms continuous 1st derivative nuttall window
3067 @item bnuttall
3068 minimum 4-terms discontinuous nuttall (blackman-nuttall) window
3069 @item bharris
3070 blackman-harris window
3071 @item tukey
3072 tukey window
3073 @end table
3074
3075 @item fixed
3076 If enabled, use fixed number of audio samples. This improves speed when
3077 filtering with large delay. Default is disabled.
3078
3079 @item multi
3080 Enable multichannels evaluation on gain. Default is disabled.
3081
3082 @item zero_phase
3083 Enable zero phase mode by subtracting timestamp to compensate delay.
3084 Default is disabled.
3085
3086 @item scale
3087 Set scale used by gain. Acceptable values are:
3088 @table @option
3089 @item linlin
3090 linear frequency, linear gain
3091 @item linlog
3092 linear frequency, logarithmic (in dB) gain (default)
3093 @item loglin
3094 logarithmic (in octave scale where 20 Hz is 0) frequency, linear gain
3095 @item loglog
3096 logarithmic frequency, logarithmic gain
3097 @end table
3098
3099 @item dumpfile
3100 Set file for dumping, suitable for gnuplot.
3101
3102 @item dumpscale
3103 Set scale for dumpfile. Acceptable values are same with scale option.
3104 Default is linlog.
3105
3106 @item fft2
3107 Enable 2-channel convolution using complex FFT. This improves speed significantly.
3108 Default is disabled.
3109
3110 @item min_phase
3111 Enable minimum phase impulse response. Default is disabled.
3112 @end table
3113
3114 @subsection Examples
3115 @itemize
3116 @item
3117 lowpass at 1000 Hz:
3118 @example
3119 firequalizer=gain='if(lt(f,1000), 0, -INF)'
3120 @end example
3121 @item
3122 lowpass at 1000 Hz with gain_entry:
3123 @example
3124 firequalizer=gain_entry='entry(1000,0); entry(1001, -INF)'
3125 @end example
3126 @item
3127 custom equalization:
3128 @example
3129 firequalizer=gain_entry='entry(100,0); entry(400, -4); entry(1000, -6); entry(2000, 0)'
3130 @end example
3131 @item
3132 higher delay with zero phase to compensate delay:
3133 @example
3134 firequalizer=delay=0.1:fixed=on:zero_phase=on
3135 @end example
3136 @item
3137 lowpass on left channel, highpass on right channel:
3138 @example
3139 firequalizer=gain='if(eq(chid,1), gain_interpolate(f), if(eq(chid,2), gain_interpolate(1e6+f), 0))'
3140 :gain_entry='entry(1000, 0); entry(1001,-INF); entry(1e6+1000,0)':multi=on
3141 @end example
3142 @end itemize
3143
3144 @section flanger
3145 Apply a flanging effect to the audio.
3146
3147 The filter accepts the following options:
3148
3149 @table @option
3150 @item delay
3151 Set base delay in milliseconds. Range from 0 to 30. Default value is 0.
3152
3153 @item depth
3154 Set added sweep delay in milliseconds. Range from 0 to 10. Default value is 2.
3155
3156 @item regen
3157 Set percentage regeneration (delayed signal feedback). Range from -95 to 95.
3158 Default value is 0.
3159
3160 @item width
3161 Set percentage of delayed signal mixed with original. Range from 0 to 100.
3162 Default value is 71.
3163
3164 @item speed
3165 Set sweeps per second (Hz). Range from 0.1 to 10. Default value is 0.5.
3166
3167 @item shape
3168 Set swept wave shape, can be @var{triangular} or @var{sinusoidal}.
3169 Default value is @var{sinusoidal}.
3170
3171 @item phase
3172 Set swept wave percentage-shift for multi channel. Range from 0 to 100.
3173 Default value is 25.
3174
3175 @item interp
3176 Set delay-line interpolation, @var{linear} or @var{quadratic}.
3177 Default is @var{linear}.
3178 @end table
3179
3180 @section haas
3181 Apply Haas effect to audio.
3182
3183 Note that this makes most sense to apply on mono signals.
3184 With this filter applied to mono signals it give some directionality and
3185 stretches its stereo image.
3186
3187 The filter accepts the following options:
3188
3189 @table @option
3190 @item level_in
3191 Set input level. By default is @var{1}, or 0dB
3192
3193 @item level_out
3194 Set output level. By default is @var{1}, or 0dB.
3195
3196 @item side_gain
3197 Set gain applied to side part of signal. By default is @var{1}.
3198
3199 @item middle_source
3200 Set kind of middle source. Can be one of the following:
3201
3202 @table @samp
3203 @item left
3204 Pick left channel.
3205
3206 @item right
3207 Pick right channel.
3208
3209 @item mid
3210 Pick middle part signal of stereo image.
3211
3212 @item side
3213 Pick side part signal of stereo image.
3214 @end table
3215
3216 @item middle_phase
3217 Change middle phase. By default is disabled.
3218
3219 @item left_delay
3220 Set left channel delay. By default is @var{2.05} milliseconds.
3221
3222 @item left_balance
3223 Set left channel balance. By default is @var{-1}.
3224
3225 @item left_gain
3226 Set left channel gain. By default is @var{1}.
3227
3228 @item left_phase
3229 Change left phase. By default is disabled.
3230
3231 @item right_delay
3232 Set right channel delay. By defaults is @var{2.12} milliseconds.
3233
3234 @item right_balance
3235 Set right channel balance. By default is @var{1}.
3236
3237 @item right_gain
3238 Set right channel gain. By default is @var{1}.
3239
3240 @item right_phase
3241 Change right phase. By default is enabled.
3242 @end table
3243
3244 @section hdcd
3245
3246 Decodes High Definition Compatible Digital (HDCD) data. A 16-bit PCM stream with
3247 embedded HDCD codes is expanded into a 20-bit PCM stream.
3248
3249 The filter supports the Peak Extend and Low-level Gain Adjustment features
3250 of HDCD, and detects the Transient Filter flag.
3251
3252 @example
3253 ffmpeg -i HDCD16.flac -af hdcd OUT24.flac
3254 @end example
3255
3256 When using the filter with wav, note the default encoding for wav is 16-bit,
3257 so the resulting 20-bit stream will be truncated back to 16-bit. Use something
3258 like @command{-acodec pcm_s24le} after the filter to get 24-bit PCM output.
3259 @example
3260 ffmpeg -i HDCD16.wav -af hdcd OUT16.wav
3261 ffmpeg -i HDCD16.wav -af hdcd -c:a pcm_s24le OUT24.wav
3262 @end example
3263
3264 The filter accepts the following options:
3265
3266 @table @option
3267 @item disable_autoconvert
3268 Disable any automatic format conversion or resampling in the filter graph.
3269
3270 @item process_stereo
3271 Process the stereo channels together. If target_gain does not match between
3272 channels, consider it invalid and use the last valid target_gain.
3273
3274 @item cdt_ms
3275 Set the code detect timer period in ms.
3276
3277 @item force_pe
3278 Always extend peaks above -3dBFS even if PE isn't signaled.
3279
3280 @item analyze_mode
3281 Replace audio with a solid tone and adjust the amplitude to signal some
3282 specific aspect of the decoding process. The output file can be loaded in
3283 an audio editor alongside the original to aid analysis.
3284
3285 @code{analyze_mode=pe:force_pe=true} can be used to see all samples above the PE level.
3286
3287 Modes are:
3288 @table @samp
3289 @item 0, off
3290 Disabled
3291 @item 1, lle
3292 Gain adjustment level at each sample
3293 @item 2, pe
3294 Samples where peak extend occurs
3295 @item 3, cdt
3296 Samples where the code detect timer is active
3297 @item 4, tgm
3298 Samples where the target gain does not match between channels
3299 @end table
3300 @end table
3301
3302 @section headphone
3303
3304 Apply head-related transfer functions (HRTFs) to create virtual
3305 loudspeakers around the user for binaural listening via headphones.
3306 The HRIRs are provided via additional streams, for each channel
3307 one stereo input stream is needed.
3308
3309 The filter accepts the following options:
3310
3311 @table @option
3312 @item map
3313 Set mapping of input streams for convolution.
3314 The argument is a '|'-separated list of channel names in order as they
3315 are given as additional stream inputs for filter.
3316 This also specify number of input streams. Number of input streams
3317 must be not less than number of channels in first stream plus one.
3318
3319 @item gain
3320 Set gain applied to audio. Value is in dB. Default is 0.
3321
3322 @item type
3323 Set processing type. Can be @var{time} or @var{freq}. @var{time} is
3324 processing audio in time domain which is slow.
3325 @var{freq} is processing audio in frequency domain which is fast.
3326 Default is @var{freq}.
3327
3328 @item lfe
3329 Set custom gain for LFE channels. Value is in dB. Default is 0.
3330
3331 @item size
3332 Set size of frame in number of samples which will be processed at once.
3333 Default value is @var{1024}. Allowed range is from 1024 to 96000.
3334
3335 @item hrir
3336 Set format of hrir stream.
3337 Default value is @var{stereo}. Alternative value is @var{multich}.
3338 If value is set to @var{stereo}, number of additional streams should
3339 be greater or equal to number of input channels in first input stream.
3340 Also each additional stream should have stereo number of channels.
3341 If value is set to @var{multich}, number of additional streams should
3342 be exactly one. Also number of input channels of additional stream
3343 should be equal or greater than twice number of channels of first input
3344 stream.
3345 @end table
3346
3347 @subsection Examples
3348
3349 @itemize
3350 @item
3351 Full example using wav files as coefficients with amovie filters for 7.1 downmix,
3352 each amovie filter use stereo file with IR coefficients as input.
3353 The files give coefficients for each position of virtual loudspeaker:
3354 @example
3355 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"
3356 output.wav
3357 @end example
3358
3359 @item
3360 Full example using wav files as coefficients with amovie filters for 7.1 downmix,
3361 but now in @var{multich} @var{hrir} format.
3362 @example
3363 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"
3364 output.wav
3365 @end example
3366 @end itemize
3367
3368 @section highpass
3369
3370 Apply a high-pass filter with 3dB point frequency.
3371 The filter can be either single-pole, or double-pole (the default).
3372 The filter roll off at 6dB per pole per octave (20dB per pole per decade).
3373
3374 The filter accepts the following options:
3375
3376 @table @option
3377 @item frequency, f
3378 Set frequency in Hz. Default is 3000.
3379
3380 @item poles, p
3381 Set number of poles. Default is 2.
3382
3383 @item width_type, t
3384 Set method to specify band-width of filter.
3385 @table @option
3386 @item h
3387 Hz
3388 @item q
3389 Q-Factor
3390 @item o
3391 octave
3392 @item s
3393 slope
3394 @item k
3395 kHz
3396 @end table
3397
3398 @item width, w
3399 Specify the band-width of a filter in width_type units.
3400 Applies only to double-pole filter.
3401 The default is 0.707q and gives a Butterworth response.
3402
3403 @item channels, c
3404 Specify which channels to filter, by default all available are filtered.
3405 @end table
3406
3407 @subsection Commands
3408
3409 This filter supports the following commands:
3410 @table @option
3411 @item frequency, f
3412 Change highpass frequency.
3413 Syntax for the command is : "@var{frequency}"
3414
3415 @item width_type, t
3416 Change highpass width_type.
3417 Syntax for the command is : "@var{width_type}"
3418
3419 @item width, w
3420 Change highpass width.
3421 Syntax for the command is : "@var{width}"
3422 @end table
3423
3424 @section join
3425
3426 Join multiple input streams into one multi-channel stream.
3427
3428 It accepts the following parameters:
3429 @table @option
3430
3431 @item inputs
3432 The number of input streams. It defaults to 2.
3433
3434 @item channel_layout
3435 The desired output channel layout. It defaults to stereo.
3436
3437 @item map
3438 Map channels from inputs to output. The argument is a '|'-separated list of
3439 mappings, each in the @code{@var{input_idx}.@var{in_channel}-@var{out_channel}}
3440 form. @var{input_idx} is the 0-based index of the input stream. @var{in_channel}
3441 can be either the name of the input channel (e.g. FL for front left) or its
3442 index in the specified input stream. @var{out_channel} is the name of the output
3443 channel.
3444 @end table
3445
3446 The filter will attempt to guess the mappings when they are not specified
3447 explicitly. It does so by first trying to find an unused matching input channel
3448 and if that fails it picks the first unused input channel.
3449
3450 Join 3 inputs (with properly set channel layouts):
3451 @example
3452 ffmpeg -i INPUT1 -i INPUT2 -i INPUT3 -filter_complex join=inputs=3 OUTPUT
3453 @end example
3454
3455 Build a 5.1 output from 6 single-channel streams:
3456 @example
3457 ffmpeg -i fl -i fr -i fc -i sl -i sr -i lfe -filter_complex
3458 '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'
3459 out
3460 @end example
3461
3462 @section ladspa
3463
3464 Load a LADSPA (Linux Audio Developer's Simple Plugin API) plugin.
3465
3466 To enable compilation of this filter you need to configure FFmpeg with
3467 @code{--enable-ladspa}.
3468
3469 @table @option
3470 @item file, f
3471 Specifies the name of LADSPA plugin library to load. If the environment
3472 variable @env{LADSPA_PATH} is defined, the LADSPA plugin is searched in
3473 each one of the directories specified by the colon separated list in
3474 @env{LADSPA_PATH}, otherwise in the standard LADSPA paths, which are in
3475 this order: @file{HOME/.ladspa/lib/}, @file{/usr/local/lib/ladspa/},
3476 @file{/usr/lib/ladspa/}.
3477
3478 @item plugin, p
3479 Specifies the plugin within the library. Some libraries contain only
3480 one plugin, but others contain many of them. If this is not set filter
3481 will list all available plugins within the specified library.
3482
3483 @item controls, c
3484 Set the '|' separated list of controls which are zero or more floating point
3485 values that determine the behavior of the loaded plugin (for example delay,
3486 threshold or gain).
3487 Controls need to be defined using the following syntax:
3488 c0=@var{value0}|c1=@var{value1}|c2=@var{value2}|..., where
3489 @var{valuei} is the value set on the @var{i}-th control.
3490 Alternatively they can be also defined using the following syntax:
3491 @var{value0}|@var{value1}|@var{value2}|..., where
3492 @var{valuei} is the value set on the @var{i}-th control.
3493 If @option{controls} is set to @code{help}, all available controls and
3494 their valid ranges are printed.
3495
3496 @item sample_rate, s
3497 Specify the sample rate, default to 44100. Only used if plugin have
3498 zero inputs.
3499
3500 @item nb_samples, n
3501 Set the number of samples per channel per each output frame, default
3502 is 1024. Only used if plugin have zero inputs.
3503
3504 @item duration, d
3505 Set the minimum duration of the sourced audio. See
3506 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
3507 for the accepted syntax.
3508 Note that the resulting duration may be greater than the specified duration,
3509 as the generated audio is always cut at the end of a complete frame.
3510 If not specified, or the expressed duration is negative, the audio is
3511 supposed to be generated forever.
3512 Only used if plugin have zero inputs.
3513
3514 @end table
3515
3516 @subsection Examples
3517
3518 @itemize
3519 @item
3520 List all available plugins within amp (LADSPA example plugin) library:
3521 @example
3522 ladspa=file=amp
3523 @end example
3524
3525 @item
3526 List all available controls and their valid ranges for @code{vcf_notch}
3527 plugin from @code{VCF} library:
3528 @example
3529 ladspa=f=vcf:p=vcf_notch:c=help
3530 @end example
3531
3532 @item
3533 Simulate low quality audio equipment using @code{Computer Music Toolkit} (CMT)
3534 plugin library:
3535 @example
3536 ladspa=file=cmt:plugin=lofi:controls=c0=22|c1=12|c2=12
3537 @end example
3538
3539 @item
3540 Add reverberation to the audio using TAP-plugins
3541 (Tom's Audio Processing plugins):
3542 @example
3543 ladspa=file=tap_reverb:tap_reverb
3544 @end example
3545
3546 @item
3547 Generate white noise, with 0.2 amplitude:
3548 @example
3549 ladspa=file=cmt:noise_source_white:c=c0=.2
3550 @end example
3551
3552 @item
3553 Generate 20 bpm clicks using plugin @code{C* Click - Metronome} from the
3554 @code{C* Audio Plugin Suite} (CAPS) library:
3555 @example
3556 ladspa=file=caps:Click:c=c1=20'
3557 @end example
3558
3559 @item
3560 Apply @code{C* Eq10X2 - Stereo 10-band equaliser} effect:
3561 @example
3562 ladspa=caps:Eq10X2:c=c0=-48|c9=-24|c3=12|c4=2
3563 @end example
3564
3565 @item
3566 Increase volume by 20dB using fast lookahead limiter from Steve Harris
3567 @code{SWH Plugins} collection:
3568 @example
3569 ladspa=fast_lookahead_limiter_1913:fastLookaheadLimiter:20|0|2
3570 @end example
3571
3572 @item
3573 Attenuate low frequencies using Multiband EQ from Steve Harris
3574 @code{SWH Plugins} collection:
3575 @example
3576 ladspa=mbeq_1197:mbeq:-24|-24|-24|0|0|0|0|0|0|0|0|0|0|0|0
3577 @end example
3578
3579 @item
3580 Reduce stereo image using @code{Narrower} from the @code{C* Audio Plugin Suite}
3581 (CAPS) library:
3582 @example
3583 ladspa=caps:Narrower
3584 @end example
3585
3586 @item
3587 Another white noise, now using @code{C* Audio Plugin Suite} (CAPS) library:
3588 @example
3589 ladspa=caps:White:.2
3590 @end example
3591
3592 @item
3593 Some fractal noise, using @code{C* Audio Plugin Suite} (CAPS) library:
3594 @example
3595 ladspa=caps:Fractal:c=c1=1
3596 @end example
3597
3598 @item
3599 Dynamic volume normalization using @code{VLevel} plugin:
3600 @example
3601 ladspa=vlevel-ladspa:vlevel_mono
3602 @end example
3603 @end itemize
3604
3605 @subsection Commands
3606
3607 This filter supports the following commands:
3608 @table @option
3609 @item cN
3610 Modify the @var{N}-th control value.
3611
3612 If the specified value is not valid, it is ignored and prior one is kept.
3613 @end table
3614
3615 @section loudnorm
3616
3617 EBU R128 loudness normalization. Includes both dynamic and linear normalization modes.
3618 Support for both single pass (livestreams, files) and double pass (files) modes.
3619 This algorithm can target IL, LRA, and maximum true peak. To accurately detect true peaks,
3620 the audio stream will be upsampled to 192 kHz unless the normalization mode is linear.
3621 Use the @code{-ar} option or @code{aresample} filter to explicitly set an output sample rate.
3622
3623 The filter accepts the following options:
3624
3625 @table @option
3626 @item I, i
3627 Set integrated loudness target.
3628 Range is -70.0 - -5.0. Default value is -24.0.
3629
3630 @item LRA, lra
3631 Set loudness range target.
3632 Range is 1.0 - 20.0. Default value is 7.0.
3633
3634 @item TP, tp
3635 Set maximum true peak.
3636 Range is -9.0 - +0.0. Default value is -2.0.
3637
3638 @item measured_I, measured_i
3639 Measured IL of input file.
3640 Range is -99.0 - +0.0.
3641
3642 @item measured_LRA, measured_lra
3643 Measured LRA of input file.
3644 Range is  0.0 - 99.0.
3645
3646 @item measured_TP, measured_tp
3647 Measured true peak of input file.
3648 Range is  -99.0 - +99.0.
3649
3650 @item measured_thresh
3651 Measured threshold of input file.
3652 Range is -99.0 - +0.0.
3653
3654 @item offset
3655 Set offset gain. Gain is applied before the true-peak limiter.
3656 Range is  -99.0 - +99.0. Default is +0.0.
3657
3658 @item linear
3659 Normalize linearly if possible.
3660 measured_I, measured_LRA, measured_TP, and measured_thresh must also
3661 to be specified in order to use this mode.
3662 Options are true or false. Default is true.
3663
3664 @item dual_mono
3665 Treat mono input files as "dual-mono". If a mono file is intended for playback
3666 on a stereo system, its EBU R128 measurement will be perceptually incorrect.
3667 If set to @code{true}, this option will compensate for this effect.
3668 Multi-channel input files are not affected by this option.
3669 Options are true or false. Default is false.
3670
3671 @item print_format
3672 Set print format for stats. Options are summary, json, or none.
3673 Default value is none.
3674 @end table
3675
3676 @section lowpass
3677
3678 Apply a low-pass filter with 3dB point frequency.
3679 The filter can be either single-pole or double-pole (the default).
3680 The filter roll off at 6dB per pole per octave (20dB per pole per decade).
3681
3682 The filter accepts the following options:
3683
3684 @table @option
3685 @item frequency, f
3686 Set frequency in Hz. Default is 500.
3687
3688 @item poles, p
3689 Set number of poles. Default is 2.
3690
3691 @item width_type, t
3692 Set method to specify band-width of filter.
3693 @table @option
3694 @item h
3695 Hz
3696 @item q
3697 Q-Factor
3698 @item o
3699 octave
3700 @item s
3701 slope
3702 @item k
3703 kHz
3704 @end table
3705
3706 @item width, w
3707 Specify the band-width of a filter in width_type units.
3708 Applies only to double-pole filter.
3709 The default is 0.707q and gives a Butterworth response.
3710
3711 @item channels, c
3712 Specify which channels to filter, by default all available are filtered.
3713 @end table
3714
3715 @subsection Examples
3716 @itemize
3717 @item
3718 Lowpass only LFE channel, it LFE is not present it does nothing:
3719 @example
3720 lowpass=c=LFE
3721 @end example
3722 @end itemize
3723
3724 @subsection Commands
3725
3726 This filter supports the following commands:
3727 @table @option
3728 @item frequency, f
3729 Change lowpass frequency.
3730 Syntax for the command is : "@var{frequency}"
3731
3732 @item width_type, t
3733 Change lowpass width_type.
3734 Syntax for the command is : "@var{width_type}"
3735
3736 @item width, w
3737 Change lowpass width.
3738 Syntax for the command is : "@var{width}"
3739 @end table
3740
3741 @section lv2
3742
3743 Load a LV2 (LADSPA Version 2) plugin.
3744
3745 To enable compilation of this filter you need to configure FFmpeg with
3746 @code{--enable-lv2}.
3747
3748 @table @option
3749 @item plugin, p
3750 Specifies the plugin URI. You may need to escape ':'.
3751
3752 @item controls, c
3753 Set the '|' separated list of controls which are zero or more floating point
3754 values that determine the behavior of the loaded plugin (for example delay,
3755 threshold or gain).
3756 If @option{controls} is set to @code{help}, all available controls and
3757 their valid ranges are printed.
3758
3759 @item sample_rate, s
3760 Specify the sample rate, default to 44100. Only used if plugin have
3761 zero inputs.
3762
3763 @item nb_samples, n
3764 Set the number of samples per channel per each output frame, default
3765 is 1024. Only used if plugin have zero inputs.
3766
3767 @item duration, d
3768 Set the minimum duration of the sourced audio. See
3769 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
3770 for the accepted syntax.
3771 Note that the resulting duration may be greater than the specified duration,
3772 as the generated audio is always cut at the end of a complete frame.
3773 If not specified, or the expressed duration is negative, the audio is
3774 supposed to be generated forever.
3775 Only used if plugin have zero inputs.
3776 @end table
3777
3778 @subsection Examples
3779
3780 @itemize
3781 @item
3782 Apply bass enhancer plugin from Calf:
3783 @example
3784 lv2=p=http\\\\://calf.sourceforge.net/plugins/BassEnhancer:c=amount=2
3785 @end example
3786
3787 @item
3788 Apply vinyl plugin from Calf:
3789 @example
3790 lv2=p=http\\\\://calf.sourceforge.net/plugins/Vinyl:c=drone=0.2|aging=0.5
3791 @end example
3792
3793 @item
3794 Apply bit crusher plugin from ArtyFX:
3795 @example
3796 lv2=p=http\\\\://www.openavproductions.com/artyfx#bitta:c=crush=0.3
3797 @end example
3798 @end itemize
3799
3800 @section mcompand
3801 Multiband Compress or expand the audio's dynamic range.
3802
3803 The input audio is divided into bands using 4th order Linkwitz-Riley IIRs.
3804 This is akin to the crossover of a loudspeaker, and results in flat frequency
3805 response when absent compander action.
3806
3807 It accepts the following parameters:
3808
3809 @table @option
3810 @item args
3811 This option syntax is:
3812 attack,decay,[attack,decay..] soft-knee points crossover_frequency [delay [initial_volume [gain]]] | attack,decay ...
3813 For explanation of each item refer to compand filter documentation.
3814 @end table
3815
3816 @anchor{pan}
3817 @section pan
3818
3819 Mix channels with specific gain levels. The filter accepts the output
3820 channel layout followed by a set of channels definitions.
3821
3822 This filter is also designed to efficiently remap the channels of an audio
3823 stream.
3824
3825 The filter accepts parameters of the form:
3826 "@var{l}|@var{outdef}|@var{outdef}|..."
3827
3828 @table @option
3829 @item l
3830 output channel layout or number of channels
3831
3832 @item outdef
3833 output channel specification, of the form:
3834 "@var{out_name}=[@var{gain}*]@var{in_name}[(+-)[@var{gain}*]@var{in_name}...]"
3835
3836 @item out_name
3837 output channel to define, either a channel name (FL, FR, etc.) or a channel
3838 number (c0, c1, etc.)
3839
3840 @item gain
3841 multiplicative coefficient for the channel, 1 leaving the volume unchanged
3842
3843 @item in_name
3844 input channel to use, see out_name for details; it is not possible to mix
3845 named and numbered input channels
3846 @end table
3847
3848 If the `=' in a channel specification is replaced by `<', then the gains for
3849 that specification will be renormalized so that the total is 1, thus
3850 avoiding clipping noise.
3851
3852 @subsection Mixing examples
3853
3854 For example, if you want to down-mix from stereo to mono, but with a bigger
3855 factor for the left channel:
3856 @example
3857 pan=1c|c0=0.9*c0+0.1*c1
3858 @end example
3859
3860 A customized down-mix to stereo that works automatically for 3-, 4-, 5- and
3861 7-channels surround:
3862 @example
3863 pan=stereo| FL < FL + 0.5*FC + 0.6*BL + 0.6*SL | FR < FR + 0.5*FC + 0.6*BR + 0.6*SR
3864 @end example
3865
3866 Note that @command{ffmpeg} integrates a default down-mix (and up-mix) system
3867 that should be preferred (see "-ac" option) unless you have very specific
3868 needs.
3869
3870 @subsection Remapping examples
3871
3872 The channel remapping will be effective if, and only if:
3873
3874 @itemize
3875 @item gain coefficients are zeroes or ones,
3876 @item only one input per channel output,
3877 @end itemize
3878
3879 If all these conditions are satisfied, the filter will notify the user ("Pure
3880 channel mapping detected"), and use an optimized and lossless method to do the
3881 remapping.
3882
3883 For example, if you have a 5.1 source and want a stereo audio stream by
3884 dropping the extra channels:
3885 @example
3886 pan="stereo| c0=FL | c1=FR"
3887 @end example
3888
3889 Given the same source, you can also switch front left and front right channels
3890 and keep the input channel layout:
3891 @example
3892 pan="5.1| c0=c1 | c1=c0 | c2=c2 | c3=c3 | c4=c4 | c5=c5"
3893 @end example
3894
3895 If the input is a stereo audio stream, you can mute the front left channel (and
3896 still keep the stereo channel layout) with:
3897 @example
3898 pan="stereo|c1=c1"
3899 @end example
3900
3901 Still with a stereo audio stream input, you can copy the right channel in both
3902 front left and right:
3903 @example
3904 pan="stereo| c0=FR | c1=FR"
3905 @end example
3906
3907 @section replaygain
3908
3909 ReplayGain scanner filter. This filter takes an audio stream as an input and
3910 outputs it unchanged.
3911 At end of filtering it displays @code{track_gain} and @code{track_peak}.
3912
3913 @section resample
3914
3915 Convert the audio sample format, sample rate and channel layout. It is
3916 not meant to be used directly.
3917
3918 @section rubberband
3919 Apply time-stretching and pitch-shifting with librubberband.
3920
3921 To enable compilation of this filter, you need to configure FFmpeg with
3922 @code{--enable-librubberband}.
3923
3924 The filter accepts the following options:
3925
3926 @table @option
3927 @item tempo
3928 Set tempo scale factor.
3929
3930 @item pitch
3931 Set pitch scale factor.
3932
3933 @item transients
3934 Set transients detector.
3935 Possible values are:
3936 @table @var
3937 @item crisp
3938 @item mixed
3939 @item smooth
3940 @end table
3941
3942 @item detector
3943 Set detector.
3944 Possible values are:
3945 @table @var
3946 @item compound
3947 @item percussive
3948 @item soft
3949 @end table
3950
3951 @item phase
3952 Set phase.
3953 Possible values are:
3954 @table @var
3955 @item laminar
3956 @item independent
3957 @end table
3958
3959 @item window
3960 Set processing window size.
3961 Possible values are:
3962 @table @var
3963 @item standard
3964 @item short
3965 @item long
3966 @end table
3967
3968 @item smoothing
3969 Set smoothing.
3970 Possible values are:
3971 @table @var
3972 @item off
3973 @item on
3974 @end table
3975
3976 @item formant
3977 Enable formant preservation when shift pitching.
3978 Possible values are:
3979 @table @var
3980 @item shifted
3981 @item preserved
3982 @end table
3983
3984 @item pitchq
3985 Set pitch quality.
3986 Possible values are:
3987 @table @var
3988 @item quality
3989 @item speed
3990 @item consistency
3991 @end table
3992
3993 @item channels
3994 Set channels.
3995 Possible values are:
3996 @table @var
3997 @item apart
3998 @item together
3999 @end table
4000 @end table
4001
4002 @section sidechaincompress
4003
4004 This filter acts like normal compressor but has the ability to compress
4005 detected signal using second input signal.
4006 It needs two input streams and returns one output stream.
4007 First input stream will be processed depending on second stream signal.
4008 The filtered signal then can be filtered with other filters in later stages of
4009 processing. See @ref{pan} and @ref{amerge} filter.
4010
4011 The filter accepts the following options:
4012
4013 @table @option
4014 @item level_in
4015 Set input gain. Default is 1. Range is between 0.015625 and 64.
4016
4017 @item threshold
4018 If a signal of second stream raises above this level it will affect the gain
4019 reduction of first stream.
4020 By default is 0.125. Range is between 0.00097563 and 1.
4021
4022 @item ratio
4023 Set a ratio about which the signal is reduced. 1:2 means that if the level
4024 raised 4dB above the threshold, it will be only 2dB above after the reduction.
4025 Default is 2. Range is between 1 and 20.
4026
4027 @item attack
4028 Amount of milliseconds the signal has to rise above the threshold before gain
4029 reduction starts. Default is 20. Range is between 0.01 and 2000.
4030
4031 @item release
4032 Amount of milliseconds the signal has to fall below the threshold before
4033 reduction is decreased again. Default is 250. Range is between 0.01 and 9000.
4034
4035 @item makeup
4036 Set the amount by how much signal will be amplified after processing.
4037 Default is 1. Range is from 1 to 64.
4038
4039 @item knee
4040 Curve the sharp knee around the threshold to enter gain reduction more softly.
4041 Default is 2.82843. Range is between 1 and 8.
4042
4043 @item link
4044 Choose if the @code{average} level between all channels of side-chain stream
4045 or the louder(@code{maximum}) channel of side-chain stream affects the
4046 reduction. Default is @code{average}.
4047
4048 @item detection
4049 Should the exact signal be taken in case of @code{peak} or an RMS one in case
4050 of @code{rms}. Default is @code{rms} which is mainly smoother.
4051
4052 @item level_sc
4053 Set sidechain gain. Default is 1. Range is between 0.015625 and 64.
4054
4055 @item mix
4056 How much to use compressed signal in output. Default is 1.
4057 Range is between 0 and 1.
4058 @end table
4059
4060 @subsection Examples
4061
4062 @itemize
4063 @item
4064 Full ffmpeg example taking 2 audio inputs, 1st input to be compressed
4065 depending on the signal of 2nd input and later compressed signal to be
4066 merged with 2nd input:
4067 @example
4068 ffmpeg -i main.flac -i sidechain.flac -filter_complex "[1:a]asplit=2[sc][mix];[0:a][sc]sidechaincompress[compr];[compr][mix]amerge"
4069 @end example
4070 @end itemize
4071
4072 @section sidechaingate
4073
4074 A sidechain gate acts like a normal (wideband) gate but has the ability to
4075 filter the detected signal before sending it to the gain reduction stage.
4076 Normally a gate uses the full range signal to detect a level above the
4077 threshold.
4078 For example: If you cut all lower frequencies from your sidechain signal
4079 the gate will decrease the volume of your track only if not enough highs
4080 appear. With this technique you are able to reduce the resonation of a
4081 natural drum or remove "rumbling" of muted strokes from a heavily distorted
4082 guitar.
4083 It needs two input streams and returns one output stream.
4084 First input stream will be processed depending on second stream signal.
4085
4086 The filter accepts the following options:
4087
4088 @table @option
4089 @item level_in
4090 Set input level before filtering.
4091 Default is 1. Allowed range is from 0.015625 to 64.
4092
4093 @item range
4094 Set the level of gain reduction when the signal is below the threshold.
4095 Default is 0.06125. Allowed range is from 0 to 1.
4096
4097 @item threshold
4098 If a signal rises above this level the gain reduction is released.
4099 Default is 0.125. Allowed range is from 0 to 1.
4100
4101 @item ratio
4102 Set a ratio about which the signal is reduced.
4103 Default is 2. Allowed range is from 1 to 9000.
4104
4105 @item attack
4106 Amount of milliseconds the signal has to rise above the threshold before gain
4107 reduction stops.
4108 Default is 20 milliseconds. Allowed range is from 0.01 to 9000.
4109
4110 @item release
4111 Amount of milliseconds the signal has to fall below the threshold before the
4112 reduction is increased again. Default is 250 milliseconds.
4113 Allowed range is from 0.01 to 9000.
4114
4115 @item makeup
4116 Set amount of amplification of signal after processing.
4117 Default is 1. Allowed range is from 1 to 64.
4118
4119 @item knee
4120 Curve the sharp knee around the threshold to enter gain reduction more softly.
4121 Default is 2.828427125. Allowed range is from 1 to 8.
4122
4123 @item detection
4124 Choose if exact signal should be taken for detection or an RMS like one.
4125 Default is rms. Can be peak or rms.
4126
4127 @item link
4128 Choose if the average level between all channels or the louder channel affects
4129 the reduction.
4130 Default is average. Can be average or maximum.
4131
4132 @item level_sc
4133 Set sidechain gain. Default is 1. Range is from 0.015625 to 64.
4134 @end table
4135
4136 @section silencedetect
4137
4138 Detect silence in an audio stream.
4139
4140 This filter logs a message when it detects that the input audio volume is less
4141 or equal to a noise tolerance value for a duration greater or equal to the
4142 minimum detected noise duration.
4143
4144 The printed times and duration are expressed in seconds.
4145
4146 The filter accepts the following options:
4147
4148 @table @option
4149 @item duration, d
4150 Set silence duration until notification (default is 2 seconds).
4151
4152 @item noise, n
4153 Set noise tolerance. Can be specified in dB (in case "dB" is appended to the
4154 specified value) or amplitude ratio. Default is -60dB, or 0.001.
4155 @end table
4156
4157 @subsection Examples
4158
4159 @itemize
4160 @item
4161 Detect 5 seconds of silence with -50dB noise tolerance:
4162 @example
4163 silencedetect=n=-50dB:d=5
4164 @end example
4165
4166 @item
4167 Complete example with @command{ffmpeg} to detect silence with 0.0001 noise
4168 tolerance in @file{silence.mp3}:
4169 @example
4170 ffmpeg -i silence.mp3 -af silencedetect=noise=0.0001 -f null -
4171 @end example
4172 @end itemize
4173
4174 @section silenceremove
4175
4176 Remove silence from the beginning, middle or end of the audio.
4177
4178 The filter accepts the following options:
4179
4180 @table @option
4181 @item start_periods
4182 This value is used to indicate if audio should be trimmed at beginning of
4183 the audio. A value of zero indicates no silence should be trimmed from the
4184 beginning. When specifying a non-zero value, it trims audio up until it
4185 finds non-silence. Normally, when trimming silence from beginning of audio
4186 the @var{start_periods} will be @code{1} but it can be increased to higher
4187 values to trim all audio up to specific count of non-silence periods.
4188 Default value is @code{0}.
4189
4190 @item start_duration
4191 Specify the amount of time that non-silence must be detected before it stops
4192 trimming audio. By increasing the duration, bursts of noises can be treated
4193 as silence and trimmed off. Default value is @code{0}.
4194
4195 @item start_threshold
4196 This indicates what sample value should be treated as silence. For digital
4197 audio, a value of @code{0} may be fine but for audio recorded from analog,
4198 you may wish to increase the value to account for background noise.
4199 Can be specified in dB (in case "dB" is appended to the specified value)
4200 or amplitude ratio. Default value is @code{0}.
4201
4202 @item stop_periods
4203 Set the count for trimming silence from the end of audio.
4204 To remove silence from the middle of a file, specify a @var{stop_periods}
4205 that is negative. This value is then treated as a positive value and is
4206 used to indicate the effect should restart processing as specified by
4207 @var{start_periods}, making it suitable for removing periods of silence
4208 in the middle of the audio.
4209 Default value is @code{0}.
4210
4211 @item stop_duration
4212 Specify a duration of silence that must exist before audio is not copied any
4213 more. By specifying a higher duration, silence that is wanted can be left in
4214 the audio.
4215 Default value is @code{0}.
4216
4217 @item stop_threshold
4218 This is the same as @option{start_threshold} but for trimming silence from
4219 the end of audio.
4220 Can be specified in dB (in case "dB" is appended to the specified value)
4221 or amplitude ratio. Default value is @code{0}.
4222
4223 @item leave_silence
4224 This indicates that @var{stop_duration} length of audio should be left intact
4225 at the beginning of each period of silence.
4226 For example, if you want to remove long pauses between words but do not want
4227 to remove the pauses completely. Default value is @code{0}.
4228
4229 @item detection
4230 Set how is silence detected. Can be @code{rms} or @code{peak}. Second is faster
4231 and works better with digital silence which is exactly 0.
4232 Default value is @code{rms}.
4233
4234 @item window
4235 Set ratio used to calculate size of window for detecting silence.
4236 Default value is @code{0.02}. Allowed range is from @code{0} to @code{10}.
4237 @end table
4238
4239 @subsection Examples
4240
4241 @itemize
4242 @item
4243 The following example shows how this filter can be used to start a recording
4244 that does not contain the delay at the start which usually occurs between
4245 pressing the record button and the start of the performance:
4246 @example
4247 silenceremove=1:5:0.02
4248 @end example
4249
4250 @item
4251 Trim all silence encountered from beginning to end where there is more than 1
4252 second of silence in audio:
4253 @example
4254 silenceremove=0:0:0:-1:1:-90dB
4255 @end example
4256 @end itemize
4257
4258 @section sofalizer
4259
4260 SOFAlizer uses head-related transfer functions (HRTFs) to create virtual
4261 loudspeakers around the user for binaural listening via headphones (audio
4262 formats up to 9 channels supported).
4263 The HRTFs are stored in SOFA files (see @url{http://www.sofacoustics.org/} for a database).
4264 SOFAlizer is developed at the Acoustics Research Institute (ARI) of the
4265 Austrian Academy of Sciences.
4266
4267 To enable compilation of this filter you need to configure FFmpeg with
4268 @code{--enable-libmysofa}.
4269
4270 The filter accepts the following options:
4271
4272 @table @option
4273 @item sofa
4274 Set the SOFA file used for rendering.
4275
4276 @item gain
4277 Set gain applied to audio. Value is in dB. Default is 0.
4278
4279 @item rotation
4280 Set rotation of virtual loudspeakers in deg. Default is 0.
4281
4282 @item elevation
4283 Set elevation of virtual speakers in deg. Default is 0.
4284
4285 @item radius
4286 Set distance in meters between loudspeakers and the listener with near-field
4287 HRTFs. Default is 1.
4288
4289 @item type
4290 Set processing type. Can be @var{time} or @var{freq}. @var{time} is
4291 processing audio in time domain which is slow.
4292 @var{freq} is processing audio in frequency domain which is fast.
4293 Default is @var{freq}.
4294
4295 @item speakers
4296 Set custom positions of virtual loudspeakers. Syntax for this option is:
4297 <CH> <AZIM> <ELEV>[|<CH> <AZIM> <ELEV>|...].
4298 Each virtual loudspeaker is described with short channel name following with
4299 azimuth and elevation in degrees.
4300 Each virtual loudspeaker description is separated by '|'.
4301 For example to override front left and front right channel positions use:
4302 'speakers=FL 45 15|FR 345 15'.
4303 Descriptions with unrecognised channel names are ignored.
4304
4305 @item lfegain
4306 Set custom gain for LFE channels. Value is in dB. Default is 0.
4307 @end table
4308
4309 @subsection Examples
4310
4311 @itemize
4312 @item
4313 Using ClubFritz6 sofa file:
4314 @example
4315 sofalizer=sofa=/path/to/ClubFritz6.sofa:type=freq:radius=1
4316 @end example
4317
4318 @item
4319 Using ClubFritz12 sofa file and bigger radius with small rotation:
4320 @example
4321 sofalizer=sofa=/path/to/ClubFritz12.sofa:type=freq:radius=2:rotation=5
4322 @end example
4323
4324 @item
4325 Similar as above but with custom speaker positions for front left, front right, back left and back right
4326 and also with custom gain:
4327 @example
4328 "sofalizer=sofa=/path/to/ClubFritz6.sofa:type=freq:radius=2:speakers=FL 45|FR 315|BL 135|BR 225:gain=28"
4329 @end example
4330 @end itemize
4331
4332 @section stereotools
4333
4334 This filter has some handy utilities to manage stereo signals, for converting
4335 M/S stereo recordings to L/R signal while having control over the parameters
4336 or spreading the stereo image of master track.
4337
4338 The filter accepts the following options:
4339
4340 @table @option
4341 @item level_in
4342 Set input level before filtering for both channels. Defaults is 1.
4343 Allowed range is from 0.015625 to 64.
4344
4345 @item level_out
4346 Set output level after filtering for both channels. Defaults is 1.
4347 Allowed range is from 0.015625 to 64.
4348
4349 @item balance_in
4350 Set input balance between both channels. Default is 0.
4351 Allowed range is from -1 to 1.
4352
4353 @item balance_out
4354 Set output balance between both channels. Default is 0.
4355 Allowed range is from -1 to 1.
4356
4357 @item softclip
4358 Enable softclipping. Results in analog distortion instead of harsh digital 0dB
4359 clipping. Disabled by default.
4360
4361 @item mutel
4362 Mute the left channel. Disabled by default.
4363
4364 @item muter
4365 Mute the right channel. Disabled by default.
4366
4367 @item phasel
4368 Change the phase of the left channel. Disabled by default.
4369
4370 @item phaser
4371 Change the phase of the right channel. Disabled by default.
4372
4373 @item mode
4374 Set stereo mode. Available values are:
4375
4376 @table @samp
4377 @item lr>lr
4378 Left/Right to Left/Right, this is default.
4379
4380 @item lr>ms
4381 Left/Right to Mid/Side.
4382
4383 @item ms>lr
4384 Mid/Side to Left/Right.
4385
4386 @item lr>ll
4387 Left/Right to Left/Left.
4388
4389 @item lr>rr
4390 Left/Right to Right/Right.
4391
4392 @item lr>l+r
4393 Left/Right to Left + Right.
4394
4395 @item lr>rl
4396 Left/Right to Right/Left.
4397
4398 @item ms>ll
4399 Mid/Side to Left/Left.
4400
4401 @item ms>rr
4402 Mid/Side to Right/Right.
4403 @end table
4404
4405 @item slev
4406 Set level of side signal. Default is 1.
4407 Allowed range is from 0.015625 to 64.
4408
4409 @item sbal
4410 Set balance of side signal. Default is 0.
4411 Allowed range is from -1 to 1.
4412
4413 @item mlev
4414 Set level of the middle signal. Default is 1.
4415 Allowed range is from 0.015625 to 64.
4416
4417 @item mpan
4418 Set middle signal pan. Default is 0. Allowed range is from -1 to 1.
4419
4420 @item base
4421 Set stereo base between mono and inversed channels. Default is 0.
4422 Allowed range is from -1 to 1.
4423
4424 @item delay
4425 Set delay in milliseconds how much to delay left from right channel and
4426 vice versa. Default is 0. Allowed range is from -20 to 20.
4427
4428 @item sclevel
4429 Set S/C level. Default is 1. Allowed range is from 1 to 100.
4430
4431 @item phase
4432 Set the stereo phase in degrees. Default is 0. Allowed range is from 0 to 360.
4433
4434 @item bmode_in, bmode_out
4435 Set balance mode for balance_in/balance_out option.
4436
4437 Can be one of the following:
4438
4439 @table @samp
4440 @item balance
4441 Classic balance mode. Attenuate one channel at time.
4442 Gain is raised up to 1.
4443
4444 @item amplitude
4445 Similar as classic mode above but gain is raised up to 2.
4446
4447 @item power
4448 Equal power distribution, from -6dB to +6dB range.
4449 @end table
4450 @end table
4451
4452 @subsection Examples
4453
4454 @itemize
4455 @item
4456 Apply karaoke like effect:
4457 @example
4458 stereotools=mlev=0.015625
4459 @end example
4460
4461 @item
4462 Convert M/S signal to L/R:
4463 @example
4464 "stereotools=mode=ms>lr"
4465 @end example
4466 @end itemize
4467
4468 @section stereowiden
4469
4470 This filter enhance the stereo effect by suppressing signal common to both
4471 channels and by delaying the signal of left into right and vice versa,
4472 thereby widening the stereo effect.
4473
4474 The filter accepts the following options:
4475
4476 @table @option
4477 @item delay
4478 Time in milliseconds of the delay of left signal into right and vice versa.
4479 Default is 20 milliseconds.
4480
4481 @item feedback
4482 Amount of gain in delayed signal into right and vice versa. Gives a delay
4483 effect of left signal in right output and vice versa which gives widening
4484 effect. Default is 0.3.
4485
4486 @item crossfeed
4487 Cross feed of left into right with inverted phase. This helps in suppressing
4488 the mono. If the value is 1 it will cancel all the signal common to both
4489 channels. Default is 0.3.
4490
4491 @item drymix
4492 Set level of input signal of original channel. Default is 0.8.
4493 @end table
4494
4495 @section superequalizer
4496 Apply 18 band equalizer.
4497
4498 The filter accepts the following options:
4499 @table @option
4500 @item 1b
4501 Set 65Hz band gain.
4502 @item 2b
4503 Set 92Hz band gain.
4504 @item 3b
4505 Set 131Hz band gain.
4506 @item 4b
4507 Set 185Hz band gain.
4508 @item 5b
4509 Set 262Hz band gain.
4510 @item 6b
4511 Set 370Hz band gain.
4512 @item 7b
4513 Set 523Hz band gain.
4514 @item 8b
4515 Set 740Hz band gain.
4516 @item 9b
4517 Set 1047Hz band gain.
4518 @item 10b
4519 Set 1480Hz band gain.
4520 @item 11b
4521 Set 2093Hz band gain.
4522 @item 12b
4523 Set 2960Hz band gain.
4524 @item 13b
4525 Set 4186Hz band gain.
4526 @item 14b
4527 Set 5920Hz band gain.
4528 @item 15b
4529 Set 8372Hz band gain.
4530 @item 16b
4531 Set 11840Hz band gain.
4532 @item 17b
4533 Set 16744Hz band gain.
4534 @item 18b
4535 Set 20000Hz band gain.
4536 @end table
4537
4538 @section surround
4539 Apply audio surround upmix filter.
4540
4541 This filter allows to produce multichannel output from audio stream.
4542
4543 The filter accepts the following options:
4544
4545 @table @option
4546 @item chl_out
4547 Set output channel layout. By default, this is @var{5.1}.
4548
4549 See @ref{channel layout syntax,,the Channel Layout section in the ffmpeg-utils(1) manual,ffmpeg-utils}
4550 for the required syntax.
4551
4552 @item chl_in
4553 Set input channel layout. By default, this is @var{stereo}.
4554
4555 See @ref{channel layout syntax,,the Channel Layout section in the ffmpeg-utils(1) manual,ffmpeg-utils}
4556 for the required syntax.
4557
4558 @item level_in
4559 Set input volume level. By default, this is @var{1}.
4560
4561 @item level_out
4562 Set output volume level. By default, this is @var{1}.
4563
4564 @item lfe
4565 Enable LFE channel output if output channel layout has it. By default, this is enabled.
4566
4567 @item lfe_low
4568 Set LFE low cut off frequency. By default, this is @var{128} Hz.
4569
4570 @item lfe_high
4571 Set LFE high cut off frequency. By default, this is @var{256} Hz.
4572
4573 @item fc_in
4574 Set front center input volume. By default, this is @var{1}.
4575
4576 @item fc_out
4577 Set front center output volume. By default, this is @var{1}.
4578
4579 @item lfe_in
4580 Set LFE input volume. By default, this is @var{1}.
4581
4582 @item lfe_out
4583 Set LFE output volume. By default, this is @var{1}.
4584 @end table
4585
4586 @section treble, highshelf
4587
4588 Boost or cut treble (upper) frequencies of the audio using a two-pole
4589 shelving filter with a response similar to that of a standard
4590 hi-fi's tone-controls. This is also known as shelving equalisation (EQ).
4591
4592 The filter accepts the following options:
4593
4594 @table @option
4595 @item gain, g
4596 Give the gain at whichever is the lower of ~22 kHz and the
4597 Nyquist frequency. Its useful range is about -20 (for a large cut)
4598 to +20 (for a large boost). Beware of clipping when using a positive gain.
4599
4600 @item frequency, f
4601 Set the filter's central frequency and so can be used
4602 to extend or reduce the frequency range to be boosted or cut.
4603 The default value is @code{3000} Hz.
4604
4605 @item width_type, t
4606 Set method to specify band-width of filter.
4607 @table @option
4608 @item h
4609 Hz
4610 @item q
4611 Q-Factor
4612 @item o
4613 octave
4614 @item s
4615 slope
4616 @item k
4617 kHz
4618 @end table
4619
4620 @item width, w
4621 Determine how steep is the filter's shelf transition.
4622
4623 @item channels, c
4624 Specify which channels to filter, by default all available are filtered.
4625 @end table
4626
4627 @subsection Commands
4628
4629 This filter supports the following commands:
4630 @table @option
4631 @item frequency, f
4632 Change treble frequency.
4633 Syntax for the command is : "@var{frequency}"
4634
4635 @item width_type, t
4636 Change treble width_type.
4637 Syntax for the command is : "@var{width_type}"
4638
4639 @item width, w
4640 Change treble width.
4641 Syntax for the command is : "@var{width}"
4642
4643 @item gain, g
4644 Change treble gain.
4645 Syntax for the command is : "@var{gain}"
4646 @end table
4647
4648 @section tremolo
4649
4650 Sinusoidal amplitude modulation.
4651
4652 The filter accepts the following options:
4653
4654 @table @option
4655 @item f
4656 Modulation frequency in Hertz. Modulation frequencies in the subharmonic range
4657 (20 Hz or lower) will result in a tremolo effect.
4658 This filter may also be used as a ring modulator by specifying
4659 a modulation frequency higher than 20 Hz.
4660 Range is 0.1 - 20000.0. Default value is 5.0 Hz.
4661
4662 @item d
4663 Depth of modulation as a percentage. Range is 0.0 - 1.0.
4664 Default value is 0.5.
4665 @end table
4666
4667 @section vibrato
4668
4669 Sinusoidal phase modulation.
4670
4671 The filter accepts the following options:
4672
4673 @table @option
4674 @item f
4675 Modulation frequency in Hertz.
4676 Range is 0.1 - 20000.0. Default value is 5.0 Hz.
4677
4678 @item d
4679 Depth of modulation as a percentage. Range is 0.0 - 1.0.
4680 Default value is 0.5.
4681 @end table
4682
4683 @section volume
4684
4685 Adjust the input audio volume.
4686
4687 It accepts the following parameters:
4688 @table @option
4689
4690 @item volume
4691 Set audio volume expression.
4692
4693 Output values are clipped to the maximum value.
4694
4695 The output audio volume is given by the relation:
4696 @example
4697 @var{output_volume} = @var{volume} * @var{input_volume}
4698 @end example
4699
4700 The default value for @var{volume} is "1.0".
4701
4702 @item precision
4703 This parameter represents the mathematical precision.
4704
4705 It determines which input sample formats will be allowed, which affects the
4706 precision of the volume scaling.
4707
4708 @table @option
4709 @item fixed
4710 8-bit fixed-point; this limits input sample format to U8, S16, and S32.
4711 @item float
4712 32-bit floating-point; this limits input sample format to FLT. (default)
4713 @item double
4714 64-bit floating-point; this limits input sample format to DBL.
4715 @end table
4716
4717 @item replaygain
4718 Choose the behaviour on encountering ReplayGain side data in input frames.
4719
4720 @table @option
4721 @item drop
4722 Remove ReplayGain side data, ignoring its contents (the default).
4723
4724 @item ignore
4725 Ignore ReplayGain side data, but leave it in the frame.
4726
4727 @item track
4728 Prefer the track gain, if present.
4729
4730 @item album
4731 Prefer the album gain, if present.
4732 @end table
4733
4734 @item replaygain_preamp
4735 Pre-amplification gain in dB to apply to the selected replaygain gain.
4736
4737 Default value for @var{replaygain_preamp} is 0.0.
4738
4739 @item eval
4740 Set when the volume expression is evaluated.
4741
4742 It accepts the following values:
4743 @table @samp
4744 @item once
4745 only evaluate expression once during the filter initialization, or
4746 when the @samp{volume} command is sent
4747
4748 @item frame
4749 evaluate expression for each incoming frame
4750 @end table
4751
4752 Default value is @samp{once}.
4753 @end table
4754
4755 The volume expression can contain the following parameters.
4756
4757 @table @option
4758 @item n
4759 frame number (starting at zero)
4760 @item nb_channels
4761 number of channels
4762 @item nb_consumed_samples
4763 number of samples consumed by the filter
4764 @item nb_samples
4765 number of samples in the current frame
4766 @item pos
4767 original frame position in the file
4768 @item pts
4769 frame PTS
4770 @item sample_rate
4771 sample rate
4772 @item startpts
4773 PTS at start of stream
4774 @item startt
4775 time at start of stream
4776 @item t
4777 frame time
4778 @item tb
4779 timestamp timebase
4780 @item volume
4781 last set volume value
4782 @end table
4783
4784 Note that when @option{eval} is set to @samp{once} only the
4785 @var{sample_rate} and @var{tb} variables are available, all other
4786 variables will evaluate to NAN.
4787
4788 @subsection Commands
4789
4790 This filter supports the following commands:
4791 @table @option
4792 @item volume
4793 Modify the volume expression.
4794 The command accepts the same syntax of the corresponding option.
4795
4796 If the specified expression is not valid, it is kept at its current
4797 value.
4798 @item replaygain_noclip
4799 Prevent clipping by limiting the gain applied.
4800
4801 Default value for @var{replaygain_noclip} is 1.
4802
4803 @end table
4804
4805 @subsection Examples
4806
4807 @itemize
4808 @item
4809 Halve the input audio volume:
4810 @example
4811 volume=volume=0.5
4812 volume=volume=1/2
4813 volume=volume=-6.0206dB
4814 @end example
4815
4816 In all the above example the named key for @option{volume} can be
4817 omitted, for example like in:
4818 @example
4819 volume=0.5
4820 @end example
4821
4822 @item
4823 Increase input audio power by 6 decibels using fixed-point precision:
4824 @example
4825 volume=volume=6dB:precision=fixed
4826 @end example
4827
4828 @item
4829 Fade volume after time 10 with an annihilation period of 5 seconds:
4830 @example
4831 volume='if(lt(t,10),1,max(1-(t-10)/5,0))':eval=frame
4832 @end example
4833 @end itemize
4834
4835 @section volumedetect
4836
4837 Detect the volume of the input video.
4838
4839 The filter has no parameters. The input is not modified. Statistics about
4840 the volume will be printed in the log when the input stream end is reached.
4841
4842 In particular it will show the mean volume (root mean square), maximum
4843 volume (on a per-sample basis), and the beginning of a histogram of the
4844 registered volume values (from the maximum value to a cumulated 1/1000 of
4845 the samples).
4846
4847 All volumes are in decibels relative to the maximum PCM value.
4848
4849 @subsection Examples
4850
4851 Here is an excerpt of the output:
4852 @example
4853 [Parsed_volumedetect_0 @ 0xa23120] mean_volume: -27 dB
4854 [Parsed_volumedetect_0 @ 0xa23120] max_volume: -4 dB
4855 [Parsed_volumedetect_0 @ 0xa23120] histogram_4db: 6
4856 [Parsed_volumedetect_0 @ 0xa23120] histogram_5db: 62
4857 [Parsed_volumedetect_0 @ 0xa23120] histogram_6db: 286
4858 [Parsed_volumedetect_0 @ 0xa23120] histogram_7db: 1042
4859 [Parsed_volumedetect_0 @ 0xa23120] histogram_8db: 2551
4860 [Parsed_volumedetect_0 @ 0xa23120] histogram_9db: 4609
4861 [Parsed_volumedetect_0 @ 0xa23120] histogram_10db: 8409
4862 @end example
4863
4864 It means that:
4865 @itemize
4866 @item
4867 The mean square energy is approximately -27 dB, or 10^-2.7.
4868 @item
4869 The largest sample is at -4 dB, or more precisely between -4 dB and -5 dB.
4870 @item
4871 There are 6 samples at -4 dB, 62 at -5 dB, 286 at -6 dB, etc.
4872 @end itemize
4873
4874 In other words, raising the volume by +4 dB does not cause any clipping,
4875 raising it by +5 dB causes clipping for 6 samples, etc.
4876
4877 @c man end AUDIO FILTERS
4878
4879 @chapter Audio Sources
4880 @c man begin AUDIO SOURCES
4881
4882 Below is a description of the currently available audio sources.
4883
4884 @section abuffer
4885
4886 Buffer audio frames, and make them available to the filter chain.
4887
4888 This source is mainly intended for a programmatic use, in particular
4889 through the interface defined in @file{libavfilter/asrc_abuffer.h}.
4890
4891 It accepts the following parameters:
4892 @table @option
4893
4894 @item time_base
4895 The timebase which will be used for timestamps of submitted frames. It must be
4896 either a floating-point number or in @var{numerator}/@var{denominator} form.
4897
4898 @item sample_rate
4899 The sample rate of the incoming audio buffers.
4900
4901 @item sample_fmt
4902 The sample format of the incoming audio buffers.
4903 Either a sample format name or its corresponding integer representation from
4904 the enum AVSampleFormat in @file{libavutil/samplefmt.h}
4905
4906 @item channel_layout
4907 The channel layout of the incoming audio buffers.
4908 Either a channel layout name from channel_layout_map in
4909 @file{libavutil/channel_layout.c} or its corresponding integer representation
4910 from the AV_CH_LAYOUT_* macros in @file{libavutil/channel_layout.h}
4911
4912 @item channels
4913 The number of channels of the incoming audio buffers.
4914 If both @var{channels} and @var{channel_layout} are specified, then they
4915 must be consistent.
4916
4917 @end table
4918
4919 @subsection Examples
4920
4921 @example
4922 abuffer=sample_rate=44100:sample_fmt=s16p:channel_layout=stereo
4923 @end example
4924
4925 will instruct the source to accept planar 16bit signed stereo at 44100Hz.
4926 Since the sample format with name "s16p" corresponds to the number
4927 6 and the "stereo" channel layout corresponds to the value 0x3, this is
4928 equivalent to:
4929 @example
4930 abuffer=sample_rate=44100:sample_fmt=6:channel_layout=0x3
4931 @end example
4932
4933 @section aevalsrc
4934
4935 Generate an audio signal specified by an expression.
4936
4937 This source accepts in input one or more expressions (one for each
4938 channel), which are evaluated and used to generate a corresponding
4939 audio signal.
4940
4941 This source accepts the following options:
4942
4943 @table @option
4944 @item exprs
4945 Set the '|'-separated expressions list for each separate channel. In case the
4946 @option{channel_layout} option is not specified, the selected channel layout
4947 depends on the number of provided expressions. Otherwise the last
4948 specified expression is applied to the remaining output channels.
4949
4950 @item channel_layout, c
4951 Set the channel layout. The number of channels in the specified layout
4952 must be equal to the number of specified expressions.
4953
4954 @item duration, d
4955 Set the minimum duration of the sourced audio. See
4956 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
4957 for the accepted syntax.
4958 Note that the resulting duration may be greater than the specified
4959 duration, as the generated audio is always cut at the end of a
4960 complete frame.
4961
4962 If not specified, or the expressed duration is negative, the audio is
4963 supposed to be generated forever.
4964
4965 @item nb_samples, n
4966 Set the number of samples per channel per each output frame,
4967 default to 1024.
4968
4969 @item sample_rate, s
4970 Specify the sample rate, default to 44100.
4971 @end table
4972
4973 Each expression in @var{exprs} can contain the following constants:
4974
4975 @table @option
4976 @item n
4977 number of the evaluated sample, starting from 0
4978
4979 @item t
4980 time of the evaluated sample expressed in seconds, starting from 0
4981
4982 @item s
4983 sample rate
4984
4985 @end table
4986
4987 @subsection Examples
4988
4989 @itemize
4990 @item
4991 Generate silence:
4992 @example
4993 aevalsrc=0
4994 @end example
4995
4996 @item
4997 Generate a sin signal with frequency of 440 Hz, set sample rate to
4998 8000 Hz:
4999 @example
5000 aevalsrc="sin(440*2*PI*t):s=8000"
5001 @end example
5002
5003 @item
5004 Generate a two channels signal, specify the channel layout (Front
5005 Center + Back Center) explicitly:
5006 @example
5007 aevalsrc="sin(420*2*PI*t)|cos(430*2*PI*t):c=FC|BC"
5008 @end example
5009
5010 @item
5011 Generate white noise:
5012 @example
5013 aevalsrc="-2+random(0)"
5014 @end example
5015
5016 @item
5017 Generate an amplitude modulated signal:
5018 @example
5019 aevalsrc="sin(10*2*PI*t)*sin(880*2*PI*t)"
5020 @end example
5021
5022 @item
5023 Generate 2.5 Hz binaural beats on a 360 Hz carrier:
5024 @example
5025 aevalsrc="0.1*sin(2*PI*(360-2.5/2)*t) | 0.1*sin(2*PI*(360+2.5/2)*t)"
5026 @end example
5027
5028 @end itemize
5029
5030 @section anullsrc
5031
5032 The null audio source, return unprocessed audio frames. It is mainly useful
5033 as a template and to be employed in analysis / debugging tools, or as
5034 the source for filters which ignore the input data (for example the sox
5035 synth filter).
5036
5037 This source accepts the following options:
5038
5039 @table @option
5040
5041 @item channel_layout, cl
5042
5043 Specifies the channel layout, and can be either an integer or a string
5044 representing a channel layout. The default value of @var{channel_layout}
5045 is "stereo".
5046
5047 Check the channel_layout_map definition in
5048 @file{libavutil/channel_layout.c} for the mapping between strings and
5049 channel layout values.
5050
5051 @item sample_rate, r
5052 Specifies the sample rate, and defaults to 44100.
5053
5054 @item nb_samples, n
5055 Set the number of samples per requested frames.
5056
5057 @end table
5058
5059 @subsection Examples
5060
5061 @itemize
5062 @item
5063 Set the sample rate to 48000 Hz and the channel layout to AV_CH_LAYOUT_MONO.
5064 @example
5065 anullsrc=r=48000:cl=4
5066 @end example
5067
5068 @item
5069 Do the same operation with a more obvious syntax:
5070 @example
5071 anullsrc=r=48000:cl=mono
5072 @end example
5073 @end itemize
5074
5075 All the parameters need to be explicitly defined.
5076
5077 @section flite
5078
5079 Synthesize a voice utterance using the libflite library.
5080
5081 To enable compilation of this filter you need to configure FFmpeg with
5082 @code{--enable-libflite}.
5083
5084 Note that versions of the flite library prior to 2.0 are not thread-safe.
5085
5086 The filter accepts the following options:
5087
5088 @table @option
5089
5090 @item list_voices
5091 If set to 1, list the names of the available voices and exit
5092 immediately. Default value is 0.
5093
5094 @item nb_samples, n
5095 Set the maximum number of samples per frame. Default value is 512.
5096
5097 @item textfile
5098 Set the filename containing the text to speak.
5099
5100 @item text
5101 Set the text to speak.
5102
5103 @item voice, v
5104 Set the voice to use for the speech synthesis. Default value is
5105 @code{kal}. See also the @var{list_voices} option.
5106 @end table
5107
5108 @subsection Examples
5109
5110 @itemize
5111 @item
5112 Read from file @file{speech.txt}, and synthesize the text using the
5113 standard flite voice:
5114 @example
5115 flite=textfile=speech.txt
5116 @end example
5117
5118 @item
5119 Read the specified text selecting the @code{slt} voice:
5120 @example
5121 flite=text='So fare thee well, poor devil of a Sub-Sub, whose commentator I am':voice=slt
5122 @end example
5123
5124 @item
5125 Input text to ffmpeg:
5126 @example
5127 ffmpeg -f lavfi -i flite=text='So fare thee well, poor devil of a Sub-Sub, whose commentator I am':voice=slt
5128 @end example
5129
5130 @item
5131 Make @file{ffplay} speak the specified text, using @code{flite} and
5132 the @code{lavfi} device:
5133 @example
5134 ffplay -f lavfi flite=text='No more be grieved for which that thou hast done.'
5135 @end example
5136 @end itemize
5137
5138 For more information about libflite, check:
5139 @url{http://www.festvox.org/flite/}
5140
5141 @section anoisesrc
5142
5143 Generate a noise audio signal.
5144
5145 The filter accepts the following options:
5146
5147 @table @option
5148 @item sample_rate, r
5149 Specify the sample rate. Default value is 48000 Hz.
5150
5151 @item amplitude, a
5152 Specify the amplitude (0.0 - 1.0) of the generated audio stream. Default value
5153 is 1.0.
5154
5155 @item duration, d
5156 Specify the duration of the generated audio stream. Not specifying this option
5157 results in noise with an infinite length.
5158
5159 @item color, colour, c
5160 Specify the color of noise. Available noise colors are white, pink, brown,
5161 blue and violet. Default color is white.
5162
5163 @item seed, s
5164 Specify a value used to seed the PRNG.
5165
5166 @item nb_samples, n
5167 Set the number of samples per each output frame, default is 1024.
5168 @end table
5169
5170 @subsection Examples
5171
5172 @itemize
5173
5174 @item
5175 Generate 60 seconds of pink noise, with a 44.1 kHz sampling rate and an amplitude of 0.5:
5176 @example
5177 anoisesrc=d=60:c=pink:r=44100:a=0.5
5178 @end example
5179 @end itemize
5180
5181 @section hilbert
5182
5183 Generate odd-tap Hilbert transform FIR coefficients.
5184
5185 The resulting stream can be used with @ref{afir} filter for phase-shifting
5186 the signal by 90 degrees.
5187
5188 This is used in many matrix coding schemes and for analytic signal generation.
5189 The process is often written as a multiplication by i (or j), the imaginary unit.
5190
5191 The filter accepts the following options:
5192
5193 @table @option
5194
5195 @item sample_rate, s
5196 Set sample rate, default is 44100.
5197
5198 @item taps, t
5199 Set length of FIR filter, default is 22051.
5200
5201 @item nb_samples, n
5202 Set number of samples per each frame.
5203
5204 @item win_func, w
5205 Set window function to be used when generating FIR coefficients.
5206 @end table
5207
5208 @section sine
5209
5210 Generate an audio signal made of a sine wave with amplitude 1/8.
5211
5212 The audio signal is bit-exact.
5213
5214 The filter accepts the following options:
5215
5216 @table @option
5217
5218 @item frequency, f
5219 Set the carrier frequency. Default is 440 Hz.
5220
5221 @item beep_factor, b
5222 Enable a periodic beep every second with frequency @var{beep_factor} times
5223 the carrier frequency. Default is 0, meaning the beep is disabled.
5224
5225 @item sample_rate, r
5226 Specify the sample rate, default is 44100.
5227
5228 @item duration, d
5229 Specify the duration of the generated audio stream.
5230
5231 @item samples_per_frame
5232 Set the number of samples per output frame.
5233
5234 The expression can contain the following constants:
5235
5236 @table @option
5237 @item n
5238 The (sequential) number of the output audio frame, starting from 0.
5239
5240 @item pts
5241 The PTS (Presentation TimeStamp) of the output audio frame,
5242 expressed in @var{TB} units.
5243
5244 @item t
5245 The PTS of the output audio frame, expressed in seconds.
5246
5247 @item TB
5248 The timebase of the output audio frames.
5249 @end table
5250
5251 Default is @code{1024}.
5252 @end table
5253
5254 @subsection Examples
5255
5256 @itemize
5257
5258 @item
5259 Generate a simple 440 Hz sine wave:
5260 @example
5261 sine
5262 @end example
5263
5264 @item
5265 Generate a 220 Hz sine wave with a 880 Hz beep each second, for 5 seconds:
5266 @example
5267 sine=220:4:d=5
5268 sine=f=220:b=4:d=5
5269 sine=frequency=220:beep_factor=4:duration=5
5270 @end example
5271
5272 @item
5273 Generate a 1 kHz sine wave following @code{1602,1601,1602,1601,1602} NTSC
5274 pattern:
5275 @example
5276 sine=1000:samples_per_frame='st(0,mod(n,5)); 1602-not(not(eq(ld(0),1)+eq(ld(0),3)))'
5277 @end example
5278 @end itemize
5279
5280 @c man end AUDIO SOURCES
5281
5282 @chapter Audio Sinks
5283 @c man begin AUDIO SINKS
5284
5285 Below is a description of the currently available audio sinks.
5286
5287 @section abuffersink
5288
5289 Buffer audio frames, and make them available to the end of filter chain.
5290
5291 This sink is mainly intended for programmatic use, in particular
5292 through the interface defined in @file{libavfilter/buffersink.h}
5293 or the options system.
5294
5295 It accepts a pointer to an AVABufferSinkContext structure, which
5296 defines the incoming buffers' formats, to be passed as the opaque
5297 parameter to @code{avfilter_init_filter} for initialization.
5298 @section anullsink
5299
5300 Null audio sink; do absolutely nothing with the input audio. It is
5301 mainly useful as a template and for use in analysis / debugging
5302 tools.
5303
5304 @c man end AUDIO SINKS
5305
5306 @chapter Video Filters
5307 @c man begin VIDEO FILTERS
5308
5309 When you configure your FFmpeg build, you can disable any of the
5310 existing filters using @code{--disable-filters}.
5311 The configure output will show the video filters included in your
5312 build.
5313
5314 Below is a description of the currently available video filters.
5315
5316 @section alphaextract
5317
5318 Extract the alpha component from the input as a grayscale video. This
5319 is especially useful with the @var{alphamerge} filter.
5320
5321 @section alphamerge
5322
5323 Add or replace the alpha component of the primary input with the
5324 grayscale value of a second input. This is intended for use with
5325 @var{alphaextract} to allow the transmission or storage of frame
5326 sequences that have alpha in a format that doesn't support an alpha
5327 channel.
5328
5329 For example, to reconstruct full frames from a normal YUV-encoded video
5330 and a separate video created with @var{alphaextract}, you might use:
5331 @example
5332 movie=in_alpha.mkv [alpha]; [in][alpha] alphamerge [out]
5333 @end example
5334
5335 Since this filter is designed for reconstruction, it operates on frame
5336 sequences without considering timestamps, and terminates when either
5337 input reaches end of stream. This will cause problems if your encoding
5338 pipeline drops frames. If you're trying to apply an image as an
5339 overlay to a video stream, consider the @var{overlay} filter instead.
5340
5341 @section amplify
5342
5343 Amplify differences between current pixel and pixels of adjacent frames in
5344 same pixel location.
5345
5346 This filter accepts the following options:
5347
5348 @table @option
5349 @item radius
5350 Set frame radius. Default is 2. Allowed range is from 1 to 63.
5351 For example radius of 3 will instruct filter to calculate average of 7 frames.
5352
5353 @item factor
5354 Set factor to amplify difference. Default is 2. Allowed range is from 0 to 65535.
5355
5356 @item threshold
5357 Set threshold for difference amplification. Any differrence greater or equal to
5358 this value will not alter source pixel. Default is 10.
5359 Allowed range is from 0 to 65535.
5360
5361 @item low
5362 Set lower limit for changing source pixel. Default is 65535. Allowed range is from 0 to 65535.
5363 This option controls maximum possible value that will decrease source pixel value.
5364
5365 @item high
5366 Set high limit for changing source pixel. Default is 65535. Allowed range is from 0 to 65535.
5367 This option controls maximum possible value that will increase source pixel value.
5368
5369 @item planes
5370 Set which planes to filter. Default is all. Allowed range is from 0 to 15.
5371 @end table
5372
5373 @section ass
5374
5375 Same as the @ref{subtitles} filter, except that it doesn't require libavcodec
5376 and libavformat to work. On the other hand, it is limited to ASS (Advanced
5377 Substation Alpha) subtitles files.
5378
5379 This filter accepts the following option in addition to the common options from
5380 the @ref{subtitles} filter:
5381
5382 @table @option
5383 @item shaping
5384 Set the shaping engine
5385
5386 Available values are:
5387 @table @samp
5388 @item auto
5389 The default libass shaping engine, which is the best available.
5390 @item simple
5391 Fast, font-agnostic shaper that can do only substitutions
5392 @item complex
5393 Slower shaper using OpenType for substitutions and positioning
5394 @end table
5395
5396 The default is @code{auto}.
5397 @end table
5398
5399 @section atadenoise
5400 Apply an Adaptive Temporal Averaging Denoiser to the video input.
5401
5402 The filter accepts the following options:
5403
5404 @table @option
5405 @item 0a
5406 Set threshold A for 1st plane. Default is 0.02.
5407 Valid range is 0 to 0.3.
5408
5409 @item 0b
5410 Set threshold B for 1st plane. Default is 0.04.
5411 Valid range is 0 to 5.
5412
5413 @item 1a
5414 Set threshold A for 2nd plane. Default is 0.02.
5415 Valid range is 0 to 0.3.
5416
5417 @item 1b
5418 Set threshold B for 2nd plane. Default is 0.04.
5419 Valid range is 0 to 5.
5420
5421 @item 2a
5422 Set threshold A for 3rd plane. Default is 0.02.
5423 Valid range is 0 to 0.3.
5424
5425 @item 2b
5426 Set threshold B for 3rd plane. Default is 0.04.
5427 Valid range is 0 to 5.
5428
5429 Threshold A is designed to react on abrupt changes in the input signal and
5430 threshold B is designed to react on continuous changes in the input signal.
5431
5432 @item s
5433 Set number of frames filter will use for averaging. Default is 9. Must be odd
5434 number in range [5, 129].
5435
5436 @item p
5437 Set what planes of frame filter will use for averaging. Default is all.
5438 @end table
5439
5440 @section avgblur
5441
5442 Apply average blur filter.
5443
5444 The filter accepts the following options:
5445
5446 @table @option
5447 @item sizeX
5448 Set horizontal radius size.
5449
5450 @item planes
5451 Set which planes to filter. By default all planes are filtered.
5452
5453 @item sizeY
5454 Set vertical radius size, if zero it will be same as @code{sizeX}.
5455 Default is @code{0}.
5456 @end table
5457
5458 @section bbox
5459
5460 Compute the bounding box for the non-black pixels in the input frame
5461 luminance plane.
5462
5463 This filter computes the bounding box containing all the pixels with a
5464 luminance value greater than the minimum allowed value.
5465 The parameters describing the bounding box are printed on the filter
5466 log.
5467
5468 The filter accepts the following option:
5469
5470 @table @option
5471 @item min_val
5472 Set the minimal luminance value. Default is @code{16}.
5473 @end table
5474
5475 @section bitplanenoise
5476
5477 Show and measure bit plane noise.
5478
5479 The filter accepts the following options:
5480
5481 @table @option
5482 @item bitplane
5483 Set which plane to analyze. Default is @code{1}.
5484
5485 @item filter
5486 Filter out noisy pixels from @code{bitplane} set above.
5487 Default is disabled.
5488 @end table
5489
5490 @section blackdetect
5491
5492 Detect video intervals that are (almost) completely black. Can be
5493 useful to detect chapter transitions, commercials, or invalid
5494 recordings. Output lines contains the time for the start, end and
5495 duration of the detected black interval expressed in seconds.
5496
5497 In order to display the output lines, you need to set the loglevel at
5498 least to the AV_LOG_INFO value.
5499
5500 The filter accepts the following options:
5501
5502 @table @option
5503 @item black_min_duration, d
5504 Set the minimum detected black duration expressed in seconds. It must
5505 be a non-negative floating point number.
5506
5507 Default value is 2.0.
5508
5509 @item picture_black_ratio_th, pic_th
5510 Set the threshold for considering a picture "black".
5511 Express the minimum value for the ratio:
5512 @example
5513 @var{nb_black_pixels} / @var{nb_pixels}
5514 @end example
5515
5516 for which a picture is considered black.
5517 Default value is 0.98.
5518
5519 @item pixel_black_th, pix_th
5520 Set the threshold for considering a pixel "black".
5521
5522 The threshold expresses the maximum pixel luminance value for which a
5523 pixel is considered "black". The provided value is scaled according to
5524 the following equation:
5525 @example
5526 @var{absolute_threshold} = @var{luminance_minimum_value} + @var{pixel_black_th} * @var{luminance_range_size}
5527 @end example
5528
5529 @var{luminance_range_size} and @var{luminance_minimum_value} depend on
5530 the input video format, the range is [0-255] for YUV full-range
5531 formats and [16-235] for YUV non full-range formats.
5532
5533 Default value is 0.10.
5534 @end table
5535
5536 The following example sets the maximum pixel threshold to the minimum
5537 value, and detects only black intervals of 2 or more seconds:
5538 @example
5539 blackdetect=d=2:pix_th=0.00
5540 @end example
5541
5542 @section blackframe
5543
5544 Detect frames that are (almost) completely black. Can be useful to
5545 detect chapter transitions or commercials. Output lines consist of
5546 the frame number of the detected frame, the percentage of blackness,
5547 the position in the file if known or -1 and the timestamp in seconds.
5548
5549 In order to display the output lines, you need to set the loglevel at
5550 least to the AV_LOG_INFO value.
5551
5552 This filter exports frame metadata @code{lavfi.blackframe.pblack}.
5553 The value represents the percentage of pixels in the picture that
5554 are below the threshold value.
5555
5556 It accepts the following parameters:
5557
5558 @table @option
5559
5560 @item amount
5561 The percentage of the pixels that have to be below the threshold; it defaults to
5562 @code{98}.
5563
5564 @item threshold, thresh
5565 The threshold below which a pixel value is considered black; it defaults to
5566 @code{32}.
5567
5568 @end table
5569
5570 @section blend, tblend
5571
5572 Blend two video frames into each other.
5573
5574 The @code{blend} filter takes two input streams and outputs one
5575 stream, the first input is the "top" layer and second input is
5576 "bottom" layer.  By default, the output terminates when the longest input terminates.
5577
5578 The @code{tblend} (time blend) filter takes two consecutive frames
5579 from one single stream, and outputs the result obtained by blending
5580 the new frame on top of the old frame.
5581
5582 A description of the accepted options follows.
5583
5584 @table @option
5585 @item c0_mode
5586 @item c1_mode
5587 @item c2_mode
5588 @item c3_mode
5589 @item all_mode
5590 Set blend mode for specific pixel component or all pixel components in case
5591 of @var{all_mode}. Default value is @code{normal}.
5592
5593 Available values for component modes are:
5594 @table @samp
5595 @item addition
5596 @item grainmerge
5597 @item and
5598 @item average
5599 @item burn
5600 @item darken
5601 @item difference
5602 @item grainextract
5603 @item divide
5604 @item dodge
5605 @item freeze
5606 @item exclusion
5607 @item extremity
5608 @item glow
5609 @item hardlight
5610 @item hardmix
5611 @item heat
5612 @item lighten
5613 @item linearlight
5614 @item multiply
5615 @item multiply128
5616 @item negation
5617 @item normal
5618 @item or
5619 @item overlay
5620 @item phoenix
5621 @item pinlight
5622 @item reflect
5623 @item screen
5624 @item softlight
5625 @item subtract
5626 @item vividlight
5627 @item xor
5628 @end table
5629
5630 @item c0_opacity
5631 @item c1_opacity
5632 @item c2_opacity
5633 @item c3_opacity
5634 @item all_opacity
5635 Set blend opacity for specific pixel component or all pixel components in case
5636 of @var{all_opacity}. Only used in combination with pixel component blend modes.
5637
5638 @item c0_expr
5639 @item c1_expr
5640 @item c2_expr
5641 @item c3_expr
5642 @item all_expr
5643 Set blend expression for specific pixel component or all pixel components in case
5644 of @var{all_expr}. Note that related mode options will be ignored if those are set.
5645
5646 The expressions can use the following variables:
5647
5648 @table @option
5649 @item N
5650 The sequential number of the filtered frame, starting from @code{0}.
5651
5652 @item X
5653 @item Y
5654 the coordinates of the current sample
5655
5656 @item W
5657 @item H
5658 the width and height of currently filtered plane
5659
5660 @item SW
5661 @item SH
5662 Width and height scale for the plane being filtered. It is the
5663 ratio between the dimensions of the current plane to the luma plane,
5664 e.g. for a @code{yuv420p} frame, the values are @code{1,1} for
5665 the luma plane and @code{0.5,0.5} for the chroma planes.
5666
5667 @item T
5668 Time of the current frame, expressed in seconds.
5669
5670 @item TOP, A
5671 Value of pixel component at current location for first video frame (top layer).
5672
5673 @item BOTTOM, B
5674 Value of pixel component at current location for second video frame (bottom layer).
5675 @end table
5676 @end table
5677
5678 The @code{blend} filter also supports the @ref{framesync} options.
5679
5680 @subsection Examples
5681
5682 @itemize
5683 @item
5684 Apply transition from bottom layer to top layer in first 10 seconds:
5685 @example
5686 blend=all_expr='A*(if(gte(T,10),1,T/10))+B*(1-(if(gte(T,10),1,T/10)))'
5687 @end example
5688
5689 @item
5690 Apply linear horizontal transition from top layer to bottom layer:
5691 @example
5692 blend=all_expr='A*(X/W)+B*(1-X/W)'
5693 @end example
5694
5695 @item
5696 Apply 1x1 checkerboard effect:
5697 @example
5698 blend=all_expr='if(eq(mod(X,2),mod(Y,2)),A,B)'
5699 @end example
5700
5701 @item
5702 Apply uncover left effect:
5703 @example
5704 blend=all_expr='if(gte(N*SW+X,W),A,B)'
5705 @end example
5706
5707 @item
5708 Apply uncover down effect:
5709 @example
5710 blend=all_expr='if(gte(Y-N*SH,0),A,B)'
5711 @end example
5712
5713 @item
5714 Apply uncover up-left effect:
5715 @example
5716 blend=all_expr='if(gte(T*SH*40+Y,H)*gte((T*40*SW+X)*W/H,W),A,B)'
5717 @end example
5718
5719 @item
5720 Split diagonally video and shows top and bottom layer on each side:
5721 @example
5722 blend=all_expr='if(gt(X,Y*(W/H)),A,B)'
5723 @end example
5724
5725 @item
5726 Display differences between the current and the previous frame:
5727 @example
5728 tblend=all_mode=grainextract
5729 @end example
5730 @end itemize
5731
5732 @section boxblur
5733
5734 Apply a boxblur algorithm to the input video.
5735
5736 It accepts the following parameters:
5737
5738 @table @option
5739
5740 @item luma_radius, lr
5741 @item luma_power, lp
5742 @item chroma_radius, cr
5743 @item chroma_power, cp
5744 @item alpha_radius, ar
5745 @item alpha_power, ap
5746
5747 @end table
5748
5749 A description of the accepted options follows.
5750
5751 @table @option
5752 @item luma_radius, lr
5753 @item chroma_radius, cr
5754 @item alpha_radius, ar
5755 Set an expression for the box radius in pixels used for blurring the
5756 corresponding input plane.
5757
5758 The radius value must be a non-negative number, and must not be
5759 greater than the value of the expression @code{min(w,h)/2} for the
5760 luma and alpha planes, and of @code{min(cw,ch)/2} for the chroma
5761 planes.
5762
5763 Default value for @option{luma_radius} is "2". If not specified,
5764 @option{chroma_radius} and @option{alpha_radius} default to the
5765 corresponding value set for @option{luma_radius}.
5766
5767 The expressions can contain the following constants:
5768 @table @option
5769 @item w
5770 @item h
5771 The input width and height in pixels.
5772
5773 @item cw
5774 @item ch
5775 The input chroma image width and height in pixels.
5776
5777 @item hsub
5778 @item vsub
5779 The horizontal and vertical chroma subsample values. For example, for the
5780 pixel format "yuv422p", @var{hsub} is 2 and @var{vsub} is 1.
5781 @end table
5782
5783 @item luma_power, lp
5784 @item chroma_power, cp
5785 @item alpha_power, ap
5786 Specify how many times the boxblur filter is applied to the
5787 corresponding plane.
5788
5789 Default value for @option{luma_power} is 2. If not specified,
5790 @option{chroma_power} and @option{alpha_power} default to the
5791 corresponding value set for @option{luma_power}.
5792
5793 A value of 0 will disable the effect.
5794 @end table
5795
5796 @subsection Examples
5797
5798 @itemize
5799 @item
5800 Apply a boxblur filter with the luma, chroma, and alpha radii
5801 set to 2:
5802 @example
5803 boxblur=luma_radius=2:luma_power=1
5804 boxblur=2:1
5805 @end example
5806
5807 @item
5808 Set the luma radius to 2, and alpha and chroma radius to 0:
5809 @example
5810 boxblur=2:1:cr=0:ar=0
5811 @end example
5812
5813 @item
5814 Set the luma and chroma radii to a fraction of the video dimension:
5815 @example
5816 boxblur=luma_radius=min(h\,w)/10:luma_power=1:chroma_radius=min(cw\,ch)/10:chroma_power=1
5817 @end example
5818 @end itemize
5819
5820 @section bwdif
5821
5822 Deinterlace the input video ("bwdif" stands for "Bob Weaver
5823 Deinterlacing Filter").
5824
5825 Motion adaptive deinterlacing based on yadif with the use of w3fdif and cubic
5826 interpolation algorithms.
5827 It accepts the following parameters:
5828
5829 @table @option
5830 @item mode
5831 The interlacing mode to adopt. It accepts one of the following values:
5832
5833 @table @option
5834 @item 0, send_frame
5835 Output one frame for each frame.
5836 @item 1, send_field
5837 Output one frame for each field.
5838 @end table
5839
5840 The default value is @code{send_field}.
5841
5842 @item parity
5843 The picture field parity assumed for the input interlaced video. It accepts one
5844 of the following values:
5845
5846 @table @option
5847 @item 0, tff
5848 Assume the top field is first.
5849 @item 1, bff
5850 Assume the bottom field is first.
5851 @item -1, auto
5852 Enable automatic detection of field parity.
5853 @end table
5854
5855 The default value is @code{auto}.
5856 If the interlacing is unknown or the decoder does not export this information,
5857 top field first will be assumed.
5858
5859 @item deint
5860 Specify which frames to deinterlace. Accept one of the following
5861 values:
5862
5863 @table @option
5864 @item 0, all
5865 Deinterlace all frames.
5866 @item 1, interlaced
5867 Only deinterlace frames marked as interlaced.
5868 @end table
5869
5870 The default value is @code{all}.
5871 @end table
5872
5873 @section chromakey
5874 YUV colorspace color/chroma keying.
5875
5876 The filter accepts the following options:
5877
5878 @table @option
5879 @item color
5880 The color which will be replaced with transparency.
5881
5882 @item similarity
5883 Similarity percentage with the key color.
5884
5885 0.01 matches only the exact key color, while 1.0 matches everything.
5886
5887 @item blend
5888 Blend percentage.
5889
5890 0.0 makes pixels either fully transparent, or not transparent at all.
5891
5892 Higher values result in semi-transparent pixels, with a higher transparency
5893 the more similar the pixels color is to the key color.
5894
5895 @item yuv
5896 Signals that the color passed is already in YUV instead of RGB.
5897
5898 Literal colors like "green" or "red" don't make sense with this enabled anymore.
5899 This can be used to pass exact YUV values as hexadecimal numbers.
5900 @end table
5901
5902 @subsection Examples
5903
5904 @itemize
5905 @item
5906 Make every green pixel in the input image transparent:
5907 @example
5908 ffmpeg -i input.png -vf chromakey=green out.png
5909 @end example
5910
5911 @item
5912 Overlay a greenscreen-video on top of a static black background.
5913 @example
5914 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
5915 @end example
5916 @end itemize
5917
5918 @section ciescope
5919
5920 Display CIE color diagram with pixels overlaid onto it.
5921
5922 The filter accepts the following options:
5923
5924 @table @option
5925 @item system
5926 Set color system.
5927
5928 @table @samp
5929 @item ntsc, 470m
5930 @item ebu, 470bg
5931 @item smpte
5932 @item 240m
5933 @item apple
5934 @item widergb
5935 @item cie1931
5936 @item rec709, hdtv
5937 @item uhdtv, rec2020
5938 @end table
5939
5940 @item cie
5941 Set CIE system.
5942
5943 @table @samp
5944 @item xyy
5945 @item ucs
5946 @item luv
5947 @end table
5948
5949 @item gamuts
5950 Set what gamuts to draw.
5951
5952 See @code{system} option for available values.
5953
5954 @item size, s
5955 Set ciescope size, by default set to 512.
5956
5957 @item intensity, i
5958 Set intensity used to map input pixel values to CIE diagram.
5959
5960 @item contrast
5961 Set contrast used to draw tongue colors that are out of active color system gamut.
5962
5963 @item corrgamma
5964 Correct gamma displayed on scope, by default enabled.
5965
5966 @item showwhite
5967 Show white point on CIE diagram, by default disabled.
5968
5969 @item gamma
5970 Set input gamma. Used only with XYZ input color space.
5971 @end table
5972
5973 @section codecview
5974
5975 Visualize information exported by some codecs.
5976
5977 Some codecs can export information through frames using side-data or other
5978 means. For example, some MPEG based codecs export motion vectors through the
5979 @var{export_mvs} flag in the codec @option{flags2} option.
5980
5981 The filter accepts the following option:
5982
5983 @table @option
5984 @item mv
5985 Set motion vectors to visualize.
5986
5987 Available flags for @var{mv} are:
5988
5989 @table @samp
5990 @item pf
5991 forward predicted MVs of P-frames
5992 @item bf
5993 forward predicted MVs of B-frames
5994 @item bb
5995 backward predicted MVs of B-frames
5996 @end table
5997
5998 @item qp
5999 Display quantization parameters using the chroma planes.
6000
6001 @item mv_type, mvt
6002 Set motion vectors type to visualize. Includes MVs from all frames unless specified by @var{frame_type} option.
6003
6004 Available flags for @var{mv_type} are:
6005
6006 @table @samp
6007 @item fp
6008 forward predicted MVs
6009 @item bp
6010 backward predicted MVs
6011 @end table
6012
6013 @item frame_type, ft
6014 Set frame type to visualize motion vectors of.
6015
6016 Available flags for @var{frame_type} are:
6017
6018 @table @samp
6019 @item if
6020 intra-coded frames (I-frames)
6021 @item pf
6022 predicted frames (P-frames)
6023 @item bf
6024 bi-directionally predicted frames (B-frames)
6025 @end table
6026 @end table
6027
6028 @subsection Examples
6029
6030 @itemize
6031 @item
6032 Visualize forward predicted MVs of all frames using @command{ffplay}:
6033 @example
6034 ffplay -flags2 +export_mvs input.mp4 -vf codecview=mv_type=fp
6035 @end example
6036
6037 @item
6038 Visualize multi-directionals MVs of P and B-Frames using @command{ffplay}:
6039 @example
6040 ffplay -flags2 +export_mvs input.mp4 -vf codecview=mv=pf+bf+bb
6041 @end example
6042 @end itemize
6043
6044 @section colorbalance
6045 Modify intensity of primary colors (red, green and blue) of input frames.
6046
6047 The filter allows an input frame to be adjusted in the shadows, midtones or highlights
6048 regions for the red-cyan, green-magenta or blue-yellow balance.
6049
6050 A positive adjustment value shifts the balance towards the primary color, a negative
6051 value towards the complementary color.
6052
6053 The filter accepts the following options:
6054
6055 @table @option
6056 @item rs
6057 @item gs
6058 @item bs
6059 Adjust red, green and blue shadows (darkest pixels).
6060
6061 @item rm
6062 @item gm
6063 @item bm
6064 Adjust red, green and blue midtones (medium pixels).
6065
6066 @item rh
6067 @item gh
6068 @item bh
6069 Adjust red, green and blue highlights (brightest pixels).
6070
6071 Allowed ranges for options are @code{[-1.0, 1.0]}. Defaults are @code{0}.
6072 @end table
6073
6074 @subsection Examples
6075
6076 @itemize
6077 @item
6078 Add red color cast to shadows:
6079 @example
6080 colorbalance=rs=.3
6081 @end example
6082 @end itemize
6083
6084 @section colorkey
6085 RGB colorspace color keying.
6086
6087 The filter accepts the following options:
6088
6089 @table @option
6090 @item color
6091 The color which will be replaced with transparency.
6092
6093 @item similarity
6094 Similarity percentage with the key color.
6095
6096 0.01 matches only the exact key color, while 1.0 matches everything.
6097
6098 @item blend
6099 Blend percentage.
6100
6101 0.0 makes pixels either fully transparent, or not transparent at all.
6102
6103 Higher values result in semi-transparent pixels, with a higher transparency
6104 the more similar the pixels color is to the key color.
6105 @end table
6106
6107 @subsection Examples
6108
6109 @itemize
6110 @item
6111 Make every green pixel in the input image transparent:
6112 @example
6113 ffmpeg -i input.png -vf colorkey=green out.png
6114 @end example
6115
6116 @item
6117 Overlay a greenscreen-video on top of a static background image.
6118 @example
6119 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
6120 @end example
6121 @end itemize
6122
6123 @section colorlevels
6124
6125 Adjust video input frames using levels.
6126
6127 The filter accepts the following options:
6128
6129 @table @option
6130 @item rimin
6131 @item gimin
6132 @item bimin
6133 @item aimin
6134 Adjust red, green, blue and alpha input black point.
6135 Allowed ranges for options are @code{[-1.0, 1.0]}. Defaults are @code{0}.
6136
6137 @item rimax
6138 @item gimax
6139 @item bimax
6140 @item aimax
6141 Adjust red, green, blue and alpha input white point.
6142 Allowed ranges for options are @code{[-1.0, 1.0]}. Defaults are @code{1}.
6143
6144 Input levels are used to lighten highlights (bright tones), darken shadows
6145 (dark tones), change the balance of bright and dark tones.
6146
6147 @item romin
6148 @item gomin
6149 @item bomin
6150 @item aomin
6151 Adjust red, green, blue and alpha output black point.
6152 Allowed ranges for options are @code{[0, 1.0]}. Defaults are @code{0}.
6153
6154 @item romax
6155 @item gomax
6156 @item bomax
6157 @item aomax
6158 Adjust red, green, blue and alpha output white point.
6159 Allowed ranges for options are @code{[0, 1.0]}. Defaults are @code{1}.
6160
6161 Output levels allows manual selection of a constrained output level range.
6162 @end table
6163
6164 @subsection Examples
6165
6166 @itemize
6167 @item
6168 Make video output darker:
6169 @example
6170 colorlevels=rimin=0.058:gimin=0.058:bimin=0.058
6171 @end example
6172
6173 @item
6174 Increase contrast:
6175 @example
6176 colorlevels=rimin=0.039:gimin=0.039:bimin=0.039:rimax=0.96:gimax=0.96:bimax=0.96
6177 @end example
6178
6179 @item
6180 Make video output lighter:
6181 @example
6182 colorlevels=rimax=0.902:gimax=0.902:bimax=0.902
6183 @end example
6184
6185 @item
6186 Increase brightness:
6187 @example
6188 colorlevels=romin=0.5:gomin=0.5:bomin=0.5
6189 @end example
6190 @end itemize
6191
6192 @section colorchannelmixer
6193
6194 Adjust video input frames by re-mixing color channels.
6195
6196 This filter modifies a color channel by adding the values associated to
6197 the other channels of the same pixels. For example if the value to
6198 modify is red, the output value will be:
6199 @example
6200 @var{red}=@var{red}*@var{rr} + @var{blue}*@var{rb} + @var{green}*@var{rg} + @var{alpha}*@var{ra}
6201 @end example
6202
6203 The filter accepts the following options:
6204
6205 @table @option
6206 @item rr
6207 @item rg
6208 @item rb
6209 @item ra
6210 Adjust contribution of input red, green, blue and alpha channels for output red channel.
6211 Default is @code{1} for @var{rr}, and @code{0} for @var{rg}, @var{rb} and @var{ra}.
6212
6213 @item gr
6214 @item gg
6215 @item gb
6216 @item ga
6217 Adjust contribution of input red, green, blue and alpha channels for output green channel.
6218 Default is @code{1} for @var{gg}, and @code{0} for @var{gr}, @var{gb} and @var{ga}.
6219
6220 @item br
6221 @item bg
6222 @item bb
6223 @item ba
6224 Adjust contribution of input red, green, blue and alpha channels for output blue channel.
6225 Default is @code{1} for @var{bb}, and @code{0} for @var{br}, @var{bg} and @var{ba}.
6226
6227 @item ar
6228 @item ag
6229 @item ab
6230 @item aa
6231 Adjust contribution of input red, green, blue and alpha channels for output alpha channel.
6232 Default is @code{1} for @var{aa}, and @code{0} for @var{ar}, @var{ag} and @var{ab}.
6233
6234 Allowed ranges for options are @code{[-2.0, 2.0]}.
6235 @end table
6236
6237 @subsection Examples
6238
6239 @itemize
6240 @item
6241 Convert source to grayscale:
6242 @example
6243 colorchannelmixer=.3:.4:.3:0:.3:.4:.3:0:.3:.4:.3
6244 @end example
6245 @item
6246 Simulate sepia tones:
6247 @example
6248 colorchannelmixer=.393:.769:.189:0:.349:.686:.168:0:.272:.534:.131
6249 @end example
6250 @end itemize
6251
6252 @section colormatrix
6253
6254 Convert color matrix.
6255
6256 The filter accepts the following options:
6257
6258 @table @option
6259 @item src
6260 @item dst
6261 Specify the source and destination color matrix. Both values must be
6262 specified.
6263
6264 The accepted values are:
6265 @table @samp
6266 @item bt709
6267 BT.709
6268
6269 @item fcc
6270 FCC
6271
6272 @item bt601
6273 BT.601
6274
6275 @item bt470
6276 BT.470
6277
6278 @item bt470bg
6279 BT.470BG
6280
6281 @item smpte170m
6282 SMPTE-170M
6283
6284 @item smpte240m
6285 SMPTE-240M
6286
6287 @item bt2020
6288 BT.2020
6289 @end table
6290 @end table
6291
6292 For example to convert from BT.601 to SMPTE-240M, use the command:
6293 @example
6294 colormatrix=bt601:smpte240m
6295 @end example
6296
6297 @section colorspace
6298
6299 Convert colorspace, transfer characteristics or color primaries.
6300 Input video needs to have an even size.
6301
6302 The filter accepts the following options:
6303
6304 @table @option
6305 @anchor{all}
6306 @item all
6307 Specify all color properties at once.
6308
6309 The accepted values are:
6310 @table @samp
6311 @item bt470m
6312 BT.470M
6313
6314 @item bt470bg
6315 BT.470BG
6316
6317 @item bt601-6-525
6318 BT.601-6 525
6319
6320 @item bt601-6-625
6321 BT.601-6 625
6322
6323 @item bt709
6324 BT.709
6325
6326 @item smpte170m
6327 SMPTE-170M
6328
6329 @item smpte240m
6330 SMPTE-240M
6331
6332 @item bt2020
6333 BT.2020
6334
6335 @end table
6336
6337 @anchor{space}
6338 @item space
6339 Specify output colorspace.
6340
6341 The accepted values are:
6342 @table @samp
6343 @item bt709
6344 BT.709
6345
6346 @item fcc
6347 FCC
6348
6349 @item bt470bg
6350 BT.470BG or BT.601-6 625
6351
6352 @item smpte170m
6353 SMPTE-170M or BT.601-6 525
6354
6355 @item smpte240m
6356 SMPTE-240M
6357
6358 @item ycgco
6359 YCgCo
6360
6361 @item bt2020ncl
6362 BT.2020 with non-constant luminance
6363
6364 @end table
6365
6366 @anchor{trc}
6367 @item trc
6368 Specify output transfer characteristics.
6369
6370 The accepted values are:
6371 @table @samp
6372 @item bt709
6373 BT.709
6374
6375 @item bt470m
6376 BT.470M
6377
6378 @item bt470bg
6379 BT.470BG
6380
6381 @item gamma22
6382 Constant gamma of 2.2
6383
6384 @item gamma28
6385 Constant gamma of 2.8
6386
6387 @item smpte170m
6388 SMPTE-170M, BT.601-6 625 or BT.601-6 525
6389
6390 @item smpte240m
6391 SMPTE-240M
6392
6393 @item srgb
6394 SRGB
6395
6396 @item iec61966-2-1
6397 iec61966-2-1
6398
6399 @item iec61966-2-4
6400 iec61966-2-4
6401
6402 @item xvycc
6403 xvycc
6404
6405 @item bt2020-10
6406 BT.2020 for 10-bits content
6407
6408 @item bt2020-12
6409 BT.2020 for 12-bits content
6410
6411 @end table
6412
6413 @anchor{primaries}
6414 @item primaries
6415 Specify output color primaries.
6416
6417 The accepted values are:
6418 @table @samp
6419 @item bt709
6420 BT.709
6421
6422 @item bt470m
6423 BT.470M
6424
6425 @item bt470bg
6426 BT.470BG or BT.601-6 625
6427
6428 @item smpte170m
6429 SMPTE-170M or BT.601-6 525
6430
6431 @item smpte240m
6432 SMPTE-240M
6433
6434 @item film
6435 film
6436
6437 @item smpte431
6438 SMPTE-431
6439
6440 @item smpte432
6441 SMPTE-432
6442
6443 @item bt2020
6444 BT.2020
6445
6446 @item jedec-p22
6447 JEDEC P22 phosphors
6448
6449 @end table
6450
6451 @anchor{range}
6452 @item range
6453 Specify output color range.
6454
6455 The accepted values are:
6456 @table @samp
6457 @item tv
6458 TV (restricted) range
6459
6460 @item mpeg
6461 MPEG (restricted) range
6462
6463 @item pc
6464 PC (full) range
6465
6466 @item jpeg
6467 JPEG (full) range
6468
6469 @end table
6470
6471 @item format
6472 Specify output color format.
6473
6474 The accepted values are:
6475 @table @samp
6476 @item yuv420p
6477 YUV 4:2:0 planar 8-bits
6478
6479 @item yuv420p10
6480 YUV 4:2:0 planar 10-bits
6481
6482 @item yuv420p12
6483 YUV 4:2:0 planar 12-bits
6484
6485 @item yuv422p
6486 YUV 4:2:2 planar 8-bits
6487
6488 @item yuv422p10
6489 YUV 4:2:2 planar 10-bits
6490
6491 @item yuv422p12
6492 YUV 4:2:2 planar 12-bits
6493
6494 @item yuv444p
6495 YUV 4:4:4 planar 8-bits
6496
6497 @item yuv444p10
6498 YUV 4:4:4 planar 10-bits
6499
6500 @item yuv444p12
6501 YUV 4:4:4 planar 12-bits
6502
6503 @end table
6504
6505 @item fast
6506 Do a fast conversion, which skips gamma/primary correction. This will take
6507 significantly less CPU, but will be mathematically incorrect. To get output
6508 compatible with that produced by the colormatrix filter, use fast=1.
6509
6510 @item dither
6511 Specify dithering mode.
6512
6513 The accepted values are:
6514 @table @samp
6515 @item none
6516 No dithering
6517
6518 @item fsb
6519 Floyd-Steinberg dithering
6520 @end table
6521
6522 @item wpadapt
6523 Whitepoint adaptation mode.
6524
6525 The accepted values are:
6526 @table @samp
6527 @item bradford
6528 Bradford whitepoint adaptation
6529
6530 @item vonkries
6531 von Kries whitepoint adaptation
6532
6533 @item identity
6534 identity whitepoint adaptation (i.e. no whitepoint adaptation)
6535 @end table
6536
6537 @item iall
6538 Override all input properties at once. Same accepted values as @ref{all}.
6539
6540 @item ispace
6541 Override input colorspace. Same accepted values as @ref{space}.
6542
6543 @item iprimaries
6544 Override input color primaries. Same accepted values as @ref{primaries}.
6545
6546 @item itrc
6547 Override input transfer characteristics. Same accepted values as @ref{trc}.
6548
6549 @item irange
6550 Override input color range. Same accepted values as @ref{range}.
6551
6552 @end table
6553
6554 The filter converts the transfer characteristics, color space and color
6555 primaries to the specified user values. The output value, if not specified,
6556 is set to a default value based on the "all" property. If that property is
6557 also not specified, the filter will log an error. The output color range and
6558 format default to the same value as the input color range and format. The
6559 input transfer characteristics, color space, color primaries and color range
6560 should be set on the input data. If any of these are missing, the filter will
6561 log an error and no conversion will take place.
6562
6563 For example to convert the input to SMPTE-240M, use the command:
6564 @example
6565 colorspace=smpte240m
6566 @end example
6567
6568 @section convolution
6569
6570 Apply convolution of 3x3, 5x5, 7x7 or horizontal/vertical up to 49 elements.
6571
6572 The filter accepts the following options:
6573
6574 @table @option
6575 @item 0m
6576 @item 1m
6577 @item 2m
6578 @item 3m
6579 Set matrix for each plane.
6580 Matrix is sequence of 9, 25 or 49 signed integers in @var{square} mode,
6581 and from 1 to 49 odd number of signed integers in @var{row} mode.
6582
6583 @item 0rdiv
6584 @item 1rdiv
6585 @item 2rdiv
6586 @item 3rdiv
6587 Set multiplier for calculated value for each plane.
6588 If unset or 0, it will be sum of all matrix elements.
6589
6590 @item 0bias
6591 @item 1bias
6592 @item 2bias
6593 @item 3bias
6594 Set bias for each plane. This value is added to the result of the multiplication.
6595 Useful for making the overall image brighter or darker. Default is 0.0.
6596
6597 @item 0mode
6598 @item 1mode
6599 @item 2mode
6600 @item 3mode
6601 Set matrix mode for each plane. Can be @var{square}, @var{row} or @var{column}.
6602 Default is @var{square}.
6603 @end table
6604
6605 @subsection Examples
6606
6607 @itemize
6608 @item
6609 Apply sharpen:
6610 @example
6611 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"
6612 @end example
6613
6614 @item
6615 Apply blur:
6616 @example
6617 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"
6618 @end example
6619
6620 @item
6621 Apply edge enhance:
6622 @example
6623 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"
6624 @end example
6625
6626 @item
6627 Apply edge detect:
6628 @example
6629 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"
6630 @end example
6631
6632 @item
6633 Apply laplacian edge detector which includes diagonals:
6634 @example
6635 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"
6636 @end example
6637
6638 @item
6639 Apply emboss:
6640 @example
6641 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"
6642 @end example
6643 @end itemize
6644
6645 @section convolve
6646
6647 Apply 2D convolution of video stream in frequency domain using second stream
6648 as impulse.
6649
6650 The filter accepts the following options:
6651
6652 @table @option
6653 @item planes
6654 Set which planes to process.
6655
6656 @item impulse
6657 Set which impulse video frames will be processed, can be @var{first}
6658 or @var{all}. Default is @var{all}.
6659 @end table
6660
6661 The @code{convolve} filter also supports the @ref{framesync} options.
6662
6663 @section copy
6664
6665 Copy the input video source unchanged to the output. This is mainly useful for
6666 testing purposes.
6667
6668 @anchor{coreimage}
6669 @section coreimage
6670 Video filtering on GPU using Apple's CoreImage API on OSX.
6671
6672 Hardware acceleration is based on an OpenGL context. Usually, this means it is
6673 processed by video hardware. However, software-based OpenGL implementations
6674 exist which means there is no guarantee for hardware processing. It depends on
6675 the respective OSX.
6676
6677 There are many filters and image generators provided by Apple that come with a
6678 large variety of options. The filter has to be referenced by its name along
6679 with its options.
6680
6681 The coreimage filter accepts the following options:
6682 @table @option
6683 @item list_filters
6684 List all available filters and generators along with all their respective
6685 options as well as possible minimum and maximum values along with the default
6686 values.
6687 @example
6688 list_filters=true
6689 @end example
6690
6691 @item filter
6692 Specify all filters by their respective name and options.
6693 Use @var{list_filters} to determine all valid filter names and options.
6694 Numerical options are specified by a float value and are automatically clamped
6695 to their respective value range.  Vector and color options have to be specified
6696 by a list of space separated float values. Character escaping has to be done.
6697 A special option name @code{default} is available to use default options for a
6698 filter.
6699
6700 It is required to specify either @code{default} or at least one of the filter options.
6701 All omitted options are used with their default values.
6702 The syntax of the filter string is as follows:
6703 @example
6704 filter=<NAME>@@<OPTION>=<VALUE>[@@<OPTION>=<VALUE>][@@...][#<NAME>@@<OPTION>=<VALUE>[@@<OPTION>=<VALUE>][@@...]][#...]
6705 @end example
6706
6707 @item output_rect
6708 Specify a rectangle where the output of the filter chain is copied into the
6709 input image. It is given by a list of space separated float values:
6710 @example
6711 output_rect=x\ y\ width\ height
6712 @end example
6713 If not given, the output rectangle equals the dimensions of the input image.
6714 The output rectangle is automatically cropped at the borders of the input
6715 image. Negative values are valid for each component.
6716 @example
6717 output_rect=25\ 25\ 100\ 100
6718 @end example
6719 @end table
6720
6721 Several filters can be chained for successive processing without GPU-HOST
6722 transfers allowing for fast processing of complex filter chains.
6723 Currently, only filters with zero (generators) or exactly one (filters) input
6724 image and one output image are supported. Also, transition filters are not yet
6725 usable as intended.
6726
6727 Some filters generate output images with additional padding depending on the
6728 respective filter kernel. The padding is automatically removed to ensure the
6729 filter output has the same size as the input image.
6730
6731 For image generators, the size of the output image is determined by the
6732 previous output image of the filter chain or the input image of the whole
6733 filterchain, respectively. The generators do not use the pixel information of
6734 this image to generate their output. However, the generated output is
6735 blended onto this image, resulting in partial or complete coverage of the
6736 output image.
6737
6738 The @ref{coreimagesrc} video source can be used for generating input images
6739 which are directly fed into the filter chain. By using it, providing input
6740 images by another video source or an input video is not required.
6741
6742 @subsection Examples
6743
6744 @itemize
6745
6746 @item
6747 List all filters available:
6748 @example
6749 coreimage=list_filters=true
6750 @end example
6751
6752 @item
6753 Use the CIBoxBlur filter with default options to blur an image:
6754 @example
6755 coreimage=filter=CIBoxBlur@@default
6756 @end example
6757
6758 @item
6759 Use a filter chain with CISepiaTone at default values and CIVignetteEffect with
6760 its center at 100x100 and a radius of 50 pixels:
6761 @example
6762 coreimage=filter=CIBoxBlur@@default#CIVignetteEffect@@inputCenter=100\ 100@@inputRadius=50
6763 @end example
6764
6765 @item
6766 Use nullsrc and CIQRCodeGenerator to create a QR code for the FFmpeg homepage,
6767 given as complete and escaped command-line for Apple's standard bash shell:
6768 @example
6769 ffmpeg -f lavfi -i nullsrc=s=100x100,coreimage=filter=CIQRCodeGenerator@@inputMessage=https\\\\\://FFmpeg.org/@@inputCorrectionLevel=H -frames:v 1 QRCode.png
6770 @end example
6771 @end itemize
6772
6773 @section crop
6774
6775 Crop the input video to given dimensions.
6776
6777 It accepts the following parameters:
6778
6779 @table @option
6780 @item w, out_w
6781 The width of the output video. It defaults to @code{iw}.
6782 This expression is evaluated only once during the filter
6783 configuration, or when the @samp{w} or @samp{out_w} command is sent.
6784
6785 @item h, out_h
6786 The height of the output video. It defaults to @code{ih}.
6787 This expression is evaluated only once during the filter
6788 configuration, or when the @samp{h} or @samp{out_h} command is sent.
6789
6790 @item x
6791 The horizontal position, in the input video, of the left edge of the output
6792 video. It defaults to @code{(in_w-out_w)/2}.
6793 This expression is evaluated per-frame.
6794
6795 @item y
6796 The vertical position, in the input video, of the top edge of the output video.
6797 It defaults to @code{(in_h-out_h)/2}.
6798 This expression is evaluated per-frame.
6799
6800 @item keep_aspect
6801 If set to 1 will force the output display aspect ratio
6802 to be the same of the input, by changing the output sample aspect
6803 ratio. It defaults to 0.
6804
6805 @item exact
6806 Enable exact cropping. If enabled, subsampled videos will be cropped at exact
6807 width/height/x/y as specified and will not be rounded to nearest smaller value.
6808 It defaults to 0.
6809 @end table
6810
6811 The @var{out_w}, @var{out_h}, @var{x}, @var{y} parameters are
6812 expressions containing the following constants:
6813
6814 @table @option
6815 @item x
6816 @item y
6817 The computed values for @var{x} and @var{y}. They are evaluated for
6818 each new frame.
6819
6820 @item in_w
6821 @item in_h
6822 The input width and height.
6823
6824 @item iw
6825 @item ih
6826 These are the same as @var{in_w} and @var{in_h}.
6827
6828 @item out_w
6829 @item out_h
6830 The output (cropped) width and height.
6831
6832 @item ow
6833 @item oh
6834 These are the same as @var{out_w} and @var{out_h}.
6835
6836 @item a
6837 same as @var{iw} / @var{ih}
6838
6839 @item sar
6840 input sample aspect ratio
6841
6842 @item dar
6843 input display aspect ratio, it is the same as (@var{iw} / @var{ih}) * @var{sar}
6844
6845 @item hsub
6846 @item vsub
6847 horizontal and vertical chroma subsample values. For example for the
6848 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
6849
6850 @item n
6851 The number of the input frame, starting from 0.
6852
6853 @item pos
6854 the position in the file of the input frame, NAN if unknown
6855
6856 @item t
6857 The timestamp expressed in seconds. It's NAN if the input timestamp is unknown.
6858
6859 @end table
6860
6861 The expression for @var{out_w} may depend on the value of @var{out_h},
6862 and the expression for @var{out_h} may depend on @var{out_w}, but they
6863 cannot depend on @var{x} and @var{y}, as @var{x} and @var{y} are
6864 evaluated after @var{out_w} and @var{out_h}.
6865
6866 The @var{x} and @var{y} parameters specify the expressions for the
6867 position of the top-left corner of the output (non-cropped) area. They
6868 are evaluated for each frame. If the evaluated value is not valid, it
6869 is approximated to the nearest valid value.
6870
6871 The expression for @var{x} may depend on @var{y}, and the expression
6872 for @var{y} may depend on @var{x}.
6873
6874 @subsection Examples
6875
6876 @itemize
6877 @item
6878 Crop area with size 100x100 at position (12,34).
6879 @example
6880 crop=100:100:12:34
6881 @end example
6882
6883 Using named options, the example above becomes:
6884 @example
6885 crop=w=100:h=100:x=12:y=34
6886 @end example
6887
6888 @item
6889 Crop the central input area with size 100x100:
6890 @example
6891 crop=100:100
6892 @end example
6893
6894 @item
6895 Crop the central input area with size 2/3 of the input video:
6896 @example
6897 crop=2/3*in_w:2/3*in_h
6898 @end example
6899
6900 @item
6901 Crop the input video central square:
6902 @example
6903 crop=out_w=in_h
6904 crop=in_h
6905 @end example
6906
6907 @item
6908 Delimit the rectangle with the top-left corner placed at position
6909 100:100 and the right-bottom corner corresponding to the right-bottom
6910 corner of the input image.
6911 @example
6912 crop=in_w-100:in_h-100:100:100
6913 @end example
6914
6915 @item
6916 Crop 10 pixels from the left and right borders, and 20 pixels from
6917 the top and bottom borders
6918 @example
6919 crop=in_w-2*10:in_h-2*20
6920 @end example
6921
6922 @item
6923 Keep only the bottom right quarter of the input image:
6924 @example
6925 crop=in_w/2:in_h/2:in_w/2:in_h/2
6926 @end example
6927
6928 @item
6929 Crop height for getting Greek harmony:
6930 @example
6931 crop=in_w:1/PHI*in_w
6932 @end example
6933
6934 @item
6935 Apply trembling effect:
6936 @example
6937 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)
6938 @end example
6939
6940 @item
6941 Apply erratic camera effect depending on timestamp:
6942 @example
6943 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)"
6944 @end example
6945
6946 @item
6947 Set x depending on the value of y:
6948 @example
6949 crop=in_w/2:in_h/2:y:10+10*sin(n/10)
6950 @end example
6951 @end itemize
6952
6953 @subsection Commands
6954
6955 This filter supports the following commands:
6956 @table @option
6957 @item w, out_w
6958 @item h, out_h
6959 @item x
6960 @item y
6961 Set width/height of the output video and the horizontal/vertical position
6962 in the input video.
6963 The command accepts the same syntax of the corresponding option.
6964
6965 If the specified expression is not valid, it is kept at its current
6966 value.
6967 @end table
6968
6969 @section cropdetect
6970
6971 Auto-detect the crop size.
6972
6973 It calculates the necessary cropping parameters and prints the
6974 recommended parameters via the logging system. The detected dimensions
6975 correspond to the non-black area of the input video.
6976
6977 It accepts the following parameters:
6978
6979 @table @option
6980
6981 @item limit
6982 Set higher black value threshold, which can be optionally specified
6983 from nothing (0) to everything (255 for 8-bit based formats). An intensity
6984 value greater to the set value is considered non-black. It defaults to 24.
6985 You can also specify a value between 0.0 and 1.0 which will be scaled depending
6986 on the bitdepth of the pixel format.
6987
6988 @item round
6989 The value which the width/height should be divisible by. It defaults to
6990 16. The offset is automatically adjusted to center the video. Use 2 to
6991 get only even dimensions (needed for 4:2:2 video). 16 is best when
6992 encoding to most video codecs.
6993
6994 @item reset_count, reset
6995 Set the counter that determines after how many frames cropdetect will
6996 reset the previously detected largest video area and start over to
6997 detect the current optimal crop area. Default value is 0.
6998
6999 This can be useful when channel logos distort the video area. 0
7000 indicates 'never reset', and returns the largest area encountered during
7001 playback.
7002 @end table
7003
7004 @anchor{cue}
7005 @section cue
7006
7007 Delay video filtering until a given wallclock timestamp. The filter first
7008 passes on @option{preroll} amount of frames, then it buffers at most
7009 @option{buffer} amount of frames and waits for the cue. After reaching the cue
7010 it forwards the buffered frames and also any subsequent frames coming in its
7011 input.
7012
7013 The filter can be used synchronize the output of multiple ffmpeg processes for
7014 realtime output devices like decklink. By putting the delay in the filtering
7015 chain and pre-buffering frames the process can pass on data to output almost
7016 immediately after the target wallclock timestamp is reached.
7017
7018 Perfect frame accuracy cannot be guaranteed, but the result is good enough for
7019 some use cases.
7020
7021 @table @option
7022
7023 @item cue
7024 The cue timestamp expressed in a UNIX timestamp in microseconds. Default is 0.
7025
7026 @item preroll
7027 The duration of content to pass on as preroll expressed in seconds. Default is 0.
7028
7029 @item buffer
7030 The maximum duration of content to buffer before waiting for the cue expressed
7031 in seconds. Default is 0.
7032
7033 @end table
7034
7035 @anchor{curves}
7036 @section curves
7037
7038 Apply color adjustments using curves.
7039
7040 This filter is similar to the Adobe Photoshop and GIMP curves tools. Each
7041 component (red, green and blue) has its values defined by @var{N} key points
7042 tied from each other using a smooth curve. The x-axis represents the pixel
7043 values from the input frame, and the y-axis the new pixel values to be set for
7044 the output frame.
7045
7046 By default, a component curve is defined by the two points @var{(0;0)} and
7047 @var{(1;1)}. This creates a straight line where each original pixel value is
7048 "adjusted" to its own value, which means no change to the image.
7049
7050 The filter allows you to redefine these two points and add some more. A new
7051 curve (using a natural cubic spline interpolation) will be define to pass
7052 smoothly through all these new coordinates. The new defined points needs to be
7053 strictly increasing over the x-axis, and their @var{x} and @var{y} values must
7054 be in the @var{[0;1]} interval.  If the computed curves happened to go outside
7055 the vector spaces, the values will be clipped accordingly.
7056
7057 The filter accepts the following options:
7058
7059 @table @option
7060 @item preset
7061 Select one of the available color presets. This option can be used in addition
7062 to the @option{r}, @option{g}, @option{b} parameters; in this case, the later
7063 options takes priority on the preset values.
7064 Available presets are:
7065 @table @samp
7066 @item none
7067 @item color_negative
7068 @item cross_process
7069 @item darker
7070 @item increase_contrast
7071 @item lighter
7072 @item linear_contrast
7073 @item medium_contrast
7074 @item negative
7075 @item strong_contrast
7076 @item vintage
7077 @end table
7078 Default is @code{none}.
7079 @item master, m
7080 Set the master key points. These points will define a second pass mapping. It
7081 is sometimes called a "luminance" or "value" mapping. It can be used with
7082 @option{r}, @option{g}, @option{b} or @option{all} since it acts like a
7083 post-processing LUT.
7084 @item red, r
7085 Set the key points for the red component.
7086 @item green, g
7087 Set the key points for the green component.
7088 @item blue, b
7089 Set the key points for the blue component.
7090 @item all
7091 Set the key points for all components (not including master).
7092 Can be used in addition to the other key points component
7093 options. In this case, the unset component(s) will fallback on this
7094 @option{all} setting.
7095 @item psfile
7096 Specify a Photoshop curves file (@code{.acv}) to import the settings from.
7097 @item plot
7098 Save Gnuplot script of the curves in specified file.
7099 @end table
7100
7101 To avoid some filtergraph syntax conflicts, each key points list need to be
7102 defined using the following syntax: @code{x0/y0 x1/y1 x2/y2 ...}.
7103
7104 @subsection Examples
7105
7106 @itemize
7107 @item
7108 Increase slightly the middle level of blue:
7109 @example
7110 curves=blue='0/0 0.5/0.58 1/1'
7111 @end example
7112
7113 @item
7114 Vintage effect:
7115 @example
7116 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'
7117 @end example
7118 Here we obtain the following coordinates for each components:
7119 @table @var
7120 @item red
7121 @code{(0;0.11) (0.42;0.51) (1;0.95)}
7122 @item green
7123 @code{(0;0) (0.50;0.48) (1;1)}
7124 @item blue
7125 @code{(0;0.22) (0.49;0.44) (1;0.80)}
7126 @end table
7127
7128 @item
7129 The previous example can also be achieved with the associated built-in preset:
7130 @example
7131 curves=preset=vintage
7132 @end example
7133
7134 @item
7135 Or simply:
7136 @example
7137 curves=vintage
7138 @end example
7139
7140 @item
7141 Use a Photoshop preset and redefine the points of the green component:
7142 @example
7143 curves=psfile='MyCurvesPresets/purple.acv':green='0/0 0.45/0.53 1/1'
7144 @end example
7145
7146 @item
7147 Check out the curves of the @code{cross_process} profile using @command{ffmpeg}
7148 and @command{gnuplot}:
7149 @example
7150 ffmpeg -f lavfi -i color -vf curves=cross_process:plot=/tmp/curves.plt -frames:v 1 -f null -
7151 gnuplot -p /tmp/curves.plt
7152 @end example
7153 @end itemize
7154
7155 @section datascope
7156
7157 Video data analysis filter.
7158
7159 This filter shows hexadecimal pixel values of part of video.
7160
7161 The filter accepts the following options:
7162
7163 @table @option
7164 @item size, s
7165 Set output video size.
7166
7167 @item x
7168 Set x offset from where to pick pixels.
7169
7170 @item y
7171 Set y offset from where to pick pixels.
7172
7173 @item mode
7174 Set scope mode, can be one of the following:
7175 @table @samp
7176 @item mono
7177 Draw hexadecimal pixel values with white color on black background.
7178
7179 @item color
7180 Draw hexadecimal pixel values with input video pixel color on black
7181 background.
7182
7183 @item color2
7184 Draw hexadecimal pixel values on color background picked from input video,
7185 the text color is picked in such way so its always visible.
7186 @end table
7187
7188 @item axis
7189 Draw rows and columns numbers on left and top of video.
7190
7191 @item opacity
7192 Set background opacity.
7193 @end table
7194
7195 @section dctdnoiz
7196
7197 Denoise frames using 2D DCT (frequency domain filtering).
7198
7199 This filter is not designed for real time.
7200
7201 The filter accepts the following options:
7202
7203 @table @option
7204 @item sigma, s
7205 Set the noise sigma constant.
7206
7207 This @var{sigma} defines a hard threshold of @code{3 * sigma}; every DCT
7208 coefficient (absolute value) below this threshold with be dropped.
7209
7210 If you need a more advanced filtering, see @option{expr}.
7211
7212 Default is @code{0}.
7213
7214 @item overlap
7215 Set number overlapping pixels for each block. Since the filter can be slow, you
7216 may want to reduce this value, at the cost of a less effective filter and the
7217 risk of various artefacts.
7218
7219 If the overlapping value doesn't permit processing the whole input width or
7220 height, a warning will be displayed and according borders won't be denoised.
7221
7222 Default value is @var{blocksize}-1, which is the best possible setting.
7223
7224 @item expr, e
7225 Set the coefficient factor expression.
7226
7227 For each coefficient of a DCT block, this expression will be evaluated as a
7228 multiplier value for the coefficient.
7229
7230 If this is option is set, the @option{sigma} option will be ignored.
7231
7232 The absolute value of the coefficient can be accessed through the @var{c}
7233 variable.
7234
7235 @item n
7236 Set the @var{blocksize} using the number of bits. @code{1<<@var{n}} defines the
7237 @var{blocksize}, which is the width and height of the processed blocks.
7238
7239 The default value is @var{3} (8x8) and can be raised to @var{4} for a
7240 @var{blocksize} of 16x16. Note that changing this setting has huge consequences
7241 on the speed processing. Also, a larger block size does not necessarily means a
7242 better de-noising.
7243 @end table
7244
7245 @subsection Examples
7246
7247 Apply a denoise with a @option{sigma} of @code{4.5}:
7248 @example
7249 dctdnoiz=4.5
7250 @end example
7251
7252 The same operation can be achieved using the expression system:
7253 @example
7254 dctdnoiz=e='gte(c, 4.5*3)'
7255 @end example
7256
7257 Violent denoise using a block size of @code{16x16}:
7258 @example
7259 dctdnoiz=15:n=4
7260 @end example
7261
7262 @section deband
7263
7264 Remove banding artifacts from input video.
7265 It works by replacing banded pixels with average value of referenced pixels.
7266
7267 The filter accepts the following options:
7268
7269 @table @option
7270 @item 1thr
7271 @item 2thr
7272 @item 3thr
7273 @item 4thr
7274 Set banding detection threshold for each plane. Default is 0.02.
7275 Valid range is 0.00003 to 0.5.
7276 If difference between current pixel and reference pixel is less than threshold,
7277 it will be considered as banded.
7278
7279 @item range, r
7280 Banding detection range in pixels. Default is 16. If positive, random number
7281 in range 0 to set value will be used. If negative, exact absolute value
7282 will be used.
7283 The range defines square of four pixels around current pixel.
7284
7285 @item direction, d
7286 Set direction in radians from which four pixel will be compared. If positive,
7287 random direction from 0 to set direction will be picked. If negative, exact of
7288 absolute value will be picked. For example direction 0, -PI or -2*PI radians
7289 will pick only pixels on same row and -PI/2 will pick only pixels on same
7290 column.
7291
7292 @item blur, b
7293 If enabled, current pixel is compared with average value of all four
7294 surrounding pixels. The default is enabled. If disabled current pixel is
7295 compared with all four surrounding pixels. The pixel is considered banded
7296 if only all four differences with surrounding pixels are less than threshold.
7297
7298 @item coupling, c
7299 If enabled, current pixel is changed if and only if all pixel components are banded,
7300 e.g. banding detection threshold is triggered for all color components.
7301 The default is disabled.
7302 @end table
7303
7304 @section deblock
7305
7306 Remove blocking artifacts from input video.
7307
7308 The filter accepts the following options:
7309
7310 @table @option
7311 @item filter
7312 Set filter type, can be @var{weak} or @var{strong}. Default is @var{strong}.
7313 This controls what kind of deblocking is applied.
7314
7315 @item block
7316 Set size of block, allowed range is from 4 to 512. Default is @var{8}.
7317
7318 @item alpha
7319 @item beta
7320 @item gamma
7321 @item delta
7322 Set blocking detection thresholds. Allowed range is 0 to 1.
7323 Defaults are: @var{0.098} for @var{alpha} and @var{0.05} for the rest.
7324 Using higher threshold gives more deblocking strength.
7325 Setting @var{alpha} controls threshold detection at exact edge of block.
7326 Remaining options controls threshold detection near the edge. Each one for
7327 below/above or left/right. Setting any of those to @var{0} disables
7328 deblocking.
7329
7330 @item planes
7331 Set planes to filter. Default is to filter all available planes.
7332 @end table
7333
7334 @subsection Examples
7335
7336 @itemize
7337 @item
7338 Deblock using weak filter and block size of 4 pixels.
7339 @example
7340 deblock=filter=weak:block=4
7341 @end example
7342
7343 @item
7344 Deblock using strong filter, block size of 4 pixels and custom thresholds for
7345 deblocking more edges.
7346 @example
7347 deblock=filter=strong:block=4:alpha=0.12:beta=0.07:gamma=0.06:delta=0.05
7348 @end example
7349
7350 @item
7351 Similar as above, but filter only first plane.
7352 @example
7353 deblock=filter=strong:block=4:alpha=0.12:beta=0.07:gamma=0.06:delta=0.05:planes=1
7354 @end example
7355
7356 @item
7357 Similar as above, but filter only second and third plane.
7358 @example
7359 deblock=filter=strong:block=4:alpha=0.12:beta=0.07:gamma=0.06:delta=0.05:planes=6
7360 @end example
7361 @end itemize
7362
7363 @anchor{decimate}
7364 @section decimate
7365
7366 Drop duplicated frames at regular intervals.
7367
7368 The filter accepts the following options:
7369
7370 @table @option
7371 @item cycle
7372 Set the number of frames from which one will be dropped. Setting this to
7373 @var{N} means one frame in every batch of @var{N} frames will be dropped.
7374 Default is @code{5}.
7375
7376 @item dupthresh
7377 Set the threshold for duplicate detection. If the difference metric for a frame
7378 is less than or equal to this value, then it is declared as duplicate. Default
7379 is @code{1.1}
7380
7381 @item scthresh
7382 Set scene change threshold. Default is @code{15}.
7383
7384 @item blockx
7385 @item blocky
7386 Set the size of the x and y-axis blocks used during metric calculations.
7387 Larger blocks give better noise suppression, but also give worse detection of
7388 small movements. Must be a power of two. Default is @code{32}.
7389
7390 @item ppsrc
7391 Mark main input as a pre-processed input and activate clean source input
7392 stream. This allows the input to be pre-processed with various filters to help
7393 the metrics calculation while keeping the frame selection lossless. When set to
7394 @code{1}, the first stream is for the pre-processed input, and the second
7395 stream is the clean source from where the kept frames are chosen. Default is
7396 @code{0}.
7397
7398 @item chroma
7399 Set whether or not chroma is considered in the metric calculations. Default is
7400 @code{1}.
7401 @end table
7402
7403 @section deconvolve
7404
7405 Apply 2D deconvolution of video stream in frequency domain using second stream
7406 as impulse.
7407
7408 The filter accepts the following options:
7409
7410 @table @option
7411 @item planes
7412 Set which planes to process.
7413
7414 @item impulse
7415 Set which impulse video frames will be processed, can be @var{first}
7416 or @var{all}. Default is @var{all}.
7417
7418 @item noise
7419 Set noise when doing divisions. Default is @var{0.0000001}. Useful when width
7420 and height are not same and not power of 2 or if stream prior to convolving
7421 had noise.
7422 @end table
7423
7424 The @code{deconvolve} filter also supports the @ref{framesync} options.
7425
7426 @section deflate
7427
7428 Apply deflate effect to the video.
7429
7430 This filter replaces the pixel by the local(3x3) average by taking into account
7431 only values lower than the pixel.
7432
7433 It accepts the following options:
7434
7435 @table @option
7436 @item threshold0
7437 @item threshold1
7438 @item threshold2
7439 @item threshold3
7440 Limit the maximum change for each plane, default is 65535.
7441 If 0, plane will remain unchanged.
7442 @end table
7443
7444 @section deflicker
7445
7446 Remove temporal frame luminance variations.
7447
7448 It accepts the following options:
7449
7450 @table @option
7451 @item size, s
7452 Set moving-average filter size in frames. Default is 5. Allowed range is 2 - 129.
7453
7454 @item mode, m
7455 Set averaging mode to smooth temporal luminance variations.
7456
7457 Available values are:
7458 @table @samp
7459 @item am
7460 Arithmetic mean
7461
7462 @item gm
7463 Geometric mean
7464
7465 @item hm
7466 Harmonic mean
7467
7468 @item qm
7469 Quadratic mean
7470
7471 @item cm
7472 Cubic mean
7473
7474 @item pm
7475 Power mean
7476
7477 @item median
7478 Median
7479 @end table
7480
7481 @item bypass
7482 Do not actually modify frame. Useful when one only wants metadata.
7483 @end table
7484
7485 @section dejudder
7486
7487 Remove judder produced by partially interlaced telecined content.
7488
7489 Judder can be introduced, for instance, by @ref{pullup} filter. If the original
7490 source was partially telecined content then the output of @code{pullup,dejudder}
7491 will have a variable frame rate. May change the recorded frame rate of the
7492 container. Aside from that change, this filter will not affect constant frame
7493 rate video.
7494
7495 The option available in this filter is:
7496 @table @option
7497
7498 @item cycle
7499 Specify the length of the window over which the judder repeats.
7500
7501 Accepts any integer greater than 1. Useful values are:
7502 @table @samp
7503
7504 @item 4
7505 If the original was telecined from 24 to 30 fps (Film to NTSC).
7506
7507 @item 5
7508 If the original was telecined from 25 to 30 fps (PAL to NTSC).
7509
7510 @item 20
7511 If a mixture of the two.
7512 @end table
7513
7514 The default is @samp{4}.
7515 @end table
7516
7517 @section delogo
7518
7519 Suppress a TV station logo by a simple interpolation of the surrounding
7520 pixels. Just set a rectangle covering the logo and watch it disappear
7521 (and sometimes something even uglier appear - your mileage may vary).
7522
7523 It accepts the following parameters:
7524 @table @option
7525
7526 @item x
7527 @item y
7528 Specify the top left corner coordinates of the logo. They must be
7529 specified.
7530
7531 @item w
7532 @item h
7533 Specify the width and height of the logo to clear. They must be
7534 specified.
7535
7536 @item band, t
7537 Specify the thickness of the fuzzy edge of the rectangle (added to
7538 @var{w} and @var{h}). The default value is 1. This option is
7539 deprecated, setting higher values should no longer be necessary and
7540 is not recommended.
7541
7542 @item show
7543 When set to 1, a green rectangle is drawn on the screen to simplify
7544 finding the right @var{x}, @var{y}, @var{w}, and @var{h} parameters.
7545 The default value is 0.
7546
7547 The rectangle is drawn on the outermost pixels which will be (partly)
7548 replaced with interpolated values. The values of the next pixels
7549 immediately outside this rectangle in each direction will be used to
7550 compute the interpolated pixel values inside the rectangle.
7551
7552 @end table
7553
7554 @subsection Examples
7555
7556 @itemize
7557 @item
7558 Set a rectangle covering the area with top left corner coordinates 0,0
7559 and size 100x77, and a band of size 10:
7560 @example
7561 delogo=x=0:y=0:w=100:h=77:band=10
7562 @end example
7563
7564 @end itemize
7565
7566 @section deshake
7567
7568 Attempt to fix small changes in horizontal and/or vertical shift. This
7569 filter helps remove camera shake from hand-holding a camera, bumping a
7570 tripod, moving on a vehicle, etc.
7571
7572 The filter accepts the following options:
7573
7574 @table @option
7575
7576 @item x
7577 @item y
7578 @item w
7579 @item h
7580 Specify a rectangular area where to limit the search for motion
7581 vectors.
7582 If desired the search for motion vectors can be limited to a
7583 rectangular area of the frame defined by its top left corner, width
7584 and height. These parameters have the same meaning as the drawbox
7585 filter which can be used to visualise the position of the bounding
7586 box.
7587
7588 This is useful when simultaneous movement of subjects within the frame
7589 might be confused for camera motion by the motion vector search.
7590
7591 If any or all of @var{x}, @var{y}, @var{w} and @var{h} are set to -1
7592 then the full frame is used. This allows later options to be set
7593 without specifying the bounding box for the motion vector search.
7594
7595 Default - search the whole frame.
7596
7597 @item rx
7598 @item ry
7599 Specify the maximum extent of movement in x and y directions in the
7600 range 0-64 pixels. Default 16.
7601
7602 @item edge
7603 Specify how to generate pixels to fill blanks at the edge of the
7604 frame. Available values are:
7605 @table @samp
7606 @item blank, 0
7607 Fill zeroes at blank locations
7608 @item original, 1
7609 Original image at blank locations
7610 @item clamp, 2
7611 Extruded edge value at blank locations
7612 @item mirror, 3
7613 Mirrored edge at blank locations
7614 @end table
7615 Default value is @samp{mirror}.
7616
7617 @item blocksize
7618 Specify the blocksize to use for motion search. Range 4-128 pixels,
7619 default 8.
7620
7621 @item contrast
7622 Specify the contrast threshold for blocks. Only blocks with more than
7623 the specified contrast (difference between darkest and lightest
7624 pixels) will be considered. Range 1-255, default 125.
7625
7626 @item search
7627 Specify the search strategy. Available values are:
7628 @table @samp
7629 @item exhaustive, 0
7630 Set exhaustive search
7631 @item less, 1
7632 Set less exhaustive search.
7633 @end table
7634 Default value is @samp{exhaustive}.
7635
7636 @item filename
7637 If set then a detailed log of the motion search is written to the
7638 specified file.
7639
7640 @end table
7641
7642 @section despill
7643
7644 Remove unwanted contamination of foreground colors, caused by reflected color of
7645 greenscreen or bluescreen.
7646
7647 This filter accepts the following options:
7648
7649 @table @option
7650 @item type
7651 Set what type of despill to use.
7652
7653 @item mix
7654 Set how spillmap will be generated.
7655
7656 @item expand
7657 Set how much to get rid of still remaining spill.
7658
7659 @item red
7660 Controls amount of red in spill area.
7661
7662 @item green
7663 Controls amount of green in spill area.
7664 Should be -1 for greenscreen.
7665
7666 @item blue
7667 Controls amount of blue in spill area.
7668 Should be -1 for bluescreen.
7669
7670 @item brightness
7671 Controls brightness of spill area, preserving colors.
7672
7673 @item alpha
7674 Modify alpha from generated spillmap.
7675 @end table
7676
7677 @section detelecine
7678
7679 Apply an exact inverse of the telecine operation. It requires a predefined
7680 pattern specified using the pattern option which must be the same as that passed
7681 to the telecine filter.
7682
7683 This filter accepts the following options:
7684
7685 @table @option
7686 @item first_field
7687 @table @samp
7688 @item top, t
7689 top field first
7690 @item bottom, b
7691 bottom field first
7692 The default value is @code{top}.
7693 @end table
7694
7695 @item pattern
7696 A string of numbers representing the pulldown pattern you wish to apply.
7697 The default value is @code{23}.
7698
7699 @item start_frame
7700 A number representing position of the first frame with respect to the telecine
7701 pattern. This is to be used if the stream is cut. The default value is @code{0}.
7702 @end table
7703
7704 @section dilation
7705
7706 Apply dilation effect to the video.
7707
7708 This filter replaces the pixel by the local(3x3) maximum.
7709
7710 It accepts the following options:
7711
7712 @table @option
7713 @item threshold0
7714 @item threshold1
7715 @item threshold2
7716 @item threshold3
7717 Limit the maximum change for each plane, default is 65535.
7718 If 0, plane will remain unchanged.
7719
7720 @item coordinates
7721 Flag which specifies the pixel to refer to. Default is 255 i.e. all eight
7722 pixels are used.
7723
7724 Flags to local 3x3 coordinates maps like this:
7725
7726     1 2 3
7727     4   5
7728     6 7 8
7729 @end table
7730
7731 @section displace
7732
7733 Displace pixels as indicated by second and third input stream.
7734
7735 It takes three input streams and outputs one stream, the first input is the
7736 source, and second and third input are displacement maps.
7737
7738 The second input specifies how much to displace pixels along the
7739 x-axis, while the third input specifies how much to displace pixels
7740 along the y-axis.
7741 If one of displacement map streams terminates, last frame from that
7742 displacement map will be used.
7743
7744 Note that once generated, displacements maps can be reused over and over again.
7745
7746 A description of the accepted options follows.
7747
7748 @table @option
7749 @item edge
7750 Set displace behavior for pixels that are out of range.
7751
7752 Available values are:
7753 @table @samp
7754 @item blank
7755 Missing pixels are replaced by black pixels.
7756
7757 @item smear
7758 Adjacent pixels will spread out to replace missing pixels.
7759
7760 @item wrap
7761 Out of range pixels are wrapped so they point to pixels of other side.
7762
7763 @item mirror
7764 Out of range pixels will be replaced with mirrored pixels.
7765 @end table
7766 Default is @samp{smear}.
7767
7768 @end table
7769
7770 @subsection Examples
7771
7772 @itemize
7773 @item
7774 Add ripple effect to rgb input of video size hd720:
7775 @example
7776 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
7777 @end example
7778
7779 @item
7780 Add wave effect to rgb input of video size hd720:
7781 @example
7782 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
7783 @end example
7784 @end itemize
7785
7786 @section drawbox
7787
7788 Draw a colored box on the input image.
7789
7790 It accepts the following parameters:
7791
7792 @table @option
7793 @item x
7794 @item y
7795 The expressions which specify the top left corner coordinates of the box. It defaults to 0.
7796
7797 @item width, w
7798 @item height, h
7799 The expressions which specify the width and height of the box; if 0 they are interpreted as
7800 the input width and height. It defaults to 0.
7801
7802 @item color, c
7803 Specify the color of the box to write. For the general syntax of this option,
7804 check the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}. If the special
7805 value @code{invert} is used, the box edge color is the same as the
7806 video with inverted luma.
7807
7808 @item thickness, t
7809 The expression which sets the thickness of the box edge.
7810 A value of @code{fill} will create a filled box. Default value is @code{3}.
7811
7812 See below for the list of accepted constants.
7813
7814 @item replace
7815 Applicable if the input has alpha. With value @code{1}, the pixels of the painted box
7816 will overwrite the video's color and alpha pixels.
7817 Default is @code{0}, which composites the box onto the input, leaving the video's alpha intact.
7818 @end table
7819
7820 The parameters for @var{x}, @var{y}, @var{w} and @var{h} and @var{t} are expressions containing the
7821 following constants:
7822
7823 @table @option
7824 @item dar
7825 The input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}.
7826
7827 @item hsub
7828 @item vsub
7829 horizontal and vertical chroma subsample values. For example for the
7830 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
7831
7832 @item in_h, ih
7833 @item in_w, iw
7834 The input width and height.
7835
7836 @item sar
7837 The input sample aspect ratio.
7838
7839 @item x
7840 @item y
7841 The x and y offset coordinates where the box is drawn.
7842
7843 @item w
7844 @item h
7845 The width and height of the drawn box.
7846
7847 @item t
7848 The thickness of the drawn box.
7849
7850 These constants allow the @var{x}, @var{y}, @var{w}, @var{h} and @var{t} expressions to refer to
7851 each other, so you may for example specify @code{y=x/dar} or @code{h=w/dar}.
7852
7853 @end table
7854
7855 @subsection Examples
7856
7857 @itemize
7858 @item
7859 Draw a black box around the edge of the input image:
7860 @example
7861 drawbox
7862 @end example
7863
7864 @item
7865 Draw a box with color red and an opacity of 50%:
7866 @example
7867 drawbox=10:20:200:60:red@@0.5
7868 @end example
7869
7870 The previous example can be specified as:
7871 @example
7872 drawbox=x=10:y=20:w=200:h=60:color=red@@0.5
7873 @end example
7874
7875 @item
7876 Fill the box with pink color:
7877 @example
7878 drawbox=x=10:y=10:w=100:h=100:color=pink@@0.5:t=fill
7879 @end example
7880
7881 @item
7882 Draw a 2-pixel red 2.40:1 mask:
7883 @example
7884 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
7885 @end example
7886 @end itemize
7887
7888 @section drawgrid
7889
7890 Draw a grid on the input image.
7891
7892 It accepts the following parameters:
7893
7894 @table @option
7895 @item x
7896 @item y
7897 The expressions which specify the coordinates of some point of grid intersection (meant to configure offset). Both default to 0.
7898
7899 @item width, w
7900 @item height, h
7901 The expressions which specify the width and height of the grid cell, if 0 they are interpreted as the
7902 input width and height, respectively, minus @code{thickness}, so image gets
7903 framed. Default to 0.
7904
7905 @item color, c
7906 Specify the color of the grid. For the general syntax of this option,
7907 check the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}. If the special
7908 value @code{invert} is used, the grid color is the same as the
7909 video with inverted luma.
7910
7911 @item thickness, t
7912 The expression which sets the thickness of the grid line. Default value is @code{1}.
7913
7914 See below for the list of accepted constants.
7915
7916 @item replace
7917 Applicable if the input has alpha. With @code{1} the pixels of the painted grid
7918 will overwrite the video's color and alpha pixels.
7919 Default is @code{0}, which composites the grid onto the input, leaving the video's alpha intact.
7920 @end table
7921
7922 The parameters for @var{x}, @var{y}, @var{w} and @var{h} and @var{t} are expressions containing the
7923 following constants:
7924
7925 @table @option
7926 @item dar
7927 The input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}.
7928
7929 @item hsub
7930 @item vsub
7931 horizontal and vertical chroma subsample values. For example for the
7932 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
7933
7934 @item in_h, ih
7935 @item in_w, iw
7936 The input grid cell width and height.
7937
7938 @item sar
7939 The input sample aspect ratio.
7940
7941 @item x
7942 @item y
7943 The x and y coordinates of some point of grid intersection (meant to configure offset).
7944
7945 @item w
7946 @item h
7947 The width and height of the drawn cell.
7948
7949 @item t
7950 The thickness of the drawn cell.
7951
7952 These constants allow the @var{x}, @var{y}, @var{w}, @var{h} and @var{t} expressions to refer to
7953 each other, so you may for example specify @code{y=x/dar} or @code{h=w/dar}.
7954
7955 @end table
7956
7957 @subsection Examples
7958
7959 @itemize
7960 @item
7961 Draw a grid with cell 100x100 pixels, thickness 2 pixels, with color red and an opacity of 50%:
7962 @example
7963 drawgrid=width=100:height=100:thickness=2:color=red@@0.5
7964 @end example
7965
7966 @item
7967 Draw a white 3x3 grid with an opacity of 50%:
7968 @example
7969 drawgrid=w=iw/3:h=ih/3:t=2:c=white@@0.5
7970 @end example
7971 @end itemize
7972
7973 @anchor{drawtext}
7974 @section drawtext
7975
7976 Draw a text string or text from a specified file on top of a video, using the
7977 libfreetype library.
7978
7979 To enable compilation of this filter, you need to configure FFmpeg with
7980 @code{--enable-libfreetype}.
7981 To enable default font fallback and the @var{font} option you need to
7982 configure FFmpeg with @code{--enable-libfontconfig}.
7983 To enable the @var{text_shaping} option, you need to configure FFmpeg with
7984 @code{--enable-libfribidi}.
7985
7986 @subsection Syntax
7987
7988 It accepts the following parameters:
7989
7990 @table @option
7991
7992 @item box
7993 Used to draw a box around text using the background color.
7994 The value must be either 1 (enable) or 0 (disable).
7995 The default value of @var{box} is 0.
7996
7997 @item boxborderw
7998 Set the width of the border to be drawn around the box using @var{boxcolor}.
7999 The default value of @var{boxborderw} is 0.
8000
8001 @item boxcolor
8002 The color to be used for drawing box around text. For the syntax of this
8003 option, check the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
8004
8005 The default value of @var{boxcolor} is "white".
8006
8007 @item line_spacing
8008 Set the line spacing in pixels of the border to be drawn around the box using @var{box}.
8009 The default value of @var{line_spacing} is 0.
8010
8011 @item borderw
8012 Set the width of the border to be drawn around the text using @var{bordercolor}.
8013 The default value of @var{borderw} is 0.
8014
8015 @item bordercolor
8016 Set the color to be used for drawing border around text. For the syntax of this
8017 option, check the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
8018
8019 The default value of @var{bordercolor} is "black".
8020
8021 @item expansion
8022 Select how the @var{text} is expanded. Can be either @code{none},
8023 @code{strftime} (deprecated) or
8024 @code{normal} (default). See the @ref{drawtext_expansion, Text expansion} section
8025 below for details.
8026
8027 @item basetime
8028 Set a start time for the count. Value is in microseconds. Only applied
8029 in the deprecated strftime expansion mode. To emulate in normal expansion
8030 mode use the @code{pts} function, supplying the start time (in seconds)
8031 as the second argument.
8032
8033 @item fix_bounds
8034 If true, check and fix text coords to avoid clipping.
8035
8036 @item fontcolor
8037 The color to be used for drawing fonts. For the syntax of this option, check
8038 the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
8039
8040 The default value of @var{fontcolor} is "black".
8041
8042 @item fontcolor_expr
8043 String which is expanded the same way as @var{text} to obtain dynamic
8044 @var{fontcolor} value. By default this option has empty value and is not
8045 processed. When this option is set, it overrides @var{fontcolor} option.
8046
8047 @item font
8048 The font family to be used for drawing text. By default Sans.
8049
8050 @item fontfile
8051 The font file to be used for drawing text. The path must be included.
8052 This parameter is mandatory if the fontconfig support is disabled.
8053
8054 @item alpha
8055 Draw the text applying alpha blending. The value can
8056 be a number between 0.0 and 1.0.
8057 The expression accepts the same variables @var{x, y} as well.
8058 The default value is 1.
8059 Please see @var{fontcolor_expr}.
8060
8061 @item fontsize
8062 The font size to be used for drawing text.
8063 The default value of @var{fontsize} is 16.
8064
8065 @item text_shaping
8066 If set to 1, attempt to shape the text (for example, reverse the order of
8067 right-to-left text and join Arabic characters) before drawing it.
8068 Otherwise, just draw the text exactly as given.
8069 By default 1 (if supported).
8070
8071 @item ft_load_flags
8072 The flags to be used for loading the fonts.
8073
8074 The flags map the corresponding flags supported by libfreetype, and are
8075 a combination of the following values:
8076 @table @var
8077 @item default
8078 @item no_scale
8079 @item no_hinting
8080 @item render
8081 @item no_bitmap
8082 @item vertical_layout
8083 @item force_autohint
8084 @item crop_bitmap
8085 @item pedantic
8086 @item ignore_global_advance_width
8087 @item no_recurse
8088 @item ignore_transform
8089 @item monochrome
8090 @item linear_design
8091 @item no_autohint
8092 @end table
8093
8094 Default value is "default".
8095
8096 For more information consult the documentation for the FT_LOAD_*
8097 libfreetype flags.
8098
8099 @item shadowcolor
8100 The color to be used for drawing a shadow behind the drawn text. For the
8101 syntax of this option, check the @ref{color syntax,,"Color" section in the
8102 ffmpeg-utils manual,ffmpeg-utils}.
8103
8104 The default value of @var{shadowcolor} is "black".
8105
8106 @item shadowx
8107 @item shadowy
8108 The x and y offsets for the text shadow position with respect to the
8109 position of the text. They can be either positive or negative
8110 values. The default value for both is "0".
8111
8112 @item start_number
8113 The starting frame number for the n/frame_num variable. The default value
8114 is "0".
8115
8116 @item tabsize
8117 The size in number of spaces to use for rendering the tab.
8118 Default value is 4.
8119
8120 @item timecode
8121 Set the initial timecode representation in "hh:mm:ss[:;.]ff"
8122 format. It can be used with or without text parameter. @var{timecode_rate}
8123 option must be specified.
8124
8125 @item timecode_rate, rate, r
8126 Set the timecode frame rate (timecode only). Value will be rounded to nearest
8127 integer. Minimum value is "1".
8128 Drop-frame timecode is supported for frame rates 30 & 60.
8129
8130 @item tc24hmax
8131 If set to 1, the output of the timecode option will wrap around at 24 hours.
8132 Default is 0 (disabled).
8133
8134 @item text
8135 The text string to be drawn. The text must be a sequence of UTF-8
8136 encoded characters.
8137 This parameter is mandatory if no file is specified with the parameter
8138 @var{textfile}.
8139
8140 @item textfile
8141 A text file containing text to be drawn. The text must be a sequence
8142 of UTF-8 encoded characters.
8143
8144 This parameter is mandatory if no text string is specified with the
8145 parameter @var{text}.
8146
8147 If both @var{text} and @var{textfile} are specified, an error is thrown.
8148
8149 @item reload
8150 If set to 1, the @var{textfile} will be reloaded before each frame.
8151 Be sure to update it atomically, or it may be read partially, or even fail.
8152
8153 @item x
8154 @item y
8155 The expressions which specify the offsets where text will be drawn
8156 within the video frame. They are relative to the top/left border of the
8157 output image.
8158
8159 The default value of @var{x} and @var{y} is "0".
8160
8161 See below for the list of accepted constants and functions.
8162 @end table
8163
8164 The parameters for @var{x} and @var{y} are expressions containing the
8165 following constants and functions:
8166
8167 @table @option
8168 @item dar
8169 input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}
8170
8171 @item hsub
8172 @item vsub
8173 horizontal and vertical chroma subsample values. For example for the
8174 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
8175
8176 @item line_h, lh
8177 the height of each text line
8178
8179 @item main_h, h, H
8180 the input height
8181
8182 @item main_w, w, W
8183 the input width
8184
8185 @item max_glyph_a, ascent
8186 the maximum distance from the baseline to the highest/upper grid
8187 coordinate used to place a glyph outline point, for all the rendered
8188 glyphs.
8189 It is a positive value, due to the grid's orientation with the Y axis
8190 upwards.
8191
8192 @item max_glyph_d, descent
8193 the maximum distance from the baseline to the lowest grid coordinate
8194 used to place a glyph outline point, for all the rendered glyphs.
8195 This is a negative value, due to the grid's orientation, with the Y axis
8196 upwards.
8197
8198 @item max_glyph_h
8199 maximum glyph height, that is the maximum height for all the glyphs
8200 contained in the rendered text, it is equivalent to @var{ascent} -
8201 @var{descent}.
8202
8203 @item max_glyph_w
8204 maximum glyph width, that is the maximum width for all the glyphs
8205 contained in the rendered text
8206
8207 @item n
8208 the number of input frame, starting from 0
8209
8210 @item rand(min, max)
8211 return a random number included between @var{min} and @var{max}
8212
8213 @item sar
8214 The input sample aspect ratio.
8215
8216 @item t
8217 timestamp expressed in seconds, NAN if the input timestamp is unknown
8218
8219 @item text_h, th
8220 the height of the rendered text
8221
8222 @item text_w, tw
8223 the width of the rendered text
8224
8225 @item x
8226 @item y
8227 the x and y offset coordinates where the text is drawn.
8228
8229 These parameters allow the @var{x} and @var{y} expressions to refer
8230 each other, so you can for example specify @code{y=x/dar}.
8231 @end table
8232
8233 @anchor{drawtext_expansion}
8234 @subsection Text expansion
8235
8236 If @option{expansion} is set to @code{strftime},
8237 the filter recognizes strftime() sequences in the provided text and
8238 expands them accordingly. Check the documentation of strftime(). This
8239 feature is deprecated.
8240
8241 If @option{expansion} is set to @code{none}, the text is printed verbatim.
8242
8243 If @option{expansion} is set to @code{normal} (which is the default),
8244 the following expansion mechanism is used.
8245
8246 The backslash character @samp{\}, followed by any character, always expands to
8247 the second character.
8248
8249 Sequences of the form @code{%@{...@}} are expanded. The text between the
8250 braces is a function name, possibly followed by arguments separated by ':'.
8251 If the arguments contain special characters or delimiters (':' or '@}'),
8252 they should be escaped.
8253
8254 Note that they probably must also be escaped as the value for the
8255 @option{text} option in the filter argument string and as the filter
8256 argument in the filtergraph description, and possibly also for the shell,
8257 that makes up to four levels of escaping; using a text file avoids these
8258 problems.
8259
8260 The following functions are available:
8261
8262 @table @command
8263
8264 @item expr, e
8265 The expression evaluation result.
8266
8267 It must take one argument specifying the expression to be evaluated,
8268 which accepts the same constants and functions as the @var{x} and
8269 @var{y} values. Note that not all constants should be used, for
8270 example the text size is not known when evaluating the expression, so
8271 the constants @var{text_w} and @var{text_h} will have an undefined
8272 value.
8273
8274 @item expr_int_format, eif
8275 Evaluate the expression's value and output as formatted integer.
8276
8277 The first argument is the expression to be evaluated, just as for the @var{expr} function.
8278 The second argument specifies the output format. Allowed values are @samp{x},
8279 @samp{X}, @samp{d} and @samp{u}. They are treated exactly as in the
8280 @code{printf} function.
8281 The third parameter is optional and sets the number of positions taken by the output.
8282 It can be used to add padding with zeros from the left.
8283
8284 @item gmtime
8285 The time at which the filter is running, expressed in UTC.
8286 It can accept an argument: a strftime() format string.
8287
8288 @item localtime
8289 The time at which the filter is running, expressed in the local time zone.
8290 It can accept an argument: a strftime() format string.
8291
8292 @item metadata
8293 Frame metadata. Takes one or two arguments.
8294
8295 The first argument is mandatory and specifies the metadata key.
8296
8297 The second argument is optional and specifies a default value, used when the
8298 metadata key is not found or empty.
8299
8300 @item n, frame_num
8301 The frame number, starting from 0.
8302
8303 @item pict_type
8304 A 1 character description of the current picture type.
8305
8306 @item pts
8307 The timestamp of the current frame.
8308 It can take up to three arguments.
8309
8310 The first argument is the format of the timestamp; it defaults to @code{flt}
8311 for seconds as a decimal number with microsecond accuracy; @code{hms} stands
8312 for a formatted @var{[-]HH:MM:SS.mmm} timestamp with millisecond accuracy.
8313 @code{gmtime} stands for the timestamp of the frame formatted as UTC time;
8314 @code{localtime} stands for the timestamp of the frame formatted as
8315 local time zone time.
8316
8317 The second argument is an offset added to the timestamp.
8318
8319 If the format is set to @code{hms}, a third argument @code{24HH} may be
8320 supplied to present the hour part of the formatted timestamp in 24h format
8321 (00-23).
8322
8323 If the format is set to @code{localtime} or @code{gmtime},
8324 a third argument may be supplied: a strftime() format string.
8325 By default, @var{YYYY-MM-DD HH:MM:SS} format will be used.
8326 @end table
8327
8328 @subsection Examples
8329
8330 @itemize
8331 @item
8332 Draw "Test Text" with font FreeSerif, using the default values for the
8333 optional parameters.
8334
8335 @example
8336 drawtext="fontfile=/usr/share/fonts/truetype/freefont/FreeSerif.ttf: text='Test Text'"
8337 @end example
8338
8339 @item
8340 Draw 'Test Text' with font FreeSerif of size 24 at position x=100
8341 and y=50 (counting from the top-left corner of the screen), text is
8342 yellow with a red box around it. Both the text and the box have an
8343 opacity of 20%.
8344
8345 @example
8346 drawtext="fontfile=/usr/share/fonts/truetype/freefont/FreeSerif.ttf: text='Test Text':\
8347           x=100: y=50: fontsize=24: fontcolor=yellow@@0.2: box=1: boxcolor=red@@0.2"
8348 @end example
8349
8350 Note that the double quotes are not necessary if spaces are not used
8351 within the parameter list.
8352
8353 @item
8354 Show the text at the center of the video frame:
8355 @example
8356 drawtext="fontsize=30:fontfile=FreeSerif.ttf:text='hello world':x=(w-text_w)/2:y=(h-text_h)/2"
8357 @end example
8358
8359 @item
8360 Show the text at a random position, switching to a new position every 30 seconds:
8361 @example
8362 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)"
8363 @end example
8364
8365 @item
8366 Show a text line sliding from right to left in the last row of the video
8367 frame. The file @file{LONG_LINE} is assumed to contain a single line
8368 with no newlines.
8369 @example
8370 drawtext="fontsize=15:fontfile=FreeSerif.ttf:text=LONG_LINE:y=h-line_h:x=-50*t"
8371 @end example
8372
8373 @item
8374 Show the content of file @file{CREDITS} off the bottom of the frame and scroll up.
8375 @example
8376 drawtext="fontsize=20:fontfile=FreeSerif.ttf:textfile=CREDITS:y=h-20*t"
8377 @end example
8378
8379 @item
8380 Draw a single green letter "g", at the center of the input video.
8381 The glyph baseline is placed at half screen height.
8382 @example
8383 drawtext="fontsize=60:fontfile=FreeSerif.ttf:fontcolor=green:text=g:x=(w-max_glyph_w)/2:y=h/2-ascent"
8384 @end example
8385
8386 @item
8387 Show text for 1 second every 3 seconds:
8388 @example
8389 drawtext="fontfile=FreeSerif.ttf:fontcolor=white:x=100:y=x/dar:enable=lt(mod(t\,3)\,1):text='blink'"
8390 @end example
8391
8392 @item
8393 Use fontconfig to set the font. Note that the colons need to be escaped.
8394 @example
8395 drawtext='fontfile=Linux Libertine O-40\:style=Semibold:text=FFmpeg'
8396 @end example
8397
8398 @item
8399 Print the date of a real-time encoding (see strftime(3)):
8400 @example
8401 drawtext='fontfile=FreeSans.ttf:text=%@{localtime\:%a %b %d %Y@}'
8402 @end example
8403
8404 @item
8405 Show text fading in and out (appearing/disappearing):
8406 @example
8407 #!/bin/sh
8408 DS=1.0 # display start
8409 DE=10.0 # display end
8410 FID=1.5 # fade in duration
8411 FOD=5 # fade out duration
8412 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 @}"
8413 @end example
8414
8415 @item
8416 Horizontally align multiple separate texts. Note that @option{max_glyph_a}
8417 and the @option{fontsize} value are included in the @option{y} offset.
8418 @example
8419 drawtext=fontfile=FreeSans.ttf:text=DOG:fontsize=24:x=10:y=20+24-max_glyph_a,
8420 drawtext=fontfile=FreeSans.ttf:text=cow:fontsize=24:x=80:y=20+24-max_glyph_a
8421 @end example
8422
8423 @end itemize
8424
8425 For more information about libfreetype, check:
8426 @url{http://www.freetype.org/}.
8427
8428 For more information about fontconfig, check:
8429 @url{http://freedesktop.org/software/fontconfig/fontconfig-user.html}.
8430
8431 For more information about libfribidi, check:
8432 @url{http://fribidi.org/}.
8433
8434 @section edgedetect
8435
8436 Detect and draw edges. The filter uses the Canny Edge Detection algorithm.
8437
8438 The filter accepts the following options:
8439
8440 @table @option
8441 @item low
8442 @item high
8443 Set low and high threshold values used by the Canny thresholding
8444 algorithm.
8445
8446 The high threshold selects the "strong" edge pixels, which are then
8447 connected through 8-connectivity with the "weak" edge pixels selected
8448 by the low threshold.
8449
8450 @var{low} and @var{high} threshold values must be chosen in the range
8451 [0,1], and @var{low} should be lesser or equal to @var{high}.
8452
8453 Default value for @var{low} is @code{20/255}, and default value for @var{high}
8454 is @code{50/255}.
8455
8456 @item mode
8457 Define the drawing mode.
8458
8459 @table @samp
8460 @item wires
8461 Draw white/gray wires on black background.
8462
8463 @item colormix
8464 Mix the colors to create a paint/cartoon effect.
8465
8466 @item canny
8467 Apply Canny edge detector on all selected planes.
8468 @end table
8469 Default value is @var{wires}.
8470
8471 @item planes
8472 Select planes for filtering. By default all available planes are filtered.
8473 @end table
8474
8475 @subsection Examples
8476
8477 @itemize
8478 @item
8479 Standard edge detection with custom values for the hysteresis thresholding:
8480 @example
8481 edgedetect=low=0.1:high=0.4
8482 @end example
8483
8484 @item
8485 Painting effect without thresholding:
8486 @example
8487 edgedetect=mode=colormix:high=0
8488 @end example
8489 @end itemize
8490
8491 @section eq
8492 Set brightness, contrast, saturation and approximate gamma adjustment.
8493
8494 The filter accepts the following options:
8495
8496 @table @option
8497 @item contrast
8498 Set the contrast expression. The value must be a float value in range
8499 @code{-2.0} to @code{2.0}. The default value is "1".
8500
8501 @item brightness
8502 Set the brightness expression. The value must be a float value in
8503 range @code{-1.0} to @code{1.0}. The default value is "0".
8504
8505 @item saturation
8506 Set the saturation expression. The value must be a float in
8507 range @code{0.0} to @code{3.0}. The default value is "1".
8508
8509 @item gamma
8510 Set the gamma expression. The value must be a float in range
8511 @code{0.1} to @code{10.0}.  The default value is "1".
8512
8513 @item gamma_r
8514 Set the gamma expression for red. The value must be a float in
8515 range @code{0.1} to @code{10.0}. The default value is "1".
8516
8517 @item gamma_g
8518 Set the gamma expression for green. The value must be a float in range
8519 @code{0.1} to @code{10.0}. The default value is "1".
8520
8521 @item gamma_b
8522 Set the gamma expression for blue. The value must be a float in range
8523 @code{0.1} to @code{10.0}. The default value is "1".
8524
8525 @item gamma_weight
8526 Set the gamma weight expression. It can be used to reduce the effect
8527 of a high gamma value on bright image areas, e.g. keep them from
8528 getting overamplified and just plain white. The value must be a float
8529 in range @code{0.0} to @code{1.0}. A value of @code{0.0} turns the
8530 gamma correction all the way down while @code{1.0} leaves it at its
8531 full strength. Default is "1".
8532
8533 @item eval
8534 Set when the expressions for brightness, contrast, saturation and
8535 gamma expressions are evaluated.
8536
8537 It accepts the following values:
8538 @table @samp
8539 @item init
8540 only evaluate expressions once during the filter initialization or
8541 when a command is processed
8542
8543 @item frame
8544 evaluate expressions for each incoming frame
8545 @end table
8546
8547 Default value is @samp{init}.
8548 @end table
8549
8550 The expressions accept the following parameters:
8551 @table @option
8552 @item n
8553 frame count of the input frame starting from 0
8554
8555 @item pos
8556 byte position of the corresponding packet in the input file, NAN if
8557 unspecified
8558
8559 @item r
8560 frame rate of the input video, NAN if the input frame rate is unknown
8561
8562 @item t
8563 timestamp expressed in seconds, NAN if the input timestamp is unknown
8564 @end table
8565
8566 @subsection Commands
8567 The filter supports the following commands:
8568
8569 @table @option
8570 @item contrast
8571 Set the contrast expression.
8572
8573 @item brightness
8574 Set the brightness expression.
8575
8576 @item saturation
8577 Set the saturation expression.
8578
8579 @item gamma
8580 Set the gamma expression.
8581
8582 @item gamma_r
8583 Set the gamma_r expression.
8584
8585 @item gamma_g
8586 Set gamma_g expression.
8587
8588 @item gamma_b
8589 Set gamma_b expression.
8590
8591 @item gamma_weight
8592 Set gamma_weight expression.
8593
8594 The command accepts the same syntax of the corresponding option.
8595
8596 If the specified expression is not valid, it is kept at its current
8597 value.
8598
8599 @end table
8600
8601 @section erosion
8602
8603 Apply erosion effect to the video.
8604
8605 This filter replaces the pixel by the local(3x3) minimum.
8606
8607 It accepts the following options:
8608
8609 @table @option
8610 @item threshold0
8611 @item threshold1
8612 @item threshold2
8613 @item threshold3
8614 Limit the maximum change for each plane, default is 65535.
8615 If 0, plane will remain unchanged.
8616
8617 @item coordinates
8618 Flag which specifies the pixel to refer to. Default is 255 i.e. all eight
8619 pixels are used.
8620
8621 Flags to local 3x3 coordinates maps like this:
8622
8623     1 2 3
8624     4   5
8625     6 7 8
8626 @end table
8627
8628 @section extractplanes
8629
8630 Extract color channel components from input video stream into
8631 separate grayscale video streams.
8632
8633 The filter accepts the following option:
8634
8635 @table @option
8636 @item planes
8637 Set plane(s) to extract.
8638
8639 Available values for planes are:
8640 @table @samp
8641 @item y
8642 @item u
8643 @item v
8644 @item a
8645 @item r
8646 @item g
8647 @item b
8648 @end table
8649
8650 Choosing planes not available in the input will result in an error.
8651 That means you cannot select @code{r}, @code{g}, @code{b} planes
8652 with @code{y}, @code{u}, @code{v} planes at same time.
8653 @end table
8654
8655 @subsection Examples
8656
8657 @itemize
8658 @item
8659 Extract luma, u and v color channel component from input video frame
8660 into 3 grayscale outputs:
8661 @example
8662 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
8663 @end example
8664 @end itemize
8665
8666 @section elbg
8667
8668 Apply a posterize effect using the ELBG (Enhanced LBG) algorithm.
8669
8670 For each input image, the filter will compute the optimal mapping from
8671 the input to the output given the codebook length, that is the number
8672 of distinct output colors.
8673
8674 This filter accepts the following options.
8675
8676 @table @option
8677 @item codebook_length, l
8678 Set codebook length. The value must be a positive integer, and
8679 represents the number of distinct output colors. Default value is 256.
8680
8681 @item nb_steps, n
8682 Set the maximum number of iterations to apply for computing the optimal
8683 mapping. The higher the value the better the result and the higher the
8684 computation time. Default value is 1.
8685
8686 @item seed, s
8687 Set a random seed, must be an integer included between 0 and
8688 UINT32_MAX. If not specified, or if explicitly set to -1, the filter
8689 will try to use a good random seed on a best effort basis.
8690
8691 @item pal8
8692 Set pal8 output pixel format. This option does not work with codebook
8693 length greater than 256.
8694 @end table
8695
8696 @section entropy
8697
8698 Measure graylevel entropy in histogram of color channels of video frames.
8699
8700 It accepts the following parameters:
8701
8702 @table @option
8703 @item mode
8704 Can be either @var{normal} or @var{diff}. Default is @var{normal}.
8705
8706 @var{diff} mode measures entropy of histogram delta values, absolute differences
8707 between neighbour histogram values.
8708 @end table
8709
8710 @section fade
8711
8712 Apply a fade-in/out effect to the input video.
8713
8714 It accepts the following parameters:
8715
8716 @table @option
8717 @item type, t
8718 The effect type can be either "in" for a fade-in, or "out" for a fade-out
8719 effect.
8720 Default is @code{in}.
8721
8722 @item start_frame, s
8723 Specify the number of the frame to start applying the fade
8724 effect at. Default is 0.
8725
8726 @item nb_frames, n
8727 The number of frames that the fade effect lasts. At the end of the
8728 fade-in effect, the output video will have the same intensity as the input video.
8729 At the end of the fade-out transition, the output video will be filled with the
8730 selected @option{color}.
8731 Default is 25.
8732
8733 @item alpha
8734 If set to 1, fade only alpha channel, if one exists on the input.
8735 Default value is 0.
8736
8737 @item start_time, st
8738 Specify the timestamp (in seconds) of the frame to start to apply the fade
8739 effect. If both start_frame and start_time are specified, the fade will start at
8740 whichever comes last.  Default is 0.
8741
8742 @item duration, d
8743 The number of seconds for which the fade effect has to last. At the end of the
8744 fade-in effect the output video will have the same intensity as the input video,
8745 at the end of the fade-out transition the output video will be filled with the
8746 selected @option{color}.
8747 If both duration and nb_frames are specified, duration is used. Default is 0
8748 (nb_frames is used by default).
8749
8750 @item color, c
8751 Specify the color of the fade. Default is "black".
8752 @end table
8753
8754 @subsection Examples
8755
8756 @itemize
8757 @item
8758 Fade in the first 30 frames of video:
8759 @example
8760 fade=in:0:30
8761 @end example
8762
8763 The command above is equivalent to:
8764 @example
8765 fade=t=in:s=0:n=30
8766 @end example
8767
8768 @item
8769 Fade out the last 45 frames of a 200-frame video:
8770 @example
8771 fade=out:155:45
8772 fade=type=out:start_frame=155:nb_frames=45
8773 @end example
8774
8775 @item
8776 Fade in the first 25 frames and fade out the last 25 frames of a 1000-frame video:
8777 @example
8778 fade=in:0:25, fade=out:975:25
8779 @end example
8780
8781 @item
8782 Make the first 5 frames yellow, then fade in from frame 5-24:
8783 @example
8784 fade=in:5:20:color=yellow
8785 @end example
8786
8787 @item
8788 Fade in alpha over first 25 frames of video:
8789 @example
8790 fade=in:0:25:alpha=1
8791 @end example
8792
8793 @item
8794 Make the first 5.5 seconds black, then fade in for 0.5 seconds:
8795 @example
8796 fade=t=in:st=5.5:d=0.5
8797 @end example
8798
8799 @end itemize
8800
8801 @section fftfilt
8802 Apply arbitrary expressions to samples in frequency domain
8803
8804 @table @option
8805 @item dc_Y
8806 Adjust the dc value (gain) of the luma plane of the image. The filter
8807 accepts an integer value in range @code{0} to @code{1000}. The default
8808 value is set to @code{0}.
8809
8810 @item dc_U
8811 Adjust the dc value (gain) of the 1st chroma plane of the image. The
8812 filter accepts an integer value in range @code{0} to @code{1000}. The
8813 default value is set to @code{0}.
8814
8815 @item dc_V
8816 Adjust the dc value (gain) of the 2nd chroma plane of the image. The
8817 filter accepts an integer value in range @code{0} to @code{1000}. The
8818 default value is set to @code{0}.
8819
8820 @item weight_Y
8821 Set the frequency domain weight expression for the luma plane.
8822
8823 @item weight_U
8824 Set the frequency domain weight expression for the 1st chroma plane.
8825
8826 @item weight_V
8827 Set the frequency domain weight expression for the 2nd chroma plane.
8828
8829 @item eval
8830 Set when the expressions are evaluated.
8831
8832 It accepts the following values:
8833 @table @samp
8834 @item init
8835 Only evaluate expressions once during the filter initialization.
8836
8837 @item frame
8838 Evaluate expressions for each incoming frame.
8839 @end table
8840
8841 Default value is @samp{init}.
8842
8843 The filter accepts the following variables:
8844 @item X
8845 @item Y
8846 The coordinates of the current sample.
8847
8848 @item W
8849 @item H
8850 The width and height of the image.
8851
8852 @item N
8853 The number of input frame, starting from 0.
8854 @end table
8855
8856 @subsection Examples
8857
8858 @itemize
8859 @item
8860 High-pass:
8861 @example
8862 fftfilt=dc_Y=128:weight_Y='squish(1-(Y+X)/100)'
8863 @end example
8864
8865 @item
8866 Low-pass:
8867 @example
8868 fftfilt=dc_Y=0:weight_Y='squish((Y+X)/100-1)'
8869 @end example
8870
8871 @item
8872 Sharpen:
8873 @example
8874 fftfilt=dc_Y=0:weight_Y='1+squish(1-(Y+X)/100)'
8875 @end example
8876
8877 @item
8878 Blur:
8879 @example
8880 fftfilt=dc_Y=0:weight_Y='exp(-4 * ((Y+X)/(W+H)))'
8881 @end example
8882
8883 @end itemize
8884
8885 @section fftdnoiz
8886 Denoise frames using 3D FFT (frequency domain filtering).
8887
8888 The filter accepts the following options:
8889
8890 @table @option
8891 @item sigma
8892 Set the noise sigma constant. This sets denoising strength.
8893 Default value is 1. Allowed range is from 0 to 30.
8894 Using very high sigma with low overlap may give blocking artifacts.
8895
8896 @item amount
8897 Set amount of denoising. By default all detected noise is reduced.
8898 Default value is 1. Allowed range is from 0 to 1.
8899
8900 @item block
8901 Set size of block, Default is 4, can be 3, 4, 5 or 6.
8902 Actual size of block in pixels is 2 to power of @var{block}, so by default
8903 block size in pixels is 2^4 which is 16.
8904
8905 @item overlap
8906 Set block overlap. Default is 0.5. Allowed range is from 0.2 to 0.8.
8907
8908 @item prev
8909 Set number of previous frames to use for denoising. By default is set to 0.
8910
8911 @item next
8912 Set number of next frames to to use for denoising. By default is set to 0.
8913
8914 @item planes
8915 Set planes which will be filtered, by default are all available filtered
8916 except alpha.
8917 @end table
8918
8919 @section field
8920
8921 Extract a single field from an interlaced image using stride
8922 arithmetic to avoid wasting CPU time. The output frames are marked as
8923 non-interlaced.
8924
8925 The filter accepts the following options:
8926
8927 @table @option
8928 @item type
8929 Specify whether to extract the top (if the value is @code{0} or
8930 @code{top}) or the bottom field (if the value is @code{1} or
8931 @code{bottom}).
8932 @end table
8933
8934 @section fieldhint
8935
8936 Create new frames by copying the top and bottom fields from surrounding frames
8937 supplied as numbers by the hint file.
8938
8939 @table @option
8940 @item hint
8941 Set file containing hints: absolute/relative frame numbers.
8942
8943 There must be one line for each frame in a clip. Each line must contain two
8944 numbers separated by the comma, optionally followed by @code{-} or @code{+}.
8945 Numbers supplied on each line of file can not be out of [N-1,N+1] where N
8946 is current frame number for @code{absolute} mode or out of [-1, 1] range
8947 for @code{relative} mode. First number tells from which frame to pick up top
8948 field and second number tells from which frame to pick up bottom field.
8949
8950 If optionally followed by @code{+} output frame will be marked as interlaced,
8951 else if followed by @code{-} output frame will be marked as progressive, else
8952 it will be marked same as input frame.
8953 If line starts with @code{#} or @code{;} that line is skipped.
8954
8955 @item mode
8956 Can be item @code{absolute} or @code{relative}. Default is @code{absolute}.
8957 @end table
8958
8959 Example of first several lines of @code{hint} file for @code{relative} mode:
8960 @example
8961 0,0 - # first frame
8962 1,0 - # second frame, use third's frame top field and second's frame bottom field
8963 1,0 - # third frame, use fourth's frame top field and third's frame bottom field
8964 1,0 -
8965 0,0 -
8966 0,0 -
8967 1,0 -
8968 1,0 -
8969 1,0 -
8970 0,0 -
8971 0,0 -
8972 1,0 -
8973 1,0 -
8974 1,0 -
8975 0,0 -
8976 @end example
8977
8978 @section fieldmatch
8979
8980 Field matching filter for inverse telecine. It is meant to reconstruct the
8981 progressive frames from a telecined stream. The filter does not drop duplicated
8982 frames, so to achieve a complete inverse telecine @code{fieldmatch} needs to be
8983 followed by a decimation filter such as @ref{decimate} in the filtergraph.
8984
8985 The separation of the field matching and the decimation is notably motivated by
8986 the possibility of inserting a de-interlacing filter fallback between the two.
8987 If the source has mixed telecined and real interlaced content,
8988 @code{fieldmatch} will not be able to match fields for the interlaced parts.
8989 But these remaining combed frames will be marked as interlaced, and thus can be
8990 de-interlaced by a later filter such as @ref{yadif} before decimation.
8991
8992 In addition to the various configuration options, @code{fieldmatch} can take an
8993 optional second stream, activated through the @option{ppsrc} option. If
8994 enabled, the frames reconstruction will be based on the fields and frames from
8995 this second stream. This allows the first input to be pre-processed in order to
8996 help the various algorithms of the filter, while keeping the output lossless
8997 (assuming the fields are matched properly). Typically, a field-aware denoiser,
8998 or brightness/contrast adjustments can help.
8999
9000 Note that this filter uses the same algorithms as TIVTC/TFM (AviSynth project)
9001 and VIVTC/VFM (VapourSynth project). The later is a light clone of TFM from
9002 which @code{fieldmatch} is based on. While the semantic and usage are very
9003 close, some behaviour and options names can differ.
9004
9005 The @ref{decimate} filter currently only works for constant frame rate input.
9006 If your input has mixed telecined (30fps) and progressive content with a lower
9007 framerate like 24fps use the following filterchain to produce the necessary cfr
9008 stream: @code{dejudder,fps=30000/1001,fieldmatch,decimate}.
9009
9010 The filter accepts the following options:
9011
9012 @table @option
9013 @item order
9014 Specify the assumed field order of the input stream. Available values are:
9015
9016 @table @samp
9017 @item auto
9018 Auto detect parity (use FFmpeg's internal parity value).
9019 @item bff
9020 Assume bottom field first.
9021 @item tff
9022 Assume top field first.
9023 @end table
9024
9025 Note that it is sometimes recommended not to trust the parity announced by the
9026 stream.
9027
9028 Default value is @var{auto}.
9029
9030 @item mode
9031 Set the matching mode or strategy to use. @option{pc} mode is the safest in the
9032 sense that it won't risk creating jerkiness due to duplicate frames when
9033 possible, but if there are bad edits or blended fields it will end up
9034 outputting combed frames when a good match might actually exist. On the other
9035 hand, @option{pcn_ub} mode is the most risky in terms of creating jerkiness,
9036 but will almost always find a good frame if there is one. The other values are
9037 all somewhere in between @option{pc} and @option{pcn_ub} in terms of risking
9038 jerkiness and creating duplicate frames versus finding good matches in sections
9039 with bad edits, orphaned fields, blended fields, etc.
9040
9041 More details about p/c/n/u/b are available in @ref{p/c/n/u/b meaning} section.
9042
9043 Available values are:
9044
9045 @table @samp
9046 @item pc
9047 2-way matching (p/c)
9048 @item pc_n
9049 2-way matching, and trying 3rd match if still combed (p/c + n)
9050 @item pc_u
9051 2-way matching, and trying 3rd match (same order) if still combed (p/c + u)
9052 @item pc_n_ub
9053 2-way matching, trying 3rd match if still combed, and trying 4th/5th matches if
9054 still combed (p/c + n + u/b)
9055 @item pcn
9056 3-way matching (p/c/n)
9057 @item pcn_ub
9058 3-way matching, and trying 4th/5th matches if all 3 of the original matches are
9059 detected as combed (p/c/n + u/b)
9060 @end table
9061
9062 The parenthesis at the end indicate the matches that would be used for that
9063 mode assuming @option{order}=@var{tff} (and @option{field} on @var{auto} or
9064 @var{top}).
9065
9066 In terms of speed @option{pc} mode is by far the fastest and @option{pcn_ub} is
9067 the slowest.
9068
9069 Default value is @var{pc_n}.
9070
9071 @item ppsrc
9072 Mark the main input stream as a pre-processed input, and enable the secondary
9073 input stream as the clean source to pick the fields from. See the filter
9074 introduction for more details. It is similar to the @option{clip2} feature from
9075 VFM/TFM.
9076
9077 Default value is @code{0} (disabled).
9078
9079 @item field
9080 Set the field to match from. It is recommended to set this to the same value as
9081 @option{order} unless you experience matching failures with that setting. In
9082 certain circumstances changing the field that is used to match from can have a
9083 large impact on matching performance. Available values are:
9084
9085 @table @samp
9086 @item auto
9087 Automatic (same value as @option{order}).
9088 @item bottom
9089 Match from the bottom field.
9090 @item top
9091 Match from the top field.
9092 @end table
9093
9094 Default value is @var{auto}.
9095
9096 @item mchroma
9097 Set whether or not chroma is included during the match comparisons. In most
9098 cases it is recommended to leave this enabled. You should set this to @code{0}
9099 only if your clip has bad chroma problems such as heavy rainbowing or other
9100 artifacts. Setting this to @code{0} could also be used to speed things up at
9101 the cost of some accuracy.
9102
9103 Default value is @code{1}.
9104
9105 @item y0
9106 @item y1
9107 These define an exclusion band which excludes the lines between @option{y0} and
9108 @option{y1} from being included in the field matching decision. An exclusion
9109 band can be used to ignore subtitles, a logo, or other things that may
9110 interfere with the matching. @option{y0} sets the starting scan line and
9111 @option{y1} sets the ending line; all lines in between @option{y0} and
9112 @option{y1} (including @option{y0} and @option{y1}) will be ignored. Setting
9113 @option{y0} and @option{y1} to the same value will disable the feature.
9114 @option{y0} and @option{y1} defaults to @code{0}.
9115
9116 @item scthresh
9117 Set the scene change detection threshold as a percentage of maximum change on
9118 the luma plane. Good values are in the @code{[8.0, 14.0]} range. Scene change
9119 detection is only relevant in case @option{combmatch}=@var{sc}.  The range for
9120 @option{scthresh} is @code{[0.0, 100.0]}.
9121
9122 Default value is @code{12.0}.
9123
9124 @item combmatch
9125 When @option{combatch} is not @var{none}, @code{fieldmatch} will take into
9126 account the combed scores of matches when deciding what match to use as the
9127 final match. Available values are:
9128
9129 @table @samp
9130 @item none
9131 No final matching based on combed scores.
9132 @item sc
9133 Combed scores are only used when a scene change is detected.
9134 @item full
9135 Use combed scores all the time.
9136 @end table
9137
9138 Default is @var{sc}.
9139
9140 @item combdbg
9141 Force @code{fieldmatch} to calculate the combed metrics for certain matches and
9142 print them. This setting is known as @option{micout} in TFM/VFM vocabulary.
9143 Available values are:
9144
9145 @table @samp
9146 @item none
9147 No forced calculation.
9148 @item pcn
9149 Force p/c/n calculations.
9150 @item pcnub
9151 Force p/c/n/u/b calculations.
9152 @end table
9153
9154 Default value is @var{none}.
9155
9156 @item cthresh
9157 This is the area combing threshold used for combed frame detection. This
9158 essentially controls how "strong" or "visible" combing must be to be detected.
9159 Larger values mean combing must be more visible and smaller values mean combing
9160 can be less visible or strong and still be detected. Valid settings are from
9161 @code{-1} (every pixel will be detected as combed) to @code{255} (no pixel will
9162 be detected as combed). This is basically a pixel difference value. A good
9163 range is @code{[8, 12]}.
9164
9165 Default value is @code{9}.
9166
9167 @item chroma
9168 Sets whether or not chroma is considered in the combed frame decision.  Only
9169 disable this if your source has chroma problems (rainbowing, etc.) that are
9170 causing problems for the combed frame detection with chroma enabled. Actually,
9171 using @option{chroma}=@var{0} is usually more reliable, except for the case
9172 where there is chroma only combing in the source.
9173
9174 Default value is @code{0}.
9175
9176 @item blockx
9177 @item blocky
9178 Respectively set the x-axis and y-axis size of the window used during combed
9179 frame detection. This has to do with the size of the area in which
9180 @option{combpel} pixels are required to be detected as combed for a frame to be
9181 declared combed. See the @option{combpel} parameter description for more info.
9182 Possible values are any number that is a power of 2 starting at 4 and going up
9183 to 512.
9184
9185 Default value is @code{16}.
9186
9187 @item combpel
9188 The number of combed pixels inside any of the @option{blocky} by
9189 @option{blockx} size blocks on the frame for the frame to be detected as
9190 combed. While @option{cthresh} controls how "visible" the combing must be, this
9191 setting controls "how much" combing there must be in any localized area (a
9192 window defined by the @option{blockx} and @option{blocky} settings) on the
9193 frame. Minimum value is @code{0} and maximum is @code{blocky x blockx} (at
9194 which point no frames will ever be detected as combed). This setting is known
9195 as @option{MI} in TFM/VFM vocabulary.
9196
9197 Default value is @code{80}.
9198 @end table
9199
9200 @anchor{p/c/n/u/b meaning}
9201 @subsection p/c/n/u/b meaning
9202
9203 @subsubsection p/c/n
9204
9205 We assume the following telecined stream:
9206
9207 @example
9208 Top fields:     1 2 2 3 4
9209 Bottom fields:  1 2 3 4 4
9210 @end example
9211
9212 The numbers correspond to the progressive frame the fields relate to. Here, the
9213 first two frames are progressive, the 3rd and 4th are combed, and so on.
9214
9215 When @code{fieldmatch} is configured to run a matching from bottom
9216 (@option{field}=@var{bottom}) this is how this input stream get transformed:
9217
9218 @example
9219 Input stream:
9220                 T     1 2 2 3 4
9221                 B     1 2 3 4 4   <-- matching reference
9222
9223 Matches:              c c n n c
9224
9225 Output stream:
9226                 T     1 2 3 4 4
9227                 B     1 2 3 4 4
9228 @end example
9229
9230 As a result of the field matching, we can see that some frames get duplicated.
9231 To perform a complete inverse telecine, you need to rely on a decimation filter
9232 after this operation. See for instance the @ref{decimate} filter.
9233
9234 The same operation now matching from top fields (@option{field}=@var{top})
9235 looks like this:
9236
9237 @example
9238 Input stream:
9239                 T     1 2 2 3 4   <-- matching reference
9240                 B     1 2 3 4 4
9241
9242 Matches:              c c p p c
9243
9244 Output stream:
9245                 T     1 2 2 3 4
9246                 B     1 2 2 3 4
9247 @end example
9248
9249 In these examples, we can see what @var{p}, @var{c} and @var{n} mean;
9250 basically, they refer to the frame and field of the opposite parity:
9251
9252 @itemize
9253 @item @var{p} matches the field of the opposite parity in the previous frame
9254 @item @var{c} matches the field of the opposite parity in the current frame
9255 @item @var{n} matches the field of the opposite parity in the next frame
9256 @end itemize
9257
9258 @subsubsection u/b
9259
9260 The @var{u} and @var{b} matching are a bit special in the sense that they match
9261 from the opposite parity flag. In the following examples, we assume that we are
9262 currently matching the 2nd frame (Top:2, bottom:2). According to the match, a
9263 'x' is placed above and below each matched fields.
9264
9265 With bottom matching (@option{field}=@var{bottom}):
9266 @example
9267 Match:           c         p           n          b          u
9268
9269                  x       x               x        x          x
9270   Top          1 2 2     1 2 2       1 2 2      1 2 2      1 2 2
9271   Bottom       1 2 3     1 2 3       1 2 3      1 2 3      1 2 3
9272                  x         x           x        x              x
9273
9274 Output frames:
9275                  2          1          2          2          2
9276                  2          2          2          1          3
9277 @end example
9278
9279 With top matching (@option{field}=@var{top}):
9280 @example
9281 Match:           c         p           n          b          u
9282
9283                  x         x           x        x              x
9284   Top          1 2 2     1 2 2       1 2 2      1 2 2      1 2 2
9285   Bottom       1 2 3     1 2 3       1 2 3      1 2 3      1 2 3
9286                  x       x               x        x          x
9287
9288 Output frames:
9289                  2          2          2          1          2
9290                  2          1          3          2          2
9291 @end example
9292
9293 @subsection Examples
9294
9295 Simple IVTC of a top field first telecined stream:
9296 @example
9297 fieldmatch=order=tff:combmatch=none, decimate
9298 @end example
9299
9300 Advanced IVTC, with fallback on @ref{yadif} for still combed frames:
9301 @example
9302 fieldmatch=order=tff:combmatch=full, yadif=deint=interlaced, decimate
9303 @end example
9304
9305 @section fieldorder
9306
9307 Transform the field order of the input video.
9308
9309 It accepts the following parameters:
9310
9311 @table @option
9312
9313 @item order
9314 The output field order. Valid values are @var{tff} for top field first or @var{bff}
9315 for bottom field first.
9316 @end table
9317
9318 The default value is @samp{tff}.
9319
9320 The transformation is done by shifting the picture content up or down
9321 by one line, and filling the remaining line with appropriate picture content.
9322 This method is consistent with most broadcast field order converters.
9323
9324 If the input video is not flagged as being interlaced, or it is already
9325 flagged as being of the required output field order, then this filter does
9326 not alter the incoming video.
9327
9328 It is very useful when converting to or from PAL DV material,
9329 which is bottom field first.
9330
9331 For example:
9332 @example
9333 ffmpeg -i in.vob -vf "fieldorder=bff" out.dv
9334 @end example
9335
9336 @section fifo, afifo
9337
9338 Buffer input images and send them when they are requested.
9339
9340 It is mainly useful when auto-inserted by the libavfilter
9341 framework.
9342
9343 It does not take parameters.
9344
9345 @section fillborders
9346
9347 Fill borders of the input video, without changing video stream dimensions.
9348 Sometimes video can have garbage at the four edges and you may not want to
9349 crop video input to keep size multiple of some number.
9350
9351 This filter accepts the following options:
9352
9353 @table @option
9354 @item left
9355 Number of pixels to fill from left border.
9356
9357 @item right
9358 Number of pixels to fill from right border.
9359
9360 @item top
9361 Number of pixels to fill from top border.
9362
9363 @item bottom
9364 Number of pixels to fill from bottom border.
9365
9366 @item mode
9367 Set fill mode.
9368
9369 It accepts the following values:
9370 @table @samp
9371 @item smear
9372 fill pixels using outermost pixels
9373
9374 @item mirror
9375 fill pixels using mirroring
9376
9377 @item fixed
9378 fill pixels with constant value
9379 @end table
9380
9381 Default is @var{smear}.
9382
9383 @item color
9384 Set color for pixels in fixed mode. Default is @var{black}.
9385 @end table
9386
9387 @section find_rect
9388
9389 Find a rectangular object
9390
9391 It accepts the following options:
9392
9393 @table @option
9394 @item object
9395 Filepath of the object image, needs to be in gray8.
9396
9397 @item threshold
9398 Detection threshold, default is 0.5.
9399
9400 @item mipmaps
9401 Number of mipmaps, default is 3.
9402
9403 @item xmin, ymin, xmax, ymax
9404 Specifies the rectangle in which to search.
9405 @end table
9406
9407 @subsection Examples
9408
9409 @itemize
9410 @item
9411 Generate a representative palette of a given video using @command{ffmpeg}:
9412 @example
9413 ffmpeg -i file.ts -vf find_rect=newref.pgm,cover_rect=cover.jpg:mode=cover new.mkv
9414 @end example
9415 @end itemize
9416
9417 @section cover_rect
9418
9419 Cover a rectangular object
9420
9421 It accepts the following options:
9422
9423 @table @option
9424 @item cover
9425 Filepath of the optional cover image, needs to be in yuv420.
9426
9427 @item mode
9428 Set covering mode.
9429
9430 It accepts the following values:
9431 @table @samp
9432 @item cover
9433 cover it by the supplied image
9434 @item blur
9435 cover it by interpolating the surrounding pixels
9436 @end table
9437
9438 Default value is @var{blur}.
9439 @end table
9440
9441 @subsection Examples
9442
9443 @itemize
9444 @item
9445 Generate a representative palette of a given video using @command{ffmpeg}:
9446 @example
9447 ffmpeg -i file.ts -vf find_rect=newref.pgm,cover_rect=cover.jpg:mode=cover new.mkv
9448 @end example
9449 @end itemize
9450
9451 @section floodfill
9452
9453 Flood area with values of same pixel components with another values.
9454
9455 It accepts the following options:
9456 @table @option
9457 @item x
9458 Set pixel x coordinate.
9459
9460 @item y
9461 Set pixel y coordinate.
9462
9463 @item s0
9464 Set source #0 component value.
9465
9466 @item s1
9467 Set source #1 component value.
9468
9469 @item s2
9470 Set source #2 component value.
9471
9472 @item s3
9473 Set source #3 component value.
9474
9475 @item d0
9476 Set destination #0 component value.
9477
9478 @item d1
9479 Set destination #1 component value.
9480
9481 @item d2
9482 Set destination #2 component value.
9483
9484 @item d3
9485 Set destination #3 component value.
9486 @end table
9487
9488 @anchor{format}
9489 @section format
9490
9491 Convert the input video to one of the specified pixel formats.
9492 Libavfilter will try to pick one that is suitable as input to
9493 the next filter.
9494
9495 It accepts the following parameters:
9496 @table @option
9497
9498 @item pix_fmts
9499 A '|'-separated list of pixel format names, such as
9500 "pix_fmts=yuv420p|monow|rgb24".
9501
9502 @end table
9503
9504 @subsection Examples
9505
9506 @itemize
9507 @item
9508 Convert the input video to the @var{yuv420p} format
9509 @example
9510 format=pix_fmts=yuv420p
9511 @end example
9512
9513 Convert the input video to any of the formats in the list
9514 @example
9515 format=pix_fmts=yuv420p|yuv444p|yuv410p
9516 @end example
9517 @end itemize
9518
9519 @anchor{fps}
9520 @section fps
9521
9522 Convert the video to specified constant frame rate by duplicating or dropping
9523 frames as necessary.
9524
9525 It accepts the following parameters:
9526 @table @option
9527
9528 @item fps
9529 The desired output frame rate. The default is @code{25}.
9530
9531 @item start_time
9532 Assume the first PTS should be the given value, in seconds. This allows for
9533 padding/trimming at the start of stream. By default, no assumption is made
9534 about the first frame's expected PTS, so no padding or trimming is done.
9535 For example, this could be set to 0 to pad the beginning with duplicates of
9536 the first frame if a video stream starts after the audio stream or to trim any
9537 frames with a negative PTS.
9538
9539 @item round
9540 Timestamp (PTS) rounding method.
9541
9542 Possible values are:
9543 @table @option
9544 @item zero
9545 round towards 0
9546 @item inf
9547 round away from 0
9548 @item down
9549 round towards -infinity
9550 @item up
9551 round towards +infinity
9552 @item near
9553 round to nearest
9554 @end table
9555 The default is @code{near}.
9556
9557 @item eof_action
9558 Action performed when reading the last frame.
9559
9560 Possible values are:
9561 @table @option
9562 @item round
9563 Use same timestamp rounding method as used for other frames.
9564 @item pass
9565 Pass through last frame if input duration has not been reached yet.
9566 @end table
9567 The default is @code{round}.
9568
9569 @end table
9570
9571 Alternatively, the options can be specified as a flat string:
9572 @var{fps}[:@var{start_time}[:@var{round}]].
9573
9574 See also the @ref{setpts} filter.
9575
9576 @subsection Examples
9577
9578 @itemize
9579 @item
9580 A typical usage in order to set the fps to 25:
9581 @example
9582 fps=fps=25
9583 @end example
9584
9585 @item
9586 Sets the fps to 24, using abbreviation and rounding method to round to nearest:
9587 @example
9588 fps=fps=film:round=near
9589 @end example
9590 @end itemize
9591
9592 @section framepack
9593
9594 Pack two different video streams into a stereoscopic video, setting proper
9595 metadata on supported codecs. The two views should have the same size and
9596 framerate and processing will stop when the shorter video ends. Please note
9597 that you may conveniently adjust view properties with the @ref{scale} and
9598 @ref{fps} filters.
9599
9600 It accepts the following parameters:
9601 @table @option
9602
9603 @item format
9604 The desired packing format. Supported values are:
9605
9606 @table @option
9607
9608 @item sbs
9609 The views are next to each other (default).
9610
9611 @item tab
9612 The views are on top of each other.
9613
9614 @item lines
9615 The views are packed by line.
9616
9617 @item columns
9618 The views are packed by column.
9619
9620 @item frameseq
9621 The views are temporally interleaved.
9622
9623 @end table
9624
9625 @end table
9626
9627 Some examples:
9628
9629 @example
9630 # Convert left and right views into a frame-sequential video
9631 ffmpeg -i LEFT -i RIGHT -filter_complex framepack=frameseq OUTPUT
9632
9633 # Convert views into a side-by-side video with the same output resolution as the input
9634 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
9635 @end example
9636
9637 @section framerate
9638
9639 Change the frame rate by interpolating new video output frames from the source
9640 frames.
9641
9642 This filter is not designed to function correctly with interlaced media. If
9643 you wish to change the frame rate of interlaced media then you are required
9644 to deinterlace before this filter and re-interlace after this filter.
9645
9646 A description of the accepted options follows.
9647
9648 @table @option
9649 @item fps
9650 Specify the output frames per second. This option can also be specified
9651 as a value alone. The default is @code{50}.
9652
9653 @item interp_start
9654 Specify the start of a range where the output frame will be created as a
9655 linear interpolation of two frames. The range is [@code{0}-@code{255}],
9656 the default is @code{15}.
9657
9658 @item interp_end
9659 Specify the end of a range where the output frame will be created as a
9660 linear interpolation of two frames. The range is [@code{0}-@code{255}],
9661 the default is @code{240}.
9662
9663 @item scene
9664 Specify the level at which a scene change is detected as a value between
9665 0 and 100 to indicate a new scene; a low value reflects a low
9666 probability for the current frame to introduce a new scene, while a higher
9667 value means the current frame is more likely to be one.
9668 The default is @code{8.2}.
9669
9670 @item flags
9671 Specify flags influencing the filter process.
9672
9673 Available value for @var{flags} is:
9674
9675 @table @option
9676 @item scene_change_detect, scd
9677 Enable scene change detection using the value of the option @var{scene}.
9678 This flag is enabled by default.
9679 @end table
9680 @end table
9681
9682 @section framestep
9683
9684 Select one frame every N-th frame.
9685
9686 This filter accepts the following option:
9687 @table @option
9688 @item step
9689 Select frame after every @code{step} frames.
9690 Allowed values are positive integers higher than 0. Default value is @code{1}.
9691 @end table
9692
9693 @anchor{frei0r}
9694 @section frei0r
9695
9696 Apply a frei0r effect to the input video.
9697
9698 To enable the compilation of this filter, you need to install the frei0r
9699 header and configure FFmpeg with @code{--enable-frei0r}.
9700
9701 It accepts the following parameters:
9702
9703 @table @option
9704
9705 @item filter_name
9706 The name of the frei0r effect to load. If the environment variable
9707 @env{FREI0R_PATH} is defined, the frei0r effect is searched for in each of the
9708 directories specified by the colon-separated list in @env{FREI0R_PATH}.
9709 Otherwise, the standard frei0r paths are searched, in this order:
9710 @file{HOME/.frei0r-1/lib/}, @file{/usr/local/lib/frei0r-1/},
9711 @file{/usr/lib/frei0r-1/}.
9712
9713 @item filter_params
9714 A '|'-separated list of parameters to pass to the frei0r effect.
9715
9716 @end table
9717
9718 A frei0r effect parameter can be a boolean (its value is either
9719 "y" or "n"), a double, a color (specified as
9720 @var{R}/@var{G}/@var{B}, where @var{R}, @var{G}, and @var{B} are floating point
9721 numbers between 0.0 and 1.0, inclusive) or a color description as specified in the
9722 @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils},
9723 a position (specified as @var{X}/@var{Y}, where
9724 @var{X} and @var{Y} are floating point numbers) and/or a string.
9725
9726 The number and types of parameters depend on the loaded effect. If an
9727 effect parameter is not specified, the default value is set.
9728
9729 @subsection Examples
9730
9731 @itemize
9732 @item
9733 Apply the distort0r effect, setting the first two double parameters:
9734 @example
9735 frei0r=filter_name=distort0r:filter_params=0.5|0.01
9736 @end example
9737
9738 @item
9739 Apply the colordistance effect, taking a color as the first parameter:
9740 @example
9741 frei0r=colordistance:0.2/0.3/0.4
9742 frei0r=colordistance:violet
9743 frei0r=colordistance:0x112233
9744 @end example
9745
9746 @item
9747 Apply the perspective effect, specifying the top left and top right image
9748 positions:
9749 @example
9750 frei0r=perspective:0.2/0.2|0.8/0.2
9751 @end example
9752 @end itemize
9753
9754 For more information, see
9755 @url{http://frei0r.dyne.org}
9756
9757 @section fspp
9758
9759 Apply fast and simple postprocessing. It is a faster version of @ref{spp}.
9760
9761 It splits (I)DCT into horizontal/vertical passes. Unlike the simple post-
9762 processing filter, one of them is performed once per block, not per pixel.
9763 This allows for much higher speed.
9764
9765 The filter accepts the following options:
9766
9767 @table @option
9768 @item quality
9769 Set quality. This option defines the number of levels for averaging. It accepts
9770 an integer in the range 4-5. Default value is @code{4}.
9771
9772 @item qp
9773 Force a constant quantization parameter. It accepts an integer in range 0-63.
9774 If not set, the filter will use the QP from the video stream (if available).
9775
9776 @item strength
9777 Set filter strength. It accepts an integer in range -15 to 32. Lower values mean
9778 more details but also more artifacts, while higher values make the image smoother
9779 but also blurrier. Default value is @code{0} âˆ’ PSNR optimal.
9780
9781 @item use_bframe_qp
9782 Enable the use of the QP from the B-Frames if set to @code{1}. Using this
9783 option may cause flicker since the B-Frames have often larger QP. Default is
9784 @code{0} (not enabled).
9785
9786 @end table
9787
9788 @section gblur
9789
9790 Apply Gaussian blur filter.
9791
9792 The filter accepts the following options:
9793
9794 @table @option
9795 @item sigma
9796 Set horizontal sigma, standard deviation of Gaussian blur. Default is @code{0.5}.
9797
9798 @item steps
9799 Set number of steps for Gaussian approximation. Defauls is @code{1}.
9800
9801 @item planes
9802 Set which planes to filter. By default all planes are filtered.
9803
9804 @item sigmaV
9805 Set vertical sigma, if negative it will be same as @code{sigma}.
9806 Default is @code{-1}.
9807 @end table
9808
9809 @section geq
9810
9811 The filter accepts the following options:
9812
9813 @table @option
9814 @item lum_expr, lum
9815 Set the luminance expression.
9816 @item cb_expr, cb
9817 Set the chrominance blue expression.
9818 @item cr_expr, cr
9819 Set the chrominance red expression.
9820 @item alpha_expr, a
9821 Set the alpha expression.
9822 @item red_expr, r
9823 Set the red expression.
9824 @item green_expr, g
9825 Set the green expression.
9826 @item blue_expr, b
9827 Set the blue expression.
9828 @end table
9829
9830 The colorspace is selected according to the specified options. If one
9831 of the @option{lum_expr}, @option{cb_expr}, or @option{cr_expr}
9832 options is specified, the filter will automatically select a YCbCr
9833 colorspace. If one of the @option{red_expr}, @option{green_expr}, or
9834 @option{blue_expr} options is specified, it will select an RGB
9835 colorspace.
9836
9837 If one of the chrominance expression is not defined, it falls back on the other
9838 one. If no alpha expression is specified it will evaluate to opaque value.
9839 If none of chrominance expressions are specified, they will evaluate
9840 to the luminance expression.
9841
9842 The expressions can use the following variables and functions:
9843
9844 @table @option
9845 @item N
9846 The sequential number of the filtered frame, starting from @code{0}.
9847
9848 @item X
9849 @item Y
9850 The coordinates of the current sample.
9851
9852 @item W
9853 @item H
9854 The width and height of the image.
9855
9856 @item SW
9857 @item SH
9858 Width and height scale depending on the currently filtered plane. It is the
9859 ratio between the corresponding luma plane number of pixels and the current
9860 plane ones. E.g. for YUV4:2:0 the values are @code{1,1} for the luma plane, and
9861 @code{0.5,0.5} for chroma planes.
9862
9863 @item T
9864 Time of the current frame, expressed in seconds.
9865
9866 @item p(x, y)
9867 Return the value of the pixel at location (@var{x},@var{y}) of the current
9868 plane.
9869
9870 @item lum(x, y)
9871 Return the value of the pixel at location (@var{x},@var{y}) of the luminance
9872 plane.
9873
9874 @item cb(x, y)
9875 Return the value of the pixel at location (@var{x},@var{y}) of the
9876 blue-difference chroma plane. Return 0 if there is no such plane.
9877
9878 @item cr(x, y)
9879 Return the value of the pixel at location (@var{x},@var{y}) of the
9880 red-difference chroma plane. Return 0 if there is no such plane.
9881
9882 @item r(x, y)
9883 @item g(x, y)
9884 @item b(x, y)
9885 Return the value of the pixel at location (@var{x},@var{y}) of the
9886 red/green/blue component. Return 0 if there is no such component.
9887
9888 @item alpha(x, y)
9889 Return the value of the pixel at location (@var{x},@var{y}) of the alpha
9890 plane. Return 0 if there is no such plane.
9891 @end table
9892
9893 For functions, if @var{x} and @var{y} are outside the area, the value will be
9894 automatically clipped to the closer edge.
9895
9896 @subsection Examples
9897
9898 @itemize
9899 @item
9900 Flip the image horizontally:
9901 @example
9902 geq=p(W-X\,Y)
9903 @end example
9904
9905 @item
9906 Generate a bidimensional sine wave, with angle @code{PI/3} and a
9907 wavelength of 100 pixels:
9908 @example
9909 geq=128 + 100*sin(2*(PI/100)*(cos(PI/3)*(X-50*T) + sin(PI/3)*Y)):128:128
9910 @end example
9911
9912 @item
9913 Generate a fancy enigmatic moving light:
9914 @example
9915 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
9916 @end example
9917
9918 @item
9919 Generate a quick emboss effect:
9920 @example
9921 format=gray,geq=lum_expr='(p(X,Y)+(256-p(X-4,Y-4)))/2'
9922 @end example
9923
9924 @item
9925 Modify RGB components depending on pixel position:
9926 @example
9927 geq=r='X/W*r(X,Y)':g='(1-X/W)*g(X,Y)':b='(H-Y)/H*b(X,Y)'
9928 @end example
9929
9930 @item
9931 Create a radial gradient that is the same size as the input (also see
9932 the @ref{vignette} filter):
9933 @example
9934 geq=lum=255*gauss((X/W-0.5)*3)*gauss((Y/H-0.5)*3)/gauss(0)/gauss(0),format=gray
9935 @end example
9936 @end itemize
9937
9938 @section gradfun
9939
9940 Fix the banding artifacts that are sometimes introduced into nearly flat
9941 regions by truncation to 8-bit color depth.
9942 Interpolate the gradients that should go where the bands are, and
9943 dither them.
9944
9945 It is designed for playback only.  Do not use it prior to
9946 lossy compression, because compression tends to lose the dither and
9947 bring back the bands.
9948
9949 It accepts the following parameters:
9950
9951 @table @option
9952
9953 @item strength
9954 The maximum amount by which the filter will change any one pixel. This is also
9955 the threshold for detecting nearly flat regions. Acceptable values range from
9956 .51 to 64; the default value is 1.2. Out-of-range values will be clipped to the
9957 valid range.
9958
9959 @item radius
9960 The neighborhood to fit the gradient to. A larger radius makes for smoother
9961 gradients, but also prevents the filter from modifying the pixels near detailed
9962 regions. Acceptable values are 8-32; the default value is 16. Out-of-range
9963 values will be clipped to the valid range.
9964
9965 @end table
9966
9967 Alternatively, the options can be specified as a flat string:
9968 @var{strength}[:@var{radius}]
9969
9970 @subsection Examples
9971
9972 @itemize
9973 @item
9974 Apply the filter with a @code{3.5} strength and radius of @code{8}:
9975 @example
9976 gradfun=3.5:8
9977 @end example
9978
9979 @item
9980 Specify radius, omitting the strength (which will fall-back to the default
9981 value):
9982 @example
9983 gradfun=radius=8
9984 @end example
9985
9986 @end itemize
9987
9988 @section greyedge
9989 A color constancy variation filter which estimates scene illumination via grey edge algorithm
9990 and corrects the scene colors accordingly.
9991
9992 See: @url{https://staff.science.uva.nl/th.gevers/pub/GeversTIP07.pdf}
9993
9994 The filter accepts the following options:
9995
9996 @table @option
9997 @item difford
9998 The order of differentiation to be applied on the scene. Must be chosen in the range
9999 [0,2] and default value is 1.
10000
10001 @item minknorm
10002 The Minkowski parameter to be used for calculating the Minkowski distance. Must
10003 be chosen in the range [0,20] and default value is 1. Set to 0 for getting
10004 max value instead of calculating Minkowski distance.
10005
10006 @item sigma
10007 The standard deviation of Gaussian blur to be applied on the scene. Must be
10008 chosen in the range [0,1024.0] and default value = 1. floor( @var{sigma} * break_off_sigma(3) )
10009 can't be euqal to 0 if @var{difford} is greater than 0.
10010 @end table
10011
10012 @subsection Examples
10013 @itemize
10014
10015 @item
10016 Grey Edge:
10017 @example
10018 greyedge=difford=1:minknorm=5:sigma=2
10019 @end example
10020
10021 @item
10022 Max Edge:
10023 @example
10024 greyedge=difford=1:minknorm=0:sigma=2
10025 @end example
10026
10027 @end itemize
10028
10029 @anchor{haldclut}
10030 @section haldclut
10031
10032 Apply a Hald CLUT to a video stream.
10033
10034 First input is the video stream to process, and second one is the Hald CLUT.
10035 The Hald CLUT input can be a simple picture or a complete video stream.
10036
10037 The filter accepts the following options:
10038
10039 @table @option
10040 @item shortest
10041 Force termination when the shortest input terminates. Default is @code{0}.
10042 @item repeatlast
10043 Continue applying the last CLUT after the end of the stream. A value of
10044 @code{0} disable the filter after the last frame of the CLUT is reached.
10045 Default is @code{1}.
10046 @end table
10047
10048 @code{haldclut} also has the same interpolation options as @ref{lut3d} (both
10049 filters share the same internals).
10050
10051 More information about the Hald CLUT can be found on Eskil Steenberg's website
10052 (Hald CLUT author) at @url{http://www.quelsolaar.com/technology/clut.html}.
10053
10054 @subsection Workflow examples
10055
10056 @subsubsection Hald CLUT video stream
10057
10058 Generate an identity Hald CLUT stream altered with various effects:
10059 @example
10060 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
10061 @end example
10062
10063 Note: make sure you use a lossless codec.
10064
10065 Then use it with @code{haldclut} to apply it on some random stream:
10066 @example
10067 ffmpeg -f lavfi -i mandelbrot -i clut.nut -filter_complex '[0][1] haldclut' -t 20 mandelclut.mkv
10068 @end example
10069
10070 The Hald CLUT will be applied to the 10 first seconds (duration of
10071 @file{clut.nut}), then the latest picture of that CLUT stream will be applied
10072 to the remaining frames of the @code{mandelbrot} stream.
10073
10074 @subsubsection Hald CLUT with preview
10075
10076 A Hald CLUT is supposed to be a squared image of @code{Level*Level*Level} by
10077 @code{Level*Level*Level} pixels. For a given Hald CLUT, FFmpeg will select the
10078 biggest possible square starting at the top left of the picture. The remaining
10079 padding pixels (bottom or right) will be ignored. This area can be used to add
10080 a preview of the Hald CLUT.
10081
10082 Typically, the following generated Hald CLUT will be supported by the
10083 @code{haldclut} filter:
10084
10085 @example
10086 ffmpeg -f lavfi -i @ref{haldclutsrc}=8 -vf "
10087    pad=iw+320 [padded_clut];
10088    smptebars=s=320x256, split [a][b];
10089    [padded_clut][a] overlay=W-320:h, curves=color_negative [main];
10090    [main][b] overlay=W-320" -frames:v 1 clut.png
10091 @end example
10092
10093 It contains the original and a preview of the effect of the CLUT: SMPTE color
10094 bars are displayed on the right-top, and below the same color bars processed by
10095 the color changes.
10096
10097 Then, the effect of this Hald CLUT can be visualized with:
10098 @example
10099 ffplay input.mkv -vf "movie=clut.png, [in] haldclut"
10100 @end example
10101
10102 @section hflip
10103
10104 Flip the input video horizontally.
10105
10106 For example, to horizontally flip the input video with @command{ffmpeg}:
10107 @example
10108 ffmpeg -i in.avi -vf "hflip" out.avi
10109 @end example
10110
10111 @section histeq
10112 This filter applies a global color histogram equalization on a
10113 per-frame basis.
10114
10115 It can be used to correct video that has a compressed range of pixel
10116 intensities.  The filter redistributes the pixel intensities to
10117 equalize their distribution across the intensity range. It may be
10118 viewed as an "automatically adjusting contrast filter". This filter is
10119 useful only for correcting degraded or poorly captured source
10120 video.
10121
10122 The filter accepts the following options:
10123
10124 @table @option
10125 @item strength
10126 Determine the amount of equalization to be applied.  As the strength
10127 is reduced, the distribution of pixel intensities more-and-more
10128 approaches that of the input frame. The value must be a float number
10129 in the range [0,1] and defaults to 0.200.
10130
10131 @item intensity
10132 Set the maximum intensity that can generated and scale the output
10133 values appropriately.  The strength should be set as desired and then
10134 the intensity can be limited if needed to avoid washing-out. The value
10135 must be a float number in the range [0,1] and defaults to 0.210.
10136
10137 @item antibanding
10138 Set the antibanding level. If enabled the filter will randomly vary
10139 the luminance of output pixels by a small amount to avoid banding of
10140 the histogram. Possible values are @code{none}, @code{weak} or
10141 @code{strong}. It defaults to @code{none}.
10142 @end table
10143
10144 @section histogram
10145
10146 Compute and draw a color distribution histogram for the input video.
10147
10148 The computed histogram is a representation of the color component
10149 distribution in an image.
10150
10151 Standard histogram displays the color components distribution in an image.
10152 Displays color graph for each color component. Shows distribution of
10153 the Y, U, V, A or R, G, B components, depending on input format, in the
10154 current frame. Below each graph a color component scale meter is shown.
10155
10156 The filter accepts the following options:
10157
10158 @table @option
10159 @item level_height
10160 Set height of level. Default value is @code{200}.
10161 Allowed range is [50, 2048].
10162
10163 @item scale_height
10164 Set height of color scale. Default value is @code{12}.
10165 Allowed range is [0, 40].
10166
10167 @item display_mode
10168 Set display mode.
10169 It accepts the following values:
10170 @table @samp
10171 @item stack
10172 Per color component graphs are placed below each other.
10173
10174 @item parade
10175 Per color component graphs are placed side by side.
10176
10177 @item overlay
10178 Presents information identical to that in the @code{parade}, except
10179 that the graphs representing color components are superimposed directly
10180 over one another.
10181 @end table
10182 Default is @code{stack}.
10183
10184 @item levels_mode
10185 Set mode. Can be either @code{linear}, or @code{logarithmic}.
10186 Default is @code{linear}.
10187
10188 @item components
10189 Set what color components to display.
10190 Default is @code{7}.
10191
10192 @item fgopacity
10193 Set foreground opacity. Default is @code{0.7}.
10194
10195 @item bgopacity
10196 Set background opacity. Default is @code{0.5}.
10197 @end table
10198
10199 @subsection Examples
10200
10201 @itemize
10202
10203 @item
10204 Calculate and draw histogram:
10205 @example
10206 ffplay -i input -vf histogram
10207 @end example
10208
10209 @end itemize
10210
10211 @anchor{hqdn3d}
10212 @section hqdn3d
10213
10214 This is a high precision/quality 3d denoise filter. It aims to reduce
10215 image noise, producing smooth images and making still images really
10216 still. It should enhance compressibility.
10217
10218 It accepts the following optional parameters:
10219
10220 @table @option
10221 @item luma_spatial
10222 A non-negative floating point number which specifies spatial luma strength.
10223 It defaults to 4.0.
10224
10225 @item chroma_spatial
10226 A non-negative floating point number which specifies spatial chroma strength.
10227 It defaults to 3.0*@var{luma_spatial}/4.0.
10228
10229 @item luma_tmp
10230 A floating point number which specifies luma temporal strength. It defaults to
10231 6.0*@var{luma_spatial}/4.0.
10232
10233 @item chroma_tmp
10234 A floating point number which specifies chroma temporal strength. It defaults to
10235 @var{luma_tmp}*@var{chroma_spatial}/@var{luma_spatial}.
10236 @end table
10237
10238 @section hwdownload
10239
10240 Download hardware frames to system memory.
10241
10242 The input must be in hardware frames, and the output a non-hardware format.
10243 Not all formats will be supported on the output - it may be necessary to insert
10244 an additional @option{format} filter immediately following in the graph to get
10245 the output in a supported format.
10246
10247 @section hwmap
10248
10249 Map hardware frames to system memory or to another device.
10250
10251 This filter has several different modes of operation; which one is used depends
10252 on the input and output formats:
10253 @itemize
10254 @item
10255 Hardware frame input, normal frame output
10256
10257 Map the input frames to system memory and pass them to the output.  If the
10258 original hardware frame is later required (for example, after overlaying
10259 something else on part of it), the @option{hwmap} filter can be used again
10260 in the next mode to retrieve it.
10261 @item
10262 Normal frame input, hardware frame output
10263
10264 If the input is actually a software-mapped hardware frame, then unmap it -
10265 that is, return the original hardware frame.
10266
10267 Otherwise, a device must be provided.  Create new hardware surfaces on that
10268 device for the output, then map them back to the software format at the input
10269 and give those frames to the preceding filter.  This will then act like the
10270 @option{hwupload} filter, but may be able to avoid an additional copy when
10271 the input is already in a compatible format.
10272 @item
10273 Hardware frame input and output
10274
10275 A device must be supplied for the output, either directly or with the
10276 @option{derive_device} option.  The input and output devices must be of
10277 different types and compatible - the exact meaning of this is
10278 system-dependent, but typically it means that they must refer to the same
10279 underlying hardware context (for example, refer to the same graphics card).
10280
10281 If the input frames were originally created on the output device, then unmap
10282 to retrieve the original frames.
10283
10284 Otherwise, map the frames to the output device - create new hardware frames
10285 on the output corresponding to the frames on the input.
10286 @end itemize
10287
10288 The following additional parameters are accepted:
10289
10290 @table @option
10291 @item mode
10292 Set the frame mapping mode.  Some combination of:
10293 @table @var
10294 @item read
10295 The mapped frame should be readable.
10296 @item write
10297 The mapped frame should be writeable.
10298 @item overwrite
10299 The mapping will always overwrite the entire frame.
10300
10301 This may improve performance in some cases, as the original contents of the
10302 frame need not be loaded.
10303 @item direct
10304 The mapping must not involve any copying.
10305
10306 Indirect mappings to copies of frames are created in some cases where either
10307 direct mapping is not possible or it would have unexpected properties.
10308 Setting this flag ensures that the mapping is direct and will fail if that is
10309 not possible.
10310 @end table
10311 Defaults to @var{read+write} if not specified.
10312
10313 @item derive_device @var{type}
10314 Rather than using the device supplied at initialisation, instead derive a new
10315 device of type @var{type} from the device the input frames exist on.
10316
10317 @item reverse
10318 In a hardware to hardware mapping, map in reverse - create frames in the sink
10319 and map them back to the source.  This may be necessary in some cases where
10320 a mapping in one direction is required but only the opposite direction is
10321 supported by the devices being used.
10322
10323 This option is dangerous - it may break the preceding filter in undefined
10324 ways if there are any additional constraints on that filter's output.
10325 Do not use it without fully understanding the implications of its use.
10326 @end table
10327
10328 @section hwupload
10329
10330 Upload system memory frames to hardware surfaces.
10331
10332 The device to upload to must be supplied when the filter is initialised.  If
10333 using ffmpeg, select the appropriate device with the @option{-filter_hw_device}
10334 option.
10335
10336 @anchor{hwupload_cuda}
10337 @section hwupload_cuda
10338
10339 Upload system memory frames to a CUDA device.
10340
10341 It accepts the following optional parameters:
10342
10343 @table @option
10344 @item device
10345 The number of the CUDA device to use
10346 @end table
10347
10348 @section hqx
10349
10350 Apply a high-quality magnification filter designed for pixel art. This filter
10351 was originally created by Maxim Stepin.
10352
10353 It accepts the following option:
10354
10355 @table @option
10356 @item n
10357 Set the scaling dimension: @code{2} for @code{hq2x}, @code{3} for
10358 @code{hq3x} and @code{4} for @code{hq4x}.
10359 Default is @code{3}.
10360 @end table
10361
10362 @section hstack
10363 Stack input videos horizontally.
10364
10365 All streams must be of same pixel format and of same height.
10366
10367 Note that this filter is faster than using @ref{overlay} and @ref{pad} filter
10368 to create same output.
10369
10370 The filter accept the following option:
10371
10372 @table @option
10373 @item inputs
10374 Set number of input streams. Default is 2.
10375
10376 @item shortest
10377 If set to 1, force the output to terminate when the shortest input
10378 terminates. Default value is 0.
10379 @end table
10380
10381 @section hue
10382
10383 Modify the hue and/or the saturation of the input.
10384
10385 It accepts the following parameters:
10386
10387 @table @option
10388 @item h
10389 Specify the hue angle as a number of degrees. It accepts an expression,
10390 and defaults to "0".
10391
10392 @item s
10393 Specify the saturation in the [-10,10] range. It accepts an expression and
10394 defaults to "1".
10395
10396 @item H
10397 Specify the hue angle as a number of radians. It accepts an
10398 expression, and defaults to "0".
10399
10400 @item b
10401 Specify the brightness in the [-10,10] range. It accepts an expression and
10402 defaults to "0".
10403 @end table
10404
10405 @option{h} and @option{H} are mutually exclusive, and can't be
10406 specified at the same time.
10407
10408 The @option{b}, @option{h}, @option{H} and @option{s} option values are
10409 expressions containing the following constants:
10410
10411 @table @option
10412 @item n
10413 frame count of the input frame starting from 0
10414
10415 @item pts
10416 presentation timestamp of the input frame expressed in time base units
10417
10418 @item r
10419 frame rate of the input video, NAN if the input frame rate is unknown
10420
10421 @item t
10422 timestamp expressed in seconds, NAN if the input timestamp is unknown
10423
10424 @item tb
10425 time base of the input video
10426 @end table
10427
10428 @subsection Examples
10429
10430 @itemize
10431 @item
10432 Set the hue to 90 degrees and the saturation to 1.0:
10433 @example
10434 hue=h=90:s=1
10435 @end example
10436
10437 @item
10438 Same command but expressing the hue in radians:
10439 @example
10440 hue=H=PI/2:s=1
10441 @end example
10442
10443 @item
10444 Rotate hue and make the saturation swing between 0
10445 and 2 over a period of 1 second:
10446 @example
10447 hue="H=2*PI*t: s=sin(2*PI*t)+1"
10448 @end example
10449
10450 @item
10451 Apply a 3 seconds saturation fade-in effect starting at 0:
10452 @example
10453 hue="s=min(t/3\,1)"
10454 @end example
10455
10456 The general fade-in expression can be written as:
10457 @example
10458 hue="s=min(0\, max((t-START)/DURATION\, 1))"
10459 @end example
10460
10461 @item
10462 Apply a 3 seconds saturation fade-out effect starting at 5 seconds:
10463 @example
10464 hue="s=max(0\, min(1\, (8-t)/3))"
10465 @end example
10466
10467 The general fade-out expression can be written as:
10468 @example
10469 hue="s=max(0\, min(1\, (START+DURATION-t)/DURATION))"
10470 @end example
10471
10472 @end itemize
10473
10474 @subsection Commands
10475
10476 This filter supports the following commands:
10477 @table @option
10478 @item b
10479 @item s
10480 @item h
10481 @item H
10482 Modify the hue and/or the saturation and/or brightness of the input video.
10483 The command accepts the same syntax of the corresponding option.
10484
10485 If the specified expression is not valid, it is kept at its current
10486 value.
10487 @end table
10488
10489 @section hysteresis
10490
10491 Grow first stream into second stream by connecting components.
10492 This makes it possible to build more robust edge masks.
10493
10494 This filter accepts the following options:
10495
10496 @table @option
10497 @item planes
10498 Set which planes will be processed as bitmap, unprocessed planes will be
10499 copied from first stream.
10500 By default value 0xf, all planes will be processed.
10501
10502 @item threshold
10503 Set threshold which is used in filtering. If pixel component value is higher than
10504 this value filter algorithm for connecting components is activated.
10505 By default value is 0.
10506 @end table
10507
10508 @section idet
10509
10510 Detect video interlacing type.
10511
10512 This filter tries to detect if the input frames are interlaced, progressive,
10513 top or bottom field first. It will also try to detect fields that are
10514 repeated between adjacent frames (a sign of telecine).
10515
10516 Single frame detection considers only immediately adjacent frames when classifying each frame.
10517 Multiple frame detection incorporates the classification history of previous frames.
10518
10519 The filter will log these metadata values:
10520
10521 @table @option
10522 @item single.current_frame
10523 Detected type of current frame using single-frame detection. One of:
10524 ``tff'' (top field first), ``bff'' (bottom field first),
10525 ``progressive'', or ``undetermined''
10526
10527 @item single.tff
10528 Cumulative number of frames detected as top field first using single-frame detection.
10529
10530 @item multiple.tff
10531 Cumulative number of frames detected as top field first using multiple-frame detection.
10532
10533 @item single.bff
10534 Cumulative number of frames detected as bottom field first using single-frame detection.
10535
10536 @item multiple.current_frame
10537 Detected type of current frame using multiple-frame detection. One of:
10538 ``tff'' (top field first), ``bff'' (bottom field first),
10539 ``progressive'', or ``undetermined''
10540
10541 @item multiple.bff
10542 Cumulative number of frames detected as bottom field first using multiple-frame detection.
10543
10544 @item single.progressive
10545 Cumulative number of frames detected as progressive using single-frame detection.
10546
10547 @item multiple.progressive
10548 Cumulative number of frames detected as progressive using multiple-frame detection.
10549
10550 @item single.undetermined
10551 Cumulative number of frames that could not be classified using single-frame detection.
10552
10553 @item multiple.undetermined
10554 Cumulative number of frames that could not be classified using multiple-frame detection.
10555
10556 @item repeated.current_frame
10557 Which field in the current frame is repeated from the last. One of ``neither'', ``top'', or ``bottom''.
10558
10559 @item repeated.neither
10560 Cumulative number of frames with no repeated field.
10561
10562 @item repeated.top
10563 Cumulative number of frames with the top field repeated from the previous frame's top field.
10564
10565 @item repeated.bottom
10566 Cumulative number of frames with the bottom field repeated from the previous frame's bottom field.
10567 @end table
10568
10569 The filter accepts the following options:
10570
10571 @table @option
10572 @item intl_thres
10573 Set interlacing threshold.
10574 @item prog_thres
10575 Set progressive threshold.
10576 @item rep_thres
10577 Threshold for repeated field detection.
10578 @item half_life
10579 Number of frames after which a given frame's contribution to the
10580 statistics is halved (i.e., it contributes only 0.5 to its
10581 classification). The default of 0 means that all frames seen are given
10582 full weight of 1.0 forever.
10583 @item analyze_interlaced_flag
10584 When this is not 0 then idet will use the specified number of frames to determine
10585 if the interlaced flag is accurate, it will not count undetermined frames.
10586 If the flag is found to be accurate it will be used without any further
10587 computations, if it is found to be inaccurate it will be cleared without any
10588 further computations. This allows inserting the idet filter as a low computational
10589 method to clean up the interlaced flag
10590 @end table
10591
10592 @section il
10593
10594 Deinterleave or interleave fields.
10595
10596 This filter allows one to process interlaced images fields without
10597 deinterlacing them. Deinterleaving splits the input frame into 2
10598 fields (so called half pictures). Odd lines are moved to the top
10599 half of the output image, even lines to the bottom half.
10600 You can process (filter) them independently and then re-interleave them.
10601
10602 The filter accepts the following options:
10603
10604 @table @option
10605 @item luma_mode, l
10606 @item chroma_mode, c
10607 @item alpha_mode, a
10608 Available values for @var{luma_mode}, @var{chroma_mode} and
10609 @var{alpha_mode} are:
10610
10611 @table @samp
10612 @item none
10613 Do nothing.
10614
10615 @item deinterleave, d
10616 Deinterleave fields, placing one above the other.
10617
10618 @item interleave, i
10619 Interleave fields. Reverse the effect of deinterleaving.
10620 @end table
10621 Default value is @code{none}.
10622
10623 @item luma_swap, ls
10624 @item chroma_swap, cs
10625 @item alpha_swap, as
10626 Swap luma/chroma/alpha fields. Exchange even & odd lines. Default value is @code{0}.
10627 @end table
10628
10629 @section inflate
10630
10631 Apply inflate effect to the video.
10632
10633 This filter replaces the pixel by the local(3x3) average by taking into account
10634 only values higher than the pixel.
10635
10636 It accepts the following options:
10637
10638 @table @option
10639 @item threshold0
10640 @item threshold1
10641 @item threshold2
10642 @item threshold3
10643 Limit the maximum change for each plane, default is 65535.
10644 If 0, plane will remain unchanged.
10645 @end table
10646
10647 @section interlace
10648
10649 Simple interlacing filter from progressive contents. This interleaves upper (or
10650 lower) lines from odd frames with lower (or upper) lines from even frames,
10651 halving the frame rate and preserving image height.
10652
10653 @example
10654    Original        Original             New Frame
10655    Frame 'j'      Frame 'j+1'             (tff)
10656   ==========      ===========       ==================
10657     Line 0  -------------------->    Frame 'j' Line 0
10658     Line 1          Line 1  ---->   Frame 'j+1' Line 1
10659     Line 2 --------------------->    Frame 'j' Line 2
10660     Line 3          Line 3  ---->   Frame 'j+1' Line 3
10661      ...             ...                   ...
10662 New Frame + 1 will be generated by Frame 'j+2' and Frame 'j+3' and so on
10663 @end example
10664
10665 It accepts the following optional parameters:
10666
10667 @table @option
10668 @item scan
10669 This determines whether the interlaced frame is taken from the even
10670 (tff - default) or odd (bff) lines of the progressive frame.
10671
10672 @item lowpass
10673 Vertical lowpass filter to avoid twitter interlacing and
10674 reduce moire patterns.
10675
10676 @table @samp
10677 @item 0, off
10678 Disable vertical lowpass filter
10679
10680 @item 1, linear
10681 Enable linear filter (default)
10682
10683 @item 2, complex
10684 Enable complex filter. This will slightly less reduce twitter and moire
10685 but better retain detail and subjective sharpness impression.
10686
10687 @end table
10688 @end table
10689
10690 @section kerndeint
10691
10692 Deinterlace input video by applying Donald Graft's adaptive kernel
10693 deinterling. Work on interlaced parts of a video to produce
10694 progressive frames.
10695
10696 The description of the accepted parameters follows.
10697
10698 @table @option
10699 @item thresh
10700 Set the threshold which affects the filter's tolerance when
10701 determining if a pixel line must be processed. It must be an integer
10702 in the range [0,255] and defaults to 10. A value of 0 will result in
10703 applying the process on every pixels.
10704
10705 @item map
10706 Paint pixels exceeding the threshold value to white if set to 1.
10707 Default is 0.
10708
10709 @item order
10710 Set the fields order. Swap fields if set to 1, leave fields alone if
10711 0. Default is 0.
10712
10713 @item sharp
10714 Enable additional sharpening if set to 1. Default is 0.
10715
10716 @item twoway
10717 Enable twoway sharpening if set to 1. Default is 0.
10718 @end table
10719
10720 @subsection Examples
10721
10722 @itemize
10723 @item
10724 Apply default values:
10725 @example
10726 kerndeint=thresh=10:map=0:order=0:sharp=0:twoway=0
10727 @end example
10728
10729 @item
10730 Enable additional sharpening:
10731 @example
10732 kerndeint=sharp=1
10733 @end example
10734
10735 @item
10736 Paint processed pixels in white:
10737 @example
10738 kerndeint=map=1
10739 @end example
10740 @end itemize
10741
10742 @section lenscorrection
10743
10744 Correct radial lens distortion
10745
10746 This filter can be used to correct for radial distortion as can result from the use
10747 of wide angle lenses, and thereby re-rectify the image. To find the right parameters
10748 one can use tools available for example as part of opencv or simply trial-and-error.
10749 To use opencv use the calibration sample (under samples/cpp) from the opencv sources
10750 and extract the k1 and k2 coefficients from the resulting matrix.
10751
10752 Note that effectively the same filter is available in the open-source tools Krita and
10753 Digikam from the KDE project.
10754
10755 In contrast to the @ref{vignette} filter, which can also be used to compensate lens errors,
10756 this filter corrects the distortion of the image, whereas @ref{vignette} corrects the
10757 brightness distribution, so you may want to use both filters together in certain
10758 cases, though you will have to take care of ordering, i.e. whether vignetting should
10759 be applied before or after lens correction.
10760
10761 @subsection Options
10762
10763 The filter accepts the following options:
10764
10765 @table @option
10766 @item cx
10767 Relative x-coordinate of the focal point of the image, and thereby the center of the
10768 distortion. This value has a range [0,1] and is expressed as fractions of the image
10769 width. Default is 0.5.
10770 @item cy
10771 Relative y-coordinate of the focal point of the image, and thereby the center of the
10772 distortion. This value has a range [0,1] and is expressed as fractions of the image
10773 height. Default is 0.5.
10774 @item k1
10775 Coefficient of the quadratic correction term. This value has a range [-1,1]. 0 means
10776 no correction. Default is 0.
10777 @item k2
10778 Coefficient of the double quadratic correction term. This value has a range [-1,1].
10779 0 means no correction. Default is 0.
10780 @end table
10781
10782 The formula that generates the correction is:
10783
10784 @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)
10785
10786 where @var{r_0} is halve of the image diagonal and @var{r_src} and @var{r_tgt} are the
10787 distances from the focal point in the source and target images, respectively.
10788
10789 @section lensfun
10790
10791 Apply lens correction via the lensfun library (@url{http://lensfun.sourceforge.net/}).
10792
10793 The @code{lensfun} filter requires the camera make, camera model, and lens model
10794 to apply the lens correction. The filter will load the lensfun database and
10795 query it to find the corresponding camera and lens entries in the database. As
10796 long as these entries can be found with the given options, the filter can
10797 perform corrections on frames. Note that incomplete strings will result in the
10798 filter choosing the best match with the given options, and the filter will
10799 output the chosen camera and lens models (logged with level "info"). You must
10800 provide the make, camera model, and lens model as they are required.
10801
10802 The filter accepts the following options:
10803
10804 @table @option
10805 @item make
10806 The make of the camera (for example, "Canon"). This option is required.
10807
10808 @item model
10809 The model of the camera (for example, "Canon EOS 100D"). This option is
10810 required.
10811
10812 @item lens_model
10813 The model of the lens (for example, "Canon EF-S 18-55mm f/3.5-5.6 IS STM"). This
10814 option is required.
10815
10816 @item mode
10817 The type of correction to apply. The following values are valid options:
10818
10819 @table @samp
10820 @item vignetting
10821 Enables fixing lens vignetting.
10822
10823 @item geometry
10824 Enables fixing lens geometry. This is the default.
10825
10826 @item subpixel
10827 Enables fixing chromatic aberrations.
10828
10829 @item vig_geo
10830 Enables fixing lens vignetting and lens geometry.
10831
10832 @item vig_subpixel
10833 Enables fixing lens vignetting and chromatic aberrations.
10834
10835 @item distortion
10836 Enables fixing both lens geometry and chromatic aberrations.
10837
10838 @item all
10839 Enables all possible corrections.
10840
10841 @end table
10842 @item focal_length
10843 The focal length of the image/video (zoom; expected constant for video). For
10844 example, a 18--55mm lens has focal length range of [18--55], so a value in that
10845 range should be chosen when using that lens. Default 18.
10846
10847 @item aperture
10848 The aperture of the image/video (expected constant for video). Note that
10849 aperture is only used for vignetting correction. Default 3.5.
10850
10851 @item focus_distance
10852 The focus distance of the image/video (expected constant for video). Note that
10853 focus distance is only used for vignetting and only slightly affects the
10854 vignetting correction process. If unknown, leave it at the default value (which
10855 is 1000).
10856
10857 @item target_geometry
10858 The target geometry of the output image/video. The following values are valid
10859 options:
10860
10861 @table @samp
10862 @item rectilinear (default)
10863 @item fisheye
10864 @item panoramic
10865 @item equirectangular
10866 @item fisheye_orthographic
10867 @item fisheye_stereographic
10868 @item fisheye_equisolid
10869 @item fisheye_thoby
10870 @end table
10871 @item reverse
10872 Apply the reverse of image correction (instead of correcting distortion, apply
10873 it).
10874
10875 @item interpolation
10876 The type of interpolation used when correcting distortion. The following values
10877 are valid options:
10878
10879 @table @samp
10880 @item nearest
10881 @item linear (default)
10882 @item lanczos
10883 @end table
10884 @end table
10885
10886 @subsection Examples
10887
10888 @itemize
10889 @item
10890 Apply lens correction with make "Canon", camera model "Canon EOS 100D", and lens
10891 model "Canon EF-S 18-55mm f/3.5-5.6 IS STM" with focal length of "18" and
10892 aperture of "8.0".
10893
10894 @example
10895 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
10896 @end example
10897
10898 @item
10899 Apply the same as before, but only for the first 5 seconds of video.
10900
10901 @example
10902 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
10903 @end example
10904
10905 @end itemize
10906
10907 @section libvmaf
10908
10909 Obtain the VMAF (Video Multi-Method Assessment Fusion)
10910 score between two input videos.
10911
10912 The obtained VMAF score is printed through the logging system.
10913
10914 It requires Netflix's vmaf library (libvmaf) as a pre-requisite.
10915 After installing the library it can be enabled using:
10916 @code{./configure --enable-libvmaf --enable-version3}.
10917 If no model path is specified it uses the default model: @code{vmaf_v0.6.1.pkl}.
10918
10919 The filter has following options:
10920
10921 @table @option
10922 @item model_path
10923 Set the model path which is to be used for SVM.
10924 Default value: @code{"vmaf_v0.6.1.pkl"}
10925
10926 @item log_path
10927 Set the file path to be used to store logs.
10928
10929 @item log_fmt
10930 Set the format of the log file (xml or json).
10931
10932 @item enable_transform
10933 Enables transform for computing vmaf.
10934
10935 @item phone_model
10936 Invokes the phone model which will generate VMAF scores higher than in the
10937 regular model, which is more suitable for laptop, TV, etc. viewing conditions.
10938
10939 @item psnr
10940 Enables computing psnr along with vmaf.
10941
10942 @item ssim
10943 Enables computing ssim along with vmaf.
10944
10945 @item ms_ssim
10946 Enables computing ms_ssim along with vmaf.
10947
10948 @item pool
10949 Set the pool method (mean, min or harmonic mean) to be used for computing vmaf.
10950
10951 @item n_threads
10952 Set number of threads to be used when computing vmaf.
10953
10954 @item n_subsample
10955 Set interval for frame subsampling used when computing vmaf.
10956
10957 @item enable_conf_interval
10958 Enables confidence interval.
10959 @end table
10960
10961 This filter also supports the @ref{framesync} options.
10962
10963 On the below examples the input file @file{main.mpg} being processed is
10964 compared with the reference file @file{ref.mpg}.
10965
10966 @example
10967 ffmpeg -i main.mpg -i ref.mpg -lavfi libvmaf -f null -
10968 @end example
10969
10970 Example with options:
10971 @example
10972 ffmpeg -i main.mpg -i ref.mpg -lavfi libvmaf="psnr=1:enable-transform=1" -f null -
10973 @end example
10974
10975 @section limiter
10976
10977 Limits the pixel components values to the specified range [min, max].
10978
10979 The filter accepts the following options:
10980
10981 @table @option
10982 @item min
10983 Lower bound. Defaults to the lowest allowed value for the input.
10984
10985 @item max
10986 Upper bound. Defaults to the highest allowed value for the input.
10987
10988 @item planes
10989 Specify which planes will be processed. Defaults to all available.
10990 @end table
10991
10992 @section loop
10993
10994 Loop video frames.
10995
10996 The filter accepts the following options:
10997
10998 @table @option
10999 @item loop
11000 Set the number of loops. Setting this value to -1 will result in infinite loops.
11001 Default is 0.
11002
11003 @item size
11004 Set maximal size in number of frames. Default is 0.
11005
11006 @item start
11007 Set first frame of loop. Default is 0.
11008 @end table
11009
11010 @section lut1d
11011
11012 Apply a 1D LUT to an input video.
11013
11014 The filter accepts the following options:
11015
11016 @table @option
11017 @item file
11018 Set the 1D LUT file name.
11019
11020 Currently supported formats:
11021 @table @samp
11022 @item cube
11023 Iridas
11024 @end table
11025
11026 @item interp
11027 Select interpolation mode.
11028
11029 Available values are:
11030
11031 @table @samp
11032 @item nearest
11033 Use values from the nearest defined point.
11034 @item linear
11035 Interpolate values using the linear interpolation.
11036 @item cubic
11037 Interpolate values using the cubic interpolation.
11038 @end table
11039 @end table
11040
11041 @anchor{lut3d}
11042 @section lut3d
11043
11044 Apply a 3D LUT to an input video.
11045
11046 The filter accepts the following options:
11047
11048 @table @option
11049 @item file
11050 Set the 3D LUT file name.
11051
11052 Currently supported formats:
11053 @table @samp
11054 @item 3dl
11055 AfterEffects
11056 @item cube
11057 Iridas
11058 @item dat
11059 DaVinci
11060 @item m3d
11061 Pandora
11062 @end table
11063 @item interp
11064 Select interpolation mode.
11065
11066 Available values are:
11067
11068 @table @samp
11069 @item nearest
11070 Use values from the nearest defined point.
11071 @item trilinear
11072 Interpolate values using the 8 points defining a cube.
11073 @item tetrahedral
11074 Interpolate values using a tetrahedron.
11075 @end table
11076 @end table
11077
11078 This filter also supports the @ref{framesync} options.
11079
11080 @section lumakey
11081
11082 Turn certain luma values into transparency.
11083
11084 The filter accepts the following options:
11085
11086 @table @option
11087 @item threshold
11088 Set the luma which will be used as base for transparency.
11089 Default value is @code{0}.
11090
11091 @item tolerance
11092 Set the range of luma values to be keyed out.
11093 Default value is @code{0}.
11094
11095 @item softness
11096 Set the range of softness. Default value is @code{0}.
11097 Use this to control gradual transition from zero to full transparency.
11098 @end table
11099
11100 @section lut, lutrgb, lutyuv
11101
11102 Compute a look-up table for binding each pixel component input value
11103 to an output value, and apply it to the input video.
11104
11105 @var{lutyuv} applies a lookup table to a YUV input video, @var{lutrgb}
11106 to an RGB input video.
11107
11108 These filters accept the following parameters:
11109 @table @option
11110 @item c0
11111 set first pixel component expression
11112 @item c1
11113 set second pixel component expression
11114 @item c2
11115 set third pixel component expression
11116 @item c3
11117 set fourth pixel component expression, corresponds to the alpha component
11118
11119 @item r
11120 set red component expression
11121 @item g
11122 set green component expression
11123 @item b
11124 set blue component expression
11125 @item a
11126 alpha component expression
11127
11128 @item y
11129 set Y/luminance component expression
11130 @item u
11131 set U/Cb component expression
11132 @item v
11133 set V/Cr component expression
11134 @end table
11135
11136 Each of them specifies the expression to use for computing the lookup table for
11137 the corresponding pixel component values.
11138
11139 The exact component associated to each of the @var{c*} options depends on the
11140 format in input.
11141
11142 The @var{lut} filter requires either YUV or RGB pixel formats in input,
11143 @var{lutrgb} requires RGB pixel formats in input, and @var{lutyuv} requires YUV.
11144
11145 The expressions can contain the following constants and functions:
11146
11147 @table @option
11148 @item w
11149 @item h
11150 The input width and height.
11151
11152 @item val
11153 The input value for the pixel component.
11154
11155 @item clipval
11156 The input value, clipped to the @var{minval}-@var{maxval} range.
11157
11158 @item maxval
11159 The maximum value for the pixel component.
11160
11161 @item minval
11162 The minimum value for the pixel component.
11163
11164 @item negval
11165 The negated value for the pixel component value, clipped to the
11166 @var{minval}-@var{maxval} range; it corresponds to the expression
11167 "maxval-clipval+minval".
11168
11169 @item clip(val)
11170 The computed value in @var{val}, clipped to the
11171 @var{minval}-@var{maxval} range.
11172
11173 @item gammaval(gamma)
11174 The computed gamma correction value of the pixel component value,
11175 clipped to the @var{minval}-@var{maxval} range. It corresponds to the
11176 expression
11177 "pow((clipval-minval)/(maxval-minval)\,@var{gamma})*(maxval-minval)+minval"
11178
11179 @end table
11180
11181 All expressions default to "val".
11182
11183 @subsection Examples
11184
11185 @itemize
11186 @item
11187 Negate input video:
11188 @example
11189 lutrgb="r=maxval+minval-val:g=maxval+minval-val:b=maxval+minval-val"
11190 lutyuv="y=maxval+minval-val:u=maxval+minval-val:v=maxval+minval-val"
11191 @end example
11192
11193 The above is the same as:
11194 @example
11195 lutrgb="r=negval:g=negval:b=negval"
11196 lutyuv="y=negval:u=negval:v=negval"
11197 @end example
11198
11199 @item
11200 Negate luminance:
11201 @example
11202 lutyuv=y=negval
11203 @end example
11204
11205 @item
11206 Remove chroma components, turning the video into a graytone image:
11207 @example
11208 lutyuv="u=128:v=128"
11209 @end example
11210
11211 @item
11212 Apply a luma burning effect:
11213 @example
11214 lutyuv="y=2*val"
11215 @end example
11216
11217 @item
11218 Remove green and blue components:
11219 @example
11220 lutrgb="g=0:b=0"
11221 @end example
11222
11223 @item
11224 Set a constant alpha channel value on input:
11225 @example
11226 format=rgba,lutrgb=a="maxval-minval/2"
11227 @end example
11228
11229 @item
11230 Correct luminance gamma by a factor of 0.5:
11231 @example
11232 lutyuv=y=gammaval(0.5)
11233 @end example
11234
11235 @item
11236 Discard least significant bits of luma:
11237 @example
11238 lutyuv=y='bitand(val, 128+64+32)'
11239 @end example
11240
11241 @item
11242 Technicolor like effect:
11243 @example
11244 lutyuv=u='(val-maxval/2)*2+maxval/2':v='(val-maxval/2)*2+maxval/2'
11245 @end example
11246 @end itemize
11247
11248 @section lut2, tlut2
11249
11250 The @code{lut2} filter takes two input streams and outputs one
11251 stream.
11252
11253 The @code{tlut2} (time lut2) filter takes two consecutive frames
11254 from one single stream.
11255
11256 This filter accepts the following parameters:
11257 @table @option
11258 @item c0
11259 set first pixel component expression
11260 @item c1
11261 set second pixel component expression
11262 @item c2
11263 set third pixel component expression
11264 @item c3
11265 set fourth pixel component expression, corresponds to the alpha component
11266 @end table
11267
11268 Each of them specifies the expression to use for computing the lookup table for
11269 the corresponding pixel component values.
11270
11271 The exact component associated to each of the @var{c*} options depends on the
11272 format in inputs.
11273
11274 The expressions can contain the following constants:
11275
11276 @table @option
11277 @item w
11278 @item h
11279 The input width and height.
11280
11281 @item x
11282 The first input value for the pixel component.
11283
11284 @item y
11285 The second input value for the pixel component.
11286
11287 @item bdx
11288 The first input video bit depth.
11289
11290 @item bdy
11291 The second input video bit depth.
11292 @end table
11293
11294 All expressions default to "x".
11295
11296 @subsection Examples
11297
11298 @itemize
11299 @item
11300 Highlight differences between two RGB video streams:
11301 @example
11302 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)'
11303 @end example
11304
11305 @item
11306 Highlight differences between two YUV video streams:
11307 @example
11308 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)'
11309 @end example
11310
11311 @item
11312 Show max difference between two video streams:
11313 @example
11314 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)))'
11315 @end example
11316 @end itemize
11317
11318 @section maskedclamp
11319
11320 Clamp the first input stream with the second input and third input stream.
11321
11322 Returns the value of first stream to be between second input
11323 stream - @code{undershoot} and third input stream + @code{overshoot}.
11324
11325 This filter accepts the following options:
11326 @table @option
11327 @item undershoot
11328 Default value is @code{0}.
11329
11330 @item overshoot
11331 Default value is @code{0}.
11332
11333 @item planes
11334 Set which planes will be processed as bitmap, unprocessed planes will be
11335 copied from first stream.
11336 By default value 0xf, all planes will be processed.
11337 @end table
11338
11339 @section maskedmerge
11340
11341 Merge the first input stream with the second input stream using per pixel
11342 weights in the third input stream.
11343
11344 A value of 0 in the third stream pixel component means that pixel component
11345 from first stream is returned unchanged, while maximum value (eg. 255 for
11346 8-bit videos) means that pixel component from second stream is returned
11347 unchanged. Intermediate values define the amount of merging between both
11348 input stream's pixel components.
11349
11350 This filter accepts the following options:
11351 @table @option
11352 @item planes
11353 Set which planes will be processed as bitmap, unprocessed planes will be
11354 copied from first stream.
11355 By default value 0xf, all planes will be processed.
11356 @end table
11357
11358 @section mcdeint
11359
11360 Apply motion-compensation deinterlacing.
11361
11362 It needs one field per frame as input and must thus be used together
11363 with yadif=1/3 or equivalent.
11364
11365 This filter accepts the following options:
11366 @table @option
11367 @item mode
11368 Set the deinterlacing mode.
11369
11370 It accepts one of the following values:
11371 @table @samp
11372 @item fast
11373 @item medium
11374 @item slow
11375 use iterative motion estimation
11376 @item extra_slow
11377 like @samp{slow}, but use multiple reference frames.
11378 @end table
11379 Default value is @samp{fast}.
11380
11381 @item parity
11382 Set the picture field parity assumed for the input video. It must be
11383 one of the following values:
11384
11385 @table @samp
11386 @item 0, tff
11387 assume top field first
11388 @item 1, bff
11389 assume bottom field first
11390 @end table
11391
11392 Default value is @samp{bff}.
11393
11394 @item qp
11395 Set per-block quantization parameter (QP) used by the internal
11396 encoder.
11397
11398 Higher values should result in a smoother motion vector field but less
11399 optimal individual vectors. Default value is 1.
11400 @end table
11401
11402 @section mergeplanes
11403
11404 Merge color channel components from several video streams.
11405
11406 The filter accepts up to 4 input streams, and merge selected input
11407 planes to the output video.
11408
11409 This filter accepts the following options:
11410 @table @option
11411 @item mapping
11412 Set input to output plane mapping. Default is @code{0}.
11413
11414 The mappings is specified as a bitmap. It should be specified as a
11415 hexadecimal number in the form 0xAa[Bb[Cc[Dd]]]. 'Aa' describes the
11416 mapping for the first plane of the output stream. 'A' sets the number of
11417 the input stream to use (from 0 to 3), and 'a' the plane number of the
11418 corresponding input to use (from 0 to 3). The rest of the mappings is
11419 similar, 'Bb' describes the mapping for the output stream second
11420 plane, 'Cc' describes the mapping for the output stream third plane and
11421 'Dd' describes the mapping for the output stream fourth plane.
11422
11423 @item format
11424 Set output pixel format. Default is @code{yuva444p}.
11425 @end table
11426
11427 @subsection Examples
11428
11429 @itemize
11430 @item
11431 Merge three gray video streams of same width and height into single video stream:
11432 @example
11433 [a0][a1][a2]mergeplanes=0x001020:yuv444p
11434 @end example
11435
11436 @item
11437 Merge 1st yuv444p stream and 2nd gray video stream into yuva444p video stream:
11438 @example
11439 [a0][a1]mergeplanes=0x00010210:yuva444p
11440 @end example
11441
11442 @item
11443 Swap Y and A plane in yuva444p stream:
11444 @example
11445 format=yuva444p,mergeplanes=0x03010200:yuva444p
11446 @end example
11447
11448 @item
11449 Swap U and V plane in yuv420p stream:
11450 @example
11451 format=yuv420p,mergeplanes=0x000201:yuv420p
11452 @end example
11453
11454 @item
11455 Cast a rgb24 clip to yuv444p:
11456 @example
11457 format=rgb24,mergeplanes=0x000102:yuv444p
11458 @end example
11459 @end itemize
11460
11461 @section mestimate
11462
11463 Estimate and export motion vectors using block matching algorithms.
11464 Motion vectors are stored in frame side data to be used by other filters.
11465
11466 This filter accepts the following options:
11467 @table @option
11468 @item method
11469 Specify the motion estimation method. Accepts one of the following values:
11470
11471 @table @samp
11472 @item esa
11473 Exhaustive search algorithm.
11474 @item tss
11475 Three step search algorithm.
11476 @item tdls
11477 Two dimensional logarithmic search algorithm.
11478 @item ntss
11479 New three step search algorithm.
11480 @item fss
11481 Four step search algorithm.
11482 @item ds
11483 Diamond search algorithm.
11484 @item hexbs
11485 Hexagon-based search algorithm.
11486 @item epzs
11487 Enhanced predictive zonal search algorithm.
11488 @item umh
11489 Uneven multi-hexagon search algorithm.
11490 @end table
11491 Default value is @samp{esa}.
11492
11493 @item mb_size
11494 Macroblock size. Default @code{16}.
11495
11496 @item search_param
11497 Search parameter. Default @code{7}.
11498 @end table
11499
11500 @section midequalizer
11501
11502 Apply Midway Image Equalization effect using two video streams.
11503
11504 Midway Image Equalization adjusts a pair of images to have the same
11505 histogram, while maintaining their dynamics as much as possible. It's
11506 useful for e.g. matching exposures from a pair of stereo cameras.
11507
11508 This filter has two inputs and one output, which must be of same pixel format, but
11509 may be of different sizes. The output of filter is first input adjusted with
11510 midway histogram of both inputs.
11511
11512 This filter accepts the following option:
11513
11514 @table @option
11515 @item planes
11516 Set which planes to process. Default is @code{15}, which is all available planes.
11517 @end table
11518
11519 @section minterpolate
11520
11521 Convert the video to specified frame rate using motion interpolation.
11522
11523 This filter accepts the following options:
11524 @table @option
11525 @item fps
11526 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}.
11527
11528 @item mi_mode
11529 Motion interpolation mode. Following values are accepted:
11530 @table @samp
11531 @item dup
11532 Duplicate previous or next frame for interpolating new ones.
11533 @item blend
11534 Blend source frames. Interpolated frame is mean of previous and next frames.
11535 @item mci
11536 Motion compensated interpolation. Following options are effective when this mode is selected:
11537
11538 @table @samp
11539 @item mc_mode
11540 Motion compensation mode. Following values are accepted:
11541 @table @samp
11542 @item obmc
11543 Overlapped block motion compensation.
11544 @item aobmc
11545 Adaptive overlapped block motion compensation. Window weighting coefficients are controlled adaptively according to the reliabilities of the neighboring motion vectors to reduce oversmoothing.
11546 @end table
11547 Default mode is @samp{obmc}.
11548
11549 @item me_mode
11550 Motion estimation mode. Following values are accepted:
11551 @table @samp
11552 @item bidir
11553 Bidirectional motion estimation. Motion vectors are estimated for each source frame in both forward and backward directions.
11554 @item bilat
11555 Bilateral motion estimation. Motion vectors are estimated directly for interpolated frame.
11556 @end table
11557 Default mode is @samp{bilat}.
11558
11559 @item me
11560 The algorithm to be used for motion estimation. Following values are accepted:
11561 @table @samp
11562 @item esa
11563 Exhaustive search algorithm.
11564 @item tss
11565 Three step search algorithm.
11566 @item tdls
11567 Two dimensional logarithmic search algorithm.
11568 @item ntss
11569 New three step search algorithm.
11570 @item fss
11571 Four step search algorithm.
11572 @item ds
11573 Diamond search algorithm.
11574 @item hexbs
11575 Hexagon-based search algorithm.
11576 @item epzs
11577 Enhanced predictive zonal search algorithm.
11578 @item umh
11579 Uneven multi-hexagon search algorithm.
11580 @end table
11581 Default algorithm is @samp{epzs}.
11582
11583 @item mb_size
11584 Macroblock size. Default @code{16}.
11585
11586 @item search_param
11587 Motion estimation search parameter. Default @code{32}.
11588
11589 @item vsbmc
11590 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).
11591 @end table
11592 @end table
11593
11594 @item scd
11595 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:
11596 @table @samp
11597 @item none
11598 Disable scene change detection.
11599 @item fdiff
11600 Frame difference. Corresponding pixel values are compared and if it satisfies @var{scd_threshold} scene change is detected.
11601 @end table
11602 Default method is @samp{fdiff}.
11603
11604 @item scd_threshold
11605 Scene change detection threshold. Default is @code{5.0}.
11606 @end table
11607
11608 @section mix
11609
11610 Mix several video input streams into one video stream.
11611
11612 A description of the accepted options follows.
11613
11614 @table @option
11615 @item nb_inputs
11616 The number of inputs. If unspecified, it defaults to 2.
11617
11618 @item weights
11619 Specify weight of each input video stream as sequence.
11620 Each weight is separated by space. If number of weights
11621 is smaller than number of @var{frames} last specified
11622 weight will be used for all remaining unset weights.
11623
11624 @item scale
11625 Specify scale, if it is set it will be multiplied with sum
11626 of each weight multiplied with pixel values to give final destination
11627 pixel value. By default @var{scale} is auto scaled to sum of weights.
11628
11629 @item duration
11630 Specify how end of stream is determined.
11631 @table @samp
11632 @item longest
11633 The duration of the longest input. (default)
11634
11635 @item shortest
11636 The duration of the shortest input.
11637
11638 @item first
11639 The duration of the first input.
11640 @end table
11641 @end table
11642
11643 @section mpdecimate
11644
11645 Drop frames that do not differ greatly from the previous frame in
11646 order to reduce frame rate.
11647
11648 The main use of this filter is for very-low-bitrate encoding
11649 (e.g. streaming over dialup modem), but it could in theory be used for
11650 fixing movies that were inverse-telecined incorrectly.
11651
11652 A description of the accepted options follows.
11653
11654 @table @option
11655 @item max
11656 Set the maximum number of consecutive frames which can be dropped (if
11657 positive), or the minimum interval between dropped frames (if
11658 negative). If the value is 0, the frame is dropped disregarding the
11659 number of previous sequentially dropped frames.
11660
11661 Default value is 0.
11662
11663 @item hi
11664 @item lo
11665 @item frac
11666 Set the dropping threshold values.
11667
11668 Values for @option{hi} and @option{lo} are for 8x8 pixel blocks and
11669 represent actual pixel value differences, so a threshold of 64
11670 corresponds to 1 unit of difference for each pixel, or the same spread
11671 out differently over the block.
11672
11673 A frame is a candidate for dropping if no 8x8 blocks differ by more
11674 than a threshold of @option{hi}, and if no more than @option{frac} blocks (1
11675 meaning the whole image) differ by more than a threshold of @option{lo}.
11676
11677 Default value for @option{hi} is 64*12, default value for @option{lo} is
11678 64*5, and default value for @option{frac} is 0.33.
11679 @end table
11680
11681
11682 @section negate
11683
11684 Negate (invert) the input video.
11685
11686 It accepts the following option:
11687
11688 @table @option
11689
11690 @item negate_alpha
11691 With value 1, it negates the alpha component, if present. Default value is 0.
11692 @end table
11693
11694 @section nlmeans
11695
11696 Denoise frames using Non-Local Means algorithm.
11697
11698 Each pixel is adjusted by looking for other pixels with similar contexts. This
11699 context similarity is defined by comparing their surrounding patches of size
11700 @option{p}x@option{p}. Patches are searched in an area of @option{r}x@option{r}
11701 around the pixel.
11702
11703 Note that the research area defines centers for patches, which means some
11704 patches will be made of pixels outside that research area.
11705
11706 The filter accepts the following options.
11707
11708 @table @option
11709 @item s
11710 Set denoising strength.
11711
11712 @item p
11713 Set patch size.
11714
11715 @item pc
11716 Same as @option{p} but for chroma planes.
11717
11718 The default value is @var{0} and means automatic.
11719
11720 @item r
11721 Set research size.
11722
11723 @item rc
11724 Same as @option{r} but for chroma planes.
11725
11726 The default value is @var{0} and means automatic.
11727 @end table
11728
11729 @section nnedi
11730
11731 Deinterlace video using neural network edge directed interpolation.
11732
11733 This filter accepts the following options:
11734
11735 @table @option
11736 @item weights
11737 Mandatory option, without binary file filter can not work.
11738 Currently file can be found here:
11739 https://github.com/dubhater/vapoursynth-nnedi3/blob/master/src/nnedi3_weights.bin
11740
11741 @item deint
11742 Set which frames to deinterlace, by default it is @code{all}.
11743 Can be @code{all} or @code{interlaced}.
11744
11745 @item field
11746 Set mode of operation.
11747
11748 Can be one of the following:
11749
11750 @table @samp
11751 @item af
11752 Use frame flags, both fields.
11753 @item a
11754 Use frame flags, single field.
11755 @item t
11756 Use top field only.
11757 @item b
11758 Use bottom field only.
11759 @item tf
11760 Use both fields, top first.
11761 @item bf
11762 Use both fields, bottom first.
11763 @end table
11764
11765 @item planes
11766 Set which planes to process, by default filter process all frames.
11767
11768 @item nsize
11769 Set size of local neighborhood around each pixel, used by the predictor neural
11770 network.
11771
11772 Can be one of the following:
11773
11774 @table @samp
11775 @item s8x6
11776 @item s16x6
11777 @item s32x6
11778 @item s48x6
11779 @item s8x4
11780 @item s16x4
11781 @item s32x4
11782 @end table
11783
11784 @item nns
11785 Set the number of neurons in predictor neural network.
11786 Can be one of the following:
11787
11788 @table @samp
11789 @item n16
11790 @item n32
11791 @item n64
11792 @item n128
11793 @item n256
11794 @end table
11795
11796 @item qual
11797 Controls the number of different neural network predictions that are blended
11798 together to compute the final output value. Can be @code{fast}, default or
11799 @code{slow}.
11800
11801 @item etype
11802 Set which set of weights to use in the predictor.
11803 Can be one of the following:
11804
11805 @table @samp
11806 @item a
11807 weights trained to minimize absolute error
11808 @item s
11809 weights trained to minimize squared error
11810 @end table
11811
11812 @item pscrn
11813 Controls whether or not the prescreener neural network is used to decide
11814 which pixels should be processed by the predictor neural network and which
11815 can be handled by simple cubic interpolation.
11816 The prescreener is trained to know whether cubic interpolation will be
11817 sufficient for a pixel or whether it should be predicted by the predictor nn.
11818 The computational complexity of the prescreener nn is much less than that of
11819 the predictor nn. Since most pixels can be handled by cubic interpolation,
11820 using the prescreener generally results in much faster processing.
11821 The prescreener is pretty accurate, so the difference between using it and not
11822 using it is almost always unnoticeable.
11823
11824 Can be one of the following:
11825
11826 @table @samp
11827 @item none
11828 @item original
11829 @item new
11830 @end table
11831
11832 Default is @code{new}.
11833
11834 @item fapprox
11835 Set various debugging flags.
11836 @end table
11837
11838 @section noformat
11839
11840 Force libavfilter not to use any of the specified pixel formats for the
11841 input to the next filter.
11842
11843 It accepts the following parameters:
11844 @table @option
11845
11846 @item pix_fmts
11847 A '|'-separated list of pixel format names, such as
11848 pix_fmts=yuv420p|monow|rgb24".
11849
11850 @end table
11851
11852 @subsection Examples
11853
11854 @itemize
11855 @item
11856 Force libavfilter to use a format different from @var{yuv420p} for the
11857 input to the vflip filter:
11858 @example
11859 noformat=pix_fmts=yuv420p,vflip
11860 @end example
11861
11862 @item
11863 Convert the input video to any of the formats not contained in the list:
11864 @example
11865 noformat=yuv420p|yuv444p|yuv410p
11866 @end example
11867 @end itemize
11868
11869 @section noise
11870
11871 Add noise on video input frame.
11872
11873 The filter accepts the following options:
11874
11875 @table @option
11876 @item all_seed
11877 @item c0_seed
11878 @item c1_seed
11879 @item c2_seed
11880 @item c3_seed
11881 Set noise seed for specific pixel component or all pixel components in case
11882 of @var{all_seed}. Default value is @code{123457}.
11883
11884 @item all_strength, alls
11885 @item c0_strength, c0s
11886 @item c1_strength, c1s
11887 @item c2_strength, c2s
11888 @item c3_strength, c3s
11889 Set noise strength for specific pixel component or all pixel components in case
11890 @var{all_strength}. Default value is @code{0}. Allowed range is [0, 100].
11891
11892 @item all_flags, allf
11893 @item c0_flags, c0f
11894 @item c1_flags, c1f
11895 @item c2_flags, c2f
11896 @item c3_flags, c3f
11897 Set pixel component flags or set flags for all components if @var{all_flags}.
11898 Available values for component flags are:
11899 @table @samp
11900 @item a
11901 averaged temporal noise (smoother)
11902 @item p
11903 mix random noise with a (semi)regular pattern
11904 @item t
11905 temporal noise (noise pattern changes between frames)
11906 @item u
11907 uniform noise (gaussian otherwise)
11908 @end table
11909 @end table
11910
11911 @subsection Examples
11912
11913 Add temporal and uniform noise to input video:
11914 @example
11915 noise=alls=20:allf=t+u
11916 @end example
11917
11918 @section normalize
11919
11920 Normalize RGB video (aka histogram stretching, contrast stretching).
11921 See: https://en.wikipedia.org/wiki/Normalization_(image_processing)
11922
11923 For each channel of each frame, the filter computes the input range and maps
11924 it linearly to the user-specified output range. The output range defaults
11925 to the full dynamic range from pure black to pure white.
11926
11927 Temporal smoothing can be used on the input range to reduce flickering (rapid
11928 changes in brightness) caused when small dark or bright objects enter or leave
11929 the scene. This is similar to the auto-exposure (automatic gain control) on a
11930 video camera, and, like a video camera, it may cause a period of over- or
11931 under-exposure of the video.
11932
11933 The R,G,B channels can be normalized independently, which may cause some
11934 color shifting, or linked together as a single channel, which prevents
11935 color shifting. Linked normalization preserves hue. Independent normalization
11936 does not, so it can be used to remove some color casts. Independent and linked
11937 normalization can be combined in any ratio.
11938
11939 The normalize filter accepts the following options:
11940
11941 @table @option
11942 @item blackpt
11943 @item whitept
11944 Colors which define the output range. The minimum input value is mapped to
11945 the @var{blackpt}. The maximum input value is mapped to the @var{whitept}.
11946 The defaults are black and white respectively. Specifying white for
11947 @var{blackpt} and black for @var{whitept} will give color-inverted,
11948 normalized video. Shades of grey can be used to reduce the dynamic range
11949 (contrast). Specifying saturated colors here can create some interesting
11950 effects.
11951
11952 @item smoothing
11953 The number of previous frames to use for temporal smoothing. The input range
11954 of each channel is smoothed using a rolling average over the current frame
11955 and the @var{smoothing} previous frames. The default is 0 (no temporal
11956 smoothing).
11957
11958 @item independence
11959 Controls the ratio of independent (color shifting) channel normalization to
11960 linked (color preserving) normalization. 0.0 is fully linked, 1.0 is fully
11961 independent. Defaults to 1.0 (fully independent).
11962
11963 @item strength
11964 Overall strength of the filter. 1.0 is full strength. 0.0 is a rather
11965 expensive no-op. Defaults to 1.0 (full strength).
11966
11967 @end table
11968
11969 @subsection Examples
11970
11971 Stretch video contrast to use the full dynamic range, with no temporal
11972 smoothing; may flicker depending on the source content:
11973 @example
11974 normalize=blackpt=black:whitept=white:smoothing=0
11975 @end example
11976
11977 As above, but with 50 frames of temporal smoothing; flicker should be
11978 reduced, depending on the source content:
11979 @example
11980 normalize=blackpt=black:whitept=white:smoothing=50
11981 @end example
11982
11983 As above, but with hue-preserving linked channel normalization:
11984 @example
11985 normalize=blackpt=black:whitept=white:smoothing=50:independence=0
11986 @end example
11987
11988 As above, but with half strength:
11989 @example
11990 normalize=blackpt=black:whitept=white:smoothing=50:independence=0:strength=0.5
11991 @end example
11992
11993 Map the darkest input color to red, the brightest input color to cyan:
11994 @example
11995 normalize=blackpt=red:whitept=cyan
11996 @end example
11997
11998 @section null
11999
12000 Pass the video source unchanged to the output.
12001
12002 @section ocr
12003 Optical Character Recognition
12004
12005 This filter uses Tesseract for optical character recognition. To enable
12006 compilation of this filter, you need to configure FFmpeg with
12007 @code{--enable-libtesseract}.
12008
12009 It accepts the following options:
12010
12011 @table @option
12012 @item datapath
12013 Set datapath to tesseract data. Default is to use whatever was
12014 set at installation.
12015
12016 @item language
12017 Set language, default is "eng".
12018
12019 @item whitelist
12020 Set character whitelist.
12021
12022 @item blacklist
12023 Set character blacklist.
12024 @end table
12025
12026 The filter exports recognized text as the frame metadata @code{lavfi.ocr.text}.
12027
12028 @section ocv
12029
12030 Apply a video transform using libopencv.
12031
12032 To enable this filter, install the libopencv library and headers and
12033 configure FFmpeg with @code{--enable-libopencv}.
12034
12035 It accepts the following parameters:
12036
12037 @table @option
12038
12039 @item filter_name
12040 The name of the libopencv filter to apply.
12041
12042 @item filter_params
12043 The parameters to pass to the libopencv filter. If not specified, the default
12044 values are assumed.
12045
12046 @end table
12047
12048 Refer to the official libopencv documentation for more precise
12049 information:
12050 @url{http://docs.opencv.org/master/modules/imgproc/doc/filtering.html}
12051
12052 Several libopencv filters are supported; see the following subsections.
12053
12054 @anchor{dilate}
12055 @subsection dilate
12056
12057 Dilate an image by using a specific structuring element.
12058 It corresponds to the libopencv function @code{cvDilate}.
12059
12060 It accepts the parameters: @var{struct_el}|@var{nb_iterations}.
12061
12062 @var{struct_el} represents a structuring element, and has the syntax:
12063 @var{cols}x@var{rows}+@var{anchor_x}x@var{anchor_y}/@var{shape}
12064
12065 @var{cols} and @var{rows} represent the number of columns and rows of
12066 the structuring element, @var{anchor_x} and @var{anchor_y} the anchor
12067 point, and @var{shape} the shape for the structuring element. @var{shape}
12068 must be "rect", "cross", "ellipse", or "custom".
12069
12070 If the value for @var{shape} is "custom", it must be followed by a
12071 string of the form "=@var{filename}". The file with name
12072 @var{filename} is assumed to represent a binary image, with each
12073 printable character corresponding to a bright pixel. When a custom
12074 @var{shape} is used, @var{cols} and @var{rows} are ignored, the number
12075 or columns and rows of the read file are assumed instead.
12076
12077 The default value for @var{struct_el} is "3x3+0x0/rect".
12078
12079 @var{nb_iterations} specifies the number of times the transform is
12080 applied to the image, and defaults to 1.
12081
12082 Some examples:
12083 @example
12084 # Use the default values
12085 ocv=dilate
12086
12087 # Dilate using a structuring element with a 5x5 cross, iterating two times
12088 ocv=filter_name=dilate:filter_params=5x5+2x2/cross|2
12089
12090 # Read the shape from the file diamond.shape, iterating two times.
12091 # The file diamond.shape may contain a pattern of characters like this
12092 #   *
12093 #  ***
12094 # *****
12095 #  ***
12096 #   *
12097 # The specified columns and rows are ignored
12098 # but the anchor point coordinates are not
12099 ocv=dilate:0x0+2x2/custom=diamond.shape|2
12100 @end example
12101
12102 @subsection erode
12103
12104 Erode an image by using a specific structuring element.
12105 It corresponds to the libopencv function @code{cvErode}.
12106
12107 It accepts the parameters: @var{struct_el}:@var{nb_iterations},
12108 with the same syntax and semantics as the @ref{dilate} filter.
12109
12110 @subsection smooth
12111
12112 Smooth the input video.
12113
12114 The filter takes the following parameters:
12115 @var{type}|@var{param1}|@var{param2}|@var{param3}|@var{param4}.
12116
12117 @var{type} is the type of smooth filter to apply, and must be one of
12118 the following values: "blur", "blur_no_scale", "median", "gaussian",
12119 or "bilateral". The default value is "gaussian".
12120
12121 The meaning of @var{param1}, @var{param2}, @var{param3}, and @var{param4}
12122 depend on the smooth type. @var{param1} and
12123 @var{param2} accept integer positive values or 0. @var{param3} and
12124 @var{param4} accept floating point values.
12125
12126 The default value for @var{param1} is 3. The default value for the
12127 other parameters is 0.
12128
12129 These parameters correspond to the parameters assigned to the
12130 libopencv function @code{cvSmooth}.
12131
12132 @section oscilloscope
12133
12134 2D Video Oscilloscope.
12135
12136 Useful to measure spatial impulse, step responses, chroma delays, etc.
12137
12138 It accepts the following parameters:
12139
12140 @table @option
12141 @item x
12142 Set scope center x position.
12143
12144 @item y
12145 Set scope center y position.
12146
12147 @item s
12148 Set scope size, relative to frame diagonal.
12149
12150 @item t
12151 Set scope tilt/rotation.
12152
12153 @item o
12154 Set trace opacity.
12155
12156 @item tx
12157 Set trace center x position.
12158
12159 @item ty
12160 Set trace center y position.
12161
12162 @item tw
12163 Set trace width, relative to width of frame.
12164
12165 @item th
12166 Set trace height, relative to height of frame.
12167
12168 @item c
12169 Set which components to trace. By default it traces first three components.
12170
12171 @item g
12172 Draw trace grid. By default is enabled.
12173
12174 @item st
12175 Draw some statistics. By default is enabled.
12176
12177 @item sc
12178 Draw scope. By default is enabled.
12179 @end table
12180
12181 @subsection Examples
12182
12183 @itemize
12184 @item
12185 Inspect full first row of video frame.
12186 @example
12187 oscilloscope=x=0.5:y=0:s=1
12188 @end example
12189
12190 @item
12191 Inspect full last row of video frame.
12192 @example
12193 oscilloscope=x=0.5:y=1:s=1
12194 @end example
12195
12196 @item
12197 Inspect full 5th line of video frame of height 1080.
12198 @example
12199 oscilloscope=x=0.5:y=5/1080:s=1
12200 @end example
12201
12202 @item
12203 Inspect full last column of video frame.
12204 @example
12205 oscilloscope=x=1:y=0.5:s=1:t=1
12206 @end example
12207
12208 @end itemize
12209
12210 @anchor{overlay}
12211 @section overlay
12212
12213 Overlay one video on top of another.
12214
12215 It takes two inputs and has one output. The first input is the "main"
12216 video on which the second input is overlaid.
12217
12218 It accepts the following parameters:
12219
12220 A description of the accepted options follows.
12221
12222 @table @option
12223 @item x
12224 @item y
12225 Set the expression for the x and y coordinates of the overlaid video
12226 on the main video. Default value is "0" for both expressions. In case
12227 the expression is invalid, it is set to a huge value (meaning that the
12228 overlay will not be displayed within the output visible area).
12229
12230 @item eof_action
12231 See @ref{framesync}.
12232
12233 @item eval
12234 Set when the expressions for @option{x}, and @option{y} are evaluated.
12235
12236 It accepts the following values:
12237 @table @samp
12238 @item init
12239 only evaluate expressions once during the filter initialization or
12240 when a command is processed
12241
12242 @item frame
12243 evaluate expressions for each incoming frame
12244 @end table
12245
12246 Default value is @samp{frame}.
12247
12248 @item shortest
12249 See @ref{framesync}.
12250
12251 @item format
12252 Set the format for the output video.
12253
12254 It accepts the following values:
12255 @table @samp
12256 @item yuv420
12257 force YUV420 output
12258
12259 @item yuv422
12260 force YUV422 output
12261
12262 @item yuv444
12263 force YUV444 output
12264
12265 @item rgb
12266 force packed RGB output
12267
12268 @item gbrp
12269 force planar RGB output
12270
12271 @item auto
12272 automatically pick format
12273 @end table
12274
12275 Default value is @samp{yuv420}.
12276
12277 @item repeatlast
12278 See @ref{framesync}.
12279
12280 @item alpha
12281 Set format of alpha of the overlaid video, it can be @var{straight} or
12282 @var{premultiplied}. Default is @var{straight}.
12283 @end table
12284
12285 The @option{x}, and @option{y} expressions can contain the following
12286 parameters.
12287
12288 @table @option
12289 @item main_w, W
12290 @item main_h, H
12291 The main input width and height.
12292
12293 @item overlay_w, w
12294 @item overlay_h, h
12295 The overlay input width and height.
12296
12297 @item x
12298 @item y
12299 The computed values for @var{x} and @var{y}. They are evaluated for
12300 each new frame.
12301
12302 @item hsub
12303 @item vsub
12304 horizontal and vertical chroma subsample values of the output
12305 format. For example for the pixel format "yuv422p" @var{hsub} is 2 and
12306 @var{vsub} is 1.
12307
12308 @item n
12309 the number of input frame, starting from 0
12310
12311 @item pos
12312 the position in the file of the input frame, NAN if unknown
12313
12314 @item t
12315 The timestamp, expressed in seconds. It's NAN if the input timestamp is unknown.
12316
12317 @end table
12318
12319 This filter also supports the @ref{framesync} options.
12320
12321 Note that the @var{n}, @var{pos}, @var{t} variables are available only
12322 when evaluation is done @emph{per frame}, and will evaluate to NAN
12323 when @option{eval} is set to @samp{init}.
12324
12325 Be aware that frames are taken from each input video in timestamp
12326 order, hence, if their initial timestamps differ, it is a good idea
12327 to pass the two inputs through a @var{setpts=PTS-STARTPTS} filter to
12328 have them begin in the same zero timestamp, as the example for
12329 the @var{movie} filter does.
12330
12331 You can chain together more overlays but you should test the
12332 efficiency of such approach.
12333
12334 @subsection Commands
12335
12336 This filter supports the following commands:
12337 @table @option
12338 @item x
12339 @item y
12340 Modify the x and y of the overlay input.
12341 The command accepts the same syntax of the corresponding option.
12342
12343 If the specified expression is not valid, it is kept at its current
12344 value.
12345 @end table
12346
12347 @subsection Examples
12348
12349 @itemize
12350 @item
12351 Draw the overlay at 10 pixels from the bottom right corner of the main
12352 video:
12353 @example
12354 overlay=main_w-overlay_w-10:main_h-overlay_h-10
12355 @end example
12356
12357 Using named options the example above becomes:
12358 @example
12359 overlay=x=main_w-overlay_w-10:y=main_h-overlay_h-10
12360 @end example
12361
12362 @item
12363 Insert a transparent PNG logo in the bottom left corner of the input,
12364 using the @command{ffmpeg} tool with the @code{-filter_complex} option:
12365 @example
12366 ffmpeg -i input -i logo -filter_complex 'overlay=10:main_h-overlay_h-10' output
12367 @end example
12368
12369 @item
12370 Insert 2 different transparent PNG logos (second logo on bottom
12371 right corner) using the @command{ffmpeg} tool:
12372 @example
12373 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
12374 @end example
12375
12376 @item
12377 Add a transparent color layer on top of the main video; @code{WxH}
12378 must specify the size of the main input to the overlay filter:
12379 @example
12380 color=color=red@@.3:size=WxH [over]; [in][over] overlay [out]
12381 @end example
12382
12383 @item
12384 Play an original video and a filtered version (here with the deshake
12385 filter) side by side using the @command{ffplay} tool:
12386 @example
12387 ffplay input.avi -vf 'split[a][b]; [a]pad=iw*2:ih[src]; [b]deshake[filt]; [src][filt]overlay=w'
12388 @end example
12389
12390 The above command is the same as:
12391 @example
12392 ffplay input.avi -vf 'split[b], pad=iw*2[src], [b]deshake, [src]overlay=w'
12393 @end example
12394
12395 @item
12396 Make a sliding overlay appearing from the left to the right top part of the
12397 screen starting since time 2:
12398 @example
12399 overlay=x='if(gte(t,2), -w+(t-2)*20, NAN)':y=0
12400 @end example
12401
12402 @item
12403 Compose output by putting two input videos side to side:
12404 @example
12405 ffmpeg -i left.avi -i right.avi -filter_complex "
12406 nullsrc=size=200x100 [background];
12407 [0:v] setpts=PTS-STARTPTS, scale=100x100 [left];
12408 [1:v] setpts=PTS-STARTPTS, scale=100x100 [right];
12409 [background][left]       overlay=shortest=1       [background+left];
12410 [background+left][right] overlay=shortest=1:x=100 [left+right]
12411 "
12412 @end example
12413
12414 @item
12415 Mask 10-20 seconds of a video by applying the delogo filter to a section
12416 @example
12417 ffmpeg -i test.avi -codec:v:0 wmv2 -ar 11025 -b:v 9000k
12418 -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]'
12419 masked.avi
12420 @end example
12421
12422 @item
12423 Chain several overlays in cascade:
12424 @example
12425 nullsrc=s=200x200 [bg];
12426 testsrc=s=100x100, split=4 [in0][in1][in2][in3];
12427 [in0] lutrgb=r=0, [bg]   overlay=0:0     [mid0];
12428 [in1] lutrgb=g=0, [mid0] overlay=100:0   [mid1];
12429 [in2] lutrgb=b=0, [mid1] overlay=0:100   [mid2];
12430 [in3] null,       [mid2] overlay=100:100 [out0]
12431 @end example
12432
12433 @end itemize
12434
12435 @section owdenoise
12436
12437 Apply Overcomplete Wavelet denoiser.
12438
12439 The filter accepts the following options:
12440
12441 @table @option
12442 @item depth
12443 Set depth.
12444
12445 Larger depth values will denoise lower frequency components more, but
12446 slow down filtering.
12447
12448 Must be an int in the range 8-16, default is @code{8}.
12449
12450 @item luma_strength, ls
12451 Set luma strength.
12452
12453 Must be a double value in the range 0-1000, default is @code{1.0}.
12454
12455 @item chroma_strength, cs
12456 Set chroma strength.
12457
12458 Must be a double value in the range 0-1000, default is @code{1.0}.
12459 @end table
12460
12461 @anchor{pad}
12462 @section pad
12463
12464 Add paddings to the input image, and place the original input at the
12465 provided @var{x}, @var{y} coordinates.
12466
12467 It accepts the following parameters:
12468
12469 @table @option
12470 @item width, w
12471 @item height, h
12472 Specify an expression for the size of the output image with the
12473 paddings added. If the value for @var{width} or @var{height} is 0, the
12474 corresponding input size is used for the output.
12475
12476 The @var{width} expression can reference the value set by the
12477 @var{height} expression, and vice versa.
12478
12479 The default value of @var{width} and @var{height} is 0.
12480
12481 @item x
12482 @item y
12483 Specify the offsets to place the input image at within the padded area,
12484 with respect to the top/left border of the output image.
12485
12486 The @var{x} expression can reference the value set by the @var{y}
12487 expression, and vice versa.
12488
12489 The default value of @var{x} and @var{y} is 0.
12490
12491 If @var{x} or @var{y} evaluate to a negative number, they'll be changed
12492 so the input image is centered on the padded area.
12493
12494 @item color
12495 Specify the color of the padded area. For the syntax of this option,
12496 check the @ref{color syntax,,"Color" section in the ffmpeg-utils
12497 manual,ffmpeg-utils}.
12498
12499 The default value of @var{color} is "black".
12500
12501 @item eval
12502 Specify when to evaluate  @var{width}, @var{height}, @var{x} and @var{y} expression.
12503
12504 It accepts the following values:
12505
12506 @table @samp
12507 @item init
12508 Only evaluate expressions once during the filter initialization or when
12509 a command is processed.
12510
12511 @item frame
12512 Evaluate expressions for each incoming frame.
12513
12514 @end table
12515
12516 Default value is @samp{init}.
12517
12518 @item aspect
12519 Pad to aspect instead to a resolution.
12520
12521 @end table
12522
12523 The value for the @var{width}, @var{height}, @var{x}, and @var{y}
12524 options are expressions containing the following constants:
12525
12526 @table @option
12527 @item in_w
12528 @item in_h
12529 The input video width and height.
12530
12531 @item iw
12532 @item ih
12533 These are the same as @var{in_w} and @var{in_h}.
12534
12535 @item out_w
12536 @item out_h
12537 The output width and height (the size of the padded area), as
12538 specified by the @var{width} and @var{height} expressions.
12539
12540 @item ow
12541 @item oh
12542 These are the same as @var{out_w} and @var{out_h}.
12543
12544 @item x
12545 @item y
12546 The x and y offsets as specified by the @var{x} and @var{y}
12547 expressions, or NAN if not yet specified.
12548
12549 @item a
12550 same as @var{iw} / @var{ih}
12551
12552 @item sar
12553 input sample aspect ratio
12554
12555 @item dar
12556 input display aspect ratio, it is the same as (@var{iw} / @var{ih}) * @var{sar}
12557
12558 @item hsub
12559 @item vsub
12560 The horizontal and vertical chroma subsample values. For example for the
12561 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
12562 @end table
12563
12564 @subsection Examples
12565
12566 @itemize
12567 @item
12568 Add paddings with the color "violet" to the input video. The output video
12569 size is 640x480, and the top-left corner of the input video is placed at
12570 column 0, row 40
12571 @example
12572 pad=640:480:0:40:violet
12573 @end example
12574
12575 The example above is equivalent to the following command:
12576 @example
12577 pad=width=640:height=480:x=0:y=40:color=violet
12578 @end example
12579
12580 @item
12581 Pad the input to get an output with dimensions increased by 3/2,
12582 and put the input video at the center of the padded area:
12583 @example
12584 pad="3/2*iw:3/2*ih:(ow-iw)/2:(oh-ih)/2"
12585 @end example
12586
12587 @item
12588 Pad the input to get a squared output with size equal to the maximum
12589 value between the input width and height, and put the input video at
12590 the center of the padded area:
12591 @example
12592 pad="max(iw\,ih):ow:(ow-iw)/2:(oh-ih)/2"
12593 @end example
12594
12595 @item
12596 Pad the input to get a final w/h ratio of 16:9:
12597 @example
12598 pad="ih*16/9:ih:(ow-iw)/2:(oh-ih)/2"
12599 @end example
12600
12601 @item
12602 In case of anamorphic video, in order to set the output display aspect
12603 correctly, it is necessary to use @var{sar} in the expression,
12604 according to the relation:
12605 @example
12606 (ih * X / ih) * sar = output_dar
12607 X = output_dar / sar
12608 @end example
12609
12610 Thus the previous example needs to be modified to:
12611 @example
12612 pad="ih*16/9/sar:ih:(ow-iw)/2:(oh-ih)/2"
12613 @end example
12614
12615 @item
12616 Double the output size and put the input video in the bottom-right
12617 corner of the output padded area:
12618 @example
12619 pad="2*iw:2*ih:ow-iw:oh-ih"
12620 @end example
12621 @end itemize
12622
12623 @anchor{palettegen}
12624 @section palettegen
12625
12626 Generate one palette for a whole video stream.
12627
12628 It accepts the following options:
12629
12630 @table @option
12631 @item max_colors
12632 Set the maximum number of colors to quantize in the palette.
12633 Note: the palette will still contain 256 colors; the unused palette entries
12634 will be black.
12635
12636 @item reserve_transparent
12637 Create a palette of 255 colors maximum and reserve the last one for
12638 transparency. Reserving the transparency color is useful for GIF optimization.
12639 If not set, the maximum of colors in the palette will be 256. You probably want
12640 to disable this option for a standalone image.
12641 Set by default.
12642
12643 @item transparency_color
12644 Set the color that will be used as background for transparency.
12645
12646 @item stats_mode
12647 Set statistics mode.
12648
12649 It accepts the following values:
12650 @table @samp
12651 @item full
12652 Compute full frame histograms.
12653 @item diff
12654 Compute histograms only for the part that differs from previous frame. This
12655 might be relevant to give more importance to the moving part of your input if
12656 the background is static.
12657 @item single
12658 Compute new histogram for each frame.
12659 @end table
12660
12661 Default value is @var{full}.
12662 @end table
12663
12664 The filter also exports the frame metadata @code{lavfi.color_quant_ratio}
12665 (@code{nb_color_in / nb_color_out}) which you can use to evaluate the degree of
12666 color quantization of the palette. This information is also visible at
12667 @var{info} logging level.
12668
12669 @subsection Examples
12670
12671 @itemize
12672 @item
12673 Generate a representative palette of a given video using @command{ffmpeg}:
12674 @example
12675 ffmpeg -i input.mkv -vf palettegen palette.png
12676 @end example
12677 @end itemize
12678
12679 @section paletteuse
12680
12681 Use a palette to downsample an input video stream.
12682
12683 The filter takes two inputs: one video stream and a palette. The palette must
12684 be a 256 pixels image.
12685
12686 It accepts the following options:
12687
12688 @table @option
12689 @item dither
12690 Select dithering mode. Available algorithms are:
12691 @table @samp
12692 @item bayer
12693 Ordered 8x8 bayer dithering (deterministic)
12694 @item heckbert
12695 Dithering as defined by Paul Heckbert in 1982 (simple error diffusion).
12696 Note: this dithering is sometimes considered "wrong" and is included as a
12697 reference.
12698 @item floyd_steinberg
12699 Floyd and Steingberg dithering (error diffusion)
12700 @item sierra2
12701 Frankie Sierra dithering v2 (error diffusion)
12702 @item sierra2_4a
12703 Frankie Sierra dithering v2 "Lite" (error diffusion)
12704 @end table
12705
12706 Default is @var{sierra2_4a}.
12707
12708 @item bayer_scale
12709 When @var{bayer} dithering is selected, this option defines the scale of the
12710 pattern (how much the crosshatch pattern is visible). A low value means more
12711 visible pattern for less banding, and higher value means less visible pattern
12712 at the cost of more banding.
12713
12714 The option must be an integer value in the range [0,5]. Default is @var{2}.
12715
12716 @item diff_mode
12717 If set, define the zone to process
12718
12719 @table @samp
12720 @item rectangle
12721 Only the changing rectangle will be reprocessed. This is similar to GIF
12722 cropping/offsetting compression mechanism. This option can be useful for speed
12723 if only a part of the image is changing, and has use cases such as limiting the
12724 scope of the error diffusal @option{dither} to the rectangle that bounds the
12725 moving scene (it leads to more deterministic output if the scene doesn't change
12726 much, and as a result less moving noise and better GIF compression).
12727 @end table
12728
12729 Default is @var{none}.
12730
12731 @item new
12732 Take new palette for each output frame.
12733
12734 @item alpha_threshold
12735 Sets the alpha threshold for transparency. Alpha values above this threshold
12736 will be treated as completely opaque, and values below this threshold will be
12737 treated as completely transparent.
12738
12739 The option must be an integer value in the range [0,255]. Default is @var{128}.
12740 @end table
12741
12742 @subsection Examples
12743
12744 @itemize
12745 @item
12746 Use a palette (generated for example with @ref{palettegen}) to encode a GIF
12747 using @command{ffmpeg}:
12748 @example
12749 ffmpeg -i input.mkv -i palette.png -lavfi paletteuse output.gif
12750 @end example
12751 @end itemize
12752
12753 @section perspective
12754
12755 Correct perspective of video not recorded perpendicular to the screen.
12756
12757 A description of the accepted parameters follows.
12758
12759 @table @option
12760 @item x0
12761 @item y0
12762 @item x1
12763 @item y1
12764 @item x2
12765 @item y2
12766 @item x3
12767 @item y3
12768 Set coordinates expression for top left, top right, bottom left and bottom right corners.
12769 Default values are @code{0:0:W:0:0:H:W:H} with which perspective will remain unchanged.
12770 If the @code{sense} option is set to @code{source}, then the specified points will be sent
12771 to the corners of the destination. If the @code{sense} option is set to @code{destination},
12772 then the corners of the source will be sent to the specified coordinates.
12773
12774 The expressions can use the following variables:
12775
12776 @table @option
12777 @item W
12778 @item H
12779 the width and height of video frame.
12780 @item in
12781 Input frame count.
12782 @item on
12783 Output frame count.
12784 @end table
12785
12786 @item interpolation
12787 Set interpolation for perspective correction.
12788
12789 It accepts the following values:
12790 @table @samp
12791 @item linear
12792 @item cubic
12793 @end table
12794
12795 Default value is @samp{linear}.
12796
12797 @item sense
12798 Set interpretation of coordinate options.
12799
12800 It accepts the following values:
12801 @table @samp
12802 @item 0, source
12803
12804 Send point in the source specified by the given coordinates to
12805 the corners of the destination.
12806
12807 @item 1, destination
12808
12809 Send the corners of the source to the point in the destination specified
12810 by the given coordinates.
12811
12812 Default value is @samp{source}.
12813 @end table
12814
12815 @item eval
12816 Set when the expressions for coordinates @option{x0,y0,...x3,y3} are evaluated.
12817
12818 It accepts the following values:
12819 @table @samp
12820 @item init
12821 only evaluate expressions once during the filter initialization or
12822 when a command is processed
12823
12824 @item frame
12825 evaluate expressions for each incoming frame
12826 @end table
12827
12828 Default value is @samp{init}.
12829 @end table
12830
12831 @section phase
12832
12833 Delay interlaced video by one field time so that the field order changes.
12834
12835 The intended use is to fix PAL movies that have been captured with the
12836 opposite field order to the film-to-video transfer.
12837
12838 A description of the accepted parameters follows.
12839
12840 @table @option
12841 @item mode
12842 Set phase mode.
12843
12844 It accepts the following values:
12845 @table @samp
12846 @item t
12847 Capture field order top-first, transfer bottom-first.
12848 Filter will delay the bottom field.
12849
12850 @item b
12851 Capture field order bottom-first, transfer top-first.
12852 Filter will delay the top field.
12853
12854 @item p
12855 Capture and transfer with the same field order. This mode only exists
12856 for the documentation of the other options to refer to, but if you
12857 actually select it, the filter will faithfully do nothing.
12858
12859 @item a
12860 Capture field order determined automatically by field flags, transfer
12861 opposite.
12862 Filter selects among @samp{t} and @samp{b} modes on a frame by frame
12863 basis using field flags. If no field information is available,
12864 then this works just like @samp{u}.
12865
12866 @item u
12867 Capture unknown or varying, transfer opposite.
12868 Filter selects among @samp{t} and @samp{b} on a frame by frame basis by
12869 analyzing the images and selecting the alternative that produces best
12870 match between the fields.
12871
12872 @item T
12873 Capture top-first, transfer unknown or varying.
12874 Filter selects among @samp{t} and @samp{p} using image analysis.
12875
12876 @item B
12877 Capture bottom-first, transfer unknown or varying.
12878 Filter selects among @samp{b} and @samp{p} using image analysis.
12879
12880 @item A
12881 Capture determined by field flags, transfer unknown or varying.
12882 Filter selects among @samp{t}, @samp{b} and @samp{p} using field flags and
12883 image analysis. If no field information is available, then this works just
12884 like @samp{U}. This is the default mode.
12885
12886 @item U
12887 Both capture and transfer unknown or varying.
12888 Filter selects among @samp{t}, @samp{b} and @samp{p} using image analysis only.
12889 @end table
12890 @end table
12891
12892 @section pixdesctest
12893
12894 Pixel format descriptor test filter, mainly useful for internal
12895 testing. The output video should be equal to the input video.
12896
12897 For example:
12898 @example
12899 format=monow, pixdesctest
12900 @end example
12901
12902 can be used to test the monowhite pixel format descriptor definition.
12903
12904 @section pixscope
12905
12906 Display sample values of color channels. Mainly useful for checking color
12907 and levels. Minimum supported resolution is 640x480.
12908
12909 The filters accept the following options:
12910
12911 @table @option
12912 @item x
12913 Set scope X position, relative offset on X axis.
12914
12915 @item y
12916 Set scope Y position, relative offset on Y axis.
12917
12918 @item w
12919 Set scope width.
12920
12921 @item h
12922 Set scope height.
12923
12924 @item o
12925 Set window opacity. This window also holds statistics about pixel area.
12926
12927 @item wx
12928 Set window X position, relative offset on X axis.
12929
12930 @item wy
12931 Set window Y position, relative offset on Y axis.
12932 @end table
12933
12934 @section pp
12935
12936 Enable the specified chain of postprocessing subfilters using libpostproc. This
12937 library should be automatically selected with a GPL build (@code{--enable-gpl}).
12938 Subfilters must be separated by '/' and can be disabled by prepending a '-'.
12939 Each subfilter and some options have a short and a long name that can be used
12940 interchangeably, i.e. dr/dering are the same.
12941
12942 The filters accept the following options:
12943
12944 @table @option
12945 @item subfilters
12946 Set postprocessing subfilters string.
12947 @end table
12948
12949 All subfilters share common options to determine their scope:
12950
12951 @table @option
12952 @item a/autoq
12953 Honor the quality commands for this subfilter.
12954
12955 @item c/chrom
12956 Do chrominance filtering, too (default).
12957
12958 @item y/nochrom
12959 Do luminance filtering only (no chrominance).
12960
12961 @item n/noluma
12962 Do chrominance filtering only (no luminance).
12963 @end table
12964
12965 These options can be appended after the subfilter name, separated by a '|'.
12966
12967 Available subfilters are:
12968
12969 @table @option
12970 @item hb/hdeblock[|difference[|flatness]]
12971 Horizontal deblocking filter
12972 @table @option
12973 @item difference
12974 Difference factor where higher values mean more deblocking (default: @code{32}).
12975 @item flatness
12976 Flatness threshold where lower values mean more deblocking (default: @code{39}).
12977 @end table
12978
12979 @item vb/vdeblock[|difference[|flatness]]
12980 Vertical deblocking filter
12981 @table @option
12982 @item difference
12983 Difference factor where higher values mean more deblocking (default: @code{32}).
12984 @item flatness
12985 Flatness threshold where lower values mean more deblocking (default: @code{39}).
12986 @end table
12987
12988 @item ha/hadeblock[|difference[|flatness]]
12989 Accurate horizontal deblocking filter
12990 @table @option
12991 @item difference
12992 Difference factor where higher values mean more deblocking (default: @code{32}).
12993 @item flatness
12994 Flatness threshold where lower values mean more deblocking (default: @code{39}).
12995 @end table
12996
12997 @item va/vadeblock[|difference[|flatness]]
12998 Accurate vertical deblocking filter
12999 @table @option
13000 @item difference
13001 Difference factor where higher values mean more deblocking (default: @code{32}).
13002 @item flatness
13003 Flatness threshold where lower values mean more deblocking (default: @code{39}).
13004 @end table
13005 @end table
13006
13007 The horizontal and vertical deblocking filters share the difference and
13008 flatness values so you cannot set different horizontal and vertical
13009 thresholds.
13010
13011 @table @option
13012 @item h1/x1hdeblock
13013 Experimental horizontal deblocking filter
13014
13015 @item v1/x1vdeblock
13016 Experimental vertical deblocking filter
13017
13018 @item dr/dering
13019 Deringing filter
13020
13021 @item tn/tmpnoise[|threshold1[|threshold2[|threshold3]]], temporal noise reducer
13022 @table @option
13023 @item threshold1
13024 larger -> stronger filtering
13025 @item threshold2
13026 larger -> stronger filtering
13027 @item threshold3
13028 larger -> stronger filtering
13029 @end table
13030
13031 @item al/autolevels[:f/fullyrange], automatic brightness / contrast correction
13032 @table @option
13033 @item f/fullyrange
13034 Stretch luminance to @code{0-255}.
13035 @end table
13036
13037 @item lb/linblenddeint
13038 Linear blend deinterlacing filter that deinterlaces the given block by
13039 filtering all lines with a @code{(1 2 1)} filter.
13040
13041 @item li/linipoldeint
13042 Linear interpolating deinterlacing filter that deinterlaces the given block by
13043 linearly interpolating every second line.
13044
13045 @item ci/cubicipoldeint
13046 Cubic interpolating deinterlacing filter deinterlaces the given block by
13047 cubically interpolating every second line.
13048
13049 @item md/mediandeint
13050 Median deinterlacing filter that deinterlaces the given block by applying a
13051 median filter to every second line.
13052
13053 @item fd/ffmpegdeint
13054 FFmpeg deinterlacing filter that deinterlaces the given block by filtering every
13055 second line with a @code{(-1 4 2 4 -1)} filter.
13056
13057 @item l5/lowpass5
13058 Vertically applied FIR lowpass deinterlacing filter that deinterlaces the given
13059 block by filtering all lines with a @code{(-1 2 6 2 -1)} filter.
13060
13061 @item fq/forceQuant[|quantizer]
13062 Overrides the quantizer table from the input with the constant quantizer you
13063 specify.
13064 @table @option
13065 @item quantizer
13066 Quantizer to use
13067 @end table
13068
13069 @item de/default
13070 Default pp filter combination (@code{hb|a,vb|a,dr|a})
13071
13072 @item fa/fast
13073 Fast pp filter combination (@code{h1|a,v1|a,dr|a})
13074
13075 @item ac
13076 High quality pp filter combination (@code{ha|a|128|7,va|a,dr|a})
13077 @end table
13078
13079 @subsection Examples
13080
13081 @itemize
13082 @item
13083 Apply horizontal and vertical deblocking, deringing and automatic
13084 brightness/contrast:
13085 @example
13086 pp=hb/vb/dr/al
13087 @end example
13088
13089 @item
13090 Apply default filters without brightness/contrast correction:
13091 @example
13092 pp=de/-al
13093 @end example
13094
13095 @item
13096 Apply default filters and temporal denoiser:
13097 @example
13098 pp=default/tmpnoise|1|2|3
13099 @end example
13100
13101 @item
13102 Apply deblocking on luminance only, and switch vertical deblocking on or off
13103 automatically depending on available CPU time:
13104 @example
13105 pp=hb|y/vb|a
13106 @end example
13107 @end itemize
13108
13109 @section pp7
13110 Apply Postprocessing filter 7. It is variant of the @ref{spp} filter,
13111 similar to spp = 6 with 7 point DCT, where only the center sample is
13112 used after IDCT.
13113
13114 The filter accepts the following options:
13115
13116 @table @option
13117 @item qp
13118 Force a constant quantization parameter. It accepts an integer in range
13119 0 to 63. If not set, the filter will use the QP from the video stream
13120 (if available).
13121
13122 @item mode
13123 Set thresholding mode. Available modes are:
13124
13125 @table @samp
13126 @item hard
13127 Set hard thresholding.
13128 @item soft
13129 Set soft thresholding (better de-ringing effect, but likely blurrier).
13130 @item medium
13131 Set medium thresholding (good results, default).
13132 @end table
13133 @end table
13134
13135 @section premultiply
13136 Apply alpha premultiply effect to input video stream using first plane
13137 of second stream as alpha.
13138
13139 Both streams must have same dimensions and same pixel format.
13140
13141 The filter accepts the following option:
13142
13143 @table @option
13144 @item planes
13145 Set which planes will be processed, unprocessed planes will be copied.
13146 By default value 0xf, all planes will be processed.
13147
13148 @item inplace
13149 Do not require 2nd input for processing, instead use alpha plane from input stream.
13150 @end table
13151
13152 @section prewitt
13153 Apply prewitt operator to input video stream.
13154
13155 The filter accepts the following option:
13156
13157 @table @option
13158 @item planes
13159 Set which planes will be processed, unprocessed planes will be copied.
13160 By default value 0xf, all planes will be processed.
13161
13162 @item scale
13163 Set value which will be multiplied with filtered result.
13164
13165 @item delta
13166 Set value which will be added to filtered result.
13167 @end table
13168
13169 @anchor{program_opencl}
13170 @section program_opencl
13171
13172 Filter video using an OpenCL program.
13173
13174 @table @option
13175
13176 @item source
13177 OpenCL program source file.
13178
13179 @item kernel
13180 Kernel name in program.
13181
13182 @item inputs
13183 Number of inputs to the filter.  Defaults to 1.
13184
13185 @item size, s
13186 Size of output frames.  Defaults to the same as the first input.
13187
13188 @end table
13189
13190 The program source file must contain a kernel function with the given name,
13191 which will be run once for each plane of the output.  Each run on a plane
13192 gets enqueued as a separate 2D global NDRange with one work-item for each
13193 pixel to be generated.  The global ID offset for each work-item is therefore
13194 the coordinates of a pixel in the destination image.
13195
13196 The kernel function needs to take the following arguments:
13197 @itemize
13198 @item
13199 Destination image, @var{__write_only image2d_t}.
13200
13201 This image will become the output; the kernel should write all of it.
13202 @item
13203 Frame index, @var{unsigned int}.
13204
13205 This is a counter starting from zero and increasing by one for each frame.
13206 @item
13207 Source images, @var{__read_only image2d_t}.
13208
13209 These are the most recent images on each input.  The kernel may read from
13210 them to generate the output, but they can't be written to.
13211 @end itemize
13212
13213 Example programs:
13214
13215 @itemize
13216 @item
13217 Copy the input to the output (output must be the same size as the input).
13218 @verbatim
13219 __kernel void copy(__write_only image2d_t destination,
13220                    unsigned int index,
13221                    __read_only  image2d_t source)
13222 {
13223     const sampler_t sampler = CLK_NORMALIZED_COORDS_FALSE;
13224
13225     int2 location = (int2)(get_global_id(0), get_global_id(1));
13226
13227     float4 value = read_imagef(source, sampler, location);
13228
13229     write_imagef(destination, location, value);
13230 }
13231 @end verbatim
13232
13233 @item
13234 Apply a simple transformation, rotating the input by an amount increasing
13235 with the index counter.  Pixel values are linearly interpolated by the
13236 sampler, and the output need not have the same dimensions as the input.
13237 @verbatim
13238 __kernel void rotate_image(__write_only image2d_t dst,
13239                            unsigned int index,
13240                            __read_only  image2d_t src)
13241 {
13242     const sampler_t sampler = (CLK_NORMALIZED_COORDS_FALSE |
13243                                CLK_FILTER_LINEAR);
13244
13245     float angle = (float)index / 100.0f;
13246
13247     float2 dst_dim = convert_float2(get_image_dim(dst));
13248     float2 src_dim = convert_float2(get_image_dim(src));
13249
13250     float2 dst_cen = dst_dim / 2.0f;
13251     float2 src_cen = src_dim / 2.0f;
13252
13253     int2   dst_loc = (int2)(get_global_id(0), get_global_id(1));
13254
13255     float2 dst_pos = convert_float2(dst_loc) - dst_cen;
13256     float2 src_pos = {
13257         cos(angle) * dst_pos.x - sin(angle) * dst_pos.y,
13258         sin(angle) * dst_pos.x + cos(angle) * dst_pos.y
13259     };
13260     src_pos = src_pos * src_dim / dst_dim;
13261
13262     float2 src_loc = src_pos + src_cen;
13263
13264     if (src_loc.x < 0.0f      || src_loc.y < 0.0f ||
13265         src_loc.x > src_dim.x || src_loc.y > src_dim.y)
13266         write_imagef(dst, dst_loc, 0.5f);
13267     else
13268         write_imagef(dst, dst_loc, read_imagef(src, sampler, src_loc));
13269 }
13270 @end verbatim
13271
13272 @item
13273 Blend two inputs together, with the amount of each input used varying
13274 with the index counter.
13275 @verbatim
13276 __kernel void blend_images(__write_only image2d_t dst,
13277                            unsigned int index,
13278                            __read_only  image2d_t src1,
13279                            __read_only  image2d_t src2)
13280 {
13281     const sampler_t sampler = (CLK_NORMALIZED_COORDS_FALSE |
13282                                CLK_FILTER_LINEAR);
13283
13284     float blend = (cos((float)index / 50.0f) + 1.0f) / 2.0f;
13285
13286     int2  dst_loc = (int2)(get_global_id(0), get_global_id(1));
13287     int2 src1_loc = dst_loc * get_image_dim(src1) / get_image_dim(dst);
13288     int2 src2_loc = dst_loc * get_image_dim(src2) / get_image_dim(dst);
13289
13290     float4 val1 = read_imagef(src1, sampler, src1_loc);
13291     float4 val2 = read_imagef(src2, sampler, src2_loc);
13292
13293     write_imagef(dst, dst_loc, val1 * blend + val2 * (1.0f - blend));
13294 }
13295 @end verbatim
13296
13297 @end itemize
13298
13299 @section pseudocolor
13300
13301 Alter frame colors in video with pseudocolors.
13302
13303 This filter accept the following options:
13304
13305 @table @option
13306 @item c0
13307 set pixel first component expression
13308
13309 @item c1
13310 set pixel second component expression
13311
13312 @item c2
13313 set pixel third component expression
13314
13315 @item c3
13316 set pixel fourth component expression, corresponds to the alpha component
13317
13318 @item i
13319 set component to use as base for altering colors
13320 @end table
13321
13322 Each of them specifies the expression to use for computing the lookup table for
13323 the corresponding pixel component values.
13324
13325 The expressions can contain the following constants and functions:
13326
13327 @table @option
13328 @item w
13329 @item h
13330 The input width and height.
13331
13332 @item val
13333 The input value for the pixel component.
13334
13335 @item ymin, umin, vmin, amin
13336 The minimum allowed component value.
13337
13338 @item ymax, umax, vmax, amax
13339 The maximum allowed component value.
13340 @end table
13341
13342 All expressions default to "val".
13343
13344 @subsection Examples
13345
13346 @itemize
13347 @item
13348 Change too high luma values to gradient:
13349 @example
13350 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'"
13351 @end example
13352 @end itemize
13353
13354 @section psnr
13355
13356 Obtain the average, maximum and minimum PSNR (Peak Signal to Noise
13357 Ratio) between two input videos.
13358
13359 This filter takes in input two input videos, the first input is
13360 considered the "main" source and is passed unchanged to the
13361 output. The second input is used as a "reference" video for computing
13362 the PSNR.
13363
13364 Both video inputs must have the same resolution and pixel format for
13365 this filter to work correctly. Also it assumes that both inputs
13366 have the same number of frames, which are compared one by one.
13367
13368 The obtained average PSNR is printed through the logging system.
13369
13370 The filter stores the accumulated MSE (mean squared error) of each
13371 frame, and at the end of the processing it is averaged across all frames
13372 equally, and the following formula is applied to obtain the PSNR:
13373
13374 @example
13375 PSNR = 10*log10(MAX^2/MSE)
13376 @end example
13377
13378 Where MAX is the average of the maximum values of each component of the
13379 image.
13380
13381 The description of the accepted parameters follows.
13382
13383 @table @option
13384 @item stats_file, f
13385 If specified the filter will use the named file to save the PSNR of
13386 each individual frame. When filename equals "-" the data is sent to
13387 standard output.
13388
13389 @item stats_version
13390 Specifies which version of the stats file format to use. Details of
13391 each format are written below.
13392 Default value is 1.
13393
13394 @item stats_add_max
13395 Determines whether the max value is output to the stats log.
13396 Default value is 0.
13397 Requires stats_version >= 2. If this is set and stats_version < 2,
13398 the filter will return an error.
13399 @end table
13400
13401 This filter also supports the @ref{framesync} options.
13402
13403 The file printed if @var{stats_file} is selected, contains a sequence of
13404 key/value pairs of the form @var{key}:@var{value} for each compared
13405 couple of frames.
13406
13407 If a @var{stats_version} greater than 1 is specified, a header line precedes
13408 the list of per-frame-pair stats, with key value pairs following the frame
13409 format with the following parameters:
13410
13411 @table @option
13412 @item psnr_log_version
13413 The version of the log file format. Will match @var{stats_version}.
13414
13415 @item fields
13416 A comma separated list of the per-frame-pair parameters included in
13417 the log.
13418 @end table
13419
13420 A description of each shown per-frame-pair parameter follows:
13421
13422 @table @option
13423 @item n
13424 sequential number of the input frame, starting from 1
13425
13426 @item mse_avg
13427 Mean Square Error pixel-by-pixel average difference of the compared
13428 frames, averaged over all the image components.
13429
13430 @item mse_y, mse_u, mse_v, mse_r, mse_g, mse_b, mse_a
13431 Mean Square Error pixel-by-pixel average difference of the compared
13432 frames for the component specified by the suffix.
13433
13434 @item psnr_y, psnr_u, psnr_v, psnr_r, psnr_g, psnr_b, psnr_a
13435 Peak Signal to Noise ratio of the compared frames for the component
13436 specified by the suffix.
13437
13438 @item max_avg, max_y, max_u, max_v
13439 Maximum allowed value for each channel, and average over all
13440 channels.
13441 @end table
13442
13443 For example:
13444 @example
13445 movie=ref_movie.mpg, setpts=PTS-STARTPTS [main];
13446 [main][ref] psnr="stats_file=stats.log" [out]
13447 @end example
13448
13449 On this example the input file being processed is compared with the
13450 reference file @file{ref_movie.mpg}. The PSNR of each individual frame
13451 is stored in @file{stats.log}.
13452
13453 @anchor{pullup}
13454 @section pullup
13455
13456 Pulldown reversal (inverse telecine) filter, capable of handling mixed
13457 hard-telecine, 24000/1001 fps progressive, and 30000/1001 fps progressive
13458 content.
13459
13460 The pullup filter is designed to take advantage of future context in making
13461 its decisions. This filter is stateless in the sense that it does not lock
13462 onto a pattern to follow, but it instead looks forward to the following
13463 fields in order to identify matches and rebuild progressive frames.
13464
13465 To produce content with an even framerate, insert the fps filter after
13466 pullup, use @code{fps=24000/1001} if the input frame rate is 29.97fps,
13467 @code{fps=24} for 30fps and the (rare) telecined 25fps input.
13468
13469 The filter accepts the following options:
13470
13471 @table @option
13472 @item jl
13473 @item jr
13474 @item jt
13475 @item jb
13476 These options set the amount of "junk" to ignore at the left, right, top, and
13477 bottom of the image, respectively. Left and right are in units of 8 pixels,
13478 while top and bottom are in units of 2 lines.
13479 The default is 8 pixels on each side.
13480
13481 @item sb
13482 Set the strict breaks. Setting this option to 1 will reduce the chances of
13483 filter generating an occasional mismatched frame, but it may also cause an
13484 excessive number of frames to be dropped during high motion sequences.
13485 Conversely, setting it to -1 will make filter match fields more easily.
13486 This may help processing of video where there is slight blurring between
13487 the fields, but may also cause there to be interlaced frames in the output.
13488 Default value is @code{0}.
13489
13490 @item mp
13491 Set the metric plane to use. It accepts the following values:
13492 @table @samp
13493 @item l
13494 Use luma plane.
13495
13496 @item u
13497 Use chroma blue plane.
13498
13499 @item v
13500 Use chroma red plane.
13501 @end table
13502
13503 This option may be set to use chroma plane instead of the default luma plane
13504 for doing filter's computations. This may improve accuracy on very clean
13505 source material, but more likely will decrease accuracy, especially if there
13506 is chroma noise (rainbow effect) or any grayscale video.
13507 The main purpose of setting @option{mp} to a chroma plane is to reduce CPU
13508 load and make pullup usable in realtime on slow machines.
13509 @end table
13510
13511 For best results (without duplicated frames in the output file) it is
13512 necessary to change the output frame rate. For example, to inverse
13513 telecine NTSC input:
13514 @example
13515 ffmpeg -i input -vf pullup -r 24000/1001 ...
13516 @end example
13517
13518 @section qp
13519
13520 Change video quantization parameters (QP).
13521
13522 The filter accepts the following option:
13523
13524 @table @option
13525 @item qp
13526 Set expression for quantization parameter.
13527 @end table
13528
13529 The expression is evaluated through the eval API and can contain, among others,
13530 the following constants:
13531
13532 @table @var
13533 @item known
13534 1 if index is not 129, 0 otherwise.
13535
13536 @item qp
13537 Sequential index starting from -129 to 128.
13538 @end table
13539
13540 @subsection Examples
13541
13542 @itemize
13543 @item
13544 Some equation like:
13545 @example
13546 qp=2+2*sin(PI*qp)
13547 @end example
13548 @end itemize
13549
13550 @section random
13551
13552 Flush video frames from internal cache of frames into a random order.
13553 No frame is discarded.
13554 Inspired by @ref{frei0r} nervous filter.
13555
13556 @table @option
13557 @item frames
13558 Set size in number of frames of internal cache, in range from @code{2} to
13559 @code{512}. Default is @code{30}.
13560
13561 @item seed
13562 Set seed for random number generator, must be an integer included between
13563 @code{0} and @code{UINT32_MAX}. If not specified, or if explicitly set to
13564 less than @code{0}, the filter will try to use a good random seed on a
13565 best effort basis.
13566 @end table
13567
13568 @section readeia608
13569
13570 Read closed captioning (EIA-608) information from the top lines of a video frame.
13571
13572 This filter adds frame metadata for @code{lavfi.readeia608.X.cc} and
13573 @code{lavfi.readeia608.X.line}, where @code{X} is the number of the identified line
13574 with EIA-608 data (starting from 0). A description of each metadata value follows:
13575
13576 @table @option
13577 @item lavfi.readeia608.X.cc
13578 The two bytes stored as EIA-608 data (printed in hexadecimal).
13579
13580 @item lavfi.readeia608.X.line
13581 The number of the line on which the EIA-608 data was identified and read.
13582 @end table
13583
13584 This filter accepts the following options:
13585
13586 @table @option
13587 @item scan_min
13588 Set the line to start scanning for EIA-608 data. Default is @code{0}.
13589
13590 @item scan_max
13591 Set the line to end scanning for EIA-608 data. Default is @code{29}.
13592
13593 @item mac
13594 Set minimal acceptable amplitude change for sync codes detection.
13595 Default is @code{0.2}. Allowed range is @code{[0.001 - 1]}.
13596
13597 @item spw
13598 Set the ratio of width reserved for sync code detection.
13599 Default is @code{0.27}. Allowed range is @code{[0.01 - 0.7]}.
13600
13601 @item mhd
13602 Set the max peaks height difference for sync code detection.
13603 Default is @code{0.1}. Allowed range is @code{[0.0 - 0.5]}.
13604
13605 @item mpd
13606 Set max peaks period difference for sync code detection.
13607 Default is @code{0.1}. Allowed range is @code{[0.0 - 0.5]}.
13608
13609 @item msd
13610 Set the first two max start code bits differences.
13611 Default is @code{0.02}. Allowed range is @code{[0.0 - 0.5]}.
13612
13613 @item bhd
13614 Set the minimum ratio of bits height compared to 3rd start code bit.
13615 Default is @code{0.75}. Allowed range is @code{[0.01 - 1]}.
13616
13617 @item th_w
13618 Set the white color threshold. Default is @code{0.35}. Allowed range is @code{[0.1 - 1]}.
13619
13620 @item th_b
13621 Set the black color threshold. Default is @code{0.15}. Allowed range is @code{[0.0 - 0.5]}.
13622
13623 @item chp
13624 Enable checking the parity bit. In the event of a parity error, the filter will output
13625 @code{0x00} for that character. Default is false.
13626 @end table
13627
13628 @subsection Examples
13629
13630 @itemize
13631 @item
13632 Output a csv with presentation time and the first two lines of identified EIA-608 captioning data.
13633 @example
13634 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
13635 @end example
13636 @end itemize
13637
13638 @section readvitc
13639
13640 Read vertical interval timecode (VITC) information from the top lines of a
13641 video frame.
13642
13643 The filter adds frame metadata key @code{lavfi.readvitc.tc_str} with the
13644 timecode value, if a valid timecode has been detected. Further metadata key
13645 @code{lavfi.readvitc.found} is set to 0/1 depending on whether
13646 timecode data has been found or not.
13647
13648 This filter accepts the following options:
13649
13650 @table @option
13651 @item scan_max
13652 Set the maximum number of lines to scan for VITC data. If the value is set to
13653 @code{-1} the full video frame is scanned. Default is @code{45}.
13654
13655 @item thr_b
13656 Set the luma threshold for black. Accepts float numbers in the range [0.0,1.0],
13657 default value is @code{0.2}. The value must be equal or less than @code{thr_w}.
13658
13659 @item thr_w
13660 Set the luma threshold for white. Accepts float numbers in the range [0.0,1.0],
13661 default value is @code{0.6}. The value must be equal or greater than @code{thr_b}.
13662 @end table
13663
13664 @subsection Examples
13665
13666 @itemize
13667 @item
13668 Detect and draw VITC data onto the video frame; if no valid VITC is detected,
13669 draw @code{--:--:--:--} as a placeholder:
13670 @example
13671 ffmpeg -i input.avi -filter:v 'readvitc,drawtext=fontfile=FreeMono.ttf:text=%@{metadata\\:lavfi.readvitc.tc_str\\:--\\\\\\:--\\\\\\:--\\\\\\:--@}:x=(w-tw)/2:y=400-ascent'
13672 @end example
13673 @end itemize
13674
13675 @section remap
13676
13677 Remap pixels using 2nd: Xmap and 3rd: Ymap input video stream.
13678
13679 Destination pixel at position (X, Y) will be picked from source (x, y) position
13680 where x = Xmap(X, Y) and y = Ymap(X, Y). If mapping values are out of range, zero
13681 value for pixel will be used for destination pixel.
13682
13683 Xmap and Ymap input video streams must be of same dimensions. Output video stream
13684 will have Xmap/Ymap video stream dimensions.
13685 Xmap and Ymap input video streams are 16bit depth, single channel.
13686
13687 @section removegrain
13688
13689 The removegrain filter is a spatial denoiser for progressive video.
13690
13691 @table @option
13692 @item m0
13693 Set mode for the first plane.
13694
13695 @item m1
13696 Set mode for the second plane.
13697
13698 @item m2
13699 Set mode for the third plane.
13700
13701 @item m3
13702 Set mode for the fourth plane.
13703 @end table
13704
13705 Range of mode is from 0 to 24. Description of each mode follows:
13706
13707 @table @var
13708 @item 0
13709 Leave input plane unchanged. Default.
13710
13711 @item 1
13712 Clips the pixel with the minimum and maximum of the 8 neighbour pixels.
13713
13714 @item 2
13715 Clips the pixel with the second minimum and maximum of the 8 neighbour pixels.
13716
13717 @item 3
13718 Clips the pixel with the third minimum and maximum of the 8 neighbour pixels.
13719
13720 @item 4
13721 Clips the pixel with the fourth minimum and maximum of the 8 neighbour pixels.
13722 This is equivalent to a median filter.
13723
13724 @item 5
13725 Line-sensitive clipping giving the minimal change.
13726
13727 @item 6
13728 Line-sensitive clipping, intermediate.
13729
13730 @item 7
13731 Line-sensitive clipping, intermediate.
13732
13733 @item 8
13734 Line-sensitive clipping, intermediate.
13735
13736 @item 9
13737 Line-sensitive clipping on a line where the neighbours pixels are the closest.
13738
13739 @item 10
13740 Replaces the target pixel with the closest neighbour.
13741
13742 @item 11
13743 [1 2 1] horizontal and vertical kernel blur.
13744
13745 @item 12
13746 Same as mode 11.
13747
13748 @item 13
13749 Bob mode, interpolates top field from the line where the neighbours
13750 pixels are the closest.
13751
13752 @item 14
13753 Bob mode, interpolates bottom field from the line where the neighbours
13754 pixels are the closest.
13755
13756 @item 15
13757 Bob mode, interpolates top field. Same as 13 but with a more complicated
13758 interpolation formula.
13759
13760 @item 16
13761 Bob mode, interpolates bottom field. Same as 14 but with a more complicated
13762 interpolation formula.
13763
13764 @item 17
13765 Clips the pixel with the minimum and maximum of respectively the maximum and
13766 minimum of each pair of opposite neighbour pixels.
13767
13768 @item 18
13769 Line-sensitive clipping using opposite neighbours whose greatest distance from
13770 the current pixel is minimal.
13771
13772 @item 19
13773 Replaces the pixel with the average of its 8 neighbours.
13774
13775 @item 20
13776 Averages the 9 pixels ([1 1 1] horizontal and vertical blur).
13777
13778 @item 21
13779 Clips pixels using the averages of opposite neighbour.
13780
13781 @item 22
13782 Same as mode 21 but simpler and faster.
13783
13784 @item 23
13785 Small edge and halo removal, but reputed useless.
13786
13787 @item 24
13788 Similar as 23.
13789 @end table
13790
13791 @section removelogo
13792
13793 Suppress a TV station logo, using an image file to determine which
13794 pixels comprise the logo. It works by filling in the pixels that
13795 comprise the logo with neighboring pixels.
13796
13797 The filter accepts the following options:
13798
13799 @table @option
13800 @item filename, f
13801 Set the filter bitmap file, which can be any image format supported by
13802 libavformat. The width and height of the image file must match those of the
13803 video stream being processed.
13804 @end table
13805
13806 Pixels in the provided bitmap image with a value of zero are not
13807 considered part of the logo, non-zero pixels are considered part of
13808 the logo. If you use white (255) for the logo and black (0) for the
13809 rest, you will be safe. For making the filter bitmap, it is
13810 recommended to take a screen capture of a black frame with the logo
13811 visible, and then using a threshold filter followed by the erode
13812 filter once or twice.
13813
13814 If needed, little splotches can be fixed manually. Remember that if
13815 logo pixels are not covered, the filter quality will be much
13816 reduced. Marking too many pixels as part of the logo does not hurt as
13817 much, but it will increase the amount of blurring needed to cover over
13818 the image and will destroy more information than necessary, and extra
13819 pixels will slow things down on a large logo.
13820
13821 @section repeatfields
13822
13823 This filter uses the repeat_field flag from the Video ES headers and hard repeats
13824 fields based on its value.
13825
13826 @section reverse
13827
13828 Reverse a video clip.
13829
13830 Warning: This filter requires memory to buffer the entire clip, so trimming
13831 is suggested.
13832
13833 @subsection Examples
13834
13835 @itemize
13836 @item
13837 Take the first 5 seconds of a clip, and reverse it.
13838 @example
13839 trim=end=5,reverse
13840 @end example
13841 @end itemize
13842
13843 @section roberts
13844 Apply roberts cross operator to input video stream.
13845
13846 The filter accepts the following option:
13847
13848 @table @option
13849 @item planes
13850 Set which planes will be processed, unprocessed planes will be copied.
13851 By default value 0xf, all planes will be processed.
13852
13853 @item scale
13854 Set value which will be multiplied with filtered result.
13855
13856 @item delta
13857 Set value which will be added to filtered result.
13858 @end table
13859
13860 @section rotate
13861
13862 Rotate video by an arbitrary angle expressed in radians.
13863
13864 The filter accepts the following options:
13865
13866 A description of the optional parameters follows.
13867 @table @option
13868 @item angle, a
13869 Set an expression for the angle by which to rotate the input video
13870 clockwise, expressed as a number of radians. A negative value will
13871 result in a counter-clockwise rotation. By default it is set to "0".
13872
13873 This expression is evaluated for each frame.
13874
13875 @item out_w, ow
13876 Set the output width expression, default value is "iw".
13877 This expression is evaluated just once during configuration.
13878
13879 @item out_h, oh
13880 Set the output height expression, default value is "ih".
13881 This expression is evaluated just once during configuration.
13882
13883 @item bilinear
13884 Enable bilinear interpolation if set to 1, a value of 0 disables
13885 it. Default value is 1.
13886
13887 @item fillcolor, c
13888 Set the color used to fill the output area not covered by the rotated
13889 image. For the general syntax of this option, check the
13890 @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
13891 If the special value "none" is selected then no
13892 background is printed (useful for example if the background is never shown).
13893
13894 Default value is "black".
13895 @end table
13896
13897 The expressions for the angle and the output size can contain the
13898 following constants and functions:
13899
13900 @table @option
13901 @item n
13902 sequential number of the input frame, starting from 0. It is always NAN
13903 before the first frame is filtered.
13904
13905 @item t
13906 time in seconds of the input frame, it is set to 0 when the filter is
13907 configured. It is always NAN before the first frame is filtered.
13908
13909 @item hsub
13910 @item vsub
13911 horizontal and vertical chroma subsample values. For example for the
13912 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
13913
13914 @item in_w, iw
13915 @item in_h, ih
13916 the input video width and height
13917
13918 @item out_w, ow
13919 @item out_h, oh
13920 the output width and height, that is the size of the padded area as
13921 specified by the @var{width} and @var{height} expressions
13922
13923 @item rotw(a)
13924 @item roth(a)
13925 the minimal width/height required for completely containing the input
13926 video rotated by @var{a} radians.
13927
13928 These are only available when computing the @option{out_w} and
13929 @option{out_h} expressions.
13930 @end table
13931
13932 @subsection Examples
13933
13934 @itemize
13935 @item
13936 Rotate the input by PI/6 radians clockwise:
13937 @example
13938 rotate=PI/6
13939 @end example
13940
13941 @item
13942 Rotate the input by PI/6 radians counter-clockwise:
13943 @example
13944 rotate=-PI/6
13945 @end example
13946
13947 @item
13948 Rotate the input by 45 degrees clockwise:
13949 @example
13950 rotate=45*PI/180
13951 @end example
13952
13953 @item
13954 Apply a constant rotation with period T, starting from an angle of PI/3:
13955 @example
13956 rotate=PI/3+2*PI*t/T
13957 @end example
13958
13959 @item
13960 Make the input video rotation oscillating with a period of T
13961 seconds and an amplitude of A radians:
13962 @example
13963 rotate=A*sin(2*PI/T*t)
13964 @end example
13965
13966 @item
13967 Rotate the video, output size is chosen so that the whole rotating
13968 input video is always completely contained in the output:
13969 @example
13970 rotate='2*PI*t:ow=hypot(iw,ih):oh=ow'
13971 @end example
13972
13973 @item
13974 Rotate the video, reduce the output size so that no background is ever
13975 shown:
13976 @example
13977 rotate=2*PI*t:ow='min(iw,ih)/sqrt(2)':oh=ow:c=none
13978 @end example
13979 @end itemize
13980
13981 @subsection Commands
13982
13983 The filter supports the following commands:
13984
13985 @table @option
13986 @item a, angle
13987 Set the angle expression.
13988 The command accepts the same syntax of the corresponding option.
13989
13990 If the specified expression is not valid, it is kept at its current
13991 value.
13992 @end table
13993
13994 @section sab
13995
13996 Apply Shape Adaptive Blur.
13997
13998 The filter accepts the following options:
13999
14000 @table @option
14001 @item luma_radius, lr
14002 Set luma blur filter strength, must be a value in range 0.1-4.0, default
14003 value is 1.0. A greater value will result in a more blurred image, and
14004 in slower processing.
14005
14006 @item luma_pre_filter_radius, lpfr
14007 Set luma pre-filter radius, must be a value in the 0.1-2.0 range, default
14008 value is 1.0.
14009
14010 @item luma_strength, ls
14011 Set luma maximum difference between pixels to still be considered, must
14012 be a value in the 0.1-100.0 range, default value is 1.0.
14013
14014 @item chroma_radius, cr
14015 Set chroma blur filter strength, must be a value in range -0.9-4.0. A
14016 greater value will result in a more blurred image, and in slower
14017 processing.
14018
14019 @item chroma_pre_filter_radius, cpfr
14020 Set chroma pre-filter radius, must be a value in the -0.9-2.0 range.
14021
14022 @item chroma_strength, cs
14023 Set chroma maximum difference between pixels to still be considered,
14024 must be a value in the -0.9-100.0 range.
14025 @end table
14026
14027 Each chroma option value, if not explicitly specified, is set to the
14028 corresponding luma option value.
14029
14030 @anchor{scale}
14031 @section scale
14032
14033 Scale (resize) the input video, using the libswscale library.
14034
14035 The scale filter forces the output display aspect ratio to be the same
14036 of the input, by changing the output sample aspect ratio.
14037
14038 If the input image format is different from the format requested by
14039 the next filter, the scale filter will convert the input to the
14040 requested format.
14041
14042 @subsection Options
14043 The filter accepts the following options, or any of the options
14044 supported by the libswscale scaler.
14045
14046 See @ref{scaler_options,,the ffmpeg-scaler manual,ffmpeg-scaler} for
14047 the complete list of scaler options.
14048
14049 @table @option
14050 @item width, w
14051 @item height, h
14052 Set the output video dimension expression. Default value is the input
14053 dimension.
14054
14055 If the @var{width} or @var{w} value is 0, the input width is used for
14056 the output. If the @var{height} or @var{h} value is 0, the input height
14057 is used for the output.
14058
14059 If one and only one of the values is -n with n >= 1, the scale filter
14060 will use a value that maintains the aspect ratio of the input image,
14061 calculated from the other specified dimension. After that it will,
14062 however, make sure that the calculated dimension is divisible by n and
14063 adjust the value if necessary.
14064
14065 If both values are -n with n >= 1, the behavior will be identical to
14066 both values being set to 0 as previously detailed.
14067
14068 See below for the list of accepted constants for use in the dimension
14069 expression.
14070
14071 @item eval
14072 Specify when to evaluate @var{width} and @var{height} expression. It accepts the following values:
14073
14074 @table @samp
14075 @item init
14076 Only evaluate expressions once during the filter initialization or when a command is processed.
14077
14078 @item frame
14079 Evaluate expressions for each incoming frame.
14080
14081 @end table
14082
14083 Default value is @samp{init}.
14084
14085
14086 @item interl
14087 Set the interlacing mode. It accepts the following values:
14088
14089 @table @samp
14090 @item 1
14091 Force interlaced aware scaling.
14092
14093 @item 0
14094 Do not apply interlaced scaling.
14095
14096 @item -1
14097 Select interlaced aware scaling depending on whether the source frames
14098 are flagged as interlaced or not.
14099 @end table
14100
14101 Default value is @samp{0}.
14102
14103 @item flags
14104 Set libswscale scaling flags. See
14105 @ref{sws_flags,,the ffmpeg-scaler manual,ffmpeg-scaler} for the
14106 complete list of values. If not explicitly specified the filter applies
14107 the default flags.
14108
14109
14110 @item param0, param1
14111 Set libswscale input parameters for scaling algorithms that need them. See
14112 @ref{sws_params,,the ffmpeg-scaler manual,ffmpeg-scaler} for the
14113 complete documentation. If not explicitly specified the filter applies
14114 empty parameters.
14115
14116
14117
14118 @item size, s
14119 Set the video size. For the syntax of this option, check the
14120 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
14121
14122 @item in_color_matrix
14123 @item out_color_matrix
14124 Set in/output YCbCr color space type.
14125
14126 This allows the autodetected value to be overridden as well as allows forcing
14127 a specific value used for the output and encoder.
14128
14129 If not specified, the color space type depends on the pixel format.
14130
14131 Possible values:
14132
14133 @table @samp
14134 @item auto
14135 Choose automatically.
14136
14137 @item bt709
14138 Format conforming to International Telecommunication Union (ITU)
14139 Recommendation BT.709.
14140
14141 @item fcc
14142 Set color space conforming to the United States Federal Communications
14143 Commission (FCC) Code of Federal Regulations (CFR) Title 47 (2003) 73.682 (a).
14144
14145 @item bt601
14146 Set color space conforming to:
14147
14148 @itemize
14149 @item
14150 ITU Radiocommunication Sector (ITU-R) Recommendation BT.601
14151
14152 @item
14153 ITU-R Rec. BT.470-6 (1998) Systems B, B1, and G
14154
14155 @item
14156 Society of Motion Picture and Television Engineers (SMPTE) ST 170:2004
14157
14158 @end itemize
14159
14160 @item smpte240m
14161 Set color space conforming to SMPTE ST 240:1999.
14162 @end table
14163
14164 @item in_range
14165 @item out_range
14166 Set in/output YCbCr sample range.
14167
14168 This allows the autodetected value to be overridden as well as allows forcing
14169 a specific value used for the output and encoder. If not specified, the
14170 range depends on the pixel format. Possible values:
14171
14172 @table @samp
14173 @item auto/unknown
14174 Choose automatically.
14175
14176 @item jpeg/full/pc
14177 Set full range (0-255 in case of 8-bit luma).
14178
14179 @item mpeg/limited/tv
14180 Set "MPEG" range (16-235 in case of 8-bit luma).
14181 @end table
14182
14183 @item force_original_aspect_ratio
14184 Enable decreasing or increasing output video width or height if necessary to
14185 keep the original aspect ratio. Possible values:
14186
14187 @table @samp
14188 @item disable
14189 Scale the video as specified and disable this feature.
14190
14191 @item decrease
14192 The output video dimensions will automatically be decreased if needed.
14193
14194 @item increase
14195 The output video dimensions will automatically be increased if needed.
14196
14197 @end table
14198
14199 One useful instance of this option is that when you know a specific device's
14200 maximum allowed resolution, you can use this to limit the output video to
14201 that, while retaining the aspect ratio. For example, device A allows
14202 1280x720 playback, and your video is 1920x800. Using this option (set it to
14203 decrease) and specifying 1280x720 to the command line makes the output
14204 1280x533.
14205
14206 Please note that this is a different thing than specifying -1 for @option{w}
14207 or @option{h}, you still need to specify the output resolution for this option
14208 to work.
14209
14210 @end table
14211
14212 The values of the @option{w} and @option{h} options are expressions
14213 containing the following constants:
14214
14215 @table @var
14216 @item in_w
14217 @item in_h
14218 The input width and height
14219
14220 @item iw
14221 @item ih
14222 These are the same as @var{in_w} and @var{in_h}.
14223
14224 @item out_w
14225 @item out_h
14226 The output (scaled) width and height
14227
14228 @item ow
14229 @item oh
14230 These are the same as @var{out_w} and @var{out_h}
14231
14232 @item a
14233 The same as @var{iw} / @var{ih}
14234
14235 @item sar
14236 input sample aspect ratio
14237
14238 @item dar
14239 The input display aspect ratio. Calculated from @code{(iw / ih) * sar}.
14240
14241 @item hsub
14242 @item vsub
14243 horizontal and vertical input chroma subsample values. For example for the
14244 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
14245
14246 @item ohsub
14247 @item ovsub
14248 horizontal and vertical output chroma subsample values. For example for the
14249 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
14250 @end table
14251
14252 @subsection Examples
14253
14254 @itemize
14255 @item
14256 Scale the input video to a size of 200x100
14257 @example
14258 scale=w=200:h=100
14259 @end example
14260
14261 This is equivalent to:
14262 @example
14263 scale=200:100
14264 @end example
14265
14266 or:
14267 @example
14268 scale=200x100
14269 @end example
14270
14271 @item
14272 Specify a size abbreviation for the output size:
14273 @example
14274 scale=qcif
14275 @end example
14276
14277 which can also be written as:
14278 @example
14279 scale=size=qcif
14280 @end example
14281
14282 @item
14283 Scale the input to 2x:
14284 @example
14285 scale=w=2*iw:h=2*ih
14286 @end example
14287
14288 @item
14289 The above is the same as:
14290 @example
14291 scale=2*in_w:2*in_h
14292 @end example
14293
14294 @item
14295 Scale the input to 2x with forced interlaced scaling:
14296 @example
14297 scale=2*iw:2*ih:interl=1
14298 @end example
14299
14300 @item
14301 Scale the input to half size:
14302 @example
14303 scale=w=iw/2:h=ih/2
14304 @end example
14305
14306 @item
14307 Increase the width, and set the height to the same size:
14308 @example
14309 scale=3/2*iw:ow
14310 @end example
14311
14312 @item
14313 Seek Greek harmony:
14314 @example
14315 scale=iw:1/PHI*iw
14316 scale=ih*PHI:ih
14317 @end example
14318
14319 @item
14320 Increase the height, and set the width to 3/2 of the height:
14321 @example
14322 scale=w=3/2*oh:h=3/5*ih
14323 @end example
14324
14325 @item
14326 Increase the size, making the size a multiple of the chroma
14327 subsample values:
14328 @example
14329 scale="trunc(3/2*iw/hsub)*hsub:trunc(3/2*ih/vsub)*vsub"
14330 @end example
14331
14332 @item
14333 Increase the width to a maximum of 500 pixels,
14334 keeping the same aspect ratio as the input:
14335 @example
14336 scale=w='min(500\, iw*3/2):h=-1'
14337 @end example
14338
14339 @item
14340 Make pixels square by combining scale and setsar:
14341 @example
14342 scale='trunc(ih*dar):ih',setsar=1/1
14343 @end example
14344
14345 @item
14346 Make pixels square by combining scale and setsar,
14347 making sure the resulting resolution is even (required by some codecs):
14348 @example
14349 scale='trunc(ih*dar/2)*2:trunc(ih/2)*2',setsar=1/1
14350 @end example
14351 @end itemize
14352
14353 @subsection Commands
14354
14355 This filter supports the following commands:
14356 @table @option
14357 @item width, w
14358 @item height, h
14359 Set the output video dimension expression.
14360 The command accepts the same syntax of the corresponding option.
14361
14362 If the specified expression is not valid, it is kept at its current
14363 value.
14364 @end table
14365
14366 @section scale_npp
14367
14368 Use the NVIDIA Performance Primitives (libnpp) to perform scaling and/or pixel
14369 format conversion on CUDA video frames. Setting the output width and height
14370 works in the same way as for the @var{scale} filter.
14371
14372 The following additional options are accepted:
14373 @table @option
14374 @item format
14375 The pixel format of the output CUDA frames. If set to the string "same" (the
14376 default), the input format will be kept. Note that automatic format negotiation
14377 and conversion is not yet supported for hardware frames
14378
14379 @item interp_algo
14380 The interpolation algorithm used for resizing. One of the following:
14381 @table @option
14382 @item nn
14383 Nearest neighbour.
14384
14385 @item linear
14386 @item cubic
14387 @item cubic2p_bspline
14388 2-parameter cubic (B=1, C=0)
14389
14390 @item cubic2p_catmullrom
14391 2-parameter cubic (B=0, C=1/2)
14392
14393 @item cubic2p_b05c03
14394 2-parameter cubic (B=1/2, C=3/10)
14395
14396 @item super
14397 Supersampling
14398
14399 @item lanczos
14400 @end table
14401
14402 @end table
14403
14404 @section scale2ref
14405
14406 Scale (resize) the input video, based on a reference video.
14407
14408 See the scale filter for available options, scale2ref supports the same but
14409 uses the reference video instead of the main input as basis. scale2ref also
14410 supports the following additional constants for the @option{w} and
14411 @option{h} options:
14412
14413 @table @var
14414 @item main_w
14415 @item main_h
14416 The main input video's width and height
14417
14418 @item main_a
14419 The same as @var{main_w} / @var{main_h}
14420
14421 @item main_sar
14422 The main input video's sample aspect ratio
14423
14424 @item main_dar, mdar
14425 The main input video's display aspect ratio. Calculated from
14426 @code{(main_w / main_h) * main_sar}.
14427
14428 @item main_hsub
14429 @item main_vsub
14430 The main input video's horizontal and vertical chroma subsample values.
14431 For example for the pixel format "yuv422p" @var{hsub} is 2 and @var{vsub}
14432 is 1.
14433 @end table
14434
14435 @subsection Examples
14436
14437 @itemize
14438 @item
14439 Scale a subtitle stream (b) to match the main video (a) in size before overlaying
14440 @example
14441 'scale2ref[b][a];[a][b]overlay'
14442 @end example
14443 @end itemize
14444
14445 @anchor{selectivecolor}
14446 @section selectivecolor
14447
14448 Adjust cyan, magenta, yellow and black (CMYK) to certain ranges of colors (such
14449 as "reds", "yellows", "greens", "cyans", ...). The adjustment range is defined
14450 by the "purity" of the color (that is, how saturated it already is).
14451
14452 This filter is similar to the Adobe Photoshop Selective Color tool.
14453
14454 The filter accepts the following options:
14455
14456 @table @option
14457 @item correction_method
14458 Select color correction method.
14459
14460 Available values are:
14461 @table @samp
14462 @item absolute
14463 Specified adjustments are applied "as-is" (added/subtracted to original pixel
14464 component value).
14465 @item relative
14466 Specified adjustments are relative to the original component value.
14467 @end table
14468 Default is @code{absolute}.
14469 @item reds
14470 Adjustments for red pixels (pixels where the red component is the maximum)
14471 @item yellows
14472 Adjustments for yellow pixels (pixels where the blue component is the minimum)
14473 @item greens
14474 Adjustments for green pixels (pixels where the green component is the maximum)
14475 @item cyans
14476 Adjustments for cyan pixels (pixels where the red component is the minimum)
14477 @item blues
14478 Adjustments for blue pixels (pixels where the blue component is the maximum)
14479 @item magentas
14480 Adjustments for magenta pixels (pixels where the green component is the minimum)
14481 @item whites
14482 Adjustments for white pixels (pixels where all components are greater than 128)
14483 @item neutrals
14484 Adjustments for all pixels except pure black and pure white
14485 @item blacks
14486 Adjustments for black pixels (pixels where all components are lesser than 128)
14487 @item psfile
14488 Specify a Photoshop selective color file (@code{.asv}) to import the settings from.
14489 @end table
14490
14491 All the adjustment settings (@option{reds}, @option{yellows}, ...) accept up to
14492 4 space separated floating point adjustment values in the [-1,1] range,
14493 respectively to adjust the amount of cyan, magenta, yellow and black for the
14494 pixels of its range.
14495
14496 @subsection Examples
14497
14498 @itemize
14499 @item
14500 Increase cyan by 50% and reduce yellow by 33% in every green areas, and
14501 increase magenta by 27% in blue areas:
14502 @example
14503 selectivecolor=greens=.5 0 -.33 0:blues=0 .27
14504 @end example
14505
14506 @item
14507 Use a Photoshop selective color preset:
14508 @example
14509 selectivecolor=psfile=MySelectiveColorPresets/Misty.asv
14510 @end example
14511 @end itemize
14512
14513 @anchor{separatefields}
14514 @section separatefields
14515
14516 The @code{separatefields} takes a frame-based video input and splits
14517 each frame into its components fields, producing a new half height clip
14518 with twice the frame rate and twice the frame count.
14519
14520 This filter use field-dominance information in frame to decide which
14521 of each pair of fields to place first in the output.
14522 If it gets it wrong use @ref{setfield} filter before @code{separatefields} filter.
14523
14524 @section setdar, setsar
14525
14526 The @code{setdar} filter sets the Display Aspect Ratio for the filter
14527 output video.
14528
14529 This is done by changing the specified Sample (aka Pixel) Aspect
14530 Ratio, according to the following equation:
14531 @example
14532 @var{DAR} = @var{HORIZONTAL_RESOLUTION} / @var{VERTICAL_RESOLUTION} * @var{SAR}
14533 @end example
14534
14535 Keep in mind that the @code{setdar} filter does not modify the pixel
14536 dimensions of the video frame. Also, the display aspect ratio set by
14537 this filter may be changed by later filters in the filterchain,
14538 e.g. in case of scaling or if another "setdar" or a "setsar" filter is
14539 applied.
14540
14541 The @code{setsar} filter sets the Sample (aka Pixel) Aspect Ratio for
14542 the filter output video.
14543
14544 Note that as a consequence of the application of this filter, the
14545 output display aspect ratio will change according to the equation
14546 above.
14547
14548 Keep in mind that the sample aspect ratio set by the @code{setsar}
14549 filter may be changed by later filters in the filterchain, e.g. if
14550 another "setsar" or a "setdar" filter is applied.
14551
14552 It accepts the following parameters:
14553
14554 @table @option
14555 @item r, ratio, dar (@code{setdar} only), sar (@code{setsar} only)
14556 Set the aspect ratio used by the filter.
14557
14558 The parameter can be a floating point number string, an expression, or
14559 a string of the form @var{num}:@var{den}, where @var{num} and
14560 @var{den} are the numerator and denominator of the aspect ratio. If
14561 the parameter is not specified, it is assumed the value "0".
14562 In case the form "@var{num}:@var{den}" is used, the @code{:} character
14563 should be escaped.
14564
14565 @item max
14566 Set the maximum integer value to use for expressing numerator and
14567 denominator when reducing the expressed aspect ratio to a rational.
14568 Default value is @code{100}.
14569
14570 @end table
14571
14572 The parameter @var{sar} is an expression containing
14573 the following constants:
14574
14575 @table @option
14576 @item E, PI, PHI
14577 These are approximated values for the mathematical constants e
14578 (Euler's number), pi (Greek pi), and phi (the golden ratio).
14579
14580 @item w, h
14581 The input width and height.
14582
14583 @item a
14584 These are the same as @var{w} / @var{h}.
14585
14586 @item sar
14587 The input sample aspect ratio.
14588
14589 @item dar
14590 The input display aspect ratio. It is the same as
14591 (@var{w} / @var{h}) * @var{sar}.
14592
14593 @item hsub, vsub
14594 Horizontal and vertical chroma subsample values. For example, for the
14595 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
14596 @end table
14597
14598 @subsection Examples
14599
14600 @itemize
14601
14602 @item
14603 To change the display aspect ratio to 16:9, specify one of the following:
14604 @example
14605 setdar=dar=1.77777
14606 setdar=dar=16/9
14607 @end example
14608
14609 @item
14610 To change the sample aspect ratio to 10:11, specify:
14611 @example
14612 setsar=sar=10/11
14613 @end example
14614
14615 @item
14616 To set a display aspect ratio of 16:9, and specify a maximum integer value of
14617 1000 in the aspect ratio reduction, use the command:
14618 @example
14619 setdar=ratio=16/9:max=1000
14620 @end example
14621
14622 @end itemize
14623
14624 @anchor{setfield}
14625 @section setfield
14626
14627 Force field for the output video frame.
14628
14629 The @code{setfield} filter marks the interlace type field for the
14630 output frames. It does not change the input frame, but only sets the
14631 corresponding property, which affects how the frame is treated by
14632 following filters (e.g. @code{fieldorder} or @code{yadif}).
14633
14634 The filter accepts the following options:
14635
14636 @table @option
14637
14638 @item mode
14639 Available values are:
14640
14641 @table @samp
14642 @item auto
14643 Keep the same field property.
14644
14645 @item bff
14646 Mark the frame as bottom-field-first.
14647
14648 @item tff
14649 Mark the frame as top-field-first.
14650
14651 @item prog
14652 Mark the frame as progressive.
14653 @end table
14654 @end table
14655
14656 @section showinfo
14657
14658 Show a line containing various information for each input video frame.
14659 The input video is not modified.
14660
14661 The shown line contains a sequence of key/value pairs of the form
14662 @var{key}:@var{value}.
14663
14664 The following values are shown in the output:
14665
14666 @table @option
14667 @item n
14668 The (sequential) number of the input frame, starting from 0.
14669
14670 @item pts
14671 The Presentation TimeStamp of the input frame, expressed as a number of
14672 time base units. The time base unit depends on the filter input pad.
14673
14674 @item pts_time
14675 The Presentation TimeStamp of the input frame, expressed as a number of
14676 seconds.
14677
14678 @item pos
14679 The position of the frame in the input stream, or -1 if this information is
14680 unavailable and/or meaningless (for example in case of synthetic video).
14681
14682 @item fmt
14683 The pixel format name.
14684
14685 @item sar
14686 The sample aspect ratio of the input frame, expressed in the form
14687 @var{num}/@var{den}.
14688
14689 @item s
14690 The size of the input frame. For the syntax of this option, check the
14691 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
14692
14693 @item i
14694 The type of interlaced mode ("P" for "progressive", "T" for top field first, "B"
14695 for bottom field first).
14696
14697 @item iskey
14698 This is 1 if the frame is a key frame, 0 otherwise.
14699
14700 @item type
14701 The picture type of the input frame ("I" for an I-frame, "P" for a
14702 P-frame, "B" for a B-frame, or "?" for an unknown type).
14703 Also refer to the documentation of the @code{AVPictureType} enum and of
14704 the @code{av_get_picture_type_char} function defined in
14705 @file{libavutil/avutil.h}.
14706
14707 @item checksum
14708 The Adler-32 checksum (printed in hexadecimal) of all the planes of the input frame.
14709
14710 @item plane_checksum
14711 The Adler-32 checksum (printed in hexadecimal) of each plane of the input frame,
14712 expressed in the form "[@var{c0} @var{c1} @var{c2} @var{c3}]".
14713 @end table
14714
14715 @section showpalette
14716
14717 Displays the 256 colors palette of each frame. This filter is only relevant for
14718 @var{pal8} pixel format frames.
14719
14720 It accepts the following option:
14721
14722 @table @option
14723 @item s
14724 Set the size of the box used to represent one palette color entry. Default is
14725 @code{30} (for a @code{30x30} pixel box).
14726 @end table
14727
14728 @section shuffleframes
14729
14730 Reorder and/or duplicate and/or drop video frames.
14731
14732 It accepts the following parameters:
14733
14734 @table @option
14735 @item mapping
14736 Set the destination indexes of input frames.
14737 This is space or '|' separated list of indexes that maps input frames to output
14738 frames. Number of indexes also sets maximal value that each index may have.
14739 '-1' index have special meaning and that is to drop frame.
14740 @end table
14741
14742 The first frame has the index 0. The default is to keep the input unchanged.
14743
14744 @subsection Examples
14745
14746 @itemize
14747 @item
14748 Swap second and third frame of every three frames of the input:
14749 @example
14750 ffmpeg -i INPUT -vf "shuffleframes=0 2 1" OUTPUT
14751 @end example
14752
14753 @item
14754 Swap 10th and 1st frame of every ten frames of the input:
14755 @example
14756 ffmpeg -i INPUT -vf "shuffleframes=9 1 2 3 4 5 6 7 8 0" OUTPUT
14757 @end example
14758 @end itemize
14759
14760 @section shuffleplanes
14761
14762 Reorder and/or duplicate video planes.
14763
14764 It accepts the following parameters:
14765
14766 @table @option
14767
14768 @item map0
14769 The index of the input plane to be used as the first output plane.
14770
14771 @item map1
14772 The index of the input plane to be used as the second output plane.
14773
14774 @item map2
14775 The index of the input plane to be used as the third output plane.
14776
14777 @item map3
14778 The index of the input plane to be used as the fourth output plane.
14779
14780 @end table
14781
14782 The first plane has the index 0. The default is to keep the input unchanged.
14783
14784 @subsection Examples
14785
14786 @itemize
14787 @item
14788 Swap the second and third planes of the input:
14789 @example
14790 ffmpeg -i INPUT -vf shuffleplanes=0:2:1:3 OUTPUT
14791 @end example
14792 @end itemize
14793
14794 @anchor{signalstats}
14795 @section signalstats
14796 Evaluate various visual metrics that assist in determining issues associated
14797 with the digitization of analog video media.
14798
14799 By default the filter will log these metadata values:
14800
14801 @table @option
14802 @item YMIN
14803 Display the minimal Y value contained within the input frame. Expressed in
14804 range of [0-255].
14805
14806 @item YLOW
14807 Display the Y value at the 10% percentile within the input frame. Expressed in
14808 range of [0-255].
14809
14810 @item YAVG
14811 Display the average Y value within the input frame. Expressed in range of
14812 [0-255].
14813
14814 @item YHIGH
14815 Display the Y value at the 90% percentile within the input frame. Expressed in
14816 range of [0-255].
14817
14818 @item YMAX
14819 Display the maximum Y value contained within the input frame. Expressed in
14820 range of [0-255].
14821
14822 @item UMIN
14823 Display the minimal U value contained within the input frame. Expressed in
14824 range of [0-255].
14825
14826 @item ULOW
14827 Display the U value at the 10% percentile within the input frame. Expressed in
14828 range of [0-255].
14829
14830 @item UAVG
14831 Display the average U value within the input frame. Expressed in range of
14832 [0-255].
14833
14834 @item UHIGH
14835 Display the U value at the 90% percentile within the input frame. Expressed in
14836 range of [0-255].
14837
14838 @item UMAX
14839 Display the maximum U value contained within the input frame. Expressed in
14840 range of [0-255].
14841
14842 @item VMIN
14843 Display the minimal V value contained within the input frame. Expressed in
14844 range of [0-255].
14845
14846 @item VLOW
14847 Display the V value at the 10% percentile within the input frame. Expressed in
14848 range of [0-255].
14849
14850 @item VAVG
14851 Display the average V value within the input frame. Expressed in range of
14852 [0-255].
14853
14854 @item VHIGH
14855 Display the V value at the 90% percentile within the input frame. Expressed in
14856 range of [0-255].
14857
14858 @item VMAX
14859 Display the maximum V value contained within the input frame. Expressed in
14860 range of [0-255].
14861
14862 @item SATMIN
14863 Display the minimal saturation value contained within the input frame.
14864 Expressed in range of [0-~181.02].
14865
14866 @item SATLOW
14867 Display the saturation value at the 10% percentile within the input frame.
14868 Expressed in range of [0-~181.02].
14869
14870 @item SATAVG
14871 Display the average saturation value within the input frame. Expressed in range
14872 of [0-~181.02].
14873
14874 @item SATHIGH
14875 Display the saturation value at the 90% percentile within the input frame.
14876 Expressed in range of [0-~181.02].
14877
14878 @item SATMAX
14879 Display the maximum saturation value contained within the input frame.
14880 Expressed in range of [0-~181.02].
14881
14882 @item HUEMED
14883 Display the median value for hue within the input frame. Expressed in range of
14884 [0-360].
14885
14886 @item HUEAVG
14887 Display the average value for hue within the input frame. Expressed in range of
14888 [0-360].
14889
14890 @item YDIF
14891 Display the average of sample value difference between all values of the Y
14892 plane in the current frame and corresponding values of the previous input frame.
14893 Expressed in range of [0-255].
14894
14895 @item UDIF
14896 Display the average of sample value difference between all values of the U
14897 plane in the current frame and corresponding values of the previous input frame.
14898 Expressed in range of [0-255].
14899
14900 @item VDIF
14901 Display the average of sample value difference between all values of the V
14902 plane in the current frame and corresponding values of the previous input frame.
14903 Expressed in range of [0-255].
14904
14905 @item YBITDEPTH
14906 Display bit depth of Y plane in current frame.
14907 Expressed in range of [0-16].
14908
14909 @item UBITDEPTH
14910 Display bit depth of U plane in current frame.
14911 Expressed in range of [0-16].
14912
14913 @item VBITDEPTH
14914 Display bit depth of V plane in current frame.
14915 Expressed in range of [0-16].
14916 @end table
14917
14918 The filter accepts the following options:
14919
14920 @table @option
14921 @item stat
14922 @item out
14923
14924 @option{stat} specify an additional form of image analysis.
14925 @option{out} output video with the specified type of pixel highlighted.
14926
14927 Both options accept the following values:
14928
14929 @table @samp
14930 @item tout
14931 Identify @var{temporal outliers} pixels. A @var{temporal outlier} is a pixel
14932 unlike the neighboring pixels of the same field. Examples of temporal outliers
14933 include the results of video dropouts, head clogs, or tape tracking issues.
14934
14935 @item vrep
14936 Identify @var{vertical line repetition}. Vertical line repetition includes
14937 similar rows of pixels within a frame. In born-digital video vertical line
14938 repetition is common, but this pattern is uncommon in video digitized from an
14939 analog source. When it occurs in video that results from the digitization of an
14940 analog source it can indicate concealment from a dropout compensator.
14941
14942 @item brng
14943 Identify pixels that fall outside of legal broadcast range.
14944 @end table
14945
14946 @item color, c
14947 Set the highlight color for the @option{out} option. The default color is
14948 yellow.
14949 @end table
14950
14951 @subsection Examples
14952
14953 @itemize
14954 @item
14955 Output data of various video metrics:
14956 @example
14957 ffprobe -f lavfi movie=example.mov,signalstats="stat=tout+vrep+brng" -show_frames
14958 @end example
14959
14960 @item
14961 Output specific data about the minimum and maximum values of the Y plane per frame:
14962 @example
14963 ffprobe -f lavfi movie=example.mov,signalstats -show_entries frame_tags=lavfi.signalstats.YMAX,lavfi.signalstats.YMIN
14964 @end example
14965
14966 @item
14967 Playback video while highlighting pixels that are outside of broadcast range in red.
14968 @example
14969 ffplay example.mov -vf signalstats="out=brng:color=red"
14970 @end example
14971
14972 @item
14973 Playback video with signalstats metadata drawn over the frame.
14974 @example
14975 ffplay example.mov -vf signalstats=stat=brng+vrep+tout,drawtext=fontfile=FreeSerif.ttf:textfile=signalstat_drawtext.txt
14976 @end example
14977
14978 The contents of signalstat_drawtext.txt used in the command are:
14979 @example
14980 time %@{pts:hms@}
14981 Y (%@{metadata:lavfi.signalstats.YMIN@}-%@{metadata:lavfi.signalstats.YMAX@})
14982 U (%@{metadata:lavfi.signalstats.UMIN@}-%@{metadata:lavfi.signalstats.UMAX@})
14983 V (%@{metadata:lavfi.signalstats.VMIN@}-%@{metadata:lavfi.signalstats.VMAX@})
14984 saturation maximum: %@{metadata:lavfi.signalstats.SATMAX@}
14985
14986 @end example
14987 @end itemize
14988
14989 @anchor{signature}
14990 @section signature
14991
14992 Calculates the MPEG-7 Video Signature. The filter can handle more than one
14993 input. In this case the matching between the inputs can be calculated additionally.
14994 The filter always passes through the first input. The signature of each stream can
14995 be written into a file.
14996
14997 It accepts the following options:
14998
14999 @table @option
15000 @item detectmode
15001 Enable or disable the matching process.
15002
15003 Available values are:
15004
15005 @table @samp
15006 @item off
15007 Disable the calculation of a matching (default).
15008 @item full
15009 Calculate the matching for the whole video and output whether the whole video
15010 matches or only parts.
15011 @item fast
15012 Calculate only until a matching is found or the video ends. Should be faster in
15013 some cases.
15014 @end table
15015
15016 @item nb_inputs
15017 Set the number of inputs. The option value must be a non negative integer.
15018 Default value is 1.
15019
15020 @item filename
15021 Set the path to which the output is written. If there is more than one input,
15022 the path must be a prototype, i.e. must contain %d or %0nd (where n is a positive
15023 integer), that will be replaced with the input number. If no filename is
15024 specified, no output will be written. This is the default.
15025
15026 @item format
15027 Choose the output format.
15028
15029 Available values are:
15030
15031 @table @samp
15032 @item binary
15033 Use the specified binary representation (default).
15034 @item xml
15035 Use the specified xml representation.
15036 @end table
15037
15038 @item th_d
15039 Set threshold to detect one word as similar. The option value must be an integer
15040 greater than zero. The default value is 9000.
15041
15042 @item th_dc
15043 Set threshold to detect all words as similar. The option value must be an integer
15044 greater than zero. The default value is 60000.
15045
15046 @item th_xh
15047 Set threshold to detect frames as similar. The option value must be an integer
15048 greater than zero. The default value is 116.
15049
15050 @item th_di
15051 Set the minimum length of a sequence in frames to recognize it as matching
15052 sequence. The option value must be a non negative integer value.
15053 The default value is 0.
15054
15055 @item th_it
15056 Set the minimum relation, that matching frames to all frames must have.
15057 The option value must be a double value between 0 and 1. The default value is 0.5.
15058 @end table
15059
15060 @subsection Examples
15061
15062 @itemize
15063 @item
15064 To calculate the signature of an input video and store it in signature.bin:
15065 @example
15066 ffmpeg -i input.mkv -vf signature=filename=signature.bin -map 0:v -f null -
15067 @end example
15068
15069 @item
15070 To detect whether two videos match and store the signatures in XML format in
15071 signature0.xml and signature1.xml:
15072 @example
15073 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 -
15074 @end example
15075
15076 @end itemize
15077
15078 @anchor{smartblur}
15079 @section smartblur
15080
15081 Blur the input video without impacting the outlines.
15082
15083 It accepts the following options:
15084
15085 @table @option
15086 @item luma_radius, lr
15087 Set the luma radius. The option value must be a float number in
15088 the range [0.1,5.0] that specifies the variance of the gaussian filter
15089 used to blur the image (slower if larger). Default value is 1.0.
15090
15091 @item luma_strength, ls
15092 Set the luma strength. The option value must be a float number
15093 in the range [-1.0,1.0] that configures the blurring. A value included
15094 in [0.0,1.0] will blur the image whereas a value included in
15095 [-1.0,0.0] will sharpen the image. Default value is 1.0.
15096
15097 @item luma_threshold, lt
15098 Set the luma threshold used as a coefficient to determine
15099 whether a pixel should be blurred or not. The option value must be an
15100 integer in the range [-30,30]. A value of 0 will filter all the image,
15101 a value included in [0,30] will filter flat areas and a value included
15102 in [-30,0] will filter edges. Default value is 0.
15103
15104 @item chroma_radius, cr
15105 Set the chroma radius. The option value must be a float number in
15106 the range [0.1,5.0] that specifies the variance of the gaussian filter
15107 used to blur the image (slower if larger). Default value is @option{luma_radius}.
15108
15109 @item chroma_strength, cs
15110 Set the chroma strength. The option value must be a float number
15111 in the range [-1.0,1.0] that configures the blurring. A value included
15112 in [0.0,1.0] will blur the image whereas a value included in
15113 [-1.0,0.0] will sharpen the image. Default value is @option{luma_strength}.
15114
15115 @item chroma_threshold, ct
15116 Set the chroma threshold used as a coefficient to determine
15117 whether a pixel should be blurred or not. The option value must be an
15118 integer in the range [-30,30]. A value of 0 will filter all the image,
15119 a value included in [0,30] will filter flat areas and a value included
15120 in [-30,0] will filter edges. Default value is @option{luma_threshold}.
15121 @end table
15122
15123 If a chroma option is not explicitly set, the corresponding luma value
15124 is set.
15125
15126 @section ssim
15127
15128 Obtain the SSIM (Structural SImilarity Metric) between two input videos.
15129
15130 This filter takes in input two input videos, the first input is
15131 considered the "main" source and is passed unchanged to the
15132 output. The second input is used as a "reference" video for computing
15133 the SSIM.
15134
15135 Both video inputs must have the same resolution and pixel format for
15136 this filter to work correctly. Also it assumes that both inputs
15137 have the same number of frames, which are compared one by one.
15138
15139 The filter stores the calculated SSIM of each frame.
15140
15141 The description of the accepted parameters follows.
15142
15143 @table @option
15144 @item stats_file, f
15145 If specified the filter will use the named file to save the SSIM of
15146 each individual frame. When filename equals "-" the data is sent to
15147 standard output.
15148 @end table
15149
15150 The file printed if @var{stats_file} is selected, contains a sequence of
15151 key/value pairs of the form @var{key}:@var{value} for each compared
15152 couple of frames.
15153
15154 A description of each shown parameter follows:
15155
15156 @table @option
15157 @item n
15158 sequential number of the input frame, starting from 1
15159
15160 @item Y, U, V, R, G, B
15161 SSIM of the compared frames for the component specified by the suffix.
15162
15163 @item All
15164 SSIM of the compared frames for the whole frame.
15165
15166 @item dB
15167 Same as above but in dB representation.
15168 @end table
15169
15170 This filter also supports the @ref{framesync} options.
15171
15172 For example:
15173 @example
15174 movie=ref_movie.mpg, setpts=PTS-STARTPTS [main];
15175 [main][ref] ssim="stats_file=stats.log" [out]
15176 @end example
15177
15178 On this example the input file being processed is compared with the
15179 reference file @file{ref_movie.mpg}. The SSIM of each individual frame
15180 is stored in @file{stats.log}.
15181
15182 Another example with both psnr and ssim at same time:
15183 @example
15184 ffmpeg -i main.mpg -i ref.mpg -lavfi  "ssim;[0:v][1:v]psnr" -f null -
15185 @end example
15186
15187 @section stereo3d
15188
15189 Convert between different stereoscopic image formats.
15190
15191 The filters accept the following options:
15192
15193 @table @option
15194 @item in
15195 Set stereoscopic image format of input.
15196
15197 Available values for input image formats are:
15198 @table @samp
15199 @item sbsl
15200 side by side parallel (left eye left, right eye right)
15201
15202 @item sbsr
15203 side by side crosseye (right eye left, left eye right)
15204
15205 @item sbs2l
15206 side by side parallel with half width resolution
15207 (left eye left, right eye right)
15208
15209 @item sbs2r
15210 side by side crosseye with half width resolution
15211 (right eye left, left eye right)
15212
15213 @item abl
15214 above-below (left eye above, right eye below)
15215
15216 @item abr
15217 above-below (right eye above, left eye below)
15218
15219 @item ab2l
15220 above-below with half height resolution
15221 (left eye above, right eye below)
15222
15223 @item ab2r
15224 above-below with half height resolution
15225 (right eye above, left eye below)
15226
15227 @item al
15228 alternating frames (left eye first, right eye second)
15229
15230 @item ar
15231 alternating frames (right eye first, left eye second)
15232
15233 @item irl
15234 interleaved rows (left eye has top row, right eye starts on next row)
15235
15236 @item irr
15237 interleaved rows (right eye has top row, left eye starts on next row)
15238
15239 @item icl
15240 interleaved columns, left eye first
15241
15242 @item icr
15243 interleaved columns, right eye first
15244
15245 Default value is @samp{sbsl}.
15246 @end table
15247
15248 @item out
15249 Set stereoscopic image format of output.
15250
15251 @table @samp
15252 @item sbsl
15253 side by side parallel (left eye left, right eye right)
15254
15255 @item sbsr
15256 side by side crosseye (right eye left, left eye right)
15257
15258 @item sbs2l
15259 side by side parallel with half width resolution
15260 (left eye left, right eye right)
15261
15262 @item sbs2r
15263 side by side crosseye with half width resolution
15264 (right eye left, left eye right)
15265
15266 @item abl
15267 above-below (left eye above, right eye below)
15268
15269 @item abr
15270 above-below (right eye above, left eye below)
15271
15272 @item ab2l
15273 above-below with half height resolution
15274 (left eye above, right eye below)
15275
15276 @item ab2r
15277 above-below with half height resolution
15278 (right eye above, left eye below)
15279
15280 @item al
15281 alternating frames (left eye first, right eye second)
15282
15283 @item ar
15284 alternating frames (right eye first, left eye second)
15285
15286 @item irl
15287 interleaved rows (left eye has top row, right eye starts on next row)
15288
15289 @item irr
15290 interleaved rows (right eye has top row, left eye starts on next row)
15291
15292 @item arbg
15293 anaglyph red/blue gray
15294 (red filter on left eye, blue filter on right eye)
15295
15296 @item argg
15297 anaglyph red/green gray
15298 (red filter on left eye, green filter on right eye)
15299
15300 @item arcg
15301 anaglyph red/cyan gray
15302 (red filter on left eye, cyan filter on right eye)
15303
15304 @item arch
15305 anaglyph red/cyan half colored
15306 (red filter on left eye, cyan filter on right eye)
15307
15308 @item arcc
15309 anaglyph red/cyan color
15310 (red filter on left eye, cyan filter on right eye)
15311
15312 @item arcd
15313 anaglyph red/cyan color optimized with the least squares projection of dubois
15314 (red filter on left eye, cyan filter on right eye)
15315
15316 @item agmg
15317 anaglyph green/magenta gray
15318 (green filter on left eye, magenta filter on right eye)
15319
15320 @item agmh
15321 anaglyph green/magenta half colored
15322 (green filter on left eye, magenta filter on right eye)
15323
15324 @item agmc
15325 anaglyph green/magenta colored
15326 (green filter on left eye, magenta filter on right eye)
15327
15328 @item agmd
15329 anaglyph green/magenta color optimized with the least squares projection of dubois
15330 (green filter on left eye, magenta filter on right eye)
15331
15332 @item aybg
15333 anaglyph yellow/blue gray
15334 (yellow filter on left eye, blue filter on right eye)
15335
15336 @item aybh
15337 anaglyph yellow/blue half colored
15338 (yellow filter on left eye, blue filter on right eye)
15339
15340 @item aybc
15341 anaglyph yellow/blue colored
15342 (yellow filter on left eye, blue filter on right eye)
15343
15344 @item aybd
15345 anaglyph yellow/blue color optimized with the least squares projection of dubois
15346 (yellow filter on left eye, blue filter on right eye)
15347
15348 @item ml
15349 mono output (left eye only)
15350
15351 @item mr
15352 mono output (right eye only)
15353
15354 @item chl
15355 checkerboard, left eye first
15356
15357 @item chr
15358 checkerboard, right eye first
15359
15360 @item icl
15361 interleaved columns, left eye first
15362
15363 @item icr
15364 interleaved columns, right eye first
15365
15366 @item hdmi
15367 HDMI frame pack
15368 @end table
15369
15370 Default value is @samp{arcd}.
15371 @end table
15372
15373 @subsection Examples
15374
15375 @itemize
15376 @item
15377 Convert input video from side by side parallel to anaglyph yellow/blue dubois:
15378 @example
15379 stereo3d=sbsl:aybd
15380 @end example
15381
15382 @item
15383 Convert input video from above below (left eye above, right eye below) to side by side crosseye.
15384 @example
15385 stereo3d=abl:sbsr
15386 @end example
15387 @end itemize
15388
15389 @section streamselect, astreamselect
15390 Select video or audio streams.
15391
15392 The filter accepts the following options:
15393
15394 @table @option
15395 @item inputs
15396 Set number of inputs. Default is 2.
15397
15398 @item map
15399 Set input indexes to remap to outputs.
15400 @end table
15401
15402 @subsection Commands
15403
15404 The @code{streamselect} and @code{astreamselect} filter supports the following
15405 commands:
15406
15407 @table @option
15408 @item map
15409 Set input indexes to remap to outputs.
15410 @end table
15411
15412 @subsection Examples
15413
15414 @itemize
15415 @item
15416 Select first 5 seconds 1st stream and rest of time 2nd stream:
15417 @example
15418 sendcmd='5.0 streamselect map 1',streamselect=inputs=2:map=0
15419 @end example
15420
15421 @item
15422 Same as above, but for audio:
15423 @example
15424 asendcmd='5.0 astreamselect map 1',astreamselect=inputs=2:map=0
15425 @end example
15426 @end itemize
15427
15428 @section sobel
15429 Apply sobel operator to input video stream.
15430
15431 The filter accepts the following option:
15432
15433 @table @option
15434 @item planes
15435 Set which planes will be processed, unprocessed planes will be copied.
15436 By default value 0xf, all planes will be processed.
15437
15438 @item scale
15439 Set value which will be multiplied with filtered result.
15440
15441 @item delta
15442 Set value which will be added to filtered result.
15443 @end table
15444
15445 @anchor{spp}
15446 @section spp
15447
15448 Apply a simple postprocessing filter that compresses and decompresses the image
15449 at several (or - in the case of @option{quality} level @code{6} - all) shifts
15450 and average the results.
15451
15452 The filter accepts the following options:
15453
15454 @table @option
15455 @item quality
15456 Set quality. This option defines the number of levels for averaging. It accepts
15457 an integer in the range 0-6. If set to @code{0}, the filter will have no
15458 effect. A value of @code{6} means the higher quality. For each increment of
15459 that value the speed drops by a factor of approximately 2.  Default value is
15460 @code{3}.
15461
15462 @item qp
15463 Force a constant quantization parameter. If not set, the filter will use the QP
15464 from the video stream (if available).
15465
15466 @item mode
15467 Set thresholding mode. Available modes are:
15468
15469 @table @samp
15470 @item hard
15471 Set hard thresholding (default).
15472 @item soft
15473 Set soft thresholding (better de-ringing effect, but likely blurrier).
15474 @end table
15475
15476 @item use_bframe_qp
15477 Enable the use of the QP from the B-Frames if set to @code{1}. Using this
15478 option may cause flicker since the B-Frames have often larger QP. Default is
15479 @code{0} (not enabled).
15480 @end table
15481
15482 @section sr
15483
15484 Scale the input by applying one of the super-resolution methods based on
15485 convolutional neural networks.
15486
15487 Training scripts as well as scripts for model generation are provided in
15488 the repository at @url{https://github.com/HighVoltageRocknRoll/sr.git}.
15489
15490 The filter accepts the following options:
15491
15492 @table @option
15493 @item model
15494 Specify which super-resolution model to use. This option accepts the following values:
15495
15496 @table @samp
15497 @item srcnn
15498 Super-Resolution Convolutional Neural Network model.
15499 See @url{https://arxiv.org/abs/1501.00092}.
15500
15501 @item espcn
15502 Efficient Sub-Pixel Convolutional Neural Network model.
15503 See @url{https://arxiv.org/abs/1609.05158}.
15504
15505 @end table
15506
15507 Default value is @samp{srcnn}.
15508
15509 @item dnn_backend
15510 Specify which DNN backend to use for model loading and execution. This option accepts
15511 the following values:
15512
15513 @table @samp
15514 @item native
15515 Native implementation of DNN loading and execution.
15516
15517 @item tensorflow
15518 TensorFlow backend. To enable this backend you
15519 need to install the TensorFlow for C library (see
15520 @url{https://www.tensorflow.org/install/install_c}) and configure FFmpeg with
15521 @code{--enable-libtensorflow}
15522
15523 @end table
15524
15525 Default value is @samp{native}.
15526
15527 @item scale_factor
15528 Set scale factor for SRCNN model, for which custom model file was provided.
15529 Allowed values are @code{2}, @code{3} and @code{4}. Default value is @code{2}.
15530 Scale factor is necessary for SRCNN model, because it accepts input upscaled
15531 using bicubic upscaling with proper scale factor.
15532
15533 @item model_filename
15534 Set path to model file specifying network architecture and its parameters.
15535 Note that different backends use different file formats. TensorFlow backend
15536 can load files for both formats, while native backend can load files for only
15537 its format.
15538
15539 @end table
15540
15541 @anchor{subtitles}
15542 @section subtitles
15543
15544 Draw subtitles on top of input video using the libass library.
15545
15546 To enable compilation of this filter you need to configure FFmpeg with
15547 @code{--enable-libass}. This filter also requires a build with libavcodec and
15548 libavformat to convert the passed subtitles file to ASS (Advanced Substation
15549 Alpha) subtitles format.
15550
15551 The filter accepts the following options:
15552
15553 @table @option
15554 @item filename, f
15555 Set the filename of the subtitle file to read. It must be specified.
15556
15557 @item original_size
15558 Specify the size of the original video, the video for which the ASS file
15559 was composed. For the syntax of this option, check the
15560 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
15561 Due to a misdesign in ASS aspect ratio arithmetic, this is necessary to
15562 correctly scale the fonts if the aspect ratio has been changed.
15563
15564 @item fontsdir
15565 Set a directory path containing fonts that can be used by the filter.
15566 These fonts will be used in addition to whatever the font provider uses.
15567
15568 @item alpha
15569 Process alpha channel, by default alpha channel is untouched.
15570
15571 @item charenc
15572 Set subtitles input character encoding. @code{subtitles} filter only. Only
15573 useful if not UTF-8.
15574
15575 @item stream_index, si
15576 Set subtitles stream index. @code{subtitles} filter only.
15577
15578 @item force_style
15579 Override default style or script info parameters of the subtitles. It accepts a
15580 string containing ASS style format @code{KEY=VALUE} couples separated by ",".
15581 @end table
15582
15583 If the first key is not specified, it is assumed that the first value
15584 specifies the @option{filename}.
15585
15586 For example, to render the file @file{sub.srt} on top of the input
15587 video, use the command:
15588 @example
15589 subtitles=sub.srt
15590 @end example
15591
15592 which is equivalent to:
15593 @example
15594 subtitles=filename=sub.srt
15595 @end example
15596
15597 To render the default subtitles stream from file @file{video.mkv}, use:
15598 @example
15599 subtitles=video.mkv
15600 @end example
15601
15602 To render the second subtitles stream from that file, use:
15603 @example
15604 subtitles=video.mkv:si=1
15605 @end example
15606
15607 To make the subtitles stream from @file{sub.srt} appear in 80% transparent blue
15608 @code{DejaVu Serif}, use:
15609 @example
15610 subtitles=sub.srt:force_style='FontName=DejaVu Serif,PrimaryColour=&HCCFF0000'
15611 @end example
15612
15613 @section super2xsai
15614
15615 Scale the input by 2x and smooth using the Super2xSaI (Scale and
15616 Interpolate) pixel art scaling algorithm.
15617
15618 Useful for enlarging pixel art images without reducing sharpness.
15619
15620 @section swaprect
15621
15622 Swap two rectangular objects in video.
15623
15624 This filter accepts the following options:
15625
15626 @table @option
15627 @item w
15628 Set object width.
15629
15630 @item h
15631 Set object height.
15632
15633 @item x1
15634 Set 1st rect x coordinate.
15635
15636 @item y1
15637 Set 1st rect y coordinate.
15638
15639 @item x2
15640 Set 2nd rect x coordinate.
15641
15642 @item y2
15643 Set 2nd rect y coordinate.
15644
15645 All expressions are evaluated once for each frame.
15646 @end table
15647
15648 The all options are expressions containing the following constants:
15649
15650 @table @option
15651 @item w
15652 @item h
15653 The input width and height.
15654
15655 @item a
15656 same as @var{w} / @var{h}
15657
15658 @item sar
15659 input sample aspect ratio
15660
15661 @item dar
15662 input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}
15663
15664 @item n
15665 The number of the input frame, starting from 0.
15666
15667 @item t
15668 The timestamp expressed in seconds. It's NAN if the input timestamp is unknown.
15669
15670 @item pos
15671 the position in the file of the input frame, NAN if unknown
15672 @end table
15673
15674 @section swapuv
15675 Swap U & V plane.
15676
15677 @section telecine
15678
15679 Apply telecine process to the video.
15680
15681 This filter accepts the following options:
15682
15683 @table @option
15684 @item first_field
15685 @table @samp
15686 @item top, t
15687 top field first
15688 @item bottom, b
15689 bottom field first
15690 The default value is @code{top}.
15691 @end table
15692
15693 @item pattern
15694 A string of numbers representing the pulldown pattern you wish to apply.
15695 The default value is @code{23}.
15696 @end table
15697
15698 @example
15699 Some typical patterns:
15700
15701 NTSC output (30i):
15702 27.5p: 32222
15703 24p: 23 (classic)
15704 24p: 2332 (preferred)
15705 20p: 33
15706 18p: 334
15707 16p: 3444
15708
15709 PAL output (25i):
15710 27.5p: 12222
15711 24p: 222222222223 ("Euro pulldown")
15712 16.67p: 33
15713 16p: 33333334
15714 @end example
15715
15716 @section threshold
15717
15718 Apply threshold effect to video stream.
15719
15720 This filter needs four video streams to perform thresholding.
15721 First stream is stream we are filtering.
15722 Second stream is holding threshold values, third stream is holding min values,
15723 and last, fourth stream is holding max values.
15724
15725 The filter accepts the following option:
15726
15727 @table @option
15728 @item planes
15729 Set which planes will be processed, unprocessed planes will be copied.
15730 By default value 0xf, all planes will be processed.
15731 @end table
15732
15733 For example if first stream pixel's component value is less then threshold value
15734 of pixel component from 2nd threshold stream, third stream value will picked,
15735 otherwise fourth stream pixel component value will be picked.
15736
15737 Using color source filter one can perform various types of thresholding:
15738
15739 @subsection Examples
15740
15741 @itemize
15742 @item
15743 Binary threshold, using gray color as threshold:
15744 @example
15745 ffmpeg -i 320x240.avi -f lavfi -i color=gray -f lavfi -i color=black -f lavfi -i color=white -lavfi threshold output.avi
15746 @end example
15747
15748 @item
15749 Inverted binary threshold, using gray color as threshold:
15750 @example
15751 ffmpeg -i 320x240.avi -f lavfi -i color=gray -f lavfi -i color=white -f lavfi -i color=black -lavfi threshold output.avi
15752 @end example
15753
15754 @item
15755 Truncate binary threshold, using gray color as threshold:
15756 @example
15757 ffmpeg -i 320x240.avi -f lavfi -i color=gray -i 320x240.avi -f lavfi -i color=gray -lavfi threshold output.avi
15758 @end example
15759
15760 @item
15761 Threshold to zero, using gray color as threshold:
15762 @example
15763 ffmpeg -i 320x240.avi -f lavfi -i color=gray -f lavfi -i color=white -i 320x240.avi -lavfi threshold output.avi
15764 @end example
15765
15766 @item
15767 Inverted threshold to zero, using gray color as threshold:
15768 @example
15769 ffmpeg -i 320x240.avi -f lavfi -i color=gray -i 320x240.avi -f lavfi -i color=white -lavfi threshold output.avi
15770 @end example
15771 @end itemize
15772
15773 @section thumbnail
15774 Select the most representative frame in a given sequence of consecutive frames.
15775
15776 The filter accepts the following options:
15777
15778 @table @option
15779 @item n
15780 Set the frames batch size to analyze; in a set of @var{n} frames, the filter
15781 will pick one of them, and then handle the next batch of @var{n} frames until
15782 the end. Default is @code{100}.
15783 @end table
15784
15785 Since the filter keeps track of the whole frames sequence, a bigger @var{n}
15786 value will result in a higher memory usage, so a high value is not recommended.
15787
15788 @subsection Examples
15789
15790 @itemize
15791 @item
15792 Extract one picture each 50 frames:
15793 @example
15794 thumbnail=50
15795 @end example
15796
15797 @item
15798 Complete example of a thumbnail creation with @command{ffmpeg}:
15799 @example
15800 ffmpeg -i in.avi -vf thumbnail,scale=300:200 -frames:v 1 out.png
15801 @end example
15802 @end itemize
15803
15804 @section tile
15805
15806 Tile several successive frames together.
15807
15808 The filter accepts the following options:
15809
15810 @table @option
15811
15812 @item layout
15813 Set the grid size (i.e. the number of lines and columns). For the syntax of
15814 this option, check the
15815 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
15816
15817 @item nb_frames
15818 Set the maximum number of frames to render in the given area. It must be less
15819 than or equal to @var{w}x@var{h}. The default value is @code{0}, meaning all
15820 the area will be used.
15821
15822 @item margin
15823 Set the outer border margin in pixels.
15824
15825 @item padding
15826 Set the inner border thickness (i.e. the number of pixels between frames). For
15827 more advanced padding options (such as having different values for the edges),
15828 refer to the pad video filter.
15829
15830 @item color
15831 Specify the color of the unused area. For the syntax of this option, check the
15832 @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
15833 The default value of @var{color} is "black".
15834
15835 @item overlap
15836 Set the number of frames to overlap when tiling several successive frames together.
15837 The value must be between @code{0} and @var{nb_frames - 1}.
15838
15839 @item init_padding
15840 Set the number of frames to initially be empty before displaying first output frame.
15841 This controls how soon will one get first output frame.
15842 The value must be between @code{0} and @var{nb_frames - 1}.
15843 @end table
15844
15845 @subsection Examples
15846
15847 @itemize
15848 @item
15849 Produce 8x8 PNG tiles of all keyframes (@option{-skip_frame nokey}) in a movie:
15850 @example
15851 ffmpeg -skip_frame nokey -i file.avi -vf 'scale=128:72,tile=8x8' -an -vsync 0 keyframes%03d.png
15852 @end example
15853 The @option{-vsync 0} is necessary to prevent @command{ffmpeg} from
15854 duplicating each output frame to accommodate the originally detected frame
15855 rate.
15856
15857 @item
15858 Display @code{5} pictures in an area of @code{3x2} frames,
15859 with @code{7} pixels between them, and @code{2} pixels of initial margin, using
15860 mixed flat and named options:
15861 @example
15862 tile=3x2:nb_frames=5:padding=7:margin=2
15863 @end example
15864 @end itemize
15865
15866 @section tinterlace
15867
15868 Perform various types of temporal field interlacing.
15869
15870 Frames are counted starting from 1, so the first input frame is
15871 considered odd.
15872
15873 The filter accepts the following options:
15874
15875 @table @option
15876
15877 @item mode
15878 Specify the mode of the interlacing. This option can also be specified
15879 as a value alone. See below for a list of values for this option.
15880
15881 Available values are:
15882
15883 @table @samp
15884 @item merge, 0
15885 Move odd frames into the upper field, even into the lower field,
15886 generating a double height frame at half frame rate.
15887 @example
15888  ------> time
15889 Input:
15890 Frame 1         Frame 2         Frame 3         Frame 4
15891
15892 11111           22222           33333           44444
15893 11111           22222           33333           44444
15894 11111           22222           33333           44444
15895 11111           22222           33333           44444
15896
15897 Output:
15898 11111                           33333
15899 22222                           44444
15900 11111                           33333
15901 22222                           44444
15902 11111                           33333
15903 22222                           44444
15904 11111                           33333
15905 22222                           44444
15906 @end example
15907
15908 @item drop_even, 1
15909 Only output odd frames, even frames are dropped, generating a frame with
15910 unchanged height at half frame rate.
15911
15912 @example
15913  ------> time
15914 Input:
15915 Frame 1         Frame 2         Frame 3         Frame 4
15916
15917 11111           22222           33333           44444
15918 11111           22222           33333           44444
15919 11111           22222           33333           44444
15920 11111           22222           33333           44444
15921
15922 Output:
15923 11111                           33333
15924 11111                           33333
15925 11111                           33333
15926 11111                           33333
15927 @end example
15928
15929 @item drop_odd, 2
15930 Only output even frames, odd frames are dropped, generating a frame with
15931 unchanged height at half frame rate.
15932
15933 @example
15934  ------> time
15935 Input:
15936 Frame 1         Frame 2         Frame 3         Frame 4
15937
15938 11111           22222           33333           44444
15939 11111           22222           33333           44444
15940 11111           22222           33333           44444
15941 11111           22222           33333           44444
15942
15943 Output:
15944                 22222                           44444
15945                 22222                           44444
15946                 22222                           44444
15947                 22222                           44444
15948 @end example
15949
15950 @item pad, 3
15951 Expand each frame to full height, but pad alternate lines with black,
15952 generating a frame with double height at the same input frame rate.
15953
15954 @example
15955  ------> time
15956 Input:
15957 Frame 1         Frame 2         Frame 3         Frame 4
15958
15959 11111           22222           33333           44444
15960 11111           22222           33333           44444
15961 11111           22222           33333           44444
15962 11111           22222           33333           44444
15963
15964 Output:
15965 11111           .....           33333           .....
15966 .....           22222           .....           44444
15967 11111           .....           33333           .....
15968 .....           22222           .....           44444
15969 11111           .....           33333           .....
15970 .....           22222           .....           44444
15971 11111           .....           33333           .....
15972 .....           22222           .....           44444
15973 @end example
15974
15975
15976 @item interleave_top, 4
15977 Interleave the upper field from odd frames with the lower field from
15978 even frames, generating a frame with unchanged height at half frame rate.
15979
15980 @example
15981  ------> time
15982 Input:
15983 Frame 1         Frame 2         Frame 3         Frame 4
15984
15985 11111<-         22222           33333<-         44444
15986 11111           22222<-         33333           44444<-
15987 11111<-         22222           33333<-         44444
15988 11111           22222<-         33333           44444<-
15989
15990 Output:
15991 11111                           33333
15992 22222                           44444
15993 11111                           33333
15994 22222                           44444
15995 @end example
15996
15997
15998 @item interleave_bottom, 5
15999 Interleave the lower field from odd frames with the upper field from
16000 even frames, generating a frame with unchanged height at half frame rate.
16001
16002 @example
16003  ------> time
16004 Input:
16005 Frame 1         Frame 2         Frame 3         Frame 4
16006
16007 11111           22222<-         33333           44444<-
16008 11111<-         22222           33333<-         44444
16009 11111           22222<-         33333           44444<-
16010 11111<-         22222           33333<-         44444
16011
16012 Output:
16013 22222                           44444
16014 11111                           33333
16015 22222                           44444
16016 11111                           33333
16017 @end example
16018
16019
16020 @item interlacex2, 6
16021 Double frame rate with unchanged height. Frames are inserted each
16022 containing the second temporal field from the previous input frame and
16023 the first temporal field from the next input frame. This mode relies on
16024 the top_field_first flag. Useful for interlaced video displays with no
16025 field synchronisation.
16026
16027 @example
16028  ------> time
16029 Input:
16030 Frame 1         Frame 2         Frame 3         Frame 4
16031
16032 11111           22222           33333           44444
16033  11111           22222           33333           44444
16034 11111           22222           33333           44444
16035  11111           22222           33333           44444
16036
16037 Output:
16038 11111   22222   22222   33333   33333   44444   44444
16039  11111   11111   22222   22222   33333   33333   44444
16040 11111   22222   22222   33333   33333   44444   44444
16041  11111   11111   22222   22222   33333   33333   44444
16042 @end example
16043
16044
16045 @item mergex2, 7
16046 Move odd frames into the upper field, even into the lower field,
16047 generating a double height frame at same frame rate.
16048
16049 @example
16050  ------> time
16051 Input:
16052 Frame 1         Frame 2         Frame 3         Frame 4
16053
16054 11111           22222           33333           44444
16055 11111           22222           33333           44444
16056 11111           22222           33333           44444
16057 11111           22222           33333           44444
16058
16059 Output:
16060 11111           33333           33333           55555
16061 22222           22222           44444           44444
16062 11111           33333           33333           55555
16063 22222           22222           44444           44444
16064 11111           33333           33333           55555
16065 22222           22222           44444           44444
16066 11111           33333           33333           55555
16067 22222           22222           44444           44444
16068 @end example
16069
16070 @end table
16071
16072 Numeric values are deprecated but are accepted for backward
16073 compatibility reasons.
16074
16075 Default mode is @code{merge}.
16076
16077 @item flags
16078 Specify flags influencing the filter process.
16079
16080 Available value for @var{flags} is:
16081
16082 @table @option
16083 @item low_pass_filter, vlfp
16084 Enable linear vertical low-pass filtering in the filter.
16085 Vertical low-pass filtering is required when creating an interlaced
16086 destination from a progressive source which contains high-frequency
16087 vertical detail. Filtering will reduce interlace 'twitter' and Moire
16088 patterning.
16089
16090 @item complex_filter, cvlfp
16091 Enable complex vertical low-pass filtering.
16092 This will slightly less reduce interlace 'twitter' and Moire
16093 patterning but better retain detail and subjective sharpness impression.
16094
16095 @end table
16096
16097 Vertical low-pass filtering can only be enabled for @option{mode}
16098 @var{interleave_top} and @var{interleave_bottom}.
16099
16100 @end table
16101
16102 @section tmix
16103
16104 Mix successive video frames.
16105
16106 A description of the accepted options follows.
16107
16108 @table @option
16109 @item frames
16110 The number of successive frames to mix. If unspecified, it defaults to 3.
16111
16112 @item weights
16113 Specify weight of each input video frame.
16114 Each weight is separated by space. If number of weights is smaller than
16115 number of @var{frames} last specified weight will be used for all remaining
16116 unset weights.
16117
16118 @item scale
16119 Specify scale, if it is set it will be multiplied with sum
16120 of each weight multiplied with pixel values to give final destination
16121 pixel value. By default @var{scale} is auto scaled to sum of weights.
16122 @end table
16123
16124 @subsection Examples
16125
16126 @itemize
16127 @item
16128 Average 7 successive frames:
16129 @example
16130 tmix=frames=7:weights="1 1 1 1 1 1 1"
16131 @end example
16132
16133 @item
16134 Apply simple temporal convolution:
16135 @example
16136 tmix=frames=3:weights="-1 3 -1"
16137 @end example
16138
16139 @item
16140 Similar as above but only showing temporal differences:
16141 @example
16142 tmix=frames=3:weights="-1 2 -1":scale=1
16143 @end example
16144 @end itemize
16145
16146 @section tonemap
16147 Tone map colors from different dynamic ranges.
16148
16149 This filter expects data in single precision floating point, as it needs to
16150 operate on (and can output) out-of-range values. Another filter, such as
16151 @ref{zscale}, is needed to convert the resulting frame to a usable format.
16152
16153 The tonemapping algorithms implemented only work on linear light, so input
16154 data should be linearized beforehand (and possibly correctly tagged).
16155
16156 @example
16157 ffmpeg -i INPUT -vf zscale=transfer=linear,tonemap=clip,zscale=transfer=bt709,format=yuv420p OUTPUT
16158 @end example
16159
16160 @subsection Options
16161 The filter accepts the following options.
16162
16163 @table @option
16164 @item tonemap
16165 Set the tone map algorithm to use.
16166
16167 Possible values are:
16168 @table @var
16169 @item none
16170 Do not apply any tone map, only desaturate overbright pixels.
16171
16172 @item clip
16173 Hard-clip any out-of-range values. Use it for perfect color accuracy for
16174 in-range values, while distorting out-of-range values.
16175
16176 @item linear
16177 Stretch the entire reference gamut to a linear multiple of the display.
16178
16179 @item gamma
16180 Fit a logarithmic transfer between the tone curves.
16181
16182 @item reinhard
16183 Preserve overall image brightness with a simple curve, using nonlinear
16184 contrast, which results in flattening details and degrading color accuracy.
16185
16186 @item hable
16187 Preserve both dark and bright details better than @var{reinhard}, at the cost
16188 of slightly darkening everything. Use it when detail preservation is more
16189 important than color and brightness accuracy.
16190
16191 @item mobius
16192 Smoothly map out-of-range values, while retaining contrast and colors for
16193 in-range material as much as possible. Use it when color accuracy is more
16194 important than detail preservation.
16195 @end table
16196
16197 Default is none.
16198
16199 @item param
16200 Tune the tone mapping algorithm.
16201
16202 This affects the following algorithms:
16203 @table @var
16204 @item none
16205 Ignored.
16206
16207 @item linear
16208 Specifies the scale factor to use while stretching.
16209 Default to 1.0.
16210
16211 @item gamma
16212 Specifies the exponent of the function.
16213 Default to 1.8.
16214
16215 @item clip
16216 Specify an extra linear coefficient to multiply into the signal before clipping.
16217 Default to 1.0.
16218
16219 @item reinhard
16220 Specify the local contrast coefficient at the display peak.
16221 Default to 0.5, which means that in-gamut values will be about half as bright
16222 as when clipping.
16223
16224 @item hable
16225 Ignored.
16226
16227 @item mobius
16228 Specify the transition point from linear to mobius transform. Every value
16229 below this point is guaranteed to be mapped 1:1. The higher the value, the
16230 more accurate the result will be, at the cost of losing bright details.
16231 Default to 0.3, which due to the steep initial slope still preserves in-range
16232 colors fairly accurately.
16233 @end table
16234
16235 @item desat
16236 Apply desaturation for highlights that exceed this level of brightness. The
16237 higher the parameter, the more color information will be preserved. This
16238 setting helps prevent unnaturally blown-out colors for super-highlights, by
16239 (smoothly) turning into white instead. This makes images feel more natural,
16240 at the cost of reducing information about out-of-range colors.
16241
16242 The default of 2.0 is somewhat conservative and will mostly just apply to
16243 skies or directly sunlit surfaces. A setting of 0.0 disables this option.
16244
16245 This option works only if the input frame has a supported color tag.
16246
16247 @item peak
16248 Override signal/nominal/reference peak with this value. Useful when the
16249 embedded peak information in display metadata is not reliable or when tone
16250 mapping from a lower range to a higher range.
16251 @end table
16252
16253 @anchor{transpose}
16254 @section transpose
16255
16256 Transpose rows with columns in the input video and optionally flip it.
16257
16258 It accepts the following parameters:
16259
16260 @table @option
16261
16262 @item dir
16263 Specify the transposition direction.
16264
16265 Can assume the following values:
16266 @table @samp
16267 @item 0, 4, cclock_flip
16268 Rotate by 90 degrees counterclockwise and vertically flip (default), that is:
16269 @example
16270 L.R     L.l
16271 . . ->  . .
16272 l.r     R.r
16273 @end example
16274
16275 @item 1, 5, clock
16276 Rotate by 90 degrees clockwise, that is:
16277 @example
16278 L.R     l.L
16279 . . ->  . .
16280 l.r     r.R
16281 @end example
16282
16283 @item 2, 6, cclock
16284 Rotate by 90 degrees counterclockwise, that is:
16285 @example
16286 L.R     R.r
16287 . . ->  . .
16288 l.r     L.l
16289 @end example
16290
16291 @item 3, 7, clock_flip
16292 Rotate by 90 degrees clockwise and vertically flip, that is:
16293 @example
16294 L.R     r.R
16295 . . ->  . .
16296 l.r     l.L
16297 @end example
16298 @end table
16299
16300 For values between 4-7, the transposition is only done if the input
16301 video geometry is portrait and not landscape. These values are
16302 deprecated, the @code{passthrough} option should be used instead.
16303
16304 Numerical values are deprecated, and should be dropped in favor of
16305 symbolic constants.
16306
16307 @item passthrough
16308 Do not apply the transposition if the input geometry matches the one
16309 specified by the specified value. It accepts the following values:
16310 @table @samp
16311 @item none
16312 Always apply transposition.
16313 @item portrait
16314 Preserve portrait geometry (when @var{height} >= @var{width}).
16315 @item landscape
16316 Preserve landscape geometry (when @var{width} >= @var{height}).
16317 @end table
16318
16319 Default value is @code{none}.
16320 @end table
16321
16322 For example to rotate by 90 degrees clockwise and preserve portrait
16323 layout:
16324 @example
16325 transpose=dir=1:passthrough=portrait
16326 @end example
16327
16328 The command above can also be specified as:
16329 @example
16330 transpose=1:portrait
16331 @end example
16332
16333 @section transpose_npp
16334
16335 Transpose rows with columns in the input video and optionally flip it.
16336 For more in depth examples see the @ref{transpose} video filter, which shares mostly the same options.
16337
16338 It accepts the following parameters:
16339
16340 @table @option
16341
16342 @item dir
16343 Specify the transposition direction.
16344
16345 Can assume the following values:
16346 @table @samp
16347 @item cclock_flip
16348 Rotate by 90 degrees counterclockwise and vertically flip. (default)
16349
16350 @item clock
16351 Rotate by 90 degrees clockwise.
16352
16353 @item cclock
16354 Rotate by 90 degrees counterclockwise.
16355
16356 @item clock_flip
16357 Rotate by 90 degrees clockwise and vertically flip.
16358 @end table
16359
16360 @item passthrough
16361 Do not apply the transposition if the input geometry matches the one
16362 specified by the specified value. It accepts the following values:
16363 @table @samp
16364 @item none
16365 Always apply transposition. (default)
16366 @item portrait
16367 Preserve portrait geometry (when @var{height} >= @var{width}).
16368 @item landscape
16369 Preserve landscape geometry (when @var{width} >= @var{height}).
16370 @end table
16371
16372 @end table
16373
16374 @section trim
16375 Trim the input so that the output contains one continuous subpart of the input.
16376
16377 It accepts the following parameters:
16378 @table @option
16379 @item start
16380 Specify the time of the start of the kept section, i.e. the frame with the
16381 timestamp @var{start} will be the first frame in the output.
16382
16383 @item end
16384 Specify the time of the first frame that will be dropped, i.e. the frame
16385 immediately preceding the one with the timestamp @var{end} will be the last
16386 frame in the output.
16387
16388 @item start_pts
16389 This is the same as @var{start}, except this option sets the start timestamp
16390 in timebase units instead of seconds.
16391
16392 @item end_pts
16393 This is the same as @var{end}, except this option sets the end timestamp
16394 in timebase units instead of seconds.
16395
16396 @item duration
16397 The maximum duration of the output in seconds.
16398
16399 @item start_frame
16400 The number of the first frame that should be passed to the output.
16401
16402 @item end_frame
16403 The number of the first frame that should be dropped.
16404 @end table
16405
16406 @option{start}, @option{end}, and @option{duration} are expressed as time
16407 duration specifications; see
16408 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
16409 for the accepted syntax.
16410
16411 Note that the first two sets of the start/end options and the @option{duration}
16412 option look at the frame timestamp, while the _frame variants simply count the
16413 frames that pass through the filter. Also note that this filter does not modify
16414 the timestamps. If you wish for the output timestamps to start at zero, insert a
16415 setpts filter after the trim filter.
16416
16417 If multiple start or end options are set, this filter tries to be greedy and
16418 keep all the frames that match at least one of the specified constraints. To keep
16419 only the part that matches all the constraints at once, chain multiple trim
16420 filters.
16421
16422 The defaults are such that all the input is kept. So it is possible to set e.g.
16423 just the end values to keep everything before the specified time.
16424
16425 Examples:
16426 @itemize
16427 @item
16428 Drop everything except the second minute of input:
16429 @example
16430 ffmpeg -i INPUT -vf trim=60:120
16431 @end example
16432
16433 @item
16434 Keep only the first second:
16435 @example
16436 ffmpeg -i INPUT -vf trim=duration=1
16437 @end example
16438
16439 @end itemize
16440
16441 @section unpremultiply
16442 Apply alpha unpremultiply effect to input video stream using first plane
16443 of second stream as alpha.
16444
16445 Both streams must have same dimensions and same pixel format.
16446
16447 The filter accepts the following option:
16448
16449 @table @option
16450 @item planes
16451 Set which planes will be processed, unprocessed planes will be copied.
16452 By default value 0xf, all planes will be processed.
16453
16454 If the format has 1 or 2 components, then luma is bit 0.
16455 If the format has 3 or 4 components:
16456 for RGB formats bit 0 is green, bit 1 is blue and bit 2 is red;
16457 for YUV formats bit 0 is luma, bit 1 is chroma-U and bit 2 is chroma-V.
16458 If present, the alpha channel is always the last bit.
16459
16460 @item inplace
16461 Do not require 2nd input for processing, instead use alpha plane from input stream.
16462 @end table
16463
16464 @anchor{unsharp}
16465 @section unsharp
16466
16467 Sharpen or blur the input video.
16468
16469 It accepts the following parameters:
16470
16471 @table @option
16472 @item luma_msize_x, lx
16473 Set the luma matrix horizontal size. It must be an odd integer between
16474 3 and 23. The default value is 5.
16475
16476 @item luma_msize_y, ly
16477 Set the luma matrix vertical size. It must be an odd integer between 3
16478 and 23. The default value is 5.
16479
16480 @item luma_amount, la
16481 Set the luma effect strength. It must be a floating point number, reasonable
16482 values lay between -1.5 and 1.5.
16483
16484 Negative values will blur the input video, while positive values will
16485 sharpen it, a value of zero will disable the effect.
16486
16487 Default value is 1.0.
16488
16489 @item chroma_msize_x, cx
16490 Set the chroma matrix horizontal size. It must be an odd integer
16491 between 3 and 23. The default value is 5.
16492
16493 @item chroma_msize_y, cy
16494 Set the chroma matrix vertical size. It must be an odd integer
16495 between 3 and 23. The default value is 5.
16496
16497 @item chroma_amount, ca
16498 Set the chroma effect strength. It must be a floating point number, reasonable
16499 values lay between -1.5 and 1.5.
16500
16501 Negative values will blur the input video, while positive values will
16502 sharpen it, a value of zero will disable the effect.
16503
16504 Default value is 0.0.
16505
16506 @end table
16507
16508 All parameters are optional and default to the equivalent of the
16509 string '5:5:1.0:5:5:0.0'.
16510
16511 @subsection Examples
16512
16513 @itemize
16514 @item
16515 Apply strong luma sharpen effect:
16516 @example
16517 unsharp=luma_msize_x=7:luma_msize_y=7:luma_amount=2.5
16518 @end example
16519
16520 @item
16521 Apply a strong blur of both luma and chroma parameters:
16522 @example
16523 unsharp=7:7:-2:7:7:-2
16524 @end example
16525 @end itemize
16526
16527 @section uspp
16528
16529 Apply ultra slow/simple postprocessing filter that compresses and decompresses
16530 the image at several (or - in the case of @option{quality} level @code{8} - all)
16531 shifts and average the results.
16532
16533 The way this differs from the behavior of spp is that uspp actually encodes &
16534 decodes each case with libavcodec Snow, whereas spp uses a simplified intra only 8x8
16535 DCT similar to MJPEG.
16536
16537 The filter accepts the following options:
16538
16539 @table @option
16540 @item quality
16541 Set quality. This option defines the number of levels for averaging. It accepts
16542 an integer in the range 0-8. If set to @code{0}, the filter will have no
16543 effect. A value of @code{8} means the higher quality. For each increment of
16544 that value the speed drops by a factor of approximately 2.  Default value is
16545 @code{3}.
16546
16547 @item qp
16548 Force a constant quantization parameter. If not set, the filter will use the QP
16549 from the video stream (if available).
16550 @end table
16551
16552 @section vaguedenoiser
16553
16554 Apply a wavelet based denoiser.
16555
16556 It transforms each frame from the video input into the wavelet domain,
16557 using Cohen-Daubechies-Feauveau 9/7. Then it applies some filtering to
16558 the obtained coefficients. It does an inverse wavelet transform after.
16559 Due to wavelet properties, it should give a nice smoothed result, and
16560 reduced noise, without blurring picture features.
16561
16562 This filter accepts the following options:
16563
16564 @table @option
16565 @item threshold
16566 The filtering strength. The higher, the more filtered the video will be.
16567 Hard thresholding can use a higher threshold than soft thresholding
16568 before the video looks overfiltered. Default value is 2.
16569
16570 @item method
16571 The filtering method the filter will use.
16572
16573 It accepts the following values:
16574 @table @samp
16575 @item hard
16576 All values under the threshold will be zeroed.
16577
16578 @item soft
16579 All values under the threshold will be zeroed. All values above will be
16580 reduced by the threshold.
16581
16582 @item garrote
16583 Scales or nullifies coefficients - intermediary between (more) soft and
16584 (less) hard thresholding.
16585 @end table
16586
16587 Default is garrote.
16588
16589 @item nsteps
16590 Number of times, the wavelet will decompose the picture. Picture can't
16591 be decomposed beyond a particular point (typically, 8 for a 640x480
16592 frame - as 2^9 = 512 > 480). Valid values are integers between 1 and 32. Default value is 6.
16593
16594 @item percent
16595 Partial of full denoising (limited coefficients shrinking), from 0 to 100. Default value is 85.
16596
16597 @item planes
16598 A list of the planes to process. By default all planes are processed.
16599 @end table
16600
16601 @section vectorscope
16602
16603 Display 2 color component values in the two dimensional graph (which is called
16604 a vectorscope).
16605
16606 This filter accepts the following options:
16607
16608 @table @option
16609 @item mode, m
16610 Set vectorscope mode.
16611
16612 It accepts the following values:
16613 @table @samp
16614 @item gray
16615 Gray values are displayed on graph, higher brightness means more pixels have
16616 same component color value on location in graph. This is the default mode.
16617
16618 @item color
16619 Gray values are displayed on graph. Surrounding pixels values which are not
16620 present in video frame are drawn in gradient of 2 color components which are
16621 set by option @code{x} and @code{y}. The 3rd color component is static.
16622
16623 @item color2
16624 Actual color components values present in video frame are displayed on graph.
16625
16626 @item color3
16627 Similar as color2 but higher frequency of same values @code{x} and @code{y}
16628 on graph increases value of another color component, which is luminance by
16629 default values of @code{x} and @code{y}.
16630
16631 @item color4
16632 Actual colors present in video frame are displayed on graph. If two different
16633 colors map to same position on graph then color with higher value of component
16634 not present in graph is picked.
16635
16636 @item color5
16637 Gray values are displayed on graph. Similar to @code{color} but with 3rd color
16638 component picked from radial gradient.
16639 @end table
16640
16641 @item x
16642 Set which color component will be represented on X-axis. Default is @code{1}.
16643
16644 @item y
16645 Set which color component will be represented on Y-axis. Default is @code{2}.
16646
16647 @item intensity, i
16648 Set intensity, used by modes: gray, color, color3 and color5 for increasing brightness
16649 of color component which represents frequency of (X, Y) location in graph.
16650
16651 @item envelope, e
16652 @table @samp
16653 @item none
16654 No envelope, this is default.
16655
16656 @item instant
16657 Instant envelope, even darkest single pixel will be clearly highlighted.
16658
16659 @item peak
16660 Hold maximum and minimum values presented in graph over time. This way you
16661 can still spot out of range values without constantly looking at vectorscope.
16662
16663 @item peak+instant
16664 Peak and instant envelope combined together.
16665 @end table
16666
16667 @item graticule, g
16668 Set what kind of graticule to draw.
16669 @table @samp
16670 @item none
16671 @item green
16672 @item color
16673 @end table
16674
16675 @item opacity, o
16676 Set graticule opacity.
16677
16678 @item flags, f
16679 Set graticule flags.
16680
16681 @table @samp
16682 @item white
16683 Draw graticule for white point.
16684
16685 @item black
16686 Draw graticule for black point.
16687
16688 @item name
16689 Draw color points short names.
16690 @end table
16691
16692 @item bgopacity, b
16693 Set background opacity.
16694
16695 @item lthreshold, l
16696 Set low threshold for color component not represented on X or Y axis.
16697 Values lower than this value will be ignored. Default is 0.
16698 Note this value is multiplied with actual max possible value one pixel component
16699 can have. So for 8-bit input and low threshold value of 0.1 actual threshold
16700 is 0.1 * 255 = 25.
16701
16702 @item hthreshold, h
16703 Set high threshold for color component not represented on X or Y axis.
16704 Values higher than this value will be ignored. Default is 1.
16705 Note this value is multiplied with actual max possible value one pixel component
16706 can have. So for 8-bit input and high threshold value of 0.9 actual threshold
16707 is 0.9 * 255 = 230.
16708
16709 @item colorspace, c
16710 Set what kind of colorspace to use when drawing graticule.
16711 @table @samp
16712 @item auto
16713 @item 601
16714 @item 709
16715 @end table
16716 Default is auto.
16717 @end table
16718
16719 @anchor{vidstabdetect}
16720 @section vidstabdetect
16721
16722 Analyze video stabilization/deshaking. Perform pass 1 of 2, see
16723 @ref{vidstabtransform} for pass 2.
16724
16725 This filter generates a file with relative translation and rotation
16726 transform information about subsequent frames, which is then used by
16727 the @ref{vidstabtransform} filter.
16728
16729 To enable compilation of this filter you need to configure FFmpeg with
16730 @code{--enable-libvidstab}.
16731
16732 This filter accepts the following options:
16733
16734 @table @option
16735 @item result
16736 Set the path to the file used to write the transforms information.
16737 Default value is @file{transforms.trf}.
16738
16739 @item shakiness
16740 Set how shaky the video is and how quick the camera is. It accepts an
16741 integer in the range 1-10, a value of 1 means little shakiness, a
16742 value of 10 means strong shakiness. Default value is 5.
16743
16744 @item accuracy
16745 Set the accuracy of the detection process. It must be a value in the
16746 range 1-15. A value of 1 means low accuracy, a value of 15 means high
16747 accuracy. Default value is 15.
16748
16749 @item stepsize
16750 Set stepsize of the search process. The region around minimum is
16751 scanned with 1 pixel resolution. Default value is 6.
16752
16753 @item mincontrast
16754 Set minimum contrast. Below this value a local measurement field is
16755 discarded. Must be a floating point value in the range 0-1. Default
16756 value is 0.3.
16757
16758 @item tripod
16759 Set reference frame number for tripod mode.
16760
16761 If enabled, the motion of the frames is compared to a reference frame
16762 in the filtered stream, identified by the specified number. The idea
16763 is to compensate all movements in a more-or-less static scene and keep
16764 the camera view absolutely still.
16765
16766 If set to 0, it is disabled. The frames are counted starting from 1.
16767
16768 @item show
16769 Show fields and transforms in the resulting frames. It accepts an
16770 integer in the range 0-2. Default value is 0, which disables any
16771 visualization.
16772 @end table
16773
16774 @subsection Examples
16775
16776 @itemize
16777 @item
16778 Use default values:
16779 @example
16780 vidstabdetect
16781 @end example
16782
16783 @item
16784 Analyze strongly shaky movie and put the results in file
16785 @file{mytransforms.trf}:
16786 @example
16787 vidstabdetect=shakiness=10:accuracy=15:result="mytransforms.trf"
16788 @end example
16789
16790 @item
16791 Visualize the result of internal transformations in the resulting
16792 video:
16793 @example
16794 vidstabdetect=show=1
16795 @end example
16796
16797 @item
16798 Analyze a video with medium shakiness using @command{ffmpeg}:
16799 @example
16800 ffmpeg -i input -vf vidstabdetect=shakiness=5:show=1 dummy.avi
16801 @end example
16802 @end itemize
16803
16804 @anchor{vidstabtransform}
16805 @section vidstabtransform
16806
16807 Video stabilization/deshaking: pass 2 of 2,
16808 see @ref{vidstabdetect} for pass 1.
16809
16810 Read a file with transform information for each frame and
16811 apply/compensate them. Together with the @ref{vidstabdetect}
16812 filter this can be used to deshake videos. See also
16813 @url{http://public.hronopik.de/vid.stab}. It is important to also use
16814 the @ref{unsharp} filter, see below.
16815
16816 To enable compilation of this filter you need to configure FFmpeg with
16817 @code{--enable-libvidstab}.
16818
16819 @subsection Options
16820
16821 @table @option
16822 @item input
16823 Set path to the file used to read the transforms. Default value is
16824 @file{transforms.trf}.
16825
16826 @item smoothing
16827 Set the number of frames (value*2 + 1) used for lowpass filtering the
16828 camera movements. Default value is 10.
16829
16830 For example a number of 10 means that 21 frames are used (10 in the
16831 past and 10 in the future) to smoothen the motion in the video. A
16832 larger value leads to a smoother video, but limits the acceleration of
16833 the camera (pan/tilt movements). 0 is a special case where a static
16834 camera is simulated.
16835
16836 @item optalgo
16837 Set the camera path optimization algorithm.
16838
16839 Accepted values are:
16840 @table @samp
16841 @item gauss
16842 gaussian kernel low-pass filter on camera motion (default)
16843 @item avg
16844 averaging on transformations
16845 @end table
16846
16847 @item maxshift
16848 Set maximal number of pixels to translate frames. Default value is -1,
16849 meaning no limit.
16850
16851 @item maxangle
16852 Set maximal angle in radians (degree*PI/180) to rotate frames. Default
16853 value is -1, meaning no limit.
16854
16855 @item crop
16856 Specify how to deal with borders that may be visible due to movement
16857 compensation.
16858
16859 Available values are:
16860 @table @samp
16861 @item keep
16862 keep image information from previous frame (default)
16863 @item black
16864 fill the border black
16865 @end table
16866
16867 @item invert
16868 Invert transforms if set to 1. Default value is 0.
16869
16870 @item relative
16871 Consider transforms as relative to previous frame if set to 1,
16872 absolute if set to 0. Default value is 0.
16873
16874 @item zoom
16875 Set percentage to zoom. A positive value will result in a zoom-in
16876 effect, a negative value in a zoom-out effect. Default value is 0 (no
16877 zoom).
16878
16879 @item optzoom
16880 Set optimal zooming to avoid borders.
16881
16882 Accepted values are:
16883 @table @samp
16884 @item 0
16885 disabled
16886 @item 1
16887 optimal static zoom value is determined (only very strong movements
16888 will lead to visible borders) (default)
16889 @item 2
16890 optimal adaptive zoom value is determined (no borders will be
16891 visible), see @option{zoomspeed}
16892 @end table
16893
16894 Note that the value given at zoom is added to the one calculated here.
16895
16896 @item zoomspeed
16897 Set percent to zoom maximally each frame (enabled when
16898 @option{optzoom} is set to 2). Range is from 0 to 5, default value is
16899 0.25.
16900
16901 @item interpol
16902 Specify type of interpolation.
16903
16904 Available values are:
16905 @table @samp
16906 @item no
16907 no interpolation
16908 @item linear
16909 linear only horizontal
16910 @item bilinear
16911 linear in both directions (default)
16912 @item bicubic
16913 cubic in both directions (slow)
16914 @end table
16915
16916 @item tripod
16917 Enable virtual tripod mode if set to 1, which is equivalent to
16918 @code{relative=0:smoothing=0}. Default value is 0.
16919
16920 Use also @code{tripod} option of @ref{vidstabdetect}.
16921
16922 @item debug
16923 Increase log verbosity if set to 1. Also the detected global motions
16924 are written to the temporary file @file{global_motions.trf}. Default
16925 value is 0.
16926 @end table
16927
16928 @subsection Examples
16929
16930 @itemize
16931 @item
16932 Use @command{ffmpeg} for a typical stabilization with default values:
16933 @example
16934 ffmpeg -i inp.mpeg -vf vidstabtransform,unsharp=5:5:0.8:3:3:0.4 inp_stabilized.mpeg
16935 @end example
16936
16937 Note the use of the @ref{unsharp} filter which is always recommended.
16938
16939 @item
16940 Zoom in a bit more and load transform data from a given file:
16941 @example
16942 vidstabtransform=zoom=5:input="mytransforms.trf"
16943 @end example
16944
16945 @item
16946 Smoothen the video even more:
16947 @example
16948 vidstabtransform=smoothing=30
16949 @end example
16950 @end itemize
16951
16952 @section vflip
16953
16954 Flip the input video vertically.
16955
16956 For example, to vertically flip a video with @command{ffmpeg}:
16957 @example
16958 ffmpeg -i in.avi -vf "vflip" out.avi
16959 @end example
16960
16961 @section vfrdet
16962
16963 Detect variable frame rate video.
16964
16965 This filter tries to detect if the input is variable or constant frame rate.
16966
16967 At end it will output number of frames detected as having variable delta pts,
16968 and ones with constant delta pts.
16969 If there was frames with variable delta, than it will also show min and max delta
16970 encountered.
16971
16972 @anchor{vignette}
16973 @section vignette
16974
16975 Make or reverse a natural vignetting effect.
16976
16977 The filter accepts the following options:
16978
16979 @table @option
16980 @item angle, a
16981 Set lens angle expression as a number of radians.
16982
16983 The value is clipped in the @code{[0,PI/2]} range.
16984
16985 Default value: @code{"PI/5"}
16986
16987 @item x0
16988 @item y0
16989 Set center coordinates expressions. Respectively @code{"w/2"} and @code{"h/2"}
16990 by default.
16991
16992 @item mode
16993 Set forward/backward mode.
16994
16995 Available modes are:
16996 @table @samp
16997 @item forward
16998 The larger the distance from the central point, the darker the image becomes.
16999
17000 @item backward
17001 The larger the distance from the central point, the brighter the image becomes.
17002 This can be used to reverse a vignette effect, though there is no automatic
17003 detection to extract the lens @option{angle} and other settings (yet). It can
17004 also be used to create a burning effect.
17005 @end table
17006
17007 Default value is @samp{forward}.
17008
17009 @item eval
17010 Set evaluation mode for the expressions (@option{angle}, @option{x0}, @option{y0}).
17011
17012 It accepts the following values:
17013 @table @samp
17014 @item init
17015 Evaluate expressions only once during the filter initialization.
17016
17017 @item frame
17018 Evaluate expressions for each incoming frame. This is way slower than the
17019 @samp{init} mode since it requires all the scalers to be re-computed, but it
17020 allows advanced dynamic expressions.
17021 @end table
17022
17023 Default value is @samp{init}.
17024
17025 @item dither
17026 Set dithering to reduce the circular banding effects. Default is @code{1}
17027 (enabled).
17028
17029 @item aspect
17030 Set vignette aspect. This setting allows one to adjust the shape of the vignette.
17031 Setting this value to the SAR of the input will make a rectangular vignetting
17032 following the dimensions of the video.
17033
17034 Default is @code{1/1}.
17035 @end table
17036
17037 @subsection Expressions
17038
17039 The @option{alpha}, @option{x0} and @option{y0} expressions can contain the
17040 following parameters.
17041
17042 @table @option
17043 @item w
17044 @item h
17045 input width and height
17046
17047 @item n
17048 the number of input frame, starting from 0
17049
17050 @item pts
17051 the PTS (Presentation TimeStamp) time of the filtered video frame, expressed in
17052 @var{TB} units, NAN if undefined
17053
17054 @item r
17055 frame rate of the input video, NAN if the input frame rate is unknown
17056
17057 @item t
17058 the PTS (Presentation TimeStamp) of the filtered video frame,
17059 expressed in seconds, NAN if undefined
17060
17061 @item tb
17062 time base of the input video
17063 @end table
17064
17065
17066 @subsection Examples
17067
17068 @itemize
17069 @item
17070 Apply simple strong vignetting effect:
17071 @example
17072 vignette=PI/4
17073 @end example
17074
17075 @item
17076 Make a flickering vignetting:
17077 @example
17078 vignette='PI/4+random(1)*PI/50':eval=frame
17079 @end example
17080
17081 @end itemize
17082
17083 @section vmafmotion
17084
17085 Obtain the average vmaf motion score of a video.
17086 It is one of the component filters of VMAF.
17087
17088 The obtained average motion score is printed through the logging system.
17089
17090 In the below example the input file @file{ref.mpg} is being processed and score
17091 is computed.
17092
17093 @example
17094 ffmpeg -i ref.mpg -lavfi vmafmotion -f null -
17095 @end example
17096
17097 @section vstack
17098 Stack input videos vertically.
17099
17100 All streams must be of same pixel format and of same width.
17101
17102 Note that this filter is faster than using @ref{overlay} and @ref{pad} filter
17103 to create same output.
17104
17105 The filter accept the following option:
17106
17107 @table @option
17108 @item inputs
17109 Set number of input streams. Default is 2.
17110
17111 @item shortest
17112 If set to 1, force the output to terminate when the shortest input
17113 terminates. Default value is 0.
17114 @end table
17115
17116 @section w3fdif
17117
17118 Deinterlace the input video ("w3fdif" stands for "Weston 3 Field
17119 Deinterlacing Filter").
17120
17121 Based on the process described by Martin Weston for BBC R&D, and
17122 implemented based on the de-interlace algorithm written by Jim
17123 Easterbrook for BBC R&D, the Weston 3 field deinterlacing filter
17124 uses filter coefficients calculated by BBC R&D.
17125
17126 There are two sets of filter coefficients, so called "simple":
17127 and "complex". Which set of filter coefficients is used can
17128 be set by passing an optional parameter:
17129
17130 @table @option
17131 @item filter
17132 Set the interlacing filter coefficients. Accepts one of the following values:
17133
17134 @table @samp
17135 @item simple
17136 Simple filter coefficient set.
17137 @item complex
17138 More-complex filter coefficient set.
17139 @end table
17140 Default value is @samp{complex}.
17141
17142 @item deint
17143 Specify which frames to deinterlace. Accept one of the following values:
17144
17145 @table @samp
17146 @item all
17147 Deinterlace all frames,
17148 @item interlaced
17149 Only deinterlace frames marked as interlaced.
17150 @end table
17151
17152 Default value is @samp{all}.
17153 @end table
17154
17155 @section waveform
17156 Video waveform monitor.
17157
17158 The waveform monitor plots color component intensity. By default luminance
17159 only. Each column of the waveform corresponds to a column of pixels in the
17160 source video.
17161
17162 It accepts the following options:
17163
17164 @table @option
17165 @item mode, m
17166 Can be either @code{row}, or @code{column}. Default is @code{column}.
17167 In row mode, the graph on the left side represents color component value 0 and
17168 the right side represents value = 255. In column mode, the top side represents
17169 color component value = 0 and bottom side represents value = 255.
17170
17171 @item intensity, i
17172 Set intensity. Smaller values are useful to find out how many values of the same
17173 luminance are distributed across input rows/columns.
17174 Default value is @code{0.04}. Allowed range is [0, 1].
17175
17176 @item mirror, r
17177 Set mirroring mode. @code{0} means unmirrored, @code{1} means mirrored.
17178 In mirrored mode, higher values will be represented on the left
17179 side for @code{row} mode and at the top for @code{column} mode. Default is
17180 @code{1} (mirrored).
17181
17182 @item display, d
17183 Set display mode.
17184 It accepts the following values:
17185 @table @samp
17186 @item overlay
17187 Presents information identical to that in the @code{parade}, except
17188 that the graphs representing color components are superimposed directly
17189 over one another.
17190
17191 This display mode makes it easier to spot relative differences or similarities
17192 in overlapping areas of the color components that are supposed to be identical,
17193 such as neutral whites, grays, or blacks.
17194
17195 @item stack
17196 Display separate graph for the color components side by side in
17197 @code{row} mode or one below the other in @code{column} mode.
17198
17199 @item parade
17200 Display separate graph for the color components side by side in
17201 @code{column} mode or one below the other in @code{row} mode.
17202
17203 Using this display mode makes it easy to spot color casts in the highlights
17204 and shadows of an image, by comparing the contours of the top and the bottom
17205 graphs of each waveform. Since whites, grays, and blacks are characterized
17206 by exactly equal amounts of red, green, and blue, neutral areas of the picture
17207 should display three waveforms of roughly equal width/height. If not, the
17208 correction is easy to perform by making level adjustments the three waveforms.
17209 @end table
17210 Default is @code{stack}.
17211
17212 @item components, c
17213 Set which color components to display. Default is 1, which means only luminance
17214 or red color component if input is in RGB colorspace. If is set for example to
17215 7 it will display all 3 (if) available color components.
17216
17217 @item envelope, e
17218 @table @samp
17219 @item none
17220 No envelope, this is default.
17221
17222 @item instant
17223 Instant envelope, minimum and maximum values presented in graph will be easily
17224 visible even with small @code{step} value.
17225
17226 @item peak
17227 Hold minimum and maximum values presented in graph across time. This way you
17228 can still spot out of range values without constantly looking at waveforms.
17229
17230 @item peak+instant
17231 Peak and instant envelope combined together.
17232 @end table
17233
17234 @item filter, f
17235 @table @samp
17236 @item lowpass
17237 No filtering, this is default.
17238
17239 @item flat
17240 Luma and chroma combined together.
17241
17242 @item aflat
17243 Similar as above, but shows difference between blue and red chroma.
17244
17245 @item xflat
17246 Similar as above, but use different colors.
17247
17248 @item chroma
17249 Displays only chroma.
17250
17251 @item color
17252 Displays actual color value on waveform.
17253
17254 @item acolor
17255 Similar as above, but with luma showing frequency of chroma values.
17256 @end table
17257
17258 @item graticule, g
17259 Set which graticule to display.
17260
17261 @table @samp
17262 @item none
17263 Do not display graticule.
17264
17265 @item green
17266 Display green graticule showing legal broadcast ranges.
17267
17268 @item orange
17269 Display orange graticule showing legal broadcast ranges.
17270 @end table
17271
17272 @item opacity, o
17273 Set graticule opacity.
17274
17275 @item flags, fl
17276 Set graticule flags.
17277
17278 @table @samp
17279 @item numbers
17280 Draw numbers above lines. By default enabled.
17281
17282 @item dots
17283 Draw dots instead of lines.
17284 @end table
17285
17286 @item scale, s
17287 Set scale used for displaying graticule.
17288
17289 @table @samp
17290 @item digital
17291 @item millivolts
17292 @item ire
17293 @end table
17294 Default is digital.
17295
17296 @item bgopacity, b
17297 Set background opacity.
17298 @end table
17299
17300 @section weave, doubleweave
17301
17302 The @code{weave} takes a field-based video input and join
17303 each two sequential fields into single frame, producing a new double
17304 height clip with half the frame rate and half the frame count.
17305
17306 The @code{doubleweave} works same as @code{weave} but without
17307 halving frame rate and frame count.
17308
17309 It accepts the following option:
17310
17311 @table @option
17312 @item first_field
17313 Set first field. Available values are:
17314
17315 @table @samp
17316 @item top, t
17317 Set the frame as top-field-first.
17318
17319 @item bottom, b
17320 Set the frame as bottom-field-first.
17321 @end table
17322 @end table
17323
17324 @subsection Examples
17325
17326 @itemize
17327 @item
17328 Interlace video using @ref{select} and @ref{separatefields} filter:
17329 @example
17330 separatefields,select=eq(mod(n,4),0)+eq(mod(n,4),3),weave
17331 @end example
17332 @end itemize
17333
17334 @section xbr
17335 Apply the xBR high-quality magnification filter which is designed for pixel
17336 art. It follows a set of edge-detection rules, see
17337 @url{https://forums.libretro.com/t/xbr-algorithm-tutorial/123}.
17338
17339 It accepts the following option:
17340
17341 @table @option
17342 @item n
17343 Set the scaling dimension: @code{2} for @code{2xBR}, @code{3} for
17344 @code{3xBR} and @code{4} for @code{4xBR}.
17345 Default is @code{3}.
17346 @end table
17347
17348 @anchor{yadif}
17349 @section yadif
17350
17351 Deinterlace the input video ("yadif" means "yet another deinterlacing
17352 filter").
17353
17354 It accepts the following parameters:
17355
17356
17357 @table @option
17358
17359 @item mode
17360 The interlacing mode to adopt. It accepts one of the following values:
17361
17362 @table @option
17363 @item 0, send_frame
17364 Output one frame for each frame.
17365 @item 1, send_field
17366 Output one frame for each field.
17367 @item 2, send_frame_nospatial
17368 Like @code{send_frame}, but it skips the spatial interlacing check.
17369 @item 3, send_field_nospatial
17370 Like @code{send_field}, but it skips the spatial interlacing check.
17371 @end table
17372
17373 The default value is @code{send_frame}.
17374
17375 @item parity
17376 The picture field parity assumed for the input interlaced video. It accepts one
17377 of the following values:
17378
17379 @table @option
17380 @item 0, tff
17381 Assume the top field is first.
17382 @item 1, bff
17383 Assume the bottom field is first.
17384 @item -1, auto
17385 Enable automatic detection of field parity.
17386 @end table
17387
17388 The default value is @code{auto}.
17389 If the interlacing is unknown or the decoder does not export this information,
17390 top field first will be assumed.
17391
17392 @item deint
17393 Specify which frames to deinterlace. Accept one of the following
17394 values:
17395
17396 @table @option
17397 @item 0, all
17398 Deinterlace all frames.
17399 @item 1, interlaced
17400 Only deinterlace frames marked as interlaced.
17401 @end table
17402
17403 The default value is @code{all}.
17404 @end table
17405
17406 @section zoompan
17407
17408 Apply Zoom & Pan effect.
17409
17410 This filter accepts the following options:
17411
17412 @table @option
17413 @item zoom, z
17414 Set the zoom expression. Default is 1.
17415
17416 @item x
17417 @item y
17418 Set the x and y expression. Default is 0.
17419
17420 @item d
17421 Set the duration expression in number of frames.
17422 This sets for how many number of frames effect will last for
17423 single input image.
17424
17425 @item s
17426 Set the output image size, default is 'hd720'.
17427
17428 @item fps
17429 Set the output frame rate, default is '25'.
17430 @end table
17431
17432 Each expression can contain the following constants:
17433
17434 @table @option
17435 @item in_w, iw
17436 Input width.
17437
17438 @item in_h, ih
17439 Input height.
17440
17441 @item out_w, ow
17442 Output width.
17443
17444 @item out_h, oh
17445 Output height.
17446
17447 @item in
17448 Input frame count.
17449
17450 @item on
17451 Output frame count.
17452
17453 @item x
17454 @item y
17455 Last calculated 'x' and 'y' position from 'x' and 'y' expression
17456 for current input frame.
17457
17458 @item px
17459 @item py
17460 'x' and 'y' of last output frame of previous input frame or 0 when there was
17461 not yet such frame (first input frame).
17462
17463 @item zoom
17464 Last calculated zoom from 'z' expression for current input frame.
17465
17466 @item pzoom
17467 Last calculated zoom of last output frame of previous input frame.
17468
17469 @item duration
17470 Number of output frames for current input frame. Calculated from 'd' expression
17471 for each input frame.
17472
17473 @item pduration
17474 number of output frames created for previous input frame
17475
17476 @item a
17477 Rational number: input width / input height
17478
17479 @item sar
17480 sample aspect ratio
17481
17482 @item dar
17483 display aspect ratio
17484
17485 @end table
17486
17487 @subsection Examples
17488
17489 @itemize
17490 @item
17491 Zoom-in up to 1.5 and pan at same time to some spot near center of picture:
17492 @example
17493 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
17494 @end example
17495
17496 @item
17497 Zoom-in up to 1.5 and pan always at center of picture:
17498 @example
17499 zoompan=z='min(zoom+0.0015,1.5)':d=700:x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)'
17500 @end example
17501
17502 @item
17503 Same as above but without pausing:
17504 @example
17505 zoompan=z='min(max(zoom,pzoom)+0.0015,1.5)':d=1:x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)'
17506 @end example
17507 @end itemize
17508
17509 @anchor{zscale}
17510 @section zscale
17511 Scale (resize) the input video, using the z.lib library:
17512 @url{https://github.com/sekrit-twc/zimg}. To enable compilation of this
17513 filter, you need to configure FFmpeg with @code{--enable-libzimg}.
17514
17515 The zscale filter forces the output display aspect ratio to be the same
17516 as the input, by changing the output sample aspect ratio.
17517
17518 If the input image format is different from the format requested by
17519 the next filter, the zscale filter will convert the input to the
17520 requested format.
17521
17522 @subsection Options
17523 The filter accepts the following options.
17524
17525 @table @option
17526 @item width, w
17527 @item height, h
17528 Set the output video dimension expression. Default value is the input
17529 dimension.
17530
17531 If the @var{width} or @var{w} value is 0, the input width is used for
17532 the output. If the @var{height} or @var{h} value is 0, the input height
17533 is used for the output.
17534
17535 If one and only one of the values is -n with n >= 1, the zscale filter
17536 will use a value that maintains the aspect ratio of the input image,
17537 calculated from the other specified dimension. After that it will,
17538 however, make sure that the calculated dimension is divisible by n and
17539 adjust the value if necessary.
17540
17541 If both values are -n with n >= 1, the behavior will be identical to
17542 both values being set to 0 as previously detailed.
17543
17544 See below for the list of accepted constants for use in the dimension
17545 expression.
17546
17547 @item size, s
17548 Set the video size. For the syntax of this option, check the
17549 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
17550
17551 @item dither, d
17552 Set the dither type.
17553
17554 Possible values are:
17555 @table @var
17556 @item none
17557 @item ordered
17558 @item random
17559 @item error_diffusion
17560 @end table
17561
17562 Default is none.
17563
17564 @item filter, f
17565 Set the resize filter type.
17566
17567 Possible values are:
17568 @table @var
17569 @item point
17570 @item bilinear
17571 @item bicubic
17572 @item spline16
17573 @item spline36
17574 @item lanczos
17575 @end table
17576
17577 Default is bilinear.
17578
17579 @item range, r
17580 Set the color range.
17581
17582 Possible values are:
17583 @table @var
17584 @item input
17585 @item limited
17586 @item full
17587 @end table
17588
17589 Default is same as input.
17590
17591 @item primaries, p
17592 Set the color primaries.
17593
17594 Possible values are:
17595 @table @var
17596 @item input
17597 @item 709
17598 @item unspecified
17599 @item 170m
17600 @item 240m
17601 @item 2020
17602 @end table
17603
17604 Default is same as input.
17605
17606 @item transfer, t
17607 Set the transfer characteristics.
17608
17609 Possible values are:
17610 @table @var
17611 @item input
17612 @item 709
17613 @item unspecified
17614 @item 601
17615 @item linear
17616 @item 2020_10
17617 @item 2020_12
17618 @item smpte2084
17619 @item iec61966-2-1
17620 @item arib-std-b67
17621 @end table
17622
17623 Default is same as input.
17624
17625 @item matrix, m
17626 Set the colorspace matrix.
17627
17628 Possible value are:
17629 @table @var
17630 @item input
17631 @item 709
17632 @item unspecified
17633 @item 470bg
17634 @item 170m
17635 @item 2020_ncl
17636 @item 2020_cl
17637 @end table
17638
17639 Default is same as input.
17640
17641 @item rangein, rin
17642 Set the input color range.
17643
17644 Possible values are:
17645 @table @var
17646 @item input
17647 @item limited
17648 @item full
17649 @end table
17650
17651 Default is same as input.
17652
17653 @item primariesin, pin
17654 Set the input color primaries.
17655
17656 Possible values are:
17657 @table @var
17658 @item input
17659 @item 709
17660 @item unspecified
17661 @item 170m
17662 @item 240m
17663 @item 2020
17664 @end table
17665
17666 Default is same as input.
17667
17668 @item transferin, tin
17669 Set the input transfer characteristics.
17670
17671 Possible values are:
17672 @table @var
17673 @item input
17674 @item 709
17675 @item unspecified
17676 @item 601
17677 @item linear
17678 @item 2020_10
17679 @item 2020_12
17680 @end table
17681
17682 Default is same as input.
17683
17684 @item matrixin, min
17685 Set the input colorspace matrix.
17686
17687 Possible value are:
17688 @table @var
17689 @item input
17690 @item 709
17691 @item unspecified
17692 @item 470bg
17693 @item 170m
17694 @item 2020_ncl
17695 @item 2020_cl
17696 @end table
17697
17698 @item chromal, c
17699 Set the output chroma location.
17700
17701 Possible values are:
17702 @table @var
17703 @item input
17704 @item left
17705 @item center
17706 @item topleft
17707 @item top
17708 @item bottomleft
17709 @item bottom
17710 @end table
17711
17712 @item chromalin, cin
17713 Set the input chroma location.
17714
17715 Possible values are:
17716 @table @var
17717 @item input
17718 @item left
17719 @item center
17720 @item topleft
17721 @item top
17722 @item bottomleft
17723 @item bottom
17724 @end table
17725
17726 @item npl
17727 Set the nominal peak luminance.
17728 @end table
17729
17730 The values of the @option{w} and @option{h} options are expressions
17731 containing the following constants:
17732
17733 @table @var
17734 @item in_w
17735 @item in_h
17736 The input width and height
17737
17738 @item iw
17739 @item ih
17740 These are the same as @var{in_w} and @var{in_h}.
17741
17742 @item out_w
17743 @item out_h
17744 The output (scaled) width and height
17745
17746 @item ow
17747 @item oh
17748 These are the same as @var{out_w} and @var{out_h}
17749
17750 @item a
17751 The same as @var{iw} / @var{ih}
17752
17753 @item sar
17754 input sample aspect ratio
17755
17756 @item dar
17757 The input display aspect ratio. Calculated from @code{(iw / ih) * sar}.
17758
17759 @item hsub
17760 @item vsub
17761 horizontal and vertical input chroma subsample values. For example for the
17762 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
17763
17764 @item ohsub
17765 @item ovsub
17766 horizontal and vertical output chroma subsample values. For example for the
17767 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
17768 @end table
17769
17770 @table @option
17771 @end table
17772
17773 @c man end VIDEO FILTERS
17774
17775 @chapter Video Sources
17776 @c man begin VIDEO SOURCES
17777
17778 Below is a description of the currently available video sources.
17779
17780 @section buffer
17781
17782 Buffer video frames, and make them available to the filter chain.
17783
17784 This source is mainly intended for a programmatic use, in particular
17785 through the interface defined in @file{libavfilter/vsrc_buffer.h}.
17786
17787 It accepts the following parameters:
17788
17789 @table @option
17790
17791 @item video_size
17792 Specify the size (width and height) of the buffered video frames. For the
17793 syntax of this option, check the
17794 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
17795
17796 @item width
17797 The input video width.
17798
17799 @item height
17800 The input video height.
17801
17802 @item pix_fmt
17803 A string representing the pixel format of the buffered video frames.
17804 It may be a number corresponding to a pixel format, or a pixel format
17805 name.
17806
17807 @item time_base
17808 Specify the timebase assumed by the timestamps of the buffered frames.
17809
17810 @item frame_rate
17811 Specify the frame rate expected for the video stream.
17812
17813 @item pixel_aspect, sar
17814 The sample (pixel) aspect ratio of the input video.
17815
17816 @item sws_param
17817 Specify the optional parameters to be used for the scale filter which
17818 is automatically inserted when an input change is detected in the
17819 input size or format.
17820
17821 @item hw_frames_ctx
17822 When using a hardware pixel format, this should be a reference to an
17823 AVHWFramesContext describing input frames.
17824 @end table
17825
17826 For example:
17827 @example
17828 buffer=width=320:height=240:pix_fmt=yuv410p:time_base=1/24:sar=1
17829 @end example
17830
17831 will instruct the source to accept video frames with size 320x240 and
17832 with format "yuv410p", assuming 1/24 as the timestamps timebase and
17833 square pixels (1:1 sample aspect ratio).
17834 Since the pixel format with name "yuv410p" corresponds to the number 6
17835 (check the enum AVPixelFormat definition in @file{libavutil/pixfmt.h}),
17836 this example corresponds to:
17837 @example
17838 buffer=size=320x240:pixfmt=6:time_base=1/24:pixel_aspect=1/1
17839 @end example
17840
17841 Alternatively, the options can be specified as a flat string, but this
17842 syntax is deprecated:
17843
17844 @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}]
17845
17846 @section cellauto
17847
17848 Create a pattern generated by an elementary cellular automaton.
17849
17850 The initial state of the cellular automaton can be defined through the
17851 @option{filename} and @option{pattern} options. If such options are
17852 not specified an initial state is created randomly.
17853
17854 At each new frame a new row in the video is filled with the result of
17855 the cellular automaton next generation. The behavior when the whole
17856 frame is filled is defined by the @option{scroll} option.
17857
17858 This source accepts the following options:
17859
17860 @table @option
17861 @item filename, f
17862 Read the initial cellular automaton state, i.e. the starting row, from
17863 the specified file.
17864 In the file, each non-whitespace character is considered an alive
17865 cell, a newline will terminate the row, and further characters in the
17866 file will be ignored.
17867
17868 @item pattern, p
17869 Read the initial cellular automaton state, i.e. the starting row, from
17870 the specified string.
17871
17872 Each non-whitespace character in the string is considered an alive
17873 cell, a newline will terminate the row, and further characters in the
17874 string will be ignored.
17875
17876 @item rate, r
17877 Set the video rate, that is the number of frames generated per second.
17878 Default is 25.
17879
17880 @item random_fill_ratio, ratio
17881 Set the random fill ratio for the initial cellular automaton row. It
17882 is a floating point number value ranging from 0 to 1, defaults to
17883 1/PHI.
17884
17885 This option is ignored when a file or a pattern is specified.
17886
17887 @item random_seed, seed
17888 Set the seed for filling randomly the initial row, must be an integer
17889 included between 0 and UINT32_MAX. If not specified, or if explicitly
17890 set to -1, the filter will try to use a good random seed on a best
17891 effort basis.
17892
17893 @item rule
17894 Set the cellular automaton rule, it is a number ranging from 0 to 255.
17895 Default value is 110.
17896
17897 @item size, s
17898 Set the size of the output video. For the syntax of this option, check the
17899 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
17900
17901 If @option{filename} or @option{pattern} is specified, the size is set
17902 by default to the width of the specified initial state row, and the
17903 height is set to @var{width} * PHI.
17904
17905 If @option{size} is set, it must contain the width of the specified
17906 pattern string, and the specified pattern will be centered in the
17907 larger row.
17908
17909 If a filename or a pattern string is not specified, the size value
17910 defaults to "320x518" (used for a randomly generated initial state).
17911
17912 @item scroll
17913 If set to 1, scroll the output upward when all the rows in the output
17914 have been already filled. If set to 0, the new generated row will be
17915 written over the top row just after the bottom row is filled.
17916 Defaults to 1.
17917
17918 @item start_full, full
17919 If set to 1, completely fill the output with generated rows before
17920 outputting the first frame.
17921 This is the default behavior, for disabling set the value to 0.
17922
17923 @item stitch
17924 If set to 1, stitch the left and right row edges together.
17925 This is the default behavior, for disabling set the value to 0.
17926 @end table
17927
17928 @subsection Examples
17929
17930 @itemize
17931 @item
17932 Read the initial state from @file{pattern}, and specify an output of
17933 size 200x400.
17934 @example
17935 cellauto=f=pattern:s=200x400
17936 @end example
17937
17938 @item
17939 Generate a random initial row with a width of 200 cells, with a fill
17940 ratio of 2/3:
17941 @example
17942 cellauto=ratio=2/3:s=200x200
17943 @end example
17944
17945 @item
17946 Create a pattern generated by rule 18 starting by a single alive cell
17947 centered on an initial row with width 100:
17948 @example
17949 cellauto=p=@@:s=100x400:full=0:rule=18
17950 @end example
17951
17952 @item
17953 Specify a more elaborated initial pattern:
17954 @example
17955 cellauto=p='@@@@ @@ @@@@':s=100x400:full=0:rule=18
17956 @end example
17957
17958 @end itemize
17959
17960 @anchor{coreimagesrc}
17961 @section coreimagesrc
17962 Video source generated on GPU using Apple's CoreImage API on OSX.
17963
17964 This video source is a specialized version of the @ref{coreimage} video filter.
17965 Use a core image generator at the beginning of the applied filterchain to
17966 generate the content.
17967
17968 The coreimagesrc video source accepts the following options:
17969 @table @option
17970 @item list_generators
17971 List all available generators along with all their respective options as well as
17972 possible minimum and maximum values along with the default values.
17973 @example
17974 list_generators=true
17975 @end example
17976
17977 @item size, s
17978 Specify the size of the sourced video. For the syntax of this option, check the
17979 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
17980 The default value is @code{320x240}.
17981
17982 @item rate, r
17983 Specify the frame rate of the sourced video, as the number of frames
17984 generated per second. It has to be a string in the format
17985 @var{frame_rate_num}/@var{frame_rate_den}, an integer number, a floating point
17986 number or a valid video frame rate abbreviation. The default value is
17987 "25".
17988
17989 @item sar
17990 Set the sample aspect ratio of the sourced video.
17991
17992 @item duration, d
17993 Set the duration of the sourced video. See
17994 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
17995 for the accepted syntax.
17996
17997 If not specified, or the expressed duration is negative, the video is
17998 supposed to be generated forever.
17999 @end table
18000
18001 Additionally, all options of the @ref{coreimage} video filter are accepted.
18002 A complete filterchain can be used for further processing of the
18003 generated input without CPU-HOST transfer. See @ref{coreimage} documentation
18004 and examples for details.
18005
18006 @subsection Examples
18007
18008 @itemize
18009
18010 @item
18011 Use CIQRCodeGenerator to create a QR code for the FFmpeg homepage,
18012 given as complete and escaped command-line for Apple's standard bash shell:
18013 @example
18014 ffmpeg -f lavfi -i coreimagesrc=s=100x100:filter=CIQRCodeGenerator@@inputMessage=https\\\\\://FFmpeg.org/@@inputCorrectionLevel=H -frames:v 1 QRCode.png
18015 @end example
18016 This example is equivalent to the QRCode example of @ref{coreimage} without the
18017 need for a nullsrc video source.
18018 @end itemize
18019
18020
18021 @section mandelbrot
18022
18023 Generate a Mandelbrot set fractal, and progressively zoom towards the
18024 point specified with @var{start_x} and @var{start_y}.
18025
18026 This source accepts the following options:
18027
18028 @table @option
18029
18030 @item end_pts
18031 Set the terminal pts value. Default value is 400.
18032
18033 @item end_scale
18034 Set the terminal scale value.
18035 Must be a floating point value. Default value is 0.3.
18036
18037 @item inner
18038 Set the inner coloring mode, that is the algorithm used to draw the
18039 Mandelbrot fractal internal region.
18040
18041 It shall assume one of the following values:
18042 @table @option
18043 @item black
18044 Set black mode.
18045 @item convergence
18046 Show time until convergence.
18047 @item mincol
18048 Set color based on point closest to the origin of the iterations.
18049 @item period
18050 Set period mode.
18051 @end table
18052
18053 Default value is @var{mincol}.
18054
18055 @item bailout
18056 Set the bailout value. Default value is 10.0.
18057
18058 @item maxiter
18059 Set the maximum of iterations performed by the rendering
18060 algorithm. Default value is 7189.
18061
18062 @item outer
18063 Set outer coloring mode.
18064 It shall assume one of following values:
18065 @table @option
18066 @item iteration_count
18067 Set iteration cound mode.
18068 @item normalized_iteration_count
18069 set normalized iteration count mode.
18070 @end table
18071 Default value is @var{normalized_iteration_count}.
18072
18073 @item rate, r
18074 Set frame rate, expressed as number of frames per second. Default
18075 value is "25".
18076
18077 @item size, s
18078 Set frame size. For the syntax of this option, check the @ref{video size syntax,,"Video
18079 size" section in the ffmpeg-utils manual,ffmpeg-utils}. Default value is "640x480".
18080
18081 @item start_scale
18082 Set the initial scale value. Default value is 3.0.
18083
18084 @item start_x
18085 Set the initial x position. Must be a floating point value between
18086 -100 and 100. Default value is -0.743643887037158704752191506114774.
18087
18088 @item start_y
18089 Set the initial y position. Must be a floating point value between
18090 -100 and 100. Default value is -0.131825904205311970493132056385139.
18091 @end table
18092
18093 @section mptestsrc
18094
18095 Generate various test patterns, as generated by the MPlayer test filter.
18096
18097 The size of the generated video is fixed, and is 256x256.
18098 This source is useful in particular for testing encoding features.
18099
18100 This source accepts the following options:
18101
18102 @table @option
18103
18104 @item rate, r
18105 Specify the frame rate of the sourced video, as the number of frames
18106 generated per second. It has to be a string in the format
18107 @var{frame_rate_num}/@var{frame_rate_den}, an integer number, a floating point
18108 number or a valid video frame rate abbreviation. The default value is
18109 "25".
18110
18111 @item duration, d
18112 Set the duration of the sourced video. See
18113 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
18114 for the accepted syntax.
18115
18116 If not specified, or the expressed duration is negative, the video is
18117 supposed to be generated forever.
18118
18119 @item test, t
18120
18121 Set the number or the name of the test to perform. Supported tests are:
18122 @table @option
18123 @item dc_luma
18124 @item dc_chroma
18125 @item freq_luma
18126 @item freq_chroma
18127 @item amp_luma
18128 @item amp_chroma
18129 @item cbp
18130 @item mv
18131 @item ring1
18132 @item ring2
18133 @item all
18134
18135 @end table
18136
18137 Default value is "all", which will cycle through the list of all tests.
18138 @end table
18139
18140 Some examples:
18141 @example
18142 mptestsrc=t=dc_luma
18143 @end example
18144
18145 will generate a "dc_luma" test pattern.
18146
18147 @section frei0r_src
18148
18149 Provide a frei0r source.
18150
18151 To enable compilation of this filter you need to install the frei0r
18152 header and configure FFmpeg with @code{--enable-frei0r}.
18153
18154 This source accepts the following parameters:
18155
18156 @table @option
18157
18158 @item size
18159 The size of the video to generate. For the syntax of this option, check the
18160 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
18161
18162 @item framerate
18163 The framerate of the generated video. It may be a string of the form
18164 @var{num}/@var{den} or a frame rate abbreviation.
18165
18166 @item filter_name
18167 The name to the frei0r source to load. For more information regarding frei0r and
18168 how to set the parameters, read the @ref{frei0r} section in the video filters
18169 documentation.
18170
18171 @item filter_params
18172 A '|'-separated list of parameters to pass to the frei0r source.
18173
18174 @end table
18175
18176 For example, to generate a frei0r partik0l source with size 200x200
18177 and frame rate 10 which is overlaid on the overlay filter main input:
18178 @example
18179 frei0r_src=size=200x200:framerate=10:filter_name=partik0l:filter_params=1234 [overlay]; [in][overlay] overlay
18180 @end example
18181
18182 @section life
18183
18184 Generate a life pattern.
18185
18186 This source is based on a generalization of John Conway's life game.
18187
18188 The sourced input represents a life grid, each pixel represents a cell
18189 which can be in one of two possible states, alive or dead. Every cell
18190 interacts with its eight neighbours, which are the cells that are
18191 horizontally, vertically, or diagonally adjacent.
18192
18193 At each interaction the grid evolves according to the adopted rule,
18194 which specifies the number of neighbor alive cells which will make a
18195 cell stay alive or born. The @option{rule} option allows one to specify
18196 the rule to adopt.
18197
18198 This source accepts the following options:
18199
18200 @table @option
18201 @item filename, f
18202 Set the file from which to read the initial grid state. In the file,
18203 each non-whitespace character is considered an alive cell, and newline
18204 is used to delimit the end of each row.
18205
18206 If this option is not specified, the initial grid is generated
18207 randomly.
18208
18209 @item rate, r
18210 Set the video rate, that is the number of frames generated per second.
18211 Default is 25.
18212
18213 @item random_fill_ratio, ratio
18214 Set the random fill ratio for the initial random grid. It is a
18215 floating point number value ranging from 0 to 1, defaults to 1/PHI.
18216 It is ignored when a file is specified.
18217
18218 @item random_seed, seed
18219 Set the seed for filling the initial random grid, must be an integer
18220 included between 0 and UINT32_MAX. If not specified, or if explicitly
18221 set to -1, the filter will try to use a good random seed on a best
18222 effort basis.
18223
18224 @item rule
18225 Set the life rule.
18226
18227 A rule can be specified with a code of the kind "S@var{NS}/B@var{NB}",
18228 where @var{NS} and @var{NB} are sequences of numbers in the range 0-8,
18229 @var{NS} specifies the number of alive neighbor cells which make a
18230 live cell stay alive, and @var{NB} the number of alive neighbor cells
18231 which make a dead cell to become alive (i.e. to "born").
18232 "s" and "b" can be used in place of "S" and "B", respectively.
18233
18234 Alternatively a rule can be specified by an 18-bits integer. The 9
18235 high order bits are used to encode the next cell state if it is alive
18236 for each number of neighbor alive cells, the low order bits specify
18237 the rule for "borning" new cells. Higher order bits encode for an
18238 higher number of neighbor cells.
18239 For example the number 6153 = @code{(12<<9)+9} specifies a stay alive
18240 rule of 12 and a born rule of 9, which corresponds to "S23/B03".
18241
18242 Default value is "S23/B3", which is the original Conway's game of life
18243 rule, and will keep a cell alive if it has 2 or 3 neighbor alive
18244 cells, and will born a new cell if there are three alive cells around
18245 a dead cell.
18246
18247 @item size, s
18248 Set the size of the output video. For the syntax of this option, check the
18249 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
18250
18251 If @option{filename} is specified, the size is set by default to the
18252 same size of the input file. If @option{size} is set, it must contain
18253 the size specified in the input file, and the initial grid defined in
18254 that file is centered in the larger resulting area.
18255
18256 If a filename is not specified, the size value defaults to "320x240"
18257 (used for a randomly generated initial grid).
18258
18259 @item stitch
18260 If set to 1, stitch the left and right grid edges together, and the
18261 top and bottom edges also. Defaults to 1.
18262
18263 @item mold
18264 Set cell mold speed. If set, a dead cell will go from @option{death_color} to
18265 @option{mold_color} with a step of @option{mold}. @option{mold} can have a
18266 value from 0 to 255.
18267
18268 @item life_color
18269 Set the color of living (or new born) cells.
18270
18271 @item death_color
18272 Set the color of dead cells. If @option{mold} is set, this is the first color
18273 used to represent a dead cell.
18274
18275 @item mold_color
18276 Set mold color, for definitely dead and moldy cells.
18277
18278 For the syntax of these 3 color options, check the @ref{color syntax,,"Color" section in the
18279 ffmpeg-utils manual,ffmpeg-utils}.
18280 @end table
18281
18282 @subsection Examples
18283
18284 @itemize
18285 @item
18286 Read a grid from @file{pattern}, and center it on a grid of size
18287 300x300 pixels:
18288 @example
18289 life=f=pattern:s=300x300
18290 @end example
18291
18292 @item
18293 Generate a random grid of size 200x200, with a fill ratio of 2/3:
18294 @example
18295 life=ratio=2/3:s=200x200
18296 @end example
18297
18298 @item
18299 Specify a custom rule for evolving a randomly generated grid:
18300 @example
18301 life=rule=S14/B34
18302 @end example
18303
18304 @item
18305 Full example with slow death effect (mold) using @command{ffplay}:
18306 @example
18307 ffplay -f lavfi life=s=300x200:mold=10:r=60:ratio=0.1:death_color=#C83232:life_color=#00ff00,scale=1200:800:flags=16
18308 @end example
18309 @end itemize
18310
18311 @anchor{allrgb}
18312 @anchor{allyuv}
18313 @anchor{color}
18314 @anchor{haldclutsrc}
18315 @anchor{nullsrc}
18316 @anchor{pal75bars}
18317 @anchor{pal100bars}
18318 @anchor{rgbtestsrc}
18319 @anchor{smptebars}
18320 @anchor{smptehdbars}
18321 @anchor{testsrc}
18322 @anchor{testsrc2}
18323 @anchor{yuvtestsrc}
18324 @section allrgb, allyuv, color, haldclutsrc, nullsrc, pal75bars, pal100bars, rgbtestsrc, smptebars, smptehdbars, testsrc, testsrc2, yuvtestsrc
18325
18326 The @code{allrgb} source returns frames of size 4096x4096 of all rgb colors.
18327
18328 The @code{allyuv} source returns frames of size 4096x4096 of all yuv colors.
18329
18330 The @code{color} source provides an uniformly colored input.
18331
18332 The @code{haldclutsrc} source provides an identity Hald CLUT. See also
18333 @ref{haldclut} filter.
18334
18335 The @code{nullsrc} source returns unprocessed video frames. It is
18336 mainly useful to be employed in analysis / debugging tools, or as the
18337 source for filters which ignore the input data.
18338
18339 The @code{pal75bars} source generates a color bars pattern, based on
18340 EBU PAL recommendations with 75% color levels.
18341
18342 The @code{pal100bars} source generates a color bars pattern, based on
18343 EBU PAL recommendations with 100% color levels.
18344
18345 The @code{rgbtestsrc} source generates an RGB test pattern useful for
18346 detecting RGB vs BGR issues. You should see a red, green and blue
18347 stripe from top to bottom.
18348
18349 The @code{smptebars} source generates a color bars pattern, based on
18350 the SMPTE Engineering Guideline EG 1-1990.
18351
18352 The @code{smptehdbars} source generates a color bars pattern, based on
18353 the SMPTE RP 219-2002.
18354
18355 The @code{testsrc} source generates a test video pattern, showing a
18356 color pattern, a scrolling gradient and a timestamp. This is mainly
18357 intended for testing purposes.
18358
18359 The @code{testsrc2} source is similar to testsrc, but supports more
18360 pixel formats instead of just @code{rgb24}. This allows using it as an
18361 input for other tests without requiring a format conversion.
18362
18363 The @code{yuvtestsrc} source generates an YUV test pattern. You should
18364 see a y, cb and cr stripe from top to bottom.
18365
18366 The sources accept the following parameters:
18367
18368 @table @option
18369
18370 @item level
18371 Specify the level of the Hald CLUT, only available in the @code{haldclutsrc}
18372 source. A level of @code{N} generates a picture of @code{N*N*N} by @code{N*N*N}
18373 pixels to be used as identity matrix for 3D lookup tables. Each component is
18374 coded on a @code{1/(N*N)} scale.
18375
18376 @item color, c
18377 Specify the color of the source, only available in the @code{color}
18378 source. For the syntax of this option, check the
18379 @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
18380
18381 @item size, s
18382 Specify the size of the sourced video. For the syntax of this option, check the
18383 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
18384 The default value is @code{320x240}.
18385
18386 This option is not available with the @code{allrgb}, @code{allyuv}, and
18387 @code{haldclutsrc} filters.
18388
18389 @item rate, r
18390 Specify the frame rate of the sourced video, as the number of frames
18391 generated per second. It has to be a string in the format
18392 @var{frame_rate_num}/@var{frame_rate_den}, an integer number, a floating point
18393 number or a valid video frame rate abbreviation. The default value is
18394 "25".
18395
18396 @item duration, d
18397 Set the duration of the sourced video. See
18398 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
18399 for the accepted syntax.
18400
18401 If not specified, or the expressed duration is negative, the video is
18402 supposed to be generated forever.
18403
18404 @item sar
18405 Set the sample aspect ratio of the sourced video.
18406
18407 @item alpha
18408 Specify the alpha (opacity) of the background, only available in the
18409 @code{testsrc2} source. The value must be between 0 (fully transparent) and
18410 255 (fully opaque, the default).
18411
18412 @item decimals, n
18413 Set the number of decimals to show in the timestamp, only available in the
18414 @code{testsrc} source.
18415
18416 The displayed timestamp value will correspond to the original
18417 timestamp value multiplied by the power of 10 of the specified
18418 value. Default value is 0.
18419 @end table
18420
18421 @subsection Examples
18422
18423 @itemize
18424 @item
18425 Generate a video with a duration of 5.3 seconds, with size
18426 176x144 and a frame rate of 10 frames per second:
18427 @example
18428 testsrc=duration=5.3:size=qcif:rate=10
18429 @end example
18430
18431 @item
18432 The following graph description will generate a red source
18433 with an opacity of 0.2, with size "qcif" and a frame rate of 10
18434 frames per second:
18435 @example
18436 color=c=red@@0.2:s=qcif:r=10
18437 @end example
18438
18439 @item
18440 If the input content is to be ignored, @code{nullsrc} can be used. The
18441 following command generates noise in the luminance plane by employing
18442 the @code{geq} filter:
18443 @example
18444 nullsrc=s=256x256, geq=random(1)*255:128:128
18445 @end example
18446 @end itemize
18447
18448 @subsection Commands
18449
18450 The @code{color} source supports the following commands:
18451
18452 @table @option
18453 @item c, color
18454 Set the color of the created image. Accepts the same syntax of the
18455 corresponding @option{color} option.
18456 @end table
18457
18458 @section openclsrc
18459
18460 Generate video using an OpenCL program.
18461
18462 @table @option
18463
18464 @item source
18465 OpenCL program source file.
18466
18467 @item kernel
18468 Kernel name in program.
18469
18470 @item size, s
18471 Size of frames to generate.  This must be set.
18472
18473 @item format
18474 Pixel format to use for the generated frames.  This must be set.
18475
18476 @item rate, r
18477 Number of frames generated every second.  Default value is '25'.
18478
18479 @end table
18480
18481 For details of how the program loading works, see the @ref{program_opencl}
18482 filter.
18483
18484 Example programs:
18485
18486 @itemize
18487 @item
18488 Generate a colour ramp by setting pixel values from the position of the pixel
18489 in the output image.  (Note that this will work with all pixel formats, but
18490 the generated output will not be the same.)
18491 @verbatim
18492 __kernel void ramp(__write_only image2d_t dst,
18493                    unsigned int index)
18494 {
18495     int2 loc = (int2)(get_global_id(0), get_global_id(1));
18496
18497     float4 val;
18498     val.xy = val.zw = convert_float2(loc) / convert_float2(get_image_dim(dst));
18499
18500     write_imagef(dst, loc, val);
18501 }
18502 @end verbatim
18503
18504 @item
18505 Generate a Sierpinski carpet pattern, panning by a single pixel each frame.
18506 @verbatim
18507 __kernel void sierpinski_carpet(__write_only image2d_t dst,
18508                                 unsigned int index)
18509 {
18510     int2 loc = (int2)(get_global_id(0), get_global_id(1));
18511
18512     float4 value = 0.0f;
18513     int x = loc.x + index;
18514     int y = loc.y + index;
18515     while (x > 0 || y > 0) {
18516         if (x % 3 == 1 && y % 3 == 1) {
18517             value = 1.0f;
18518             break;
18519         }
18520         x /= 3;
18521         y /= 3;
18522     }
18523
18524     write_imagef(dst, loc, value);
18525 }
18526 @end verbatim
18527
18528 @end itemize
18529
18530 @c man end VIDEO SOURCES
18531
18532 @chapter Video Sinks
18533 @c man begin VIDEO SINKS
18534
18535 Below is a description of the currently available video sinks.
18536
18537 @section buffersink
18538
18539 Buffer video frames, and make them available to the end of the filter
18540 graph.
18541
18542 This sink is mainly intended for programmatic use, in particular
18543 through the interface defined in @file{libavfilter/buffersink.h}
18544 or the options system.
18545
18546 It accepts a pointer to an AVBufferSinkContext structure, which
18547 defines the incoming buffers' formats, to be passed as the opaque
18548 parameter to @code{avfilter_init_filter} for initialization.
18549
18550 @section nullsink
18551
18552 Null video sink: do absolutely nothing with the input video. It is
18553 mainly useful as a template and for use in analysis / debugging
18554 tools.
18555
18556 @c man end VIDEO SINKS
18557
18558 @chapter Multimedia Filters
18559 @c man begin MULTIMEDIA FILTERS
18560
18561 Below is a description of the currently available multimedia filters.
18562
18563 @section abitscope
18564
18565 Convert input audio to a video output, displaying the audio bit scope.
18566
18567 The filter accepts the following options:
18568
18569 @table @option
18570 @item rate, r
18571 Set frame rate, expressed as number of frames per second. Default
18572 value is "25".
18573
18574 @item size, s
18575 Specify the video size for the output. For the syntax of this option, check the
18576 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
18577 Default value is @code{1024x256}.
18578
18579 @item colors
18580 Specify list of colors separated by space or by '|' which will be used to
18581 draw channels. Unrecognized or missing colors will be replaced
18582 by white color.
18583 @end table
18584
18585 @section ahistogram
18586
18587 Convert input audio to a video output, displaying the volume histogram.
18588
18589 The filter accepts the following options:
18590
18591 @table @option
18592 @item dmode
18593 Specify how histogram is calculated.
18594
18595 It accepts the following values:
18596 @table @samp
18597 @item single
18598 Use single histogram for all channels.
18599 @item separate
18600 Use separate histogram for each channel.
18601 @end table
18602 Default is @code{single}.
18603
18604 @item rate, r
18605 Set frame rate, expressed as number of frames per second. Default
18606 value is "25".
18607
18608 @item size, s
18609 Specify the video size for the output. For the syntax of this option, check the
18610 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
18611 Default value is @code{hd720}.
18612
18613 @item scale
18614 Set display scale.
18615
18616 It accepts the following values:
18617 @table @samp
18618 @item log
18619 logarithmic
18620 @item sqrt
18621 square root
18622 @item cbrt
18623 cubic root
18624 @item lin
18625 linear
18626 @item rlog
18627 reverse logarithmic
18628 @end table
18629 Default is @code{log}.
18630
18631 @item ascale
18632 Set amplitude scale.
18633
18634 It accepts the following values:
18635 @table @samp
18636 @item log
18637 logarithmic
18638 @item lin
18639 linear
18640 @end table
18641 Default is @code{log}.
18642
18643 @item acount
18644 Set how much frames to accumulate in histogram.
18645 Defauls is 1. Setting this to -1 accumulates all frames.
18646
18647 @item rheight
18648 Set histogram ratio of window height.
18649
18650 @item slide
18651 Set sonogram sliding.
18652
18653 It accepts the following values:
18654 @table @samp
18655 @item replace
18656 replace old rows with new ones.
18657 @item scroll
18658 scroll from top to bottom.
18659 @end table
18660 Default is @code{replace}.
18661 @end table
18662
18663 @section aphasemeter
18664
18665 Measures phase of input audio, which is exported as metadata @code{lavfi.aphasemeter.phase},
18666 representing mean phase of current audio frame. A video output can also be produced and is
18667 enabled by default. The audio is passed through as first output.
18668
18669 Audio will be rematrixed to stereo if it has a different channel layout. Phase value is in
18670 range @code{[-1, 1]} where @code{-1} means left and right channels are completely out of phase
18671 and @code{1} means channels are in phase.
18672
18673 The filter accepts the following options, all related to its video output:
18674
18675 @table @option
18676 @item rate, r
18677 Set the output frame rate. Default value is @code{25}.
18678
18679 @item size, s
18680 Set the video size for the output. For the syntax of this option, check the
18681 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
18682 Default value is @code{800x400}.
18683
18684 @item rc
18685 @item gc
18686 @item bc
18687 Specify the red, green, blue contrast. Default values are @code{2},
18688 @code{7} and @code{1}.
18689 Allowed range is @code{[0, 255]}.
18690
18691 @item mpc
18692 Set color which will be used for drawing median phase. If color is
18693 @code{none} which is default, no median phase value will be drawn.
18694
18695 @item video
18696 Enable video output. Default is enabled.
18697 @end table
18698
18699 @section avectorscope
18700
18701 Convert input audio to a video output, representing the audio vector
18702 scope.
18703
18704 The filter is used to measure the difference between channels of stereo
18705 audio stream. A monoaural signal, consisting of identical left and right
18706 signal, results in straight vertical line. Any stereo separation is visible
18707 as a deviation from this line, creating a Lissajous figure.
18708 If the straight (or deviation from it) but horizontal line appears this
18709 indicates that the left and right channels are out of phase.
18710
18711 The filter accepts the following options:
18712
18713 @table @option
18714 @item mode, m
18715 Set the vectorscope mode.
18716
18717 Available values are:
18718 @table @samp
18719 @item lissajous
18720 Lissajous rotated by 45 degrees.
18721
18722 @item lissajous_xy
18723 Same as above but not rotated.
18724
18725 @item polar
18726 Shape resembling half of circle.
18727 @end table
18728
18729 Default value is @samp{lissajous}.
18730
18731 @item size, s
18732 Set the video size for the output. For the syntax of this option, check the
18733 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
18734 Default value is @code{400x400}.
18735
18736 @item rate, r
18737 Set the output frame rate. Default value is @code{25}.
18738
18739 @item rc
18740 @item gc
18741 @item bc
18742 @item ac
18743 Specify the red, green, blue and alpha contrast. Default values are @code{40},
18744 @code{160}, @code{80} and @code{255}.
18745 Allowed range is @code{[0, 255]}.
18746
18747 @item rf
18748 @item gf
18749 @item bf
18750 @item af
18751 Specify the red, green, blue and alpha fade. Default values are @code{15},
18752 @code{10}, @code{5} and @code{5}.
18753 Allowed range is @code{[0, 255]}.
18754
18755 @item zoom
18756 Set the zoom factor. Default value is @code{1}. Allowed range is @code{[0, 10]}.
18757 Values lower than @var{1} will auto adjust zoom factor to maximal possible value.
18758
18759 @item draw
18760 Set the vectorscope drawing mode.
18761
18762 Available values are:
18763 @table @samp
18764 @item dot
18765 Draw dot for each sample.
18766
18767 @item line
18768 Draw line between previous and current sample.
18769 @end table
18770
18771 Default value is @samp{dot}.
18772
18773 @item scale
18774 Specify amplitude scale of audio samples.
18775
18776 Available values are:
18777 @table @samp
18778 @item lin
18779 Linear.
18780
18781 @item sqrt
18782 Square root.
18783
18784 @item cbrt
18785 Cubic root.
18786
18787 @item log
18788 Logarithmic.
18789 @end table
18790
18791 @item swap
18792 Swap left channel axis with right channel axis.
18793
18794 @item mirror
18795 Mirror axis.
18796
18797 @table @samp
18798 @item none
18799 No mirror.
18800
18801 @item x
18802 Mirror only x axis.
18803
18804 @item y
18805 Mirror only y axis.
18806
18807 @item xy
18808 Mirror both axis.
18809 @end table
18810
18811 @end table
18812
18813 @subsection Examples
18814
18815 @itemize
18816 @item
18817 Complete example using @command{ffplay}:
18818 @example
18819 ffplay -f lavfi 'amovie=input.mp3, asplit [a][out1];
18820              [a] avectorscope=zoom=1.3:rc=2:gc=200:bc=10:rf=1:gf=8:bf=7 [out0]'
18821 @end example
18822 @end itemize
18823
18824 @section bench, abench
18825
18826 Benchmark part of a filtergraph.
18827
18828 The filter accepts the following options:
18829
18830 @table @option
18831 @item action
18832 Start or stop a timer.
18833
18834 Available values are:
18835 @table @samp
18836 @item start
18837 Get the current time, set it as frame metadata (using the key
18838 @code{lavfi.bench.start_time}), and forward the frame to the next filter.
18839
18840 @item stop
18841 Get the current time and fetch the @code{lavfi.bench.start_time} metadata from
18842 the input frame metadata to get the time difference. Time difference, average,
18843 maximum and minimum time (respectively @code{t}, @code{avg}, @code{max} and
18844 @code{min}) are then printed. The timestamps are expressed in seconds.
18845 @end table
18846 @end table
18847
18848 @subsection Examples
18849
18850 @itemize
18851 @item
18852 Benchmark @ref{selectivecolor} filter:
18853 @example
18854 bench=start,selectivecolor=reds=-.2 .12 -.49,bench=stop
18855 @end example
18856 @end itemize
18857
18858 @section concat
18859
18860 Concatenate audio and video streams, joining them together one after the
18861 other.
18862
18863 The filter works on segments of synchronized video and audio streams. All
18864 segments must have the same number of streams of each type, and that will
18865 also be the number of streams at output.
18866
18867 The filter accepts the following options:
18868
18869 @table @option
18870
18871 @item n
18872 Set the number of segments. Default is 2.
18873
18874 @item v
18875 Set the number of output video streams, that is also the number of video
18876 streams in each segment. Default is 1.
18877
18878 @item a
18879 Set the number of output audio streams, that is also the number of audio
18880 streams in each segment. Default is 0.
18881
18882 @item unsafe
18883 Activate unsafe mode: do not fail if segments have a different format.
18884
18885 @end table
18886
18887 The filter has @var{v}+@var{a} outputs: first @var{v} video outputs, then
18888 @var{a} audio outputs.
18889
18890 There are @var{n}x(@var{v}+@var{a}) inputs: first the inputs for the first
18891 segment, in the same order as the outputs, then the inputs for the second
18892 segment, etc.
18893
18894 Related streams do not always have exactly the same duration, for various
18895 reasons including codec frame size or sloppy authoring. For that reason,
18896 related synchronized streams (e.g. a video and its audio track) should be
18897 concatenated at once. The concat filter will use the duration of the longest
18898 stream in each segment (except the last one), and if necessary pad shorter
18899 audio streams with silence.
18900
18901 For this filter to work correctly, all segments must start at timestamp 0.
18902
18903 All corresponding streams must have the same parameters in all segments; the
18904 filtering system will automatically select a common pixel format for video
18905 streams, and a common sample format, sample rate and channel layout for
18906 audio streams, but other settings, such as resolution, must be converted
18907 explicitly by the user.
18908
18909 Different frame rates are acceptable but will result in variable frame rate
18910 at output; be sure to configure the output file to handle it.
18911
18912 @subsection Examples
18913
18914 @itemize
18915 @item
18916 Concatenate an opening, an episode and an ending, all in bilingual version
18917 (video in stream 0, audio in streams 1 and 2):
18918 @example
18919 ffmpeg -i opening.mkv -i episode.mkv -i ending.mkv -filter_complex \
18920   '[0:0] [0:1] [0:2] [1:0] [1:1] [1:2] [2:0] [2:1] [2:2]
18921    concat=n=3:v=1:a=2 [v] [a1] [a2]' \
18922   -map '[v]' -map '[a1]' -map '[a2]' output.mkv
18923 @end example
18924
18925 @item
18926 Concatenate two parts, handling audio and video separately, using the
18927 (a)movie sources, and adjusting the resolution:
18928 @example
18929 movie=part1.mp4, scale=512:288 [v1] ; amovie=part1.mp4 [a1] ;
18930 movie=part2.mp4, scale=512:288 [v2] ; amovie=part2.mp4 [a2] ;
18931 [v1] [v2] concat [outv] ; [a1] [a2] concat=v=0:a=1 [outa]
18932 @end example
18933 Note that a desync will happen at the stitch if the audio and video streams
18934 do not have exactly the same duration in the first file.
18935
18936 @end itemize
18937
18938 @subsection Commands
18939
18940 This filter supports the following commands:
18941 @table @option
18942 @item next
18943 Close the current segment and step to the next one
18944 @end table
18945
18946 @section drawgraph, adrawgraph
18947
18948 Draw a graph using input video or audio metadata.
18949
18950 It accepts the following parameters:
18951
18952 @table @option
18953 @item m1
18954 Set 1st frame metadata key from which metadata values will be used to draw a graph.
18955
18956 @item fg1
18957 Set 1st foreground color expression.
18958
18959 @item m2
18960 Set 2nd frame metadata key from which metadata values will be used to draw a graph.
18961
18962 @item fg2
18963 Set 2nd foreground color expression.
18964
18965 @item m3
18966 Set 3rd frame metadata key from which metadata values will be used to draw a graph.
18967
18968 @item fg3
18969 Set 3rd foreground color expression.
18970
18971 @item m4
18972 Set 4th frame metadata key from which metadata values will be used to draw a graph.
18973
18974 @item fg4
18975 Set 4th foreground color expression.
18976
18977 @item min
18978 Set minimal value of metadata value.
18979
18980 @item max
18981 Set maximal value of metadata value.
18982
18983 @item bg
18984 Set graph background color. Default is white.
18985
18986 @item mode
18987 Set graph mode.
18988
18989 Available values for mode is:
18990 @table @samp
18991 @item bar
18992 @item dot
18993 @item line
18994 @end table
18995
18996 Default is @code{line}.
18997
18998 @item slide
18999 Set slide mode.
19000
19001 Available values for slide is:
19002 @table @samp
19003 @item frame
19004 Draw new frame when right border is reached.
19005
19006 @item replace
19007 Replace old columns with new ones.
19008
19009 @item scroll
19010 Scroll from right to left.
19011
19012 @item rscroll
19013 Scroll from left to right.
19014
19015 @item picture
19016 Draw single picture.
19017 @end table
19018
19019 Default is @code{frame}.
19020
19021 @item size
19022 Set size of graph video. For the syntax of this option, check the
19023 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
19024 The default value is @code{900x256}.
19025
19026 The foreground color expressions can use the following variables:
19027 @table @option
19028 @item MIN
19029 Minimal value of metadata value.
19030
19031 @item MAX
19032 Maximal value of metadata value.
19033
19034 @item VAL
19035 Current metadata key value.
19036 @end table
19037
19038 The color is defined as 0xAABBGGRR.
19039 @end table
19040
19041 Example using metadata from @ref{signalstats} filter:
19042 @example
19043 signalstats,drawgraph=lavfi.signalstats.YAVG:min=0:max=255
19044 @end example
19045
19046 Example using metadata from @ref{ebur128} filter:
19047 @example
19048 ebur128=metadata=1,adrawgraph=lavfi.r128.M:min=-120:max=5
19049 @end example
19050
19051 @anchor{ebur128}
19052 @section ebur128
19053
19054 EBU R128 scanner filter. This filter takes an audio stream as input and outputs
19055 it unchanged. By default, it logs a message at a frequency of 10Hz with the
19056 Momentary loudness (identified by @code{M}), Short-term loudness (@code{S}),
19057 Integrated loudness (@code{I}) and Loudness Range (@code{LRA}).
19058
19059 The filter also has a video output (see the @var{video} option) with a real
19060 time graph to observe the loudness evolution. The graphic contains the logged
19061 message mentioned above, so it is not printed anymore when this option is set,
19062 unless the verbose logging is set. The main graphing area contains the
19063 short-term loudness (3 seconds of analysis), and the gauge on the right is for
19064 the momentary loudness (400 milliseconds).
19065
19066 More information about the Loudness Recommendation EBU R128 on
19067 @url{http://tech.ebu.ch/loudness}.
19068
19069 The filter accepts the following options:
19070
19071 @table @option
19072
19073 @item video
19074 Activate the video output. The audio stream is passed unchanged whether this
19075 option is set or no. The video stream will be the first output stream if
19076 activated. Default is @code{0}.
19077
19078 @item size
19079 Set the video size. This option is for video only. For the syntax of this
19080 option, check the
19081 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
19082 Default and minimum resolution is @code{640x480}.
19083
19084 @item meter
19085 Set the EBU scale meter. Default is @code{9}. Common values are @code{9} and
19086 @code{18}, respectively for EBU scale meter +9 and EBU scale meter +18. Any
19087 other integer value between this range is allowed.
19088
19089 @item metadata
19090 Set metadata injection. If set to @code{1}, the audio input will be segmented
19091 into 100ms output frames, each of them containing various loudness information
19092 in metadata.  All the metadata keys are prefixed with @code{lavfi.r128.}.
19093
19094 Default is @code{0}.
19095
19096 @item framelog
19097 Force the frame logging level.
19098
19099 Available values are:
19100 @table @samp
19101 @item info
19102 information logging level
19103 @item verbose
19104 verbose logging level
19105 @end table
19106
19107 By default, the logging level is set to @var{info}. If the @option{video} or
19108 the @option{metadata} options are set, it switches to @var{verbose}.
19109
19110 @item peak
19111 Set peak mode(s).
19112
19113 Available modes can be cumulated (the option is a @code{flag} type). Possible
19114 values are:
19115 @table @samp
19116 @item none
19117 Disable any peak mode (default).
19118 @item sample
19119 Enable sample-peak mode.
19120
19121 Simple peak mode looking for the higher sample value. It logs a message
19122 for sample-peak (identified by @code{SPK}).
19123 @item true
19124 Enable true-peak mode.
19125
19126 If enabled, the peak lookup is done on an over-sampled version of the input
19127 stream for better peak accuracy. It logs a message for true-peak.
19128 (identified by @code{TPK}) and true-peak per frame (identified by @code{FTPK}).
19129 This mode requires a build with @code{libswresample}.
19130 @end table
19131
19132 @item dualmono
19133 Treat mono input files as "dual mono". If a mono file is intended for playback
19134 on a stereo system, its EBU R128 measurement will be perceptually incorrect.
19135 If set to @code{true}, this option will compensate for this effect.
19136 Multi-channel input files are not affected by this option.
19137
19138 @item panlaw
19139 Set a specific pan law to be used for the measurement of dual mono files.
19140 This parameter is optional, and has a default value of -3.01dB.
19141 @end table
19142
19143 @subsection Examples
19144
19145 @itemize
19146 @item
19147 Real-time graph using @command{ffplay}, with a EBU scale meter +18:
19148 @example
19149 ffplay -f lavfi -i "amovie=input.mp3,ebur128=video=1:meter=18 [out0][out1]"
19150 @end example
19151
19152 @item
19153 Run an analysis with @command{ffmpeg}:
19154 @example
19155 ffmpeg -nostats -i input.mp3 -filter_complex ebur128 -f null -
19156 @end example
19157 @end itemize
19158
19159 @section interleave, ainterleave
19160
19161 Temporally interleave frames from several inputs.
19162
19163 @code{interleave} works with video inputs, @code{ainterleave} with audio.
19164
19165 These filters read frames from several inputs and send the oldest
19166 queued frame to the output.
19167
19168 Input streams must have well defined, monotonically increasing frame
19169 timestamp values.
19170
19171 In order to submit one frame to output, these filters need to enqueue
19172 at least one frame for each input, so they cannot work in case one
19173 input is not yet terminated and will not receive incoming frames.
19174
19175 For example consider the case when one input is a @code{select} filter
19176 which always drops input frames. The @code{interleave} filter will keep
19177 reading from that input, but it will never be able to send new frames
19178 to output until the input sends an end-of-stream signal.
19179
19180 Also, depending on inputs synchronization, the filters will drop
19181 frames in case one input receives more frames than the other ones, and
19182 the queue is already filled.
19183
19184 These filters accept the following options:
19185
19186 @table @option
19187 @item nb_inputs, n
19188 Set the number of different inputs, it is 2 by default.
19189 @end table
19190
19191 @subsection Examples
19192
19193 @itemize
19194 @item
19195 Interleave frames belonging to different streams using @command{ffmpeg}:
19196 @example
19197 ffmpeg -i bambi.avi -i pr0n.mkv -filter_complex "[0:v][1:v] interleave" out.avi
19198 @end example
19199
19200 @item
19201 Add flickering blur effect:
19202 @example
19203 select='if(gt(random(0), 0.2), 1, 2)':n=2 [tmp], boxblur=2:2, [tmp] interleave
19204 @end example
19205 @end itemize
19206
19207 @section metadata, ametadata
19208
19209 Manipulate frame metadata.
19210
19211 This filter accepts the following options:
19212
19213 @table @option
19214 @item mode
19215 Set mode of operation of the filter.
19216
19217 Can be one of the following:
19218
19219 @table @samp
19220 @item select
19221 If both @code{value} and @code{key} is set, select frames
19222 which have such metadata. If only @code{key} is set, select
19223 every frame that has such key in metadata.
19224
19225 @item add
19226 Add new metadata @code{key} and @code{value}. If key is already available
19227 do nothing.
19228
19229 @item modify
19230 Modify value of already present key.
19231
19232 @item delete
19233 If @code{value} is set, delete only keys that have such value.
19234 Otherwise, delete key. If @code{key} is not set, delete all metadata values in
19235 the frame.
19236
19237 @item print
19238 Print key and its value if metadata was found. If @code{key} is not set print all
19239 metadata values available in frame.
19240 @end table
19241
19242 @item key
19243 Set key used with all modes. Must be set for all modes except @code{print} and @code{delete}.
19244
19245 @item value
19246 Set metadata value which will be used. This option is mandatory for
19247 @code{modify} and @code{add} mode.
19248
19249 @item function
19250 Which function to use when comparing metadata value and @code{value}.
19251
19252 Can be one of following:
19253
19254 @table @samp
19255 @item same_str
19256 Values are interpreted as strings, returns true if metadata value is same as @code{value}.
19257
19258 @item starts_with
19259 Values are interpreted as strings, returns true if metadata value starts with
19260 the @code{value} option string.
19261
19262 @item less
19263 Values are interpreted as floats, returns true if metadata value is less than @code{value}.
19264
19265 @item equal
19266 Values are interpreted as floats, returns true if @code{value} is equal with metadata value.
19267
19268 @item greater
19269 Values are interpreted as floats, returns true if metadata value is greater than @code{value}.
19270
19271 @item expr
19272 Values are interpreted as floats, returns true if expression from option @code{expr}
19273 evaluates to true.
19274 @end table
19275
19276 @item expr
19277 Set expression which is used when @code{function} is set to @code{expr}.
19278 The expression is evaluated through the eval API and can contain the following
19279 constants:
19280
19281 @table @option
19282 @item VALUE1
19283 Float representation of @code{value} from metadata key.
19284
19285 @item VALUE2
19286 Float representation of @code{value} as supplied by user in @code{value} option.
19287 @end table
19288
19289 @item file
19290 If specified in @code{print} mode, output is written to the named file. Instead of
19291 plain filename any writable url can be specified. Filename ``-'' is a shorthand
19292 for standard output. If @code{file} option is not set, output is written to the log
19293 with AV_LOG_INFO loglevel.
19294
19295 @end table
19296
19297 @subsection Examples
19298
19299 @itemize
19300 @item
19301 Print all metadata values for frames with key @code{lavfi.signalstats.YDIF} with values
19302 between 0 and 1.
19303 @example
19304 signalstats,metadata=print:key=lavfi.signalstats.YDIF:value=0:function=expr:expr='between(VALUE1,0,1)'
19305 @end example
19306 @item
19307 Print silencedetect output to file @file{metadata.txt}.
19308 @example
19309 silencedetect,ametadata=mode=print:file=metadata.txt
19310 @end example
19311 @item
19312 Direct all metadata to a pipe with file descriptor 4.
19313 @example
19314 metadata=mode=print:file='pipe\:4'
19315 @end example
19316 @end itemize
19317
19318 @section perms, aperms
19319
19320 Set read/write permissions for the output frames.
19321
19322 These filters are mainly aimed at developers to test direct path in the
19323 following filter in the filtergraph.
19324
19325 The filters accept the following options:
19326
19327 @table @option
19328 @item mode
19329 Select the permissions mode.
19330
19331 It accepts the following values:
19332 @table @samp
19333 @item none
19334 Do nothing. This is the default.
19335 @item ro
19336 Set all the output frames read-only.
19337 @item rw
19338 Set all the output frames directly writable.
19339 @item toggle
19340 Make the frame read-only if writable, and writable if read-only.
19341 @item random
19342 Set each output frame read-only or writable randomly.
19343 @end table
19344
19345 @item seed
19346 Set the seed for the @var{random} mode, must be an integer included between
19347 @code{0} and @code{UINT32_MAX}. If not specified, or if explicitly set to
19348 @code{-1}, the filter will try to use a good random seed on a best effort
19349 basis.
19350 @end table
19351
19352 Note: in case of auto-inserted filter between the permission filter and the
19353 following one, the permission might not be received as expected in that
19354 following filter. Inserting a @ref{format} or @ref{aformat} filter before the
19355 perms/aperms filter can avoid this problem.
19356
19357 @section realtime, arealtime
19358
19359 Slow down filtering to match real time approximately.
19360
19361 These filters will pause the filtering for a variable amount of time to
19362 match the output rate with the input timestamps.
19363 They are similar to the @option{re} option to @code{ffmpeg}.
19364
19365 They accept the following options:
19366
19367 @table @option
19368 @item limit
19369 Time limit for the pauses. Any pause longer than that will be considered
19370 a timestamp discontinuity and reset the timer. Default is 2 seconds.
19371 @end table
19372
19373 @anchor{select}
19374 @section select, aselect
19375
19376 Select frames to pass in output.
19377
19378 This filter accepts the following options:
19379
19380 @table @option
19381
19382 @item expr, e
19383 Set expression, which is evaluated for each input frame.
19384
19385 If the expression is evaluated to zero, the frame is discarded.
19386
19387 If the evaluation result is negative or NaN, the frame is sent to the
19388 first output; otherwise it is sent to the output with index
19389 @code{ceil(val)-1}, assuming that the input index starts from 0.
19390
19391 For example a value of @code{1.2} corresponds to the output with index
19392 @code{ceil(1.2)-1 = 2-1 = 1}, that is the second output.
19393
19394 @item outputs, n
19395 Set the number of outputs. The output to which to send the selected
19396 frame is based on the result of the evaluation. Default value is 1.
19397 @end table
19398
19399 The expression can contain the following constants:
19400
19401 @table @option
19402 @item n
19403 The (sequential) number of the filtered frame, starting from 0.
19404
19405 @item selected_n
19406 The (sequential) number of the selected frame, starting from 0.
19407
19408 @item prev_selected_n
19409 The sequential number of the last selected frame. It's NAN if undefined.
19410
19411 @item TB
19412 The timebase of the input timestamps.
19413
19414 @item pts
19415 The PTS (Presentation TimeStamp) of the filtered video frame,
19416 expressed in @var{TB} units. It's NAN if undefined.
19417
19418 @item t
19419 The PTS of the filtered video frame,
19420 expressed in seconds. It's NAN if undefined.
19421
19422 @item prev_pts
19423 The PTS of the previously filtered video frame. It's NAN if undefined.
19424
19425 @item prev_selected_pts
19426 The PTS of the last previously filtered video frame. It's NAN if undefined.
19427
19428 @item prev_selected_t
19429 The PTS of the last previously selected video frame, expressed in seconds. It's NAN if undefined.
19430
19431 @item start_pts
19432 The PTS of the first video frame in the video. It's NAN if undefined.
19433
19434 @item start_t
19435 The time of the first video frame in the video. It's NAN if undefined.
19436
19437 @item pict_type @emph{(video only)}
19438 The type of the filtered frame. It can assume one of the following
19439 values:
19440 @table @option
19441 @item I
19442 @item P
19443 @item B
19444 @item S
19445 @item SI
19446 @item SP
19447 @item BI
19448 @end table
19449
19450 @item interlace_type @emph{(video only)}
19451 The frame interlace type. It can assume one of the following values:
19452 @table @option
19453 @item PROGRESSIVE
19454 The frame is progressive (not interlaced).
19455 @item TOPFIRST
19456 The frame is top-field-first.
19457 @item BOTTOMFIRST
19458 The frame is bottom-field-first.
19459 @end table
19460
19461 @item consumed_sample_n @emph{(audio only)}
19462 the number of selected samples before the current frame
19463
19464 @item samples_n @emph{(audio only)}
19465 the number of samples in the current frame
19466
19467 @item sample_rate @emph{(audio only)}
19468 the input sample rate
19469
19470 @item key
19471 This is 1 if the filtered frame is a key-frame, 0 otherwise.
19472
19473 @item pos
19474 the position in the file of the filtered frame, -1 if the information
19475 is not available (e.g. for synthetic video)
19476
19477 @item scene @emph{(video only)}
19478 value between 0 and 1 to indicate a new scene; a low value reflects a low
19479 probability for the current frame to introduce a new scene, while a higher
19480 value means the current frame is more likely to be one (see the example below)
19481
19482 @item concatdec_select
19483 The concat demuxer can select only part of a concat input file by setting an
19484 inpoint and an outpoint, but the output packets may not be entirely contained
19485 in the selected interval. By using this variable, it is possible to skip frames
19486 generated by the concat demuxer which are not exactly contained in the selected
19487 interval.
19488
19489 This works by comparing the frame pts against the @var{lavf.concat.start_time}
19490 and the @var{lavf.concat.duration} packet metadata values which are also
19491 present in the decoded frames.
19492
19493 The @var{concatdec_select} variable is -1 if the frame pts is at least
19494 start_time and either the duration metadata is missing or the frame pts is less
19495 than start_time + duration, 0 otherwise, and NaN if the start_time metadata is
19496 missing.
19497
19498 That basically means that an input frame is selected if its pts is within the
19499 interval set by the concat demuxer.
19500
19501 @end table
19502
19503 The default value of the select expression is "1".
19504
19505 @subsection Examples
19506
19507 @itemize
19508 @item
19509 Select all frames in input:
19510 @example
19511 select
19512 @end example
19513
19514 The example above is the same as:
19515 @example
19516 select=1
19517 @end example
19518
19519 @item
19520 Skip all frames:
19521 @example
19522 select=0
19523 @end example
19524
19525 @item
19526 Select only I-frames:
19527 @example
19528 select='eq(pict_type\,I)'
19529 @end example
19530
19531 @item
19532 Select one frame every 100:
19533 @example
19534 select='not(mod(n\,100))'
19535 @end example
19536
19537 @item
19538 Select only frames contained in the 10-20 time interval:
19539 @example
19540 select=between(t\,10\,20)
19541 @end example
19542
19543 @item
19544 Select only I-frames contained in the 10-20 time interval:
19545 @example
19546 select=between(t\,10\,20)*eq(pict_type\,I)
19547 @end example
19548
19549 @item
19550 Select frames with a minimum distance of 10 seconds:
19551 @example
19552 select='isnan(prev_selected_t)+gte(t-prev_selected_t\,10)'
19553 @end example
19554
19555 @item
19556 Use aselect to select only audio frames with samples number > 100:
19557 @example
19558 aselect='gt(samples_n\,100)'
19559 @end example
19560
19561 @item
19562 Create a mosaic of the first scenes:
19563 @example
19564 ffmpeg -i video.avi -vf select='gt(scene\,0.4)',scale=160:120,tile -frames:v 1 preview.png
19565 @end example
19566
19567 Comparing @var{scene} against a value between 0.3 and 0.5 is generally a sane
19568 choice.
19569
19570 @item
19571 Send even and odd frames to separate outputs, and compose them:
19572 @example
19573 select=n=2:e='mod(n, 2)+1' [odd][even]; [odd] pad=h=2*ih [tmp]; [tmp][even] overlay=y=h
19574 @end example
19575
19576 @item
19577 Select useful frames from an ffconcat file which is using inpoints and
19578 outpoints but where the source files are not intra frame only.
19579 @example
19580 ffmpeg -copyts -vsync 0 -segment_time_metadata 1 -i input.ffconcat -vf select=concatdec_select -af aselect=concatdec_select output.avi
19581 @end example
19582 @end itemize
19583
19584 @section sendcmd, asendcmd
19585
19586 Send commands to filters in the filtergraph.
19587
19588 These filters read commands to be sent to other filters in the
19589 filtergraph.
19590
19591 @code{sendcmd} must be inserted between two video filters,
19592 @code{asendcmd} must be inserted between two audio filters, but apart
19593 from that they act the same way.
19594
19595 The specification of commands can be provided in the filter arguments
19596 with the @var{commands} option, or in a file specified by the
19597 @var{filename} option.
19598
19599 These filters accept the following options:
19600 @table @option
19601 @item commands, c
19602 Set the commands to be read and sent to the other filters.
19603 @item filename, f
19604 Set the filename of the commands to be read and sent to the other
19605 filters.
19606 @end table
19607
19608 @subsection Commands syntax
19609
19610 A commands description consists of a sequence of interval
19611 specifications, comprising a list of commands to be executed when a
19612 particular event related to that interval occurs. The occurring event
19613 is typically the current frame time entering or leaving a given time
19614 interval.
19615
19616 An interval is specified by the following syntax:
19617 @example
19618 @var{START}[-@var{END}] @var{COMMANDS};
19619 @end example
19620
19621 The time interval is specified by the @var{START} and @var{END} times.
19622 @var{END} is optional and defaults to the maximum time.
19623
19624 The current frame time is considered within the specified interval if
19625 it is included in the interval [@var{START}, @var{END}), that is when
19626 the time is greater or equal to @var{START} and is lesser than
19627 @var{END}.
19628
19629 @var{COMMANDS} consists of a sequence of one or more command
19630 specifications, separated by ",", relating to that interval.  The
19631 syntax of a command specification is given by:
19632 @example
19633 [@var{FLAGS}] @var{TARGET} @var{COMMAND} @var{ARG}
19634 @end example
19635
19636 @var{FLAGS} is optional and specifies the type of events relating to
19637 the time interval which enable sending the specified command, and must
19638 be a non-null sequence of identifier flags separated by "+" or "|" and
19639 enclosed between "[" and "]".
19640
19641 The following flags are recognized:
19642 @table @option
19643 @item enter
19644 The command is sent when the current frame timestamp enters the
19645 specified interval. In other words, the command is sent when the
19646 previous frame timestamp was not in the given interval, and the
19647 current is.
19648
19649 @item leave
19650 The command is sent when the current frame timestamp leaves the
19651 specified interval. In other words, the command is sent when the
19652 previous frame timestamp was in the given interval, and the
19653 current is not.
19654 @end table
19655
19656 If @var{FLAGS} is not specified, a default value of @code{[enter]} is
19657 assumed.
19658
19659 @var{TARGET} specifies the target of the command, usually the name of
19660 the filter class or a specific filter instance name.
19661
19662 @var{COMMAND} specifies the name of the command for the target filter.
19663
19664 @var{ARG} is optional and specifies the optional list of argument for
19665 the given @var{COMMAND}.
19666
19667 Between one interval specification and another, whitespaces, or
19668 sequences of characters starting with @code{#} until the end of line,
19669 are ignored and can be used to annotate comments.
19670
19671 A simplified BNF description of the commands specification syntax
19672 follows:
19673 @example
19674 @var{COMMAND_FLAG}  ::= "enter" | "leave"
19675 @var{COMMAND_FLAGS} ::= @var{COMMAND_FLAG} [(+|"|")@var{COMMAND_FLAG}]
19676 @var{COMMAND}       ::= ["[" @var{COMMAND_FLAGS} "]"] @var{TARGET} @var{COMMAND} [@var{ARG}]
19677 @var{COMMANDS}      ::= @var{COMMAND} [,@var{COMMANDS}]
19678 @var{INTERVAL}      ::= @var{START}[-@var{END}] @var{COMMANDS}
19679 @var{INTERVALS}     ::= @var{INTERVAL}[;@var{INTERVALS}]
19680 @end example
19681
19682 @subsection Examples
19683
19684 @itemize
19685 @item
19686 Specify audio tempo change at second 4:
19687 @example
19688 asendcmd=c='4.0 atempo tempo 1.5',atempo
19689 @end example
19690
19691 @item
19692 Target a specific filter instance:
19693 @example
19694 asendcmd=c='4.0 atempo@@my tempo 1.5',atempo@@my
19695 @end example
19696
19697 @item
19698 Specify a list of drawtext and hue commands in a file.
19699 @example
19700 # show text in the interval 5-10
19701 5.0-10.0 [enter] drawtext reinit 'fontfile=FreeSerif.ttf:text=hello world',
19702          [leave] drawtext reinit 'fontfile=FreeSerif.ttf:text=';
19703
19704 # desaturate the image in the interval 15-20
19705 15.0-20.0 [enter] hue s 0,
19706           [enter] drawtext reinit 'fontfile=FreeSerif.ttf:text=nocolor',
19707           [leave] hue s 1,
19708           [leave] drawtext reinit 'fontfile=FreeSerif.ttf:text=color';
19709
19710 # apply an exponential saturation fade-out effect, starting from time 25
19711 25 [enter] hue s exp(25-t)
19712 @end example
19713
19714 A filtergraph allowing to read and process the above command list
19715 stored in a file @file{test.cmd}, can be specified with:
19716 @example
19717 sendcmd=f=test.cmd,drawtext=fontfile=FreeSerif.ttf:text='',hue
19718 @end example
19719 @end itemize
19720
19721 @anchor{setpts}
19722 @section setpts, asetpts
19723
19724 Change the PTS (presentation timestamp) of the input frames.
19725
19726 @code{setpts} works on video frames, @code{asetpts} on audio frames.
19727
19728 This filter accepts the following options:
19729
19730 @table @option
19731
19732 @item expr
19733 The expression which is evaluated for each frame to construct its timestamp.
19734
19735 @end table
19736
19737 The expression is evaluated through the eval API and can contain the following
19738 constants:
19739
19740 @table @option
19741 @item FRAME_RATE, FR
19742 frame rate, only defined for constant frame-rate video
19743
19744 @item PTS
19745 The presentation timestamp in input
19746
19747 @item N
19748 The count of the input frame for video or the number of consumed samples,
19749 not including the current frame for audio, starting from 0.
19750
19751 @item NB_CONSUMED_SAMPLES
19752 The number of consumed samples, not including the current frame (only
19753 audio)
19754
19755 @item NB_SAMPLES, S
19756 The number of samples in the current frame (only audio)
19757
19758 @item SAMPLE_RATE, SR
19759 The audio sample rate.
19760
19761 @item STARTPTS
19762 The PTS of the first frame.
19763
19764 @item STARTT
19765 the time in seconds of the first frame
19766
19767 @item INTERLACED
19768 State whether the current frame is interlaced.
19769
19770 @item T
19771 the time in seconds of the current frame
19772
19773 @item POS
19774 original position in the file of the frame, or undefined if undefined
19775 for the current frame
19776
19777 @item PREV_INPTS
19778 The previous input PTS.
19779
19780 @item PREV_INT
19781 previous input time in seconds
19782
19783 @item PREV_OUTPTS
19784 The previous output PTS.
19785
19786 @item PREV_OUTT
19787 previous output time in seconds
19788
19789 @item RTCTIME
19790 The wallclock (RTC) time in microseconds. This is deprecated, use time(0)
19791 instead.
19792
19793 @item RTCSTART
19794 The wallclock (RTC) time at the start of the movie in microseconds.
19795
19796 @item TB
19797 The timebase of the input timestamps.
19798
19799 @end table
19800
19801 @subsection Examples
19802
19803 @itemize
19804 @item
19805 Start counting PTS from zero
19806 @example
19807 setpts=PTS-STARTPTS
19808 @end example
19809
19810 @item
19811 Apply fast motion effect:
19812 @example
19813 setpts=0.5*PTS
19814 @end example
19815
19816 @item
19817 Apply slow motion effect:
19818 @example
19819 setpts=2.0*PTS
19820 @end example
19821
19822 @item
19823 Set fixed rate of 25 frames per second:
19824 @example
19825 setpts=N/(25*TB)
19826 @end example
19827
19828 @item
19829 Set fixed rate 25 fps with some jitter:
19830 @example
19831 setpts='1/(25*TB) * (N + 0.05 * sin(N*2*PI/25))'
19832 @end example
19833
19834 @item
19835 Apply an offset of 10 seconds to the input PTS:
19836 @example
19837 setpts=PTS+10/TB
19838 @end example
19839
19840 @item
19841 Generate timestamps from a "live source" and rebase onto the current timebase:
19842 @example
19843 setpts='(RTCTIME - RTCSTART) / (TB * 1000000)'
19844 @end example
19845
19846 @item
19847 Generate timestamps by counting samples:
19848 @example
19849 asetpts=N/SR/TB
19850 @end example
19851
19852 @end itemize
19853
19854 @section setrange
19855
19856 Force color range for the output video frame.
19857
19858 The @code{setrange} filter marks the color range property for the
19859 output frames. It does not change the input frame, but only sets the
19860 corresponding property, which affects how the frame is treated by
19861 following filters.
19862
19863 The filter accepts the following options:
19864
19865 @table @option
19866
19867 @item range
19868 Available values are:
19869
19870 @table @samp
19871 @item auto
19872 Keep the same color range property.
19873
19874 @item unspecified, unknown
19875 Set the color range as unspecified.
19876
19877 @item limited, tv, mpeg
19878 Set the color range as limited.
19879
19880 @item full, pc, jpeg
19881 Set the color range as full.
19882 @end table
19883 @end table
19884
19885 @section settb, asettb
19886
19887 Set the timebase to use for the output frames timestamps.
19888 It is mainly useful for testing timebase configuration.
19889
19890 It accepts the following parameters:
19891
19892 @table @option
19893
19894 @item expr, tb
19895 The expression which is evaluated into the output timebase.
19896
19897 @end table
19898
19899 The value for @option{tb} is an arithmetic expression representing a
19900 rational. The expression can contain the constants "AVTB" (the default
19901 timebase), "intb" (the input timebase) and "sr" (the sample rate,
19902 audio only). Default value is "intb".
19903
19904 @subsection Examples
19905
19906 @itemize
19907 @item
19908 Set the timebase to 1/25:
19909 @example
19910 settb=expr=1/25
19911 @end example
19912
19913 @item
19914 Set the timebase to 1/10:
19915 @example
19916 settb=expr=0.1
19917 @end example
19918
19919 @item
19920 Set the timebase to 1001/1000:
19921 @example
19922 settb=1+0.001
19923 @end example
19924
19925 @item
19926 Set the timebase to 2*intb:
19927 @example
19928 settb=2*intb
19929 @end example
19930
19931 @item
19932 Set the default timebase value:
19933 @example
19934 settb=AVTB
19935 @end example
19936 @end itemize
19937
19938 @section showcqt
19939 Convert input audio to a video output representing frequency spectrum
19940 logarithmically using Brown-Puckette constant Q transform algorithm with
19941 direct frequency domain coefficient calculation (but the transform itself
19942 is not really constant Q, instead the Q factor is actually variable/clamped),
19943 with musical tone scale, from E0 to D#10.
19944
19945 The filter accepts the following options:
19946
19947 @table @option
19948 @item size, s
19949 Specify the video size for the output. It must be even. For the syntax of this option,
19950 check the @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
19951 Default value is @code{1920x1080}.
19952
19953 @item fps, rate, r
19954 Set the output frame rate. Default value is @code{25}.
19955
19956 @item bar_h
19957 Set the bargraph height. It must be even. Default value is @code{-1} which
19958 computes the bargraph height automatically.
19959
19960 @item axis_h
19961 Set the axis height. It must be even. Default value is @code{-1} which computes
19962 the axis height automatically.
19963
19964 @item sono_h
19965 Set the sonogram height. It must be even. Default value is @code{-1} which
19966 computes the sonogram height automatically.
19967
19968 @item fullhd
19969 Set the fullhd resolution. This option is deprecated, use @var{size}, @var{s}
19970 instead. Default value is @code{1}.
19971
19972 @item sono_v, volume
19973 Specify the sonogram volume expression. It can contain variables:
19974 @table @option
19975 @item bar_v
19976 the @var{bar_v} evaluated expression
19977 @item frequency, freq, f
19978 the frequency where it is evaluated
19979 @item timeclamp, tc
19980 the value of @var{timeclamp} option
19981 @end table
19982 and functions:
19983 @table @option
19984 @item a_weighting(f)
19985 A-weighting of equal loudness
19986 @item b_weighting(f)
19987 B-weighting of equal loudness
19988 @item c_weighting(f)
19989 C-weighting of equal loudness.
19990 @end table
19991 Default value is @code{16}.
19992
19993 @item bar_v, volume2
19994 Specify the bargraph volume expression. It can contain variables:
19995 @table @option
19996 @item sono_v
19997 the @var{sono_v} evaluated expression
19998 @item frequency, freq, f
19999 the frequency where it is evaluated
20000 @item timeclamp, tc
20001 the value of @var{timeclamp} option
20002 @end table
20003 and functions:
20004 @table @option
20005 @item a_weighting(f)
20006 A-weighting of equal loudness
20007 @item b_weighting(f)
20008 B-weighting of equal loudness
20009 @item c_weighting(f)
20010 C-weighting of equal loudness.
20011 @end table
20012 Default value is @code{sono_v}.
20013
20014 @item sono_g, gamma
20015 Specify the sonogram gamma. Lower gamma makes the spectrum more contrast,
20016 higher gamma makes the spectrum having more range. Default value is @code{3}.
20017 Acceptable range is @code{[1, 7]}.
20018
20019 @item bar_g, gamma2
20020 Specify the bargraph gamma. Default value is @code{1}. Acceptable range is
20021 @code{[1, 7]}.
20022
20023 @item bar_t
20024 Specify the bargraph transparency level. Lower value makes the bargraph sharper.
20025 Default value is @code{1}. Acceptable range is @code{[0, 1]}.
20026
20027 @item timeclamp, tc
20028 Specify the transform timeclamp. At low frequency, there is trade-off between
20029 accuracy in time domain and frequency domain. If timeclamp is lower,
20030 event in time domain is represented more accurately (such as fast bass drum),
20031 otherwise event in frequency domain is represented more accurately
20032 (such as bass guitar). Acceptable range is @code{[0.002, 1]}. Default value is @code{0.17}.
20033
20034 @item attack
20035 Set attack time in seconds. The default is @code{0} (disabled). Otherwise, it
20036 limits future samples by applying asymmetric windowing in time domain, useful
20037 when low latency is required. Accepted range is @code{[0, 1]}.
20038
20039 @item basefreq
20040 Specify the transform base frequency. Default value is @code{20.01523126408007475},
20041 which is frequency 50 cents below E0. Acceptable range is @code{[10, 100000]}.
20042
20043 @item endfreq
20044 Specify the transform end frequency. Default value is @code{20495.59681441799654},
20045 which is frequency 50 cents above D#10. Acceptable range is @code{[10, 100000]}.
20046
20047 @item coeffclamp
20048 This option is deprecated and ignored.
20049
20050 @item tlength
20051 Specify the transform length in time domain. Use this option to control accuracy
20052 trade-off between time domain and frequency domain at every frequency sample.
20053 It can contain variables:
20054 @table @option
20055 @item frequency, freq, f
20056 the frequency where it is evaluated
20057 @item timeclamp, tc
20058 the value of @var{timeclamp} option.
20059 @end table
20060 Default value is @code{384*tc/(384+tc*f)}.
20061
20062 @item count
20063 Specify the transform count for every video frame. Default value is @code{6}.
20064 Acceptable range is @code{[1, 30]}.
20065
20066 @item fcount
20067 Specify the transform count for every single pixel. Default value is @code{0},
20068 which makes it computed automatically. Acceptable range is @code{[0, 10]}.
20069
20070 @item fontfile
20071 Specify font file for use with freetype to draw the axis. If not specified,
20072 use embedded font. Note that drawing with font file or embedded font is not
20073 implemented with custom @var{basefreq} and @var{endfreq}, use @var{axisfile}
20074 option instead.
20075
20076 @item font
20077 Specify fontconfig pattern. This has lower priority than @var{fontfile}.
20078 The : in the pattern may be replaced by | to avoid unnecessary escaping.
20079
20080 @item fontcolor
20081 Specify font color expression. This is arithmetic expression that should return
20082 integer value 0xRRGGBB. It can contain variables:
20083 @table @option
20084 @item frequency, freq, f
20085 the frequency where it is evaluated
20086 @item timeclamp, tc
20087 the value of @var{timeclamp} option
20088 @end table
20089 and functions:
20090 @table @option
20091 @item midi(f)
20092 midi number of frequency f, some midi numbers: E0(16), C1(24), C2(36), A4(69)
20093 @item r(x), g(x), b(x)
20094 red, green, and blue value of intensity x.
20095 @end table
20096 Default value is @code{st(0, (midi(f)-59.5)/12);
20097 st(1, if(between(ld(0),0,1), 0.5-0.5*cos(2*PI*ld(0)), 0));
20098 r(1-ld(1)) + b(ld(1))}.
20099
20100 @item axisfile
20101 Specify image file to draw the axis. This option override @var{fontfile} and
20102 @var{fontcolor} option.
20103
20104 @item axis, text
20105 Enable/disable drawing text to the axis. If it is set to @code{0}, drawing to
20106 the axis is disabled, ignoring @var{fontfile} and @var{axisfile} option.
20107 Default value is @code{1}.
20108
20109 @item csp
20110 Set colorspace. The accepted values are:
20111 @table @samp
20112 @item unspecified
20113 Unspecified (default)
20114
20115 @item bt709
20116 BT.709
20117
20118 @item fcc
20119 FCC
20120
20121 @item bt470bg
20122 BT.470BG or BT.601-6 625
20123
20124 @item smpte170m
20125 SMPTE-170M or BT.601-6 525
20126
20127 @item smpte240m
20128 SMPTE-240M
20129
20130 @item bt2020ncl
20131 BT.2020 with non-constant luminance
20132
20133 @end table
20134
20135 @item cscheme
20136 Set spectrogram color scheme. This is list of floating point values with format
20137 @code{left_r|left_g|left_b|right_r|right_g|right_b}.
20138 The default is @code{1|0.5|0|0|0.5|1}.
20139
20140 @end table
20141
20142 @subsection Examples
20143
20144 @itemize
20145 @item
20146 Playing audio while showing the spectrum:
20147 @example
20148 ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt [out0]'
20149 @end example
20150
20151 @item
20152 Same as above, but with frame rate 30 fps:
20153 @example
20154 ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt=fps=30:count=5 [out0]'
20155 @end example
20156
20157 @item
20158 Playing at 1280x720:
20159 @example
20160 ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt=s=1280x720:count=4 [out0]'
20161 @end example
20162
20163 @item
20164 Disable sonogram display:
20165 @example
20166 sono_h=0
20167 @end example
20168
20169 @item
20170 A1 and its harmonics: A1, A2, (near)E3, A3:
20171 @example
20172 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),
20173                  asplit[a][out1]; [a] showcqt [out0]'
20174 @end example
20175
20176 @item
20177 Same as above, but with more accuracy in frequency domain:
20178 @example
20179 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),
20180                  asplit[a][out1]; [a] showcqt=timeclamp=0.5 [out0]'
20181 @end example
20182
20183 @item
20184 Custom volume:
20185 @example
20186 bar_v=10:sono_v=bar_v*a_weighting(f)
20187 @end example
20188
20189 @item
20190 Custom gamma, now spectrum is linear to the amplitude.
20191 @example
20192 bar_g=2:sono_g=2
20193 @end example
20194
20195 @item
20196 Custom tlength equation:
20197 @example
20198 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)))'
20199 @end example
20200
20201 @item
20202 Custom fontcolor and fontfile, C-note is colored green, others are colored blue:
20203 @example
20204 fontcolor='if(mod(floor(midi(f)+0.5),12), 0x0000FF, g(1))':fontfile=myfont.ttf
20205 @end example
20206
20207 @item
20208 Custom font using fontconfig:
20209 @example
20210 font='Courier New,Monospace,mono|bold'
20211 @end example
20212
20213 @item
20214 Custom frequency range with custom axis using image file:
20215 @example
20216 axisfile=myaxis.png:basefreq=40:endfreq=10000
20217 @end example
20218 @end itemize
20219
20220 @section showfreqs
20221
20222 Convert input audio to video output representing the audio power spectrum.
20223 Audio amplitude is on Y-axis while frequency is on X-axis.
20224
20225 The filter accepts the following options:
20226
20227 @table @option
20228 @item size, s
20229 Specify size of video. For the syntax of this option, check the
20230 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
20231 Default is @code{1024x512}.
20232
20233 @item mode
20234 Set display mode.
20235 This set how each frequency bin will be represented.
20236
20237 It accepts the following values:
20238 @table @samp
20239 @item line
20240 @item bar
20241 @item dot
20242 @end table
20243 Default is @code{bar}.
20244
20245 @item ascale
20246 Set amplitude scale.
20247
20248 It accepts the following values:
20249 @table @samp
20250 @item lin
20251 Linear scale.
20252
20253 @item sqrt
20254 Square root scale.
20255
20256 @item cbrt
20257 Cubic root scale.
20258
20259 @item log
20260 Logarithmic scale.
20261 @end table
20262 Default is @code{log}.
20263
20264 @item fscale
20265 Set frequency scale.
20266
20267 It accepts the following values:
20268 @table @samp
20269 @item lin
20270 Linear scale.
20271
20272 @item log
20273 Logarithmic scale.
20274
20275 @item rlog
20276 Reverse logarithmic scale.
20277 @end table
20278 Default is @code{lin}.
20279
20280 @item win_size
20281 Set window size.
20282
20283 It accepts the following values:
20284 @table @samp
20285 @item w16
20286 @item w32
20287 @item w64
20288 @item w128
20289 @item w256
20290 @item w512
20291 @item w1024
20292 @item w2048
20293 @item w4096
20294 @item w8192
20295 @item w16384
20296 @item w32768
20297 @item w65536
20298 @end table
20299 Default is @code{w2048}
20300
20301 @item win_func
20302 Set windowing function.
20303
20304 It accepts the following values:
20305 @table @samp
20306 @item rect
20307 @item bartlett
20308 @item hanning
20309 @item hamming
20310 @item blackman
20311 @item welch
20312 @item flattop
20313 @item bharris
20314 @item bnuttall
20315 @item bhann
20316 @item sine
20317 @item nuttall
20318 @item lanczos
20319 @item gauss
20320 @item tukey
20321 @item dolph
20322 @item cauchy
20323 @item parzen
20324 @item poisson
20325 @end table
20326 Default is @code{hanning}.
20327
20328 @item overlap
20329 Set window overlap. In range @code{[0, 1]}. Default is @code{1},
20330 which means optimal overlap for selected window function will be picked.
20331
20332 @item averaging
20333 Set time averaging. Setting this to 0 will display current maximal peaks.
20334 Default is @code{1}, which means time averaging is disabled.
20335
20336 @item colors
20337 Specify list of colors separated by space or by '|' which will be used to
20338 draw channel frequencies. Unrecognized or missing colors will be replaced
20339 by white color.
20340
20341 @item cmode
20342 Set channel display mode.
20343
20344 It accepts the following values:
20345 @table @samp
20346 @item combined
20347 @item separate
20348 @end table
20349 Default is @code{combined}.
20350
20351 @item minamp
20352 Set minimum amplitude used in @code{log} amplitude scaler.
20353
20354 @end table
20355
20356 @anchor{showspectrum}
20357 @section showspectrum
20358
20359 Convert input audio to a video output, representing the audio frequency
20360 spectrum.
20361
20362 The filter accepts the following options:
20363
20364 @table @option
20365 @item size, s
20366 Specify the video size for the output. For the syntax of this option, check the
20367 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
20368 Default value is @code{640x512}.
20369
20370 @item slide
20371 Specify how the spectrum should slide along the window.
20372
20373 It accepts the following values:
20374 @table @samp
20375 @item replace
20376 the samples start again on the left when they reach the right
20377 @item scroll
20378 the samples scroll from right to left
20379 @item fullframe
20380 frames are only produced when the samples reach the right
20381 @item rscroll
20382 the samples scroll from left to right
20383 @end table
20384
20385 Default value is @code{replace}.
20386
20387 @item mode
20388 Specify display mode.
20389
20390 It accepts the following values:
20391 @table @samp
20392 @item combined
20393 all channels are displayed in the same row
20394 @item separate
20395 all channels are displayed in separate rows
20396 @end table
20397
20398 Default value is @samp{combined}.
20399
20400 @item color
20401 Specify display color mode.
20402
20403 It accepts the following values:
20404 @table @samp
20405 @item channel
20406 each channel is displayed in a separate color
20407 @item intensity
20408 each channel is displayed using the same color scheme
20409 @item rainbow
20410 each channel is displayed using the rainbow color scheme
20411 @item moreland
20412 each channel is displayed using the moreland color scheme
20413 @item nebulae
20414 each channel is displayed using the nebulae color scheme
20415 @item fire
20416 each channel is displayed using the fire color scheme
20417 @item fiery
20418 each channel is displayed using the fiery color scheme
20419 @item fruit
20420 each channel is displayed using the fruit color scheme
20421 @item cool
20422 each channel is displayed using the cool color scheme
20423 @end table
20424
20425 Default value is @samp{channel}.
20426
20427 @item scale
20428 Specify scale used for calculating intensity color values.
20429
20430 It accepts the following values:
20431 @table @samp
20432 @item lin
20433 linear
20434 @item sqrt
20435 square root, default
20436 @item cbrt
20437 cubic root
20438 @item log
20439 logarithmic
20440 @item 4thrt
20441 4th root
20442 @item 5thrt
20443 5th root
20444 @end table
20445
20446 Default value is @samp{sqrt}.
20447
20448 @item saturation
20449 Set saturation modifier for displayed colors. Negative values provide
20450 alternative color scheme. @code{0} is no saturation at all.
20451 Saturation must be in [-10.0, 10.0] range.
20452 Default value is @code{1}.
20453
20454 @item win_func
20455 Set window function.
20456
20457 It accepts the following values:
20458 @table @samp
20459 @item rect
20460 @item bartlett
20461 @item hann
20462 @item hanning
20463 @item hamming
20464 @item blackman
20465 @item welch
20466 @item flattop
20467 @item bharris
20468 @item bnuttall
20469 @item bhann
20470 @item sine
20471 @item nuttall
20472 @item lanczos
20473 @item gauss
20474 @item tukey
20475 @item dolph
20476 @item cauchy
20477 @item parzen
20478 @item poisson
20479 @end table
20480
20481 Default value is @code{hann}.
20482
20483 @item orientation
20484 Set orientation of time vs frequency axis. Can be @code{vertical} or
20485 @code{horizontal}. Default is @code{vertical}.
20486
20487 @item overlap
20488 Set ratio of overlap window. Default value is @code{0}.
20489 When value is @code{1} overlap is set to recommended size for specific
20490 window function currently used.
20491
20492 @item gain
20493 Set scale gain for calculating intensity color values.
20494 Default value is @code{1}.
20495
20496 @item data
20497 Set which data to display. Can be @code{magnitude}, default or @code{phase}.
20498
20499 @item rotation
20500 Set color rotation, must be in [-1.0, 1.0] range.
20501 Default value is @code{0}.
20502 @end table
20503
20504 The usage is very similar to the showwaves filter; see the examples in that
20505 section.
20506
20507 @subsection Examples
20508
20509 @itemize
20510 @item
20511 Large window with logarithmic color scaling:
20512 @example
20513 showspectrum=s=1280x480:scale=log
20514 @end example
20515
20516 @item
20517 Complete example for a colored and sliding spectrum per channel using @command{ffplay}:
20518 @example
20519 ffplay -f lavfi 'amovie=input.mp3, asplit [a][out1];
20520              [a] showspectrum=mode=separate:color=intensity:slide=1:scale=cbrt [out0]'
20521 @end example
20522 @end itemize
20523
20524 @section showspectrumpic
20525
20526 Convert input audio to a single video frame, representing the audio frequency
20527 spectrum.
20528
20529 The filter accepts the following options:
20530
20531 @table @option
20532 @item size, s
20533 Specify the video size for the output. For the syntax of this option, check the
20534 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
20535 Default value is @code{4096x2048}.
20536
20537 @item mode
20538 Specify display mode.
20539
20540 It accepts the following values:
20541 @table @samp
20542 @item combined
20543 all channels are displayed in the same row
20544 @item separate
20545 all channels are displayed in separate rows
20546 @end table
20547 Default value is @samp{combined}.
20548
20549 @item color
20550 Specify display color mode.
20551
20552 It accepts the following values:
20553 @table @samp
20554 @item channel
20555 each channel is displayed in a separate color
20556 @item intensity
20557 each channel is displayed using the same color scheme
20558 @item rainbow
20559 each channel is displayed using the rainbow color scheme
20560 @item moreland
20561 each channel is displayed using the moreland color scheme
20562 @item nebulae
20563 each channel is displayed using the nebulae color scheme
20564 @item fire
20565 each channel is displayed using the fire color scheme
20566 @item fiery
20567 each channel is displayed using the fiery color scheme
20568 @item fruit
20569 each channel is displayed using the fruit color scheme
20570 @item cool
20571 each channel is displayed using the cool color scheme
20572 @end table
20573 Default value is @samp{intensity}.
20574
20575 @item scale
20576 Specify scale used for calculating intensity color values.
20577
20578 It accepts the following values:
20579 @table @samp
20580 @item lin
20581 linear
20582 @item sqrt
20583 square root, default
20584 @item cbrt
20585 cubic root
20586 @item log
20587 logarithmic
20588 @item 4thrt
20589 4th root
20590 @item 5thrt
20591 5th root
20592 @end table
20593 Default value is @samp{log}.
20594
20595 @item saturation
20596 Set saturation modifier for displayed colors. Negative values provide
20597 alternative color scheme. @code{0} is no saturation at all.
20598 Saturation must be in [-10.0, 10.0] range.
20599 Default value is @code{1}.
20600
20601 @item win_func
20602 Set window function.
20603
20604 It accepts the following values:
20605 @table @samp
20606 @item rect
20607 @item bartlett
20608 @item hann
20609 @item hanning
20610 @item hamming
20611 @item blackman
20612 @item welch
20613 @item flattop
20614 @item bharris
20615 @item bnuttall
20616 @item bhann
20617 @item sine
20618 @item nuttall
20619 @item lanczos
20620 @item gauss
20621 @item tukey
20622 @item dolph
20623 @item cauchy
20624 @item parzen
20625 @item poisson
20626 @end table
20627 Default value is @code{hann}.
20628
20629 @item orientation
20630 Set orientation of time vs frequency axis. Can be @code{vertical} or
20631 @code{horizontal}. Default is @code{vertical}.
20632
20633 @item gain
20634 Set scale gain for calculating intensity color values.
20635 Default value is @code{1}.
20636
20637 @item legend
20638 Draw time and frequency axes and legends. Default is enabled.
20639
20640 @item rotation
20641 Set color rotation, must be in [-1.0, 1.0] range.
20642 Default value is @code{0}.
20643 @end table
20644
20645 @subsection Examples
20646
20647 @itemize
20648 @item
20649 Extract an audio spectrogram of a whole audio track
20650 in a 1024x1024 picture using @command{ffmpeg}:
20651 @example
20652 ffmpeg -i audio.flac -lavfi showspectrumpic=s=1024x1024 spectrogram.png
20653 @end example
20654 @end itemize
20655
20656 @section showvolume
20657
20658 Convert input audio volume to a video output.
20659
20660 The filter accepts the following options:
20661
20662 @table @option
20663 @item rate, r
20664 Set video rate.
20665
20666 @item b
20667 Set border width, allowed range is [0, 5]. Default is 1.
20668
20669 @item w
20670 Set channel width, allowed range is [80, 8192]. Default is 400.
20671
20672 @item h
20673 Set channel height, allowed range is [1, 900]. Default is 20.
20674
20675 @item f
20676 Set fade, allowed range is [0, 1]. Default is 0.95.
20677
20678 @item c
20679 Set volume color expression.
20680
20681 The expression can use the following variables:
20682
20683 @table @option
20684 @item VOLUME
20685 Current max volume of channel in dB.
20686
20687 @item PEAK
20688 Current peak.
20689
20690 @item CHANNEL
20691 Current channel number, starting from 0.
20692 @end table
20693
20694 @item t
20695 If set, displays channel names. Default is enabled.
20696
20697 @item v
20698 If set, displays volume values. Default is enabled.
20699
20700 @item o
20701 Set orientation, can be horizontal: @code{h} or vertical: @code{v},
20702 default is @code{h}.
20703
20704 @item s
20705 Set step size, allowed range is [0, 5]. Default is 0, which means
20706 step is disabled.
20707
20708 @item p
20709 Set background opacity, allowed range is [0, 1]. Default is 0.
20710
20711 @item m
20712 Set metering mode, can be peak: @code{p} or rms: @code{r},
20713 default is @code{p}.
20714
20715 @item ds
20716 Set display scale, can be linear: @code{lin} or log: @code{log},
20717 default is @code{lin}.
20718
20719 @item dm
20720 In second.
20721 If set to > 0., display a line for the max level
20722 in the previous seconds.
20723 default is disabled: @code{0.}
20724
20725 @item dmc
20726 The color of the max line. Use when @code{dm} option is set to > 0.
20727 default is: @code{orange}
20728 @end table
20729
20730 @section showwaves
20731
20732 Convert input audio to a video output, representing the samples waves.
20733
20734 The filter accepts the following options:
20735
20736 @table @option
20737 @item size, s
20738 Specify the video size for the output. For the syntax of this option, check the
20739 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
20740 Default value is @code{600x240}.
20741
20742 @item mode
20743 Set display mode.
20744
20745 Available values are:
20746 @table @samp
20747 @item point
20748 Draw a point for each sample.
20749
20750 @item line
20751 Draw a vertical line for each sample.
20752
20753 @item p2p
20754 Draw a point for each sample and a line between them.
20755
20756 @item cline
20757 Draw a centered vertical line for each sample.
20758 @end table
20759
20760 Default value is @code{point}.
20761
20762 @item n
20763 Set the number of samples which are printed on the same column. A
20764 larger value will decrease the frame rate. Must be a positive
20765 integer. This option can be set only if the value for @var{rate}
20766 is not explicitly specified.
20767
20768 @item rate, r
20769 Set the (approximate) output frame rate. This is done by setting the
20770 option @var{n}. Default value is "25".
20771
20772 @item split_channels
20773 Set if channels should be drawn separately or overlap. Default value is 0.
20774
20775 @item colors
20776 Set colors separated by '|' which are going to be used for drawing of each channel.
20777
20778 @item scale
20779 Set amplitude scale.
20780
20781 Available values are:
20782 @table @samp
20783 @item lin
20784 Linear.
20785
20786 @item log
20787 Logarithmic.
20788
20789 @item sqrt
20790 Square root.
20791
20792 @item cbrt
20793 Cubic root.
20794 @end table
20795
20796 Default is linear.
20797
20798 @item draw
20799 Set the draw mode. This is mostly useful to set for high @var{n}.
20800
20801 Available values are:
20802 @table @samp
20803 @item scale
20804 Scale pixel values for each drawn sample.
20805
20806 @item full
20807 Draw every sample directly.
20808 @end table
20809
20810 Default value is @code{scale}.
20811 @end table
20812
20813 @subsection Examples
20814
20815 @itemize
20816 @item
20817 Output the input file audio and the corresponding video representation
20818 at the same time:
20819 @example
20820 amovie=a.mp3,asplit[out0],showwaves[out1]
20821 @end example
20822
20823 @item
20824 Create a synthetic signal and show it with showwaves, forcing a
20825 frame rate of 30 frames per second:
20826 @example
20827 aevalsrc=sin(1*2*PI*t)*sin(880*2*PI*t):cos(2*PI*200*t),asplit[out0],showwaves=r=30[out1]
20828 @end example
20829 @end itemize
20830
20831 @section showwavespic
20832
20833 Convert input audio to a single video frame, representing the samples waves.
20834
20835 The filter accepts the following options:
20836
20837 @table @option
20838 @item size, s
20839 Specify the video size for the output. For the syntax of this option, check the
20840 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
20841 Default value is @code{600x240}.
20842
20843 @item split_channels
20844 Set if channels should be drawn separately or overlap. Default value is 0.
20845
20846 @item colors
20847 Set colors separated by '|' which are going to be used for drawing of each channel.
20848
20849 @item scale
20850 Set amplitude scale.
20851
20852 Available values are:
20853 @table @samp
20854 @item lin
20855 Linear.
20856
20857 @item log
20858 Logarithmic.
20859
20860 @item sqrt
20861 Square root.
20862
20863 @item cbrt
20864 Cubic root.
20865 @end table
20866
20867 Default is linear.
20868 @end table
20869
20870 @subsection Examples
20871
20872 @itemize
20873 @item
20874 Extract a channel split representation of the wave form of a whole audio track
20875 in a 1024x800 picture using @command{ffmpeg}:
20876 @example
20877 ffmpeg -i audio.flac -lavfi showwavespic=split_channels=1:s=1024x800 waveform.png
20878 @end example
20879 @end itemize
20880
20881 @section sidedata, asidedata
20882
20883 Delete frame side data, or select frames based on it.
20884
20885 This filter accepts the following options:
20886
20887 @table @option
20888 @item mode
20889 Set mode of operation of the filter.
20890
20891 Can be one of the following:
20892
20893 @table @samp
20894 @item select
20895 Select every frame with side data of @code{type}.
20896
20897 @item delete
20898 Delete side data of @code{type}. If @code{type} is not set, delete all side
20899 data in the frame.
20900
20901 @end table
20902
20903 @item type
20904 Set side data type used with all modes. Must be set for @code{select} mode. For
20905 the list of frame side data types, refer to the @code{AVFrameSideDataType} enum
20906 in @file{libavutil/frame.h}. For example, to choose
20907 @code{AV_FRAME_DATA_PANSCAN} side data, you must specify @code{PANSCAN}.
20908
20909 @end table
20910
20911 @section spectrumsynth
20912
20913 Sythesize audio from 2 input video spectrums, first input stream represents
20914 magnitude across time and second represents phase across time.
20915 The filter will transform from frequency domain as displayed in videos back
20916 to time domain as presented in audio output.
20917
20918 This filter is primarily created for reversing processed @ref{showspectrum}
20919 filter outputs, but can synthesize sound from other spectrograms too.
20920 But in such case results are going to be poor if the phase data is not
20921 available, because in such cases phase data need to be recreated, usually
20922 its just recreated from random noise.
20923 For best results use gray only output (@code{channel} color mode in
20924 @ref{showspectrum} filter) and @code{log} scale for magnitude video and
20925 @code{lin} scale for phase video. To produce phase, for 2nd video, use
20926 @code{data} option. Inputs videos should generally use @code{fullframe}
20927 slide mode as that saves resources needed for decoding video.
20928
20929 The filter accepts the following options:
20930
20931 @table @option
20932 @item sample_rate
20933 Specify sample rate of output audio, the sample rate of audio from which
20934 spectrum was generated may differ.
20935
20936 @item channels
20937 Set number of channels represented in input video spectrums.
20938
20939 @item scale
20940 Set scale which was used when generating magnitude input spectrum.
20941 Can be @code{lin} or @code{log}. Default is @code{log}.
20942
20943 @item slide
20944 Set slide which was used when generating inputs spectrums.
20945 Can be @code{replace}, @code{scroll}, @code{fullframe} or @code{rscroll}.
20946 Default is @code{fullframe}.
20947
20948 @item win_func
20949 Set window function used for resynthesis.
20950
20951 @item overlap
20952 Set window overlap. In range @code{[0, 1]}. Default is @code{1},
20953 which means optimal overlap for selected window function will be picked.
20954
20955 @item orientation
20956 Set orientation of input videos. Can be @code{vertical} or @code{horizontal}.
20957 Default is @code{vertical}.
20958 @end table
20959
20960 @subsection Examples
20961
20962 @itemize
20963 @item
20964 First create magnitude and phase videos from audio, assuming audio is stereo with 44100 sample rate,
20965 then resynthesize videos back to audio with spectrumsynth:
20966 @example
20967 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
20968 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
20969 ffmpeg -i magnitude.nut -i phase.nut -lavfi spectrumsynth=channels=2:sample_rate=44100:win_func=hann:overlap=0.875:slide=fullframe output.flac
20970 @end example
20971 @end itemize
20972
20973 @section split, asplit
20974
20975 Split input into several identical outputs.
20976
20977 @code{asplit} works with audio input, @code{split} with video.
20978
20979 The filter accepts a single parameter which specifies the number of outputs. If
20980 unspecified, it defaults to 2.
20981
20982 @subsection Examples
20983
20984 @itemize
20985 @item
20986 Create two separate outputs from the same input:
20987 @example
20988 [in] split [out0][out1]
20989 @end example
20990
20991 @item
20992 To create 3 or more outputs, you need to specify the number of
20993 outputs, like in:
20994 @example
20995 [in] asplit=3 [out0][out1][out2]
20996 @end example
20997
20998 @item
20999 Create two separate outputs from the same input, one cropped and
21000 one padded:
21001 @example
21002 [in] split [splitout1][splitout2];
21003 [splitout1] crop=100:100:0:0    [cropout];
21004 [splitout2] pad=200:200:100:100 [padout];
21005 @end example
21006
21007 @item
21008 Create 5 copies of the input audio with @command{ffmpeg}:
21009 @example
21010 ffmpeg -i INPUT -filter_complex asplit=5 OUTPUT
21011 @end example
21012 @end itemize
21013
21014 @section zmq, azmq
21015
21016 Receive commands sent through a libzmq client, and forward them to
21017 filters in the filtergraph.
21018
21019 @code{zmq} and @code{azmq} work as a pass-through filters. @code{zmq}
21020 must be inserted between two video filters, @code{azmq} between two
21021 audio filters. Both are capable to send messages to any filter type.
21022
21023 To enable these filters you need to install the libzmq library and
21024 headers and configure FFmpeg with @code{--enable-libzmq}.
21025
21026 For more information about libzmq see:
21027 @url{http://www.zeromq.org/}
21028
21029 The @code{zmq} and @code{azmq} filters work as a libzmq server, which
21030 receives messages sent through a network interface defined by the
21031 @option{bind_address} (or the abbreviation "@option{b}") option.
21032 Default value of this option is @file{tcp://localhost:5555}. You may
21033 want to alter this value to your needs, but do not forget to escape any
21034 ':' signs (see @ref{filtergraph escaping}).
21035
21036 The received message must be in the form:
21037 @example
21038 @var{TARGET} @var{COMMAND} [@var{ARG}]
21039 @end example
21040
21041 @var{TARGET} specifies the target of the command, usually the name of
21042 the filter class or a specific filter instance name. The default
21043 filter instance name uses the pattern @samp{Parsed_<filter_name>_<index>},
21044 but you can override this by using the @samp{filter_name@@id} syntax
21045 (see @ref{Filtergraph syntax}).
21046
21047 @var{COMMAND} specifies the name of the command for the target filter.
21048
21049 @var{ARG} is optional and specifies the optional argument list for the
21050 given @var{COMMAND}.
21051
21052 Upon reception, the message is processed and the corresponding command
21053 is injected into the filtergraph. Depending on the result, the filter
21054 will send a reply to the client, adopting the format:
21055 @example
21056 @var{ERROR_CODE} @var{ERROR_REASON}
21057 @var{MESSAGE}
21058 @end example
21059
21060 @var{MESSAGE} is optional.
21061
21062 @subsection Examples
21063
21064 Look at @file{tools/zmqsend} for an example of a zmq client which can
21065 be used to send commands processed by these filters.
21066
21067 Consider the following filtergraph generated by @command{ffplay}.
21068 In this example the last overlay filter has an instance name. All other
21069 filters will have default instance names.
21070
21071 @example
21072 ffplay -dumpgraph 1 -f lavfi "
21073 color=s=100x100:c=red  [l];
21074 color=s=100x100:c=blue [r];
21075 nullsrc=s=200x100, zmq [bg];
21076 [bg][l]   overlay     [bg+l];
21077 [bg+l][r] overlay@@my=x=100 "
21078 @end example
21079
21080 To change the color of the left side of the video, the following
21081 command can be used:
21082 @example
21083 echo Parsed_color_0 c yellow | tools/zmqsend
21084 @end example
21085
21086 To change the right side:
21087 @example
21088 echo Parsed_color_1 c pink | tools/zmqsend
21089 @end example
21090
21091 To change the position of the right side:
21092 @example
21093 echo overlay@@my x 150 | tools/zmqsend
21094 @end example
21095
21096
21097 @c man end MULTIMEDIA FILTERS
21098
21099 @chapter Multimedia Sources
21100 @c man begin MULTIMEDIA SOURCES
21101
21102 Below is a description of the currently available multimedia sources.
21103
21104 @section amovie
21105
21106 This is the same as @ref{movie} source, except it selects an audio
21107 stream by default.
21108
21109 @anchor{movie}
21110 @section movie
21111
21112 Read audio and/or video stream(s) from a movie container.
21113
21114 It accepts the following parameters:
21115
21116 @table @option
21117 @item filename
21118 The name of the resource to read (not necessarily a file; it can also be a
21119 device or a stream accessed through some protocol).
21120
21121 @item format_name, f
21122 Specifies the format assumed for the movie to read, and can be either
21123 the name of a container or an input device. If not specified, the
21124 format is guessed from @var{movie_name} or by probing.
21125
21126 @item seek_point, sp
21127 Specifies the seek point in seconds. The frames will be output
21128 starting from this seek point. The parameter is evaluated with
21129 @code{av_strtod}, so the numerical value may be suffixed by an IS
21130 postfix. The default value is "0".
21131
21132 @item streams, s
21133 Specifies the streams to read. Several streams can be specified,
21134 separated by "+". The source will then have as many outputs, in the
21135 same order. The syntax is explained in the @ref{Stream specifiers,,"Stream specifiers"
21136 section in the ffmpeg manual,ffmpeg}. Two special names, "dv" and "da" specify
21137 respectively the default (best suited) video and audio stream. Default
21138 is "dv", or "da" if the filter is called as "amovie".
21139
21140 @item stream_index, si
21141 Specifies the index of the video stream to read. If the value is -1,
21142 the most suitable video stream will be automatically selected. The default
21143 value is "-1". Deprecated. If the filter is called "amovie", it will select
21144 audio instead of video.
21145
21146 @item loop
21147 Specifies how many times to read the stream in sequence.
21148 If the value is 0, the stream will be looped infinitely.
21149 Default value is "1".
21150
21151 Note that when the movie is looped the source timestamps are not
21152 changed, so it will generate non monotonically increasing timestamps.
21153
21154 @item discontinuity
21155 Specifies the time difference between frames above which the point is
21156 considered a timestamp discontinuity which is removed by adjusting the later
21157 timestamps.
21158 @end table
21159
21160 It allows overlaying a second video on top of the main input of
21161 a filtergraph, as shown in this graph:
21162 @example
21163 input -----------> deltapts0 --> overlay --> output
21164                                     ^
21165                                     |
21166 movie --> scale--> deltapts1 -------+
21167 @end example
21168 @subsection Examples
21169
21170 @itemize
21171 @item
21172 Skip 3.2 seconds from the start of the AVI file in.avi, and overlay it
21173 on top of the input labelled "in":
21174 @example
21175 movie=in.avi:seek_point=3.2, scale=180:-1, setpts=PTS-STARTPTS [over];
21176 [in] setpts=PTS-STARTPTS [main];
21177 [main][over] overlay=16:16 [out]
21178 @end example
21179
21180 @item
21181 Read from a video4linux2 device, and overlay it on top of the input
21182 labelled "in":
21183 @example
21184 movie=/dev/video0:f=video4linux2, scale=180:-1, setpts=PTS-STARTPTS [over];
21185 [in] setpts=PTS-STARTPTS [main];
21186 [main][over] overlay=16:16 [out]
21187 @end example
21188
21189 @item
21190 Read the first video stream and the audio stream with id 0x81 from
21191 dvd.vob; the video is connected to the pad named "video" and the audio is
21192 connected to the pad named "audio":
21193 @example
21194 movie=dvd.vob:s=v:0+#0x81 [video] [audio]
21195 @end example
21196 @end itemize
21197
21198 @subsection Commands
21199
21200 Both movie and amovie support the following commands:
21201 @table @option
21202 @item seek
21203 Perform seek using "av_seek_frame".
21204 The syntax is: seek @var{stream_index}|@var{timestamp}|@var{flags}
21205 @itemize
21206 @item
21207 @var{stream_index}: If stream_index is -1, a default
21208 stream is selected, and @var{timestamp} is automatically converted
21209 from AV_TIME_BASE units to the stream specific time_base.
21210 @item
21211 @var{timestamp}: Timestamp in AVStream.time_base units
21212 or, if no stream is specified, in AV_TIME_BASE units.
21213 @item
21214 @var{flags}: Flags which select direction and seeking mode.
21215 @end itemize
21216
21217 @item get_duration
21218 Get movie duration in AV_TIME_BASE units.
21219
21220 @end table
21221
21222 @c man end MULTIMEDIA SOURCES