]> git.sesse.net Git - ffmpeg/blob - doc/filters.texi
avfilter: add maskedmin/maskedmax filters
[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{commands}
316 @chapter Changing options at runtime with a command
317
318 Some options can be changed during the operation of the filter using
319 a command. These options are marked 'T' on the output of
320 @command{ffmpeg} @option{-h filter=<name of filter>}.
321 The name of the command is the name of the option and the argument is
322 the new value.
323
324 @anchor{framesync}
325 @chapter Options for filters with several inputs (framesync)
326 @c man begin OPTIONS FOR FILTERS WITH SEVERAL INPUTS
327
328 Some filters with several inputs support a common set of options.
329 These options can only be set by name, not with the short notation.
330
331 @table @option
332 @item eof_action
333 The action to take when EOF is encountered on the secondary input; it accepts
334 one of the following values:
335
336 @table @option
337 @item repeat
338 Repeat the last frame (the default).
339 @item endall
340 End both streams.
341 @item pass
342 Pass the main input through.
343 @end table
344
345 @item shortest
346 If set to 1, force the output to terminate when the shortest input
347 terminates. Default value is 0.
348
349 @item repeatlast
350 If set to 1, force the filter to extend the last frame of secondary streams
351 until the end of the primary stream. A value of 0 disables this behavior.
352 Default value is 1.
353 @end table
354
355 @c man end OPTIONS FOR FILTERS WITH SEVERAL INPUTS
356
357 @chapter Audio Filters
358 @c man begin AUDIO FILTERS
359
360 When you configure your FFmpeg build, you can disable any of the
361 existing filters using @code{--disable-filters}.
362 The configure output will show the audio filters included in your
363 build.
364
365 Below is a description of the currently available audio filters.
366
367 @section acompressor
368
369 A compressor is mainly used to reduce the dynamic range of a signal.
370 Especially modern music is mostly compressed at a high ratio to
371 improve the overall loudness. It's done to get the highest attention
372 of a listener, "fatten" the sound and bring more "power" to the track.
373 If a signal is compressed too much it may sound dull or "dead"
374 afterwards or it may start to "pump" (which could be a powerful effect
375 but can also destroy a track completely).
376 The right compression is the key to reach a professional sound and is
377 the high art of mixing and mastering. Because of its complex settings
378 it may take a long time to get the right feeling for this kind of effect.
379
380 Compression is done by detecting the volume above a chosen level
381 @code{threshold} and dividing it by the factor set with @code{ratio}.
382 So if you set the threshold to -12dB and your signal reaches -6dB a ratio
383 of 2:1 will result in a signal at -9dB. Because an exact manipulation of
384 the signal would cause distortion of the waveform the reduction can be
385 levelled over the time. This is done by setting "Attack" and "Release".
386 @code{attack} determines how long the signal has to rise above the threshold
387 before any reduction will occur and @code{release} sets the time the signal
388 has to fall below the threshold to reduce the reduction again. Shorter signals
389 than the chosen attack time will be left untouched.
390 The overall reduction of the signal can be made up afterwards with the
391 @code{makeup} setting. So compressing the peaks of a signal about 6dB and
392 raising the makeup to this level results in a signal twice as loud than the
393 source. To gain a softer entry in the compression the @code{knee} flattens the
394 hard edge at the threshold in the range of the chosen decibels.
395
396 The filter accepts the following options:
397
398 @table @option
399 @item level_in
400 Set input gain. Default is 1. Range is between 0.015625 and 64.
401
402 @item mode
403 Set mode of compressor operation. Can be @code{upward} or @code{downward}.
404 Default is @code{downward}.
405
406 @item threshold
407 If a signal of stream rises above this level it will affect the gain
408 reduction.
409 By default it is 0.125. Range is between 0.00097563 and 1.
410
411 @item ratio
412 Set a ratio by which the signal is reduced. 1:2 means that if the level
413 rose 4dB above the threshold, it will be only 2dB above after the reduction.
414 Default is 2. Range is between 1 and 20.
415
416 @item attack
417 Amount of milliseconds the signal has to rise above the threshold before gain
418 reduction starts. Default is 20. Range is between 0.01 and 2000.
419
420 @item release
421 Amount of milliseconds the signal has to fall below the threshold before
422 reduction is decreased again. Default is 250. Range is between 0.01 and 9000.
423
424 @item makeup
425 Set the amount by how much signal will be amplified after processing.
426 Default is 1. Range is from 1 to 64.
427
428 @item knee
429 Curve the sharp knee around the threshold to enter gain reduction more softly.
430 Default is 2.82843. Range is between 1 and 8.
431
432 @item link
433 Choose if the @code{average} level between all channels of input stream
434 or the louder(@code{maximum}) channel of input stream affects the
435 reduction. Default is @code{average}.
436
437 @item detection
438 Should the exact signal be taken in case of @code{peak} or an RMS one in case
439 of @code{rms}. Default is @code{rms} which is mostly smoother.
440
441 @item mix
442 How much to use compressed signal in output. Default is 1.
443 Range is between 0 and 1.
444 @end table
445
446 @section acontrast
447 Simple audio dynamic range compression/expansion filter.
448
449 The filter accepts the following options:
450
451 @table @option
452 @item contrast
453 Set contrast. Default is 33. Allowed range is between 0 and 100.
454 @end table
455
456 @section acopy
457
458 Copy the input audio source unchanged to the output. This is mainly useful for
459 testing purposes.
460
461 @section acrossfade
462
463 Apply cross fade from one input audio stream to another input audio stream.
464 The cross fade is applied for specified duration near the end of first stream.
465
466 The filter accepts the following options:
467
468 @table @option
469 @item nb_samples, ns
470 Specify the number of samples for which the cross fade effect has to last.
471 At the end of the cross fade effect the first input audio will be completely
472 silent. Default is 44100.
473
474 @item duration, d
475 Specify the duration of the cross fade effect. See
476 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
477 for the accepted syntax.
478 By default the duration is determined by @var{nb_samples}.
479 If set this option is used instead of @var{nb_samples}.
480
481 @item overlap, o
482 Should first stream end overlap with second stream start. Default is enabled.
483
484 @item curve1
485 Set curve for cross fade transition for first stream.
486
487 @item curve2
488 Set curve for cross fade transition for second stream.
489
490 For description of available curve types see @ref{afade} filter description.
491 @end table
492
493 @subsection Examples
494
495 @itemize
496 @item
497 Cross fade from one input to another:
498 @example
499 ffmpeg -i first.flac -i second.flac -filter_complex acrossfade=d=10:c1=exp:c2=exp output.flac
500 @end example
501
502 @item
503 Cross fade from one input to another but without overlapping:
504 @example
505 ffmpeg -i first.flac -i second.flac -filter_complex acrossfade=d=10:o=0:c1=exp:c2=exp output.flac
506 @end example
507 @end itemize
508
509 @section acrossover
510 Split audio stream into several bands.
511
512 This filter splits audio stream into two or more frequency ranges.
513 Summing all streams back will give flat output.
514
515 The filter accepts the following options:
516
517 @table @option
518 @item split
519 Set split frequencies. Those must be positive and increasing.
520
521 @item order
522 Set filter order, can be @var{2nd}, @var{4th} or @var{8th}.
523 Default is @var{4th}.
524 @end table
525
526 @section acrusher
527
528 Reduce audio bit resolution.
529
530 This filter is bit crusher with enhanced functionality. A bit crusher
531 is used to audibly reduce number of bits an audio signal is sampled
532 with. This doesn't change the bit depth at all, it just produces the
533 effect. Material reduced in bit depth sounds more harsh and "digital".
534 This filter is able to even round to continuous values instead of discrete
535 bit depths.
536 Additionally it has a D/C offset which results in different crushing of
537 the lower and the upper half of the signal.
538 An Anti-Aliasing setting is able to produce "softer" crushing sounds.
539
540 Another feature of this filter is the logarithmic mode.
541 This setting switches from linear distances between bits to logarithmic ones.
542 The result is a much more "natural" sounding crusher which doesn't gate low
543 signals for example. The human ear has a logarithmic perception,
544 so this kind of crushing is much more pleasant.
545 Logarithmic crushing is also able to get anti-aliased.
546
547 The filter accepts the following options:
548
549 @table @option
550 @item level_in
551 Set level in.
552
553 @item level_out
554 Set level out.
555
556 @item bits
557 Set bit reduction.
558
559 @item mix
560 Set mixing amount.
561
562 @item mode
563 Can be linear: @code{lin} or logarithmic: @code{log}.
564
565 @item dc
566 Set DC.
567
568 @item aa
569 Set anti-aliasing.
570
571 @item samples
572 Set sample reduction.
573
574 @item lfo
575 Enable LFO. By default disabled.
576
577 @item lforange
578 Set LFO range.
579
580 @item lforate
581 Set LFO rate.
582 @end table
583
584 @section acue
585
586 Delay audio filtering until a given wallclock timestamp. See the @ref{cue}
587 filter.
588
589 @section adeclick
590 Remove impulsive noise from input audio.
591
592 Samples detected as impulsive noise are replaced by interpolated samples using
593 autoregressive modelling.
594
595 @table @option
596 @item w
597 Set window size, in milliseconds. Allowed range is from @code{10} to
598 @code{100}. Default value is @code{55} milliseconds.
599 This sets size of window which will be processed at once.
600
601 @item o
602 Set window overlap, in percentage of window size. Allowed range is from
603 @code{50} to @code{95}. Default value is @code{75} percent.
604 Setting this to a very high value increases impulsive noise removal but makes
605 whole process much slower.
606
607 @item a
608 Set autoregression order, in percentage of window size. Allowed range is from
609 @code{0} to @code{25}. Default value is @code{2} percent. This option also
610 controls quality of interpolated samples using neighbour good samples.
611
612 @item t
613 Set threshold value. Allowed range is from @code{1} to @code{100}.
614 Default value is @code{2}.
615 This controls the strength of impulsive noise which is going to be removed.
616 The lower value, the more samples will be detected as impulsive noise.
617
618 @item b
619 Set burst fusion, in percentage of window size. Allowed range is @code{0} to
620 @code{10}. Default value is @code{2}.
621 If any two samples detected as noise are spaced less than this value then any
622 sample between those two samples will be also detected as noise.
623
624 @item m
625 Set overlap method.
626
627 It accepts the following values:
628 @table @option
629 @item a
630 Select overlap-add method. Even not interpolated samples are slightly
631 changed with this method.
632
633 @item s
634 Select overlap-save method. Not interpolated samples remain unchanged.
635 @end table
636
637 Default value is @code{a}.
638 @end table
639
640 @section adeclip
641 Remove clipped samples from input audio.
642
643 Samples detected as clipped are replaced by interpolated samples using
644 autoregressive modelling.
645
646 @table @option
647 @item w
648 Set window size, in milliseconds. Allowed range is from @code{10} to @code{100}.
649 Default value is @code{55} milliseconds.
650 This sets size of window which will be processed at once.
651
652 @item o
653 Set window overlap, in percentage of window size. Allowed range is from @code{50}
654 to @code{95}. Default value is @code{75} percent.
655
656 @item a
657 Set autoregression order, in percentage of window size. Allowed range is from
658 @code{0} to @code{25}. Default value is @code{8} percent. This option also controls
659 quality of interpolated samples using neighbour good samples.
660
661 @item t
662 Set threshold value. Allowed range is from @code{1} to @code{100}.
663 Default value is @code{10}. Higher values make clip detection less aggressive.
664
665 @item n
666 Set size of histogram used to detect clips. Allowed range is from @code{100} to @code{9999}.
667 Default value is @code{1000}. Higher values make clip detection less aggressive.
668
669 @item m
670 Set overlap method.
671
672 It accepts the following values:
673 @table @option
674 @item a
675 Select overlap-add method. Even not interpolated samples are slightly changed
676 with this method.
677
678 @item s
679 Select overlap-save method. Not interpolated samples remain unchanged.
680 @end table
681
682 Default value is @code{a}.
683 @end table
684
685 @section adelay
686
687 Delay one or more audio channels.
688
689 Samples in delayed channel are filled with silence.
690
691 The filter accepts the following option:
692
693 @table @option
694 @item delays
695 Set list of delays in milliseconds for each channel separated by '|'.
696 Unused delays will be silently ignored. If number of given delays is
697 smaller than number of channels all remaining channels will not be delayed.
698 If you want to delay exact number of samples, append 'S' to number.
699 If you want instead to delay in seconds, append 's' to number.
700
701 @item all
702 Use last set delay for all remaining channels. By default is disabled.
703 This option if enabled changes how option @code{delays} is interpreted.
704 @end table
705
706 @subsection Examples
707
708 @itemize
709 @item
710 Delay first channel by 1.5 seconds, the third channel by 0.5 seconds and leave
711 the second channel (and any other channels that may be present) unchanged.
712 @example
713 adelay=1500|0|500
714 @end example
715
716 @item
717 Delay second channel by 500 samples, the third channel by 700 samples and leave
718 the first channel (and any other channels that may be present) unchanged.
719 @example
720 adelay=0|500S|700S
721 @end example
722
723 @item
724 Delay all channels by same number of samples:
725 @example
726 adelay=delays=64S:all=1
727 @end example
728 @end itemize
729
730 @section aderivative, aintegral
731
732 Compute derivative/integral of audio stream.
733
734 Applying both filters one after another produces original audio.
735
736 @section aecho
737
738 Apply echoing to the input audio.
739
740 Echoes are reflected sound and can occur naturally amongst mountains
741 (and sometimes large buildings) when talking or shouting; digital echo
742 effects emulate this behaviour and are often used to help fill out the
743 sound of a single instrument or vocal. The time difference between the
744 original signal and the reflection is the @code{delay}, and the
745 loudness of the reflected signal is the @code{decay}.
746 Multiple echoes can have different delays and decays.
747
748 A description of the accepted parameters follows.
749
750 @table @option
751 @item in_gain
752 Set input gain of reflected signal. Default is @code{0.6}.
753
754 @item out_gain
755 Set output gain of reflected signal. Default is @code{0.3}.
756
757 @item delays
758 Set list of time intervals in milliseconds between original signal and reflections
759 separated by '|'. Allowed range for each @code{delay} is @code{(0 - 90000.0]}.
760 Default is @code{1000}.
761
762 @item decays
763 Set list of loudness of reflected signals separated by '|'.
764 Allowed range for each @code{decay} is @code{(0 - 1.0]}.
765 Default is @code{0.5}.
766 @end table
767
768 @subsection Examples
769
770 @itemize
771 @item
772 Make it sound as if there are twice as many instruments as are actually playing:
773 @example
774 aecho=0.8:0.88:60:0.4
775 @end example
776
777 @item
778 If delay is very short, then it sounds like a (metallic) robot playing music:
779 @example
780 aecho=0.8:0.88:6:0.4
781 @end example
782
783 @item
784 A longer delay will sound like an open air concert in the mountains:
785 @example
786 aecho=0.8:0.9:1000:0.3
787 @end example
788
789 @item
790 Same as above but with one more mountain:
791 @example
792 aecho=0.8:0.9:1000|1800:0.3|0.25
793 @end example
794 @end itemize
795
796 @section aemphasis
797 Audio emphasis filter creates or restores material directly taken from LPs or
798 emphased CDs with different filter curves. E.g. to store music on vinyl the
799 signal has to be altered by a filter first to even out the disadvantages of
800 this recording medium.
801 Once the material is played back the inverse filter has to be applied to
802 restore the distortion of the frequency response.
803
804 The filter accepts the following options:
805
806 @table @option
807 @item level_in
808 Set input gain.
809
810 @item level_out
811 Set output gain.
812
813 @item mode
814 Set filter mode. For restoring material use @code{reproduction} mode, otherwise
815 use @code{production} mode. Default is @code{reproduction} mode.
816
817 @item type
818 Set filter type. Selects medium. Can be one of the following:
819
820 @table @option
821 @item col
822 select Columbia.
823 @item emi
824 select EMI.
825 @item bsi
826 select BSI (78RPM).
827 @item riaa
828 select RIAA.
829 @item cd
830 select Compact Disc (CD).
831 @item 50fm
832 select 50µs (FM).
833 @item 75fm
834 select 75µs (FM).
835 @item 50kf
836 select 50µs (FM-KF).
837 @item 75kf
838 select 75µs (FM-KF).
839 @end table
840 @end table
841
842 @section aeval
843
844 Modify an audio signal according to the specified expressions.
845
846 This filter accepts one or more expressions (one for each channel),
847 which are evaluated and used to modify a corresponding audio signal.
848
849 It accepts the following parameters:
850
851 @table @option
852 @item exprs
853 Set the '|'-separated expressions list for each separate channel. If
854 the number of input channels is greater than the number of
855 expressions, the last specified expression is used for the remaining
856 output channels.
857
858 @item channel_layout, c
859 Set output channel layout. If not specified, the channel layout is
860 specified by the number of expressions. If set to @samp{same}, it will
861 use by default the same input channel layout.
862 @end table
863
864 Each expression in @var{exprs} can contain the following constants and functions:
865
866 @table @option
867 @item ch
868 channel number of the current expression
869
870 @item n
871 number of the evaluated sample, starting from 0
872
873 @item s
874 sample rate
875
876 @item t
877 time of the evaluated sample expressed in seconds
878
879 @item nb_in_channels
880 @item nb_out_channels
881 input and output number of channels
882
883 @item val(CH)
884 the value of input channel with number @var{CH}
885 @end table
886
887 Note: this filter is slow. For faster processing you should use a
888 dedicated filter.
889
890 @subsection Examples
891
892 @itemize
893 @item
894 Half volume:
895 @example
896 aeval=val(ch)/2:c=same
897 @end example
898
899 @item
900 Invert phase of the second channel:
901 @example
902 aeval=val(0)|-val(1)
903 @end example
904 @end itemize
905
906 @anchor{afade}
907 @section afade
908
909 Apply fade-in/out effect to input audio.
910
911 A description of the accepted parameters follows.
912
913 @table @option
914 @item type, t
915 Specify the effect type, can be either @code{in} for fade-in, or
916 @code{out} for a fade-out effect. Default is @code{in}.
917
918 @item start_sample, ss
919 Specify the number of the start sample for starting to apply the fade
920 effect. Default is 0.
921
922 @item nb_samples, ns
923 Specify the number of samples for which the fade effect has to last. At
924 the end of the fade-in effect the output audio will have the same
925 volume as the input audio, at the end of the fade-out transition
926 the output audio will be silence. Default is 44100.
927
928 @item start_time, st
929 Specify the start time of the fade effect. Default is 0.
930 The value must be specified as a time duration; see
931 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
932 for the accepted syntax.
933 If set this option is used instead of @var{start_sample}.
934
935 @item duration, d
936 Specify the duration of the fade effect. See
937 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
938 for the accepted syntax.
939 At the end of the fade-in effect the output audio will have the same
940 volume as the input audio, at the end of the fade-out transition
941 the output audio will be silence.
942 By default the duration is determined by @var{nb_samples}.
943 If set this option is used instead of @var{nb_samples}.
944
945 @item curve
946 Set curve for fade transition.
947
948 It accepts the following values:
949 @table @option
950 @item tri
951 select triangular, linear slope (default)
952 @item qsin
953 select quarter of sine wave
954 @item hsin
955 select half of sine wave
956 @item esin
957 select exponential sine wave
958 @item log
959 select logarithmic
960 @item ipar
961 select inverted parabola
962 @item qua
963 select quadratic
964 @item cub
965 select cubic
966 @item squ
967 select square root
968 @item cbr
969 select cubic root
970 @item par
971 select parabola
972 @item exp
973 select exponential
974 @item iqsin
975 select inverted quarter of sine wave
976 @item ihsin
977 select inverted half of sine wave
978 @item dese
979 select double-exponential seat
980 @item desi
981 select double-exponential sigmoid
982 @item losi
983 select logistic sigmoid
984 @item nofade
985 no fade applied
986 @end table
987 @end table
988
989 @subsection Examples
990
991 @itemize
992 @item
993 Fade in first 15 seconds of audio:
994 @example
995 afade=t=in:ss=0:d=15
996 @end example
997
998 @item
999 Fade out last 25 seconds of a 900 seconds audio:
1000 @example
1001 afade=t=out:st=875:d=25
1002 @end example
1003 @end itemize
1004
1005 @section afftdn
1006 Denoise audio samples with FFT.
1007
1008 A description of the accepted parameters follows.
1009
1010 @table @option
1011 @item nr
1012 Set the noise reduction in dB, allowed range is 0.01 to 97.
1013 Default value is 12 dB.
1014
1015 @item nf
1016 Set the noise floor in dB, allowed range is -80 to -20.
1017 Default value is -50 dB.
1018
1019 @item nt
1020 Set the noise type.
1021
1022 It accepts the following values:
1023 @table @option
1024 @item w
1025 Select white noise.
1026
1027 @item v
1028 Select vinyl noise.
1029
1030 @item s
1031 Select shellac noise.
1032
1033 @item c
1034 Select custom noise, defined in @code{bn} option.
1035
1036 Default value is white noise.
1037 @end table
1038
1039 @item bn
1040 Set custom band noise for every one of 15 bands.
1041 Bands are separated by ' ' or '|'.
1042
1043 @item rf
1044 Set the residual floor in dB, allowed range is -80 to -20.
1045 Default value is -38 dB.
1046
1047 @item tn
1048 Enable noise tracking. By default is disabled.
1049 With this enabled, noise floor is automatically adjusted.
1050
1051 @item tr
1052 Enable residual tracking. By default is disabled.
1053
1054 @item om
1055 Set the output mode.
1056
1057 It accepts the following values:
1058 @table @option
1059 @item i
1060 Pass input unchanged.
1061
1062 @item o
1063 Pass noise filtered out.
1064
1065 @item n
1066 Pass only noise.
1067
1068 Default value is @var{o}.
1069 @end table
1070 @end table
1071
1072 @subsection Commands
1073
1074 This filter supports the following commands:
1075 @table @option
1076 @item sample_noise, sn
1077 Start or stop measuring noise profile.
1078 Syntax for the command is : "start" or "stop" string.
1079 After measuring noise profile is stopped it will be
1080 automatically applied in filtering.
1081
1082 @item noise_reduction, nr
1083 Change noise reduction. Argument is single float number.
1084 Syntax for the command is : "@var{noise_reduction}"
1085
1086 @item noise_floor, nf
1087 Change noise floor. Argument is single float number.
1088 Syntax for the command is : "@var{noise_floor}"
1089
1090 @item output_mode, om
1091 Change output mode operation.
1092 Syntax for the command is : "i", "o" or "n" string.
1093 @end table
1094
1095 @section afftfilt
1096 Apply arbitrary expressions to samples in frequency domain.
1097
1098 @table @option
1099 @item real
1100 Set frequency domain real expression for each separate channel separated
1101 by '|'. Default is "re".
1102 If the number of input channels is greater than the number of
1103 expressions, the last specified expression is used for the remaining
1104 output channels.
1105
1106 @item imag
1107 Set frequency domain imaginary expression for each separate channel
1108 separated by '|'. Default is "im".
1109
1110 Each expression in @var{real} and @var{imag} can contain the following
1111 constants and functions:
1112
1113 @table @option
1114 @item sr
1115 sample rate
1116
1117 @item b
1118 current frequency bin number
1119
1120 @item nb
1121 number of available bins
1122
1123 @item ch
1124 channel number of the current expression
1125
1126 @item chs
1127 number of channels
1128
1129 @item pts
1130 current frame pts
1131
1132 @item re
1133 current real part of frequency bin of current channel
1134
1135 @item im
1136 current imaginary part of frequency bin of current channel
1137
1138 @item real(b, ch)
1139 Return the value of real part of frequency bin at location (@var{bin},@var{channel})
1140
1141 @item imag(b, ch)
1142 Return the value of imaginary part of frequency bin at location (@var{bin},@var{channel})
1143 @end table
1144
1145 @item win_size
1146 Set window size. Allowed range is from 16 to 131072.
1147 Default is @code{4096}
1148
1149 @item win_func
1150 Set window function. Default is @code{hann}.
1151
1152 @item overlap
1153 Set window overlap. If set to 1, the recommended overlap for selected
1154 window function will be picked. Default is @code{0.75}.
1155 @end table
1156
1157 @subsection Examples
1158
1159 @itemize
1160 @item
1161 Leave almost only low frequencies in audio:
1162 @example
1163 afftfilt="'real=re * (1-clip((b/nb)*b,0,1))':imag='im * (1-clip((b/nb)*b,0,1))'"
1164 @end example
1165
1166 @item
1167 Apply robotize effect:
1168 @example
1169 afftfilt="real='hypot(re,im)*sin(0)':imag='hypot(re,im)*cos(0)':win_size=512:overlap=0.75"
1170 @end example
1171
1172 @item
1173 Apply whisper effect:
1174 @example
1175 afftfilt="real='hypot(re,im)*cos((random(0)*2-1)*2*3.14)':imag='hypot(re,im)*sin((random(1)*2-1)*2*3.14)':win_size=128:overlap=0.8"
1176 @end example
1177 @end itemize
1178
1179 @anchor{afir}
1180 @section afir
1181
1182 Apply an arbitrary Frequency Impulse Response filter.
1183
1184 This filter is designed for applying long FIR filters,
1185 up to 60 seconds long.
1186
1187 It can be used as component for digital crossover filters,
1188 room equalization, cross talk cancellation, wavefield synthesis,
1189 auralization, ambiophonics, ambisonics and spatialization.
1190
1191 This filter uses the second stream as FIR coefficients.
1192 If the second stream holds a single channel, it will be used
1193 for all input channels in the first stream, otherwise
1194 the number of channels in the second stream must be same as
1195 the number of channels in the first stream.
1196
1197 It accepts the following parameters:
1198
1199 @table @option
1200 @item dry
1201 Set dry gain. This sets input gain.
1202
1203 @item wet
1204 Set wet gain. This sets final output gain.
1205
1206 @item length
1207 Set Impulse Response filter length. Default is 1, which means whole IR is processed.
1208
1209 @item gtype
1210 Enable applying gain measured from power of IR.
1211
1212 Set which approach to use for auto gain measurement.
1213
1214 @table @option
1215 @item none
1216 Do not apply any gain.
1217
1218 @item peak
1219 select peak gain, very conservative approach. This is default value.
1220
1221 @item dc
1222 select DC gain, limited application.
1223
1224 @item gn
1225 select gain to noise approach, this is most popular one.
1226 @end table
1227
1228 @item irgain
1229 Set gain to be applied to IR coefficients before filtering.
1230 Allowed range is 0 to 1. This gain is applied after any gain applied with @var{gtype} option.
1231
1232 @item irfmt
1233 Set format of IR stream. Can be @code{mono} or @code{input}.
1234 Default is @code{input}.
1235
1236 @item maxir
1237 Set max allowed Impulse Response filter duration in seconds. Default is 30 seconds.
1238 Allowed range is 0.1 to 60 seconds.
1239
1240 @item response
1241 Show IR frequency response, magnitude(magenta), phase(green) and group delay(yellow) 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
1251 @item rate
1252 Set video stream frame rate. This option is used only when @var{response} is enabled.
1253
1254 @item minp
1255 Set minimal partition size used for convolution. Default is @var{8192}.
1256 Allowed range is from @var{8} to @var{32768}.
1257 Lower values decreases latency at cost of higher CPU usage.
1258
1259 @item maxp
1260 Set maximal partition size used for convolution. Default is @var{8192}.
1261 Allowed range is from @var{8} to @var{32768}.
1262 Lower values may increase CPU usage.
1263 @end table
1264
1265 @subsection Examples
1266
1267 @itemize
1268 @item
1269 Apply reverb to stream using mono IR file as second input, complete command using ffmpeg:
1270 @example
1271 ffmpeg -i input.wav -i middle_tunnel_1way_mono.wav -lavfi afir output.wav
1272 @end example
1273 @end itemize
1274
1275 @anchor{aformat}
1276 @section aformat
1277
1278 Set output format constraints for the input audio. The framework will
1279 negotiate the most appropriate format to minimize conversions.
1280
1281 It accepts the following parameters:
1282 @table @option
1283
1284 @item sample_fmts
1285 A '|'-separated list of requested sample formats.
1286
1287 @item sample_rates
1288 A '|'-separated list of requested sample rates.
1289
1290 @item channel_layouts
1291 A '|'-separated list of requested channel layouts.
1292
1293 See @ref{channel layout syntax,,the Channel Layout section in the ffmpeg-utils(1) manual,ffmpeg-utils}
1294 for the required syntax.
1295 @end table
1296
1297 If a parameter is omitted, all values are allowed.
1298
1299 Force the output to either unsigned 8-bit or signed 16-bit stereo
1300 @example
1301 aformat=sample_fmts=u8|s16:channel_layouts=stereo
1302 @end example
1303
1304 @section agate
1305
1306 A gate is mainly used to reduce lower parts of a signal. This kind of signal
1307 processing reduces disturbing noise between useful signals.
1308
1309 Gating is done by detecting the volume below a chosen level @var{threshold}
1310 and dividing it by the factor set with @var{ratio}. The bottom of the noise
1311 floor is set via @var{range}. Because an exact manipulation of the signal
1312 would cause distortion of the waveform the reduction can be levelled over
1313 time. This is done by setting @var{attack} and @var{release}.
1314
1315 @var{attack} determines how long the signal has to fall below the threshold
1316 before any reduction will occur and @var{release} sets the time the signal
1317 has to rise above the threshold to reduce the reduction again.
1318 Shorter signals than the chosen attack time will be left untouched.
1319
1320 @table @option
1321 @item level_in
1322 Set input level before filtering.
1323 Default is 1. Allowed range is from 0.015625 to 64.
1324
1325 @item mode
1326 Set the mode of operation. Can be @code{upward} or @code{downward}.
1327 Default is @code{downward}. If set to @code{upward} mode, higher parts of signal
1328 will be amplified, expanding dynamic range in upward direction.
1329 Otherwise, in case of @code{downward} lower parts of signal will be reduced.
1330
1331 @item range
1332 Set the level of gain reduction when the signal is below the threshold.
1333 Default is 0.06125. Allowed range is from 0 to 1.
1334 Setting this to 0 disables reduction and then filter behaves like expander.
1335
1336 @item threshold
1337 If a signal rises above this level the gain reduction is released.
1338 Default is 0.125. Allowed range is from 0 to 1.
1339
1340 @item ratio
1341 Set a ratio by which the signal is reduced.
1342 Default is 2. Allowed range is from 1 to 9000.
1343
1344 @item attack
1345 Amount of milliseconds the signal has to rise above the threshold before gain
1346 reduction stops.
1347 Default is 20 milliseconds. Allowed range is from 0.01 to 9000.
1348
1349 @item release
1350 Amount of milliseconds the signal has to fall below the threshold before the
1351 reduction is increased again. Default is 250 milliseconds.
1352 Allowed range is from 0.01 to 9000.
1353
1354 @item makeup
1355 Set amount of amplification of signal after processing.
1356 Default is 1. Allowed range is from 1 to 64.
1357
1358 @item knee
1359 Curve the sharp knee around the threshold to enter gain reduction more softly.
1360 Default is 2.828427125. Allowed range is from 1 to 8.
1361
1362 @item detection
1363 Choose if exact signal should be taken for detection or an RMS like one.
1364 Default is @code{rms}. Can be @code{peak} or @code{rms}.
1365
1366 @item link
1367 Choose if the average level between all channels or the louder channel affects
1368 the reduction.
1369 Default is @code{average}. Can be @code{average} or @code{maximum}.
1370 @end table
1371
1372 @section aiir
1373
1374 Apply an arbitrary Infinite Impulse Response filter.
1375
1376 It accepts the following parameters:
1377
1378 @table @option
1379 @item z
1380 Set numerator/zeros coefficients.
1381
1382 @item p
1383 Set denominator/poles coefficients.
1384
1385 @item k
1386 Set channels gains.
1387
1388 @item dry_gain
1389 Set input gain.
1390
1391 @item wet_gain
1392 Set output gain.
1393
1394 @item f
1395 Set coefficients format.
1396
1397 @table @samp
1398 @item tf
1399 transfer function
1400 @item zp
1401 Z-plane zeros/poles, cartesian (default)
1402 @item pr
1403 Z-plane zeros/poles, polar radians
1404 @item pd
1405 Z-plane zeros/poles, polar degrees
1406 @end table
1407
1408 @item r
1409 Set kind of processing.
1410 Can be @code{d} - direct or @code{s} - serial cascading. Default is @code{s}.
1411
1412 @item e
1413 Set filtering precision.
1414
1415 @table @samp
1416 @item dbl
1417 double-precision floating-point (default)
1418 @item flt
1419 single-precision floating-point
1420 @item i32
1421 32-bit integers
1422 @item i16
1423 16-bit integers
1424 @end table
1425
1426 @item mix
1427 How much to use filtered signal in output. Default is 1.
1428 Range is between 0 and 1.
1429
1430 @item response
1431 Show IR frequency response, magnitude(magenta), phase(green) and group delay(yellow) in additional video stream.
1432 By default it is disabled.
1433
1434 @item channel
1435 Set for which IR channel to display frequency response. By default is first channel
1436 displayed. This option is used only when @var{response} is enabled.
1437
1438 @item size
1439 Set video stream size. This option is used only when @var{response} is enabled.
1440 @end table
1441
1442 Coefficients in @code{tf} format are separated by spaces and are in ascending
1443 order.
1444
1445 Coefficients in @code{zp} format are separated by spaces and order of coefficients
1446 doesn't matter. Coefficients in @code{zp} format are complex numbers with @var{i}
1447 imaginary unit.
1448
1449 Different coefficients and gains can be provided for every channel, in such case
1450 use '|' to separate coefficients or gains. Last provided coefficients will be
1451 used for all remaining channels.
1452
1453 @subsection Examples
1454
1455 @itemize
1456 @item
1457 Apply 2 pole elliptic notch at around 5000Hz for 48000 Hz sample rate:
1458 @example
1459 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
1460 @end example
1461
1462 @item
1463 Same as above but in @code{zp} format:
1464 @example
1465 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
1466 @end example
1467 @end itemize
1468
1469 @section alimiter
1470
1471 The limiter prevents an input signal from rising over a desired threshold.
1472 This limiter uses lookahead technology to prevent your signal from distorting.
1473 It means that there is a small delay after the signal is processed. Keep in mind
1474 that the delay it produces is the attack time you set.
1475
1476 The filter accepts the following options:
1477
1478 @table @option
1479 @item level_in
1480 Set input gain. Default is 1.
1481
1482 @item level_out
1483 Set output gain. Default is 1.
1484
1485 @item limit
1486 Don't let signals above this level pass the limiter. Default is 1.
1487
1488 @item attack
1489 The limiter will reach its attenuation level in this amount of time in
1490 milliseconds. Default is 5 milliseconds.
1491
1492 @item release
1493 Come back from limiting to attenuation 1.0 in this amount of milliseconds.
1494 Default is 50 milliseconds.
1495
1496 @item asc
1497 When gain reduction is always needed ASC takes care of releasing to an
1498 average reduction level rather than reaching a reduction of 0 in the release
1499 time.
1500
1501 @item asc_level
1502 Select how much the release time is affected by ASC, 0 means nearly no changes
1503 in release time while 1 produces higher release times.
1504
1505 @item level
1506 Auto level output signal. Default is enabled.
1507 This normalizes audio back to 0dB if enabled.
1508 @end table
1509
1510 Depending on picked setting it is recommended to upsample input 2x or 4x times
1511 with @ref{aresample} before applying this filter.
1512
1513 @section allpass
1514
1515 Apply a two-pole all-pass filter with central frequency (in Hz)
1516 @var{frequency}, and filter-width @var{width}.
1517 An all-pass filter changes the audio's frequency to phase relationship
1518 without changing its frequency to amplitude relationship.
1519
1520 The filter accepts the following options:
1521
1522 @table @option
1523 @item frequency, f
1524 Set frequency in Hz.
1525
1526 @item width_type, t
1527 Set method to specify band-width of filter.
1528 @table @option
1529 @item h
1530 Hz
1531 @item q
1532 Q-Factor
1533 @item o
1534 octave
1535 @item s
1536 slope
1537 @item k
1538 kHz
1539 @end table
1540
1541 @item width, w
1542 Specify the band-width of a filter in width_type units.
1543
1544 @item mix, m
1545 How much to use filtered signal in output. Default is 1.
1546 Range is between 0 and 1.
1547
1548 @item channels, c
1549 Specify which channels to filter, by default all available are filtered.
1550 @end table
1551
1552 @subsection Commands
1553
1554 This filter supports the following commands:
1555 @table @option
1556 @item frequency, f
1557 Change allpass frequency.
1558 Syntax for the command is : "@var{frequency}"
1559
1560 @item width_type, t
1561 Change allpass width_type.
1562 Syntax for the command is : "@var{width_type}"
1563
1564 @item width, w
1565 Change allpass width.
1566 Syntax for the command is : "@var{width}"
1567
1568 @item mix, m
1569 Change allpass mix.
1570 Syntax for the command is : "@var{mix}"
1571 @end table
1572
1573 @section aloop
1574
1575 Loop audio samples.
1576
1577 The filter accepts the following options:
1578
1579 @table @option
1580 @item loop
1581 Set the number of loops. Setting this value to -1 will result in infinite loops.
1582 Default is 0.
1583
1584 @item size
1585 Set maximal number of samples. Default is 0.
1586
1587 @item start
1588 Set first sample of loop. Default is 0.
1589 @end table
1590
1591 @anchor{amerge}
1592 @section amerge
1593
1594 Merge two or more audio streams into a single multi-channel stream.
1595
1596 The filter accepts the following options:
1597
1598 @table @option
1599
1600 @item inputs
1601 Set the number of inputs. Default is 2.
1602
1603 @end table
1604
1605 If the channel layouts of the inputs are disjoint, and therefore compatible,
1606 the channel layout of the output will be set accordingly and the channels
1607 will be reordered as necessary. If the channel layouts of the inputs are not
1608 disjoint, the output will have all the channels of the first input then all
1609 the channels of the second input, in that order, and the channel layout of
1610 the output will be the default value corresponding to the total number of
1611 channels.
1612
1613 For example, if the first input is in 2.1 (FL+FR+LF) and the second input
1614 is FC+BL+BR, then the output will be in 5.1, with the channels in the
1615 following order: a1, a2, b1, a3, b2, b3 (a1 is the first channel of the
1616 first input, b1 is the first channel of the second input).
1617
1618 On the other hand, if both input are in stereo, the output channels will be
1619 in the default order: a1, a2, b1, b2, and the channel layout will be
1620 arbitrarily set to 4.0, which may or may not be the expected value.
1621
1622 All inputs must have the same sample rate, and format.
1623
1624 If inputs do not have the same duration, the output will stop with the
1625 shortest.
1626
1627 @subsection Examples
1628
1629 @itemize
1630 @item
1631 Merge two mono files into a stereo stream:
1632 @example
1633 amovie=left.wav [l] ; amovie=right.mp3 [r] ; [l] [r] amerge
1634 @end example
1635
1636 @item
1637 Multiple merges assuming 1 video stream and 6 audio streams in @file{input.mkv}:
1638 @example
1639 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
1640 @end example
1641 @end itemize
1642
1643 @section amix
1644
1645 Mixes multiple audio inputs into a single output.
1646
1647 Note that this filter only supports float samples (the @var{amerge}
1648 and @var{pan} audio filters support many formats). If the @var{amix}
1649 input has integer samples then @ref{aresample} will be automatically
1650 inserted to perform the conversion to float samples.
1651
1652 For example
1653 @example
1654 ffmpeg -i INPUT1 -i INPUT2 -i INPUT3 -filter_complex amix=inputs=3:duration=first:dropout_transition=3 OUTPUT
1655 @end example
1656 will mix 3 input audio streams to a single output with the same duration as the
1657 first input and a dropout transition time of 3 seconds.
1658
1659 It accepts the following parameters:
1660 @table @option
1661
1662 @item inputs
1663 The number of inputs. If unspecified, it defaults to 2.
1664
1665 @item duration
1666 How to determine the end-of-stream.
1667 @table @option
1668
1669 @item longest
1670 The duration of the longest input. (default)
1671
1672 @item shortest
1673 The duration of the shortest input.
1674
1675 @item first
1676 The duration of the first input.
1677
1678 @end table
1679
1680 @item dropout_transition
1681 The transition time, in seconds, for volume renormalization when an input
1682 stream ends. The default value is 2 seconds.
1683
1684 @item weights
1685 Specify weight of each input audio stream as sequence.
1686 Each weight is separated by space. By default all inputs have same weight.
1687 @end table
1688
1689 @section amultiply
1690
1691 Multiply first audio stream with second audio stream and store result
1692 in output audio stream. Multiplication is done by multiplying each
1693 sample from first stream with sample at same position from second stream.
1694
1695 With this element-wise multiplication one can create amplitude fades and
1696 amplitude modulations.
1697
1698 @section anequalizer
1699
1700 High-order parametric multiband equalizer for each channel.
1701
1702 It accepts the following parameters:
1703 @table @option
1704 @item params
1705
1706 This option string is in format:
1707 "c@var{chn} f=@var{cf} w=@var{w} g=@var{g} t=@var{f} | ..."
1708 Each equalizer band is separated by '|'.
1709
1710 @table @option
1711 @item chn
1712 Set channel number to which equalization will be applied.
1713 If input doesn't have that channel the entry is ignored.
1714
1715 @item f
1716 Set central frequency for band.
1717 If input doesn't have that frequency the entry is ignored.
1718
1719 @item w
1720 Set band width in hertz.
1721
1722 @item g
1723 Set band gain in dB.
1724
1725 @item t
1726 Set filter type for band, optional, can be:
1727
1728 @table @samp
1729 @item 0
1730 Butterworth, this is default.
1731
1732 @item 1
1733 Chebyshev type 1.
1734
1735 @item 2
1736 Chebyshev type 2.
1737 @end table
1738 @end table
1739
1740 @item curves
1741 With this option activated frequency response of anequalizer is displayed
1742 in video stream.
1743
1744 @item size
1745 Set video stream size. Only useful if curves option is activated.
1746
1747 @item mgain
1748 Set max gain that will be displayed. Only useful if curves option is activated.
1749 Setting this to a reasonable value makes it possible to display gain which is derived from
1750 neighbour bands which are too close to each other and thus produce higher gain
1751 when both are activated.
1752
1753 @item fscale
1754 Set frequency scale used to draw frequency response in video output.
1755 Can be linear or logarithmic. Default is logarithmic.
1756
1757 @item colors
1758 Set color for each channel curve which is going to be displayed in video stream.
1759 This is list of color names separated by space or by '|'.
1760 Unrecognised or missing colors will be replaced by white color.
1761 @end table
1762
1763 @subsection Examples
1764
1765 @itemize
1766 @item
1767 Lower gain by 10 of central frequency 200Hz and width 100 Hz
1768 for first 2 channels using Chebyshev type 1 filter:
1769 @example
1770 anequalizer=c0 f=200 w=100 g=-10 t=1|c1 f=200 w=100 g=-10 t=1
1771 @end example
1772 @end itemize
1773
1774 @subsection Commands
1775
1776 This filter supports the following commands:
1777 @table @option
1778 @item change
1779 Alter existing filter parameters.
1780 Syntax for the commands is : "@var{fN}|f=@var{freq}|w=@var{width}|g=@var{gain}"
1781
1782 @var{fN} is existing filter number, starting from 0, if no such filter is available
1783 error is returned.
1784 @var{freq} set new frequency parameter.
1785 @var{width} set new width parameter in herz.
1786 @var{gain} set new gain parameter in dB.
1787
1788 Full filter invocation with asendcmd may look like this:
1789 asendcmd=c='4.0 anequalizer change 0|f=200|w=50|g=1',anequalizer=...
1790 @end table
1791
1792 @section anlmdn
1793
1794 Reduce broadband noise in audio samples using Non-Local Means algorithm.
1795
1796 Each sample is adjusted by looking for other samples with similar contexts. This
1797 context similarity is defined by comparing their surrounding patches of size
1798 @option{p}. Patches are searched in an area of @option{r} around the sample.
1799
1800 The filter accepts the following options:
1801
1802 @table @option
1803 @item s
1804 Set denoising strength. Allowed range is from 0.00001 to 10. Default value is 0.00001.
1805
1806 @item p
1807 Set patch radius duration. Allowed range is from 1 to 100 milliseconds.
1808 Default value is 2 milliseconds.
1809
1810 @item r
1811 Set research radius duration. Allowed range is from 2 to 300 milliseconds.
1812 Default value is 6 milliseconds.
1813
1814 @item o
1815 Set the output mode.
1816
1817 It accepts the following values:
1818 @table @option
1819 @item i
1820 Pass input unchanged.
1821
1822 @item o
1823 Pass noise filtered out.
1824
1825 @item n
1826 Pass only noise.
1827
1828 Default value is @var{o}.
1829 @end table
1830
1831 @item m
1832 Set smooth factor. Default value is @var{11}. Allowed range is from @var{1} to @var{15}.
1833 @end table
1834
1835 @subsection Commands
1836
1837 This filter supports the following commands:
1838 @table @option
1839 @item s
1840 Change denoise strength. Argument is single float number.
1841 Syntax for the command is : "@var{s}"
1842
1843 @item o
1844 Change output mode.
1845 Syntax for the command is : "i", "o" or "n" string.
1846 @end table
1847
1848 @section anlms
1849 Apply Normalized Least-Mean-Squares algorithm to the first audio stream using the second audio stream.
1850
1851 This adaptive filter is used to mimic a desired filter by finding the filter coefficients that
1852 relate to producing the least mean square of the error signal (difference between the desired,
1853 2nd input audio stream and the actual signal, the 1st input audio stream).
1854
1855 A description of the accepted options follows.
1856
1857 @table @option
1858 @item order
1859 Set filter order.
1860
1861 @item mu
1862 Set filter mu.
1863
1864 @item eps
1865 Set the filter eps.
1866
1867 @item leakage
1868 Set the filter leakage.
1869
1870 @item out_mode
1871 It accepts the following values:
1872 @table @option
1873 @item i
1874 Pass the 1st input.
1875
1876 @item d
1877 Pass the 2nd input.
1878
1879 @item o
1880 Pass filtered samples.
1881
1882 @item n
1883 Pass difference between desired and filtered samples.
1884
1885 Default value is @var{o}.
1886 @end table
1887 @end table
1888
1889 @subsection Examples
1890
1891 @itemize
1892 @item
1893 One of many usages of this filter is noise reduction, input audio is filtered
1894 with same samples that are delayed by fixed amount, one such example for stereo audio is:
1895 @example
1896 asplit[a][b],[a]adelay=32S|32S[a],[b][a]anlms=order=128:leakage=0.0005:mu=.5:out_mode=o
1897 @end example
1898 @end itemize
1899
1900 @subsection Commands
1901
1902 This filter supports the same commands as options, excluding option @code{order}.
1903
1904 @section anull
1905
1906 Pass the audio source unchanged to the output.
1907
1908 @section apad
1909
1910 Pad the end of an audio stream with silence.
1911
1912 This can be used together with @command{ffmpeg} @option{-shortest} to
1913 extend audio streams to the same length as the video stream.
1914
1915 A description of the accepted options follows.
1916
1917 @table @option
1918 @item packet_size
1919 Set silence packet size. Default value is 4096.
1920
1921 @item pad_len
1922 Set the number of samples of silence to add to the end. After the
1923 value is reached, the stream is terminated. This option is mutually
1924 exclusive with @option{whole_len}.
1925
1926 @item whole_len
1927 Set the minimum total number of samples in the output audio stream. If
1928 the value is longer than the input audio length, silence is added to
1929 the end, until the value is reached. This option is mutually exclusive
1930 with @option{pad_len}.
1931
1932 @item pad_dur
1933 Specify the duration of samples of silence to add. See
1934 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
1935 for the accepted syntax. Used only if set to non-zero value.
1936
1937 @item whole_dur
1938 Specify the minimum total duration in the output audio stream. See
1939 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
1940 for the accepted syntax. Used only if set to non-zero value. If the value is longer than
1941 the input audio length, silence is added to the end, until the value is reached.
1942 This option is mutually exclusive with @option{pad_dur}
1943 @end table
1944
1945 If neither the @option{pad_len} nor the @option{whole_len} nor @option{pad_dur}
1946 nor @option{whole_dur} option is set, the filter will add silence to the end of
1947 the input stream indefinitely.
1948
1949 @subsection Examples
1950
1951 @itemize
1952 @item
1953 Add 1024 samples of silence to the end of the input:
1954 @example
1955 apad=pad_len=1024
1956 @end example
1957
1958 @item
1959 Make sure the audio output will contain at least 10000 samples, pad
1960 the input with silence if required:
1961 @example
1962 apad=whole_len=10000
1963 @end example
1964
1965 @item
1966 Use @command{ffmpeg} to pad the audio input with silence, so that the
1967 video stream will always result the shortest and will be converted
1968 until the end in the output file when using the @option{shortest}
1969 option:
1970 @example
1971 ffmpeg -i VIDEO -i AUDIO -filter_complex "[1:0]apad" -shortest OUTPUT
1972 @end example
1973 @end itemize
1974
1975 @section aphaser
1976 Add a phasing effect to the input audio.
1977
1978 A phaser filter creates series of peaks and troughs in the frequency spectrum.
1979 The position of the peaks and troughs are modulated so that they vary over time, creating a sweeping effect.
1980
1981 A description of the accepted parameters follows.
1982
1983 @table @option
1984 @item in_gain
1985 Set input gain. Default is 0.4.
1986
1987 @item out_gain
1988 Set output gain. Default is 0.74
1989
1990 @item delay
1991 Set delay in milliseconds. Default is 3.0.
1992
1993 @item decay
1994 Set decay. Default is 0.4.
1995
1996 @item speed
1997 Set modulation speed in Hz. Default is 0.5.
1998
1999 @item type
2000 Set modulation type. Default is triangular.
2001
2002 It accepts the following values:
2003 @table @samp
2004 @item triangular, t
2005 @item sinusoidal, s
2006 @end table
2007 @end table
2008
2009 @section apulsator
2010
2011 Audio pulsator is something between an autopanner and a tremolo.
2012 But it can produce funny stereo effects as well. Pulsator changes the volume
2013 of the left and right channel based on a LFO (low frequency oscillator) with
2014 different waveforms and shifted phases.
2015 This filter have the ability to define an offset between left and right
2016 channel. An offset of 0 means that both LFO shapes match each other.
2017 The left and right channel are altered equally - a conventional tremolo.
2018 An offset of 50% means that the shape of the right channel is exactly shifted
2019 in phase (or moved backwards about half of the frequency) - pulsator acts as
2020 an autopanner. At 1 both curves match again. Every setting in between moves the
2021 phase shift gapless between all stages and produces some "bypassing" sounds with
2022 sine and triangle waveforms. The more you set the offset near 1 (starting from
2023 the 0.5) the faster the signal passes from the left to the right speaker.
2024
2025 The filter accepts the following options:
2026
2027 @table @option
2028 @item level_in
2029 Set input gain. By default it is 1. Range is [0.015625 - 64].
2030
2031 @item level_out
2032 Set output gain. By default it is 1. Range is [0.015625 - 64].
2033
2034 @item mode
2035 Set waveform shape the LFO will use. Can be one of: sine, triangle, square,
2036 sawup or sawdown. Default is sine.
2037
2038 @item amount
2039 Set modulation. Define how much of original signal is affected by the LFO.
2040
2041 @item offset_l
2042 Set left channel offset. Default is 0. Allowed range is [0 - 1].
2043
2044 @item offset_r
2045 Set right channel offset. Default is 0.5. Allowed range is [0 - 1].
2046
2047 @item width
2048 Set pulse width. Default is 1. Allowed range is [0 - 2].
2049
2050 @item timing
2051 Set possible timing mode. Can be one of: bpm, ms or hz. Default is hz.
2052
2053 @item bpm
2054 Set bpm. Default is 120. Allowed range is [30 - 300]. Only used if timing
2055 is set to bpm.
2056
2057 @item ms
2058 Set ms. Default is 500. Allowed range is [10 - 2000]. Only used if timing
2059 is set to ms.
2060
2061 @item hz
2062 Set frequency in Hz. Default is 2. Allowed range is [0.01 - 100]. Only used
2063 if timing is set to hz.
2064 @end table
2065
2066 @anchor{aresample}
2067 @section aresample
2068
2069 Resample the input audio to the specified parameters, using the
2070 libswresample library. If none are specified then the filter will
2071 automatically convert between its input and output.
2072
2073 This filter is also able to stretch/squeeze the audio data to make it match
2074 the timestamps or to inject silence / cut out audio to make it match the
2075 timestamps, do a combination of both or do neither.
2076
2077 The filter accepts the syntax
2078 [@var{sample_rate}:]@var{resampler_options}, where @var{sample_rate}
2079 expresses a sample rate and @var{resampler_options} is a list of
2080 @var{key}=@var{value} pairs, separated by ":". See the
2081 @ref{Resampler Options,,"Resampler Options" section in the
2082 ffmpeg-resampler(1) manual,ffmpeg-resampler}
2083 for the complete list of supported options.
2084
2085 @subsection Examples
2086
2087 @itemize
2088 @item
2089 Resample the input audio to 44100Hz:
2090 @example
2091 aresample=44100
2092 @end example
2093
2094 @item
2095 Stretch/squeeze samples to the given timestamps, with a maximum of 1000
2096 samples per second compensation:
2097 @example
2098 aresample=async=1000
2099 @end example
2100 @end itemize
2101
2102 @section areverse
2103
2104 Reverse an audio clip.
2105
2106 Warning: This filter requires memory to buffer the entire clip, so trimming
2107 is suggested.
2108
2109 @subsection Examples
2110
2111 @itemize
2112 @item
2113 Take the first 5 seconds of a clip, and reverse it.
2114 @example
2115 atrim=end=5,areverse
2116 @end example
2117 @end itemize
2118
2119 @section arnndn
2120
2121 Reduce noise from speech using Recurrent Neural Networks.
2122
2123 This filter accepts the following options:
2124
2125 @table @option
2126 @item model, m
2127 Set train model file to load. This option is always required.
2128 @end table
2129
2130 @section asetnsamples
2131
2132 Set the number of samples per each output audio frame.
2133
2134 The last output packet may contain a different number of samples, as
2135 the filter will flush all the remaining samples when the input audio
2136 signals its end.
2137
2138 The filter accepts the following options:
2139
2140 @table @option
2141
2142 @item nb_out_samples, n
2143 Set the number of frames per each output audio frame. The number is
2144 intended as the number of samples @emph{per each channel}.
2145 Default value is 1024.
2146
2147 @item pad, p
2148 If set to 1, the filter will pad the last audio frame with zeroes, so
2149 that the last frame will contain the same number of samples as the
2150 previous ones. Default value is 1.
2151 @end table
2152
2153 For example, to set the number of per-frame samples to 1234 and
2154 disable padding for the last frame, use:
2155 @example
2156 asetnsamples=n=1234:p=0
2157 @end example
2158
2159 @section asetrate
2160
2161 Set the sample rate without altering the PCM data.
2162 This will result in a change of speed and pitch.
2163
2164 The filter accepts the following options:
2165
2166 @table @option
2167 @item sample_rate, r
2168 Set the output sample rate. Default is 44100 Hz.
2169 @end table
2170
2171 @section ashowinfo
2172
2173 Show a line containing various information for each input audio frame.
2174 The input audio is not modified.
2175
2176 The shown line contains a sequence of key/value pairs of the form
2177 @var{key}:@var{value}.
2178
2179 The following values are shown in the output:
2180
2181 @table @option
2182 @item n
2183 The (sequential) number of the input frame, starting from 0.
2184
2185 @item pts
2186 The presentation timestamp of the input frame, in time base units; the time base
2187 depends on the filter input pad, and is usually 1/@var{sample_rate}.
2188
2189 @item pts_time
2190 The presentation timestamp of the input frame in seconds.
2191
2192 @item pos
2193 position of the frame in the input stream, -1 if this information in
2194 unavailable and/or meaningless (for example in case of synthetic audio)
2195
2196 @item fmt
2197 The sample format.
2198
2199 @item chlayout
2200 The channel layout.
2201
2202 @item rate
2203 The sample rate for the audio frame.
2204
2205 @item nb_samples
2206 The number of samples (per channel) in the frame.
2207
2208 @item checksum
2209 The Adler-32 checksum (printed in hexadecimal) of the audio data. For planar
2210 audio, the data is treated as if all the planes were concatenated.
2211
2212 @item plane_checksums
2213 A list of Adler-32 checksums for each data plane.
2214 @end table
2215
2216 @section asoftclip
2217 Apply audio soft clipping.
2218
2219 Soft clipping is a type of distortion effect where the amplitude of a signal is saturated
2220 along a smooth curve, rather than the abrupt shape of hard-clipping.
2221
2222 This filter accepts the following options:
2223
2224 @table @option
2225 @item type
2226 Set type of soft-clipping.
2227
2228 It accepts the following values:
2229 @table @option
2230 @item tanh
2231 @item atan
2232 @item cubic
2233 @item exp
2234 @item alg
2235 @item quintic
2236 @item sin
2237 @end table
2238
2239 @item param
2240 Set additional parameter which controls sigmoid function.
2241 @end table
2242
2243 @section asr
2244 Automatic Speech Recognition
2245
2246 This filter uses PocketSphinx for speech recognition. To enable
2247 compilation of this filter, you need to configure FFmpeg with
2248 @code{--enable-pocketsphinx}.
2249
2250 It accepts the following options:
2251
2252 @table @option
2253 @item rate
2254 Set sampling rate of input audio. Defaults is @code{16000}.
2255 This need to match speech models, otherwise one will get poor results.
2256
2257 @item hmm
2258 Set dictionary containing acoustic model files.
2259
2260 @item dict
2261 Set pronunciation dictionary.
2262
2263 @item lm
2264 Set language model file.
2265
2266 @item lmctl
2267 Set language model set.
2268
2269 @item lmname
2270 Set which language model to use.
2271
2272 @item logfn
2273 Set output for log messages.
2274 @end table
2275
2276 The filter exports recognized speech as the frame metadata @code{lavfi.asr.text}.
2277
2278 @anchor{astats}
2279 @section astats
2280
2281 Display time domain statistical information about the audio channels.
2282 Statistics are calculated and displayed for each audio channel and,
2283 where applicable, an overall figure is also given.
2284
2285 It accepts the following option:
2286 @table @option
2287 @item length
2288 Short window length in seconds, used for peak and trough RMS measurement.
2289 Default is @code{0.05} (50 milliseconds). Allowed range is @code{[0.01 - 10]}.
2290
2291 @item metadata
2292
2293 Set metadata injection. All the metadata keys are prefixed with @code{lavfi.astats.X},
2294 where @code{X} is channel number starting from 1 or string @code{Overall}. Default is
2295 disabled.
2296
2297 Available keys for each channel are:
2298 DC_offset
2299 Min_level
2300 Max_level
2301 Min_difference
2302 Max_difference
2303 Mean_difference
2304 RMS_difference
2305 Peak_level
2306 RMS_peak
2307 RMS_trough
2308 Crest_factor
2309 Flat_factor
2310 Peak_count
2311 Bit_depth
2312 Dynamic_range
2313 Zero_crossings
2314 Zero_crossings_rate
2315 Number_of_NaNs
2316 Number_of_Infs
2317 Number_of_denormals
2318
2319 and for Overall:
2320 DC_offset
2321 Min_level
2322 Max_level
2323 Min_difference
2324 Max_difference
2325 Mean_difference
2326 RMS_difference
2327 Peak_level
2328 RMS_level
2329 RMS_peak
2330 RMS_trough
2331 Flat_factor
2332 Peak_count
2333 Bit_depth
2334 Number_of_samples
2335 Number_of_NaNs
2336 Number_of_Infs
2337 Number_of_denormals
2338
2339 For example full key look like this @code{lavfi.astats.1.DC_offset} or
2340 this @code{lavfi.astats.Overall.Peak_count}.
2341
2342 For description what each key means read below.
2343
2344 @item reset
2345 Set number of frame after which stats are going to be recalculated.
2346 Default is disabled.
2347
2348 @item measure_perchannel
2349 Select the entries which need to be measured per channel. The metadata keys can
2350 be used as flags, default is @option{all} which measures everything.
2351 @option{none} disables all per channel measurement.
2352
2353 @item measure_overall
2354 Select the entries which need to be measured overall. The metadata keys can
2355 be used as flags, default is @option{all} which measures everything.
2356 @option{none} disables all overall measurement.
2357
2358 @end table
2359
2360 A description of each shown parameter follows:
2361
2362 @table @option
2363 @item DC offset
2364 Mean amplitude displacement from zero.
2365
2366 @item Min level
2367 Minimal sample level.
2368
2369 @item Max level
2370 Maximal sample level.
2371
2372 @item Min difference
2373 Minimal difference between two consecutive samples.
2374
2375 @item Max difference
2376 Maximal difference between two consecutive samples.
2377
2378 @item Mean difference
2379 Mean difference between two consecutive samples.
2380 The average of each difference between two consecutive samples.
2381
2382 @item RMS difference
2383 Root Mean Square difference between two consecutive samples.
2384
2385 @item Peak level dB
2386 @item RMS level dB
2387 Standard peak and RMS level measured in dBFS.
2388
2389 @item RMS peak dB
2390 @item RMS trough dB
2391 Peak and trough values for RMS level measured over a short window.
2392
2393 @item Crest factor
2394 Standard ratio of peak to RMS level (note: not in dB).
2395
2396 @item Flat factor
2397 Flatness (i.e. consecutive samples with the same value) of the signal at its peak levels
2398 (i.e. either @var{Min level} or @var{Max level}).
2399
2400 @item Peak count
2401 Number of occasions (not the number of samples) that the signal attained either
2402 @var{Min level} or @var{Max level}.
2403
2404 @item Bit depth
2405 Overall bit depth of audio. Number of bits used for each sample.
2406
2407 @item Dynamic range
2408 Measured dynamic range of audio in dB.
2409
2410 @item Zero crossings
2411 Number of points where the waveform crosses the zero level axis.
2412
2413 @item Zero crossings rate
2414 Rate of Zero crossings and number of audio samples.
2415 @end table
2416
2417 @section atempo
2418
2419 Adjust audio tempo.
2420
2421 The filter accepts exactly one parameter, the audio tempo. If not
2422 specified then the filter will assume nominal 1.0 tempo. Tempo must
2423 be in the [0.5, 100.0] range.
2424
2425 Note that tempo greater than 2 will skip some samples rather than
2426 blend them in.  If for any reason this is a concern it is always
2427 possible to daisy-chain several instances of atempo to achieve the
2428 desired product tempo.
2429
2430 @subsection Examples
2431
2432 @itemize
2433 @item
2434 Slow down audio to 80% tempo:
2435 @example
2436 atempo=0.8
2437 @end example
2438
2439 @item
2440 To speed up audio to 300% tempo:
2441 @example
2442 atempo=3
2443 @end example
2444
2445 @item
2446 To speed up audio to 300% tempo by daisy-chaining two atempo instances:
2447 @example
2448 atempo=sqrt(3),atempo=sqrt(3)
2449 @end example
2450 @end itemize
2451
2452 @subsection Commands
2453
2454 This filter supports the following commands:
2455 @table @option
2456 @item tempo
2457 Change filter tempo scale factor.
2458 Syntax for the command is : "@var{tempo}"
2459 @end table
2460
2461 @section atrim
2462
2463 Trim the input so that the output contains one continuous subpart of the input.
2464
2465 It accepts the following parameters:
2466 @table @option
2467 @item start
2468 Timestamp (in seconds) of the start of the section to keep. I.e. the audio
2469 sample with the timestamp @var{start} will be the first sample in the output.
2470
2471 @item end
2472 Specify time of the first audio sample that will be dropped, i.e. the
2473 audio sample immediately preceding the one with the timestamp @var{end} will be
2474 the last sample in the output.
2475
2476 @item start_pts
2477 Same as @var{start}, except this option sets the start timestamp in samples
2478 instead of seconds.
2479
2480 @item end_pts
2481 Same as @var{end}, except this option sets the end timestamp in samples instead
2482 of seconds.
2483
2484 @item duration
2485 The maximum duration of the output in seconds.
2486
2487 @item start_sample
2488 The number of the first sample that should be output.
2489
2490 @item end_sample
2491 The number of the first sample that should be dropped.
2492 @end table
2493
2494 @option{start}, @option{end}, and @option{duration} are expressed as time
2495 duration specifications; see
2496 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}.
2497
2498 Note that the first two sets of the start/end options and the @option{duration}
2499 option look at the frame timestamp, while the _sample options simply count the
2500 samples that pass through the filter. So start/end_pts and start/end_sample will
2501 give different results when the timestamps are wrong, inexact or do not start at
2502 zero. Also note that this filter does not modify the timestamps. If you wish
2503 to have the output timestamps start at zero, insert the asetpts filter after the
2504 atrim filter.
2505
2506 If multiple start or end options are set, this filter tries to be greedy and
2507 keep all samples that match at least one of the specified constraints. To keep
2508 only the part that matches all the constraints at once, chain multiple atrim
2509 filters.
2510
2511 The defaults are such that all the input is kept. So it is possible to set e.g.
2512 just the end values to keep everything before the specified time.
2513
2514 Examples:
2515 @itemize
2516 @item
2517 Drop everything except the second minute of input:
2518 @example
2519 ffmpeg -i INPUT -af atrim=60:120
2520 @end example
2521
2522 @item
2523 Keep only the first 1000 samples:
2524 @example
2525 ffmpeg -i INPUT -af atrim=end_sample=1000
2526 @end example
2527
2528 @end itemize
2529
2530 @section bandpass
2531
2532 Apply a two-pole Butterworth band-pass filter with central
2533 frequency @var{frequency}, and (3dB-point) band-width width.
2534 The @var{csg} option selects a constant skirt gain (peak gain = Q)
2535 instead of the default: constant 0dB peak gain.
2536 The filter roll off at 6dB per octave (20dB per decade).
2537
2538 The filter accepts the following options:
2539
2540 @table @option
2541 @item frequency, f
2542 Set the filter's central frequency. Default is @code{3000}.
2543
2544 @item csg
2545 Constant skirt gain if set to 1. Defaults to 0.
2546
2547 @item width_type, t
2548 Set method to specify band-width of filter.
2549 @table @option
2550 @item h
2551 Hz
2552 @item q
2553 Q-Factor
2554 @item o
2555 octave
2556 @item s
2557 slope
2558 @item k
2559 kHz
2560 @end table
2561
2562 @item width, w
2563 Specify the band-width of a filter in width_type units.
2564
2565 @item mix, m
2566 How much to use filtered signal in output. Default is 1.
2567 Range is between 0 and 1.
2568
2569 @item channels, c
2570 Specify which channels to filter, by default all available are filtered.
2571 @end table
2572
2573 @subsection Commands
2574
2575 This filter supports the following commands:
2576 @table @option
2577 @item frequency, f
2578 Change bandpass frequency.
2579 Syntax for the command is : "@var{frequency}"
2580
2581 @item width_type, t
2582 Change bandpass width_type.
2583 Syntax for the command is : "@var{width_type}"
2584
2585 @item width, w
2586 Change bandpass width.
2587 Syntax for the command is : "@var{width}"
2588
2589 @item mix, m
2590 Change bandpass mix.
2591 Syntax for the command is : "@var{mix}"
2592 @end table
2593
2594 @section bandreject
2595
2596 Apply a two-pole Butterworth band-reject filter with central
2597 frequency @var{frequency}, and (3dB-point) band-width @var{width}.
2598 The filter roll off at 6dB per octave (20dB per decade).
2599
2600 The filter accepts the following options:
2601
2602 @table @option
2603 @item frequency, f
2604 Set the filter's central frequency. Default is @code{3000}.
2605
2606 @item width_type, t
2607 Set method to specify band-width of filter.
2608 @table @option
2609 @item h
2610 Hz
2611 @item q
2612 Q-Factor
2613 @item o
2614 octave
2615 @item s
2616 slope
2617 @item k
2618 kHz
2619 @end table
2620
2621 @item width, w
2622 Specify the band-width of a filter in width_type units.
2623
2624 @item mix, m
2625 How much to use filtered signal in output. Default is 1.
2626 Range is between 0 and 1.
2627
2628 @item channels, c
2629 Specify which channels to filter, by default all available are filtered.
2630 @end table
2631
2632 @subsection Commands
2633
2634 This filter supports the following commands:
2635 @table @option
2636 @item frequency, f
2637 Change bandreject frequency.
2638 Syntax for the command is : "@var{frequency}"
2639
2640 @item width_type, t
2641 Change bandreject width_type.
2642 Syntax for the command is : "@var{width_type}"
2643
2644 @item width, w
2645 Change bandreject width.
2646 Syntax for the command is : "@var{width}"
2647
2648 @item mix, m
2649 Change bandreject mix.
2650 Syntax for the command is : "@var{mix}"
2651 @end table
2652
2653 @section bass, lowshelf
2654
2655 Boost or cut the bass (lower) frequencies of the audio using a two-pole
2656 shelving filter with a response similar to that of a standard
2657 hi-fi's tone-controls. This is also known as shelving equalisation (EQ).
2658
2659 The filter accepts the following options:
2660
2661 @table @option
2662 @item gain, g
2663 Give the gain at 0 Hz. Its useful range is about -20
2664 (for a large cut) to +20 (for a large boost).
2665 Beware of clipping when using a positive gain.
2666
2667 @item frequency, f
2668 Set the filter's central frequency and so can be used
2669 to extend or reduce the frequency range to be boosted or cut.
2670 The default value is @code{100} Hz.
2671
2672 @item width_type, t
2673 Set method to specify band-width of filter.
2674 @table @option
2675 @item h
2676 Hz
2677 @item q
2678 Q-Factor
2679 @item o
2680 octave
2681 @item s
2682 slope
2683 @item k
2684 kHz
2685 @end table
2686
2687 @item width, w
2688 Determine how steep is the filter's shelf transition.
2689
2690 @item mix, m
2691 How much to use filtered signal in output. Default is 1.
2692 Range is between 0 and 1.
2693
2694 @item channels, c
2695 Specify which channels to filter, by default all available are filtered.
2696 @end table
2697
2698 @subsection Commands
2699
2700 This filter supports the following commands:
2701 @table @option
2702 @item frequency, f
2703 Change bass frequency.
2704 Syntax for the command is : "@var{frequency}"
2705
2706 @item width_type, t
2707 Change bass width_type.
2708 Syntax for the command is : "@var{width_type}"
2709
2710 @item width, w
2711 Change bass width.
2712 Syntax for the command is : "@var{width}"
2713
2714 @item gain, g
2715 Change bass gain.
2716 Syntax for the command is : "@var{gain}"
2717
2718 @item mix, m
2719 Change bass mix.
2720 Syntax for the command is : "@var{mix}"
2721 @end table
2722
2723 @section biquad
2724
2725 Apply a biquad IIR filter with the given coefficients.
2726 Where @var{b0}, @var{b1}, @var{b2} and @var{a0}, @var{a1}, @var{a2}
2727 are the numerator and denominator coefficients respectively.
2728 and @var{channels}, @var{c} specify which channels to filter, by default all
2729 available are filtered.
2730
2731 @subsection Commands
2732
2733 This filter supports the following commands:
2734 @table @option
2735 @item a0
2736 @item a1
2737 @item a2
2738 @item b0
2739 @item b1
2740 @item b2
2741 Change biquad parameter.
2742 Syntax for the command is : "@var{value}"
2743
2744 @item mix, m
2745 How much to use filtered signal in output. Default is 1.
2746 Range is between 0 and 1.
2747 @end table
2748
2749 @section bs2b
2750 Bauer stereo to binaural transformation, which improves headphone listening of
2751 stereo audio records.
2752
2753 To enable compilation of this filter you need to configure FFmpeg with
2754 @code{--enable-libbs2b}.
2755
2756 It accepts the following parameters:
2757 @table @option
2758
2759 @item profile
2760 Pre-defined crossfeed level.
2761 @table @option
2762
2763 @item default
2764 Default level (fcut=700, feed=50).
2765
2766 @item cmoy
2767 Chu Moy circuit (fcut=700, feed=60).
2768
2769 @item jmeier
2770 Jan Meier circuit (fcut=650, feed=95).
2771
2772 @end table
2773
2774 @item fcut
2775 Cut frequency (in Hz).
2776
2777 @item feed
2778 Feed level (in Hz).
2779
2780 @end table
2781
2782 @section channelmap
2783
2784 Remap input channels to new locations.
2785
2786 It accepts the following parameters:
2787 @table @option
2788 @item map
2789 Map channels from input to output. The argument is a '|'-separated list of
2790 mappings, each in the @code{@var{in_channel}-@var{out_channel}} or
2791 @var{in_channel} form. @var{in_channel} can be either the name of the input
2792 channel (e.g. FL for front left) or its index in the input channel layout.
2793 @var{out_channel} is the name of the output channel or its index in the output
2794 channel layout. If @var{out_channel} is not given then it is implicitly an
2795 index, starting with zero and increasing by one for each mapping.
2796
2797 @item channel_layout
2798 The channel layout of the output stream.
2799 @end table
2800
2801 If no mapping is present, the filter will implicitly map input channels to
2802 output channels, preserving indices.
2803
2804 @subsection Examples
2805
2806 @itemize
2807 @item
2808 For example, assuming a 5.1+downmix input MOV file,
2809 @example
2810 ffmpeg -i in.mov -filter 'channelmap=map=DL-FL|DR-FR' out.wav
2811 @end example
2812 will create an output WAV file tagged as stereo from the downmix channels of
2813 the input.
2814
2815 @item
2816 To fix a 5.1 WAV improperly encoded in AAC's native channel order
2817 @example
2818 ffmpeg -i in.wav -filter 'channelmap=1|2|0|5|3|4:5.1' out.wav
2819 @end example
2820 @end itemize
2821
2822 @section channelsplit
2823
2824 Split each channel from an input audio stream into a separate output stream.
2825
2826 It accepts the following parameters:
2827 @table @option
2828 @item channel_layout
2829 The channel layout of the input stream. The default is "stereo".
2830 @item channels
2831 A channel layout describing the channels to be extracted as separate output streams
2832 or "all" to extract each input channel as a separate stream. The default is "all".
2833
2834 Choosing channels not present in channel layout in the input will result in an error.
2835 @end table
2836
2837 @subsection Examples
2838
2839 @itemize
2840 @item
2841 For example, assuming a stereo input MP3 file,
2842 @example
2843 ffmpeg -i in.mp3 -filter_complex channelsplit out.mkv
2844 @end example
2845 will create an output Matroska file with two audio streams, one containing only
2846 the left channel and the other the right channel.
2847
2848 @item
2849 Split a 5.1 WAV file into per-channel files:
2850 @example
2851 ffmpeg -i in.wav -filter_complex
2852 'channelsplit=channel_layout=5.1[FL][FR][FC][LFE][SL][SR]'
2853 -map '[FL]' front_left.wav -map '[FR]' front_right.wav -map '[FC]'
2854 front_center.wav -map '[LFE]' lfe.wav -map '[SL]' side_left.wav -map '[SR]'
2855 side_right.wav
2856 @end example
2857
2858 @item
2859 Extract only LFE from a 5.1 WAV file:
2860 @example
2861 ffmpeg -i in.wav -filter_complex 'channelsplit=channel_layout=5.1:channels=LFE[LFE]'
2862 -map '[LFE]' lfe.wav
2863 @end example
2864 @end itemize
2865
2866 @section chorus
2867 Add a chorus effect to the audio.
2868
2869 Can make a single vocal sound like a chorus, but can also be applied to instrumentation.
2870
2871 Chorus resembles an echo effect with a short delay, but whereas with echo the delay is
2872 constant, with chorus, it is varied using using sinusoidal or triangular modulation.
2873 The modulation depth defines the range the modulated delay is played before or after
2874 the delay. Hence the delayed sound will sound slower or faster, that is the delayed
2875 sound tuned around the original one, like in a chorus where some vocals are slightly
2876 off key.
2877
2878 It accepts the following parameters:
2879 @table @option
2880 @item in_gain
2881 Set input gain. Default is 0.4.
2882
2883 @item out_gain
2884 Set output gain. Default is 0.4.
2885
2886 @item delays
2887 Set delays. A typical delay is around 40ms to 60ms.
2888
2889 @item decays
2890 Set decays.
2891
2892 @item speeds
2893 Set speeds.
2894
2895 @item depths
2896 Set depths.
2897 @end table
2898
2899 @subsection Examples
2900
2901 @itemize
2902 @item
2903 A single delay:
2904 @example
2905 chorus=0.7:0.9:55:0.4:0.25:2
2906 @end example
2907
2908 @item
2909 Two delays:
2910 @example
2911 chorus=0.6:0.9:50|60:0.4|0.32:0.25|0.4:2|1.3
2912 @end example
2913
2914 @item
2915 Fuller sounding chorus with three delays:
2916 @example
2917 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
2918 @end example
2919 @end itemize
2920
2921 @section compand
2922 Compress or expand the audio's dynamic range.
2923
2924 It accepts the following parameters:
2925
2926 @table @option
2927
2928 @item attacks
2929 @item decays
2930 A list of times in seconds for each channel over which the instantaneous level
2931 of the input signal is averaged to determine its volume. @var{attacks} refers to
2932 increase of volume and @var{decays} refers to decrease of volume. For most
2933 situations, the attack time (response to the audio getting louder) should be
2934 shorter than the decay time, because the human ear is more sensitive to sudden
2935 loud audio than sudden soft audio. A typical value for attack is 0.3 seconds and
2936 a typical value for decay is 0.8 seconds.
2937 If specified number of attacks & decays is lower than number of channels, the last
2938 set attack/decay will be used for all remaining channels.
2939
2940 @item points
2941 A list of points for the transfer function, specified in dB relative to the
2942 maximum possible signal amplitude. Each key points list must be defined using
2943 the following syntax: @code{x0/y0|x1/y1|x2/y2|....} or
2944 @code{x0/y0 x1/y1 x2/y2 ....}
2945
2946 The input values must be in strictly increasing order but the transfer function
2947 does not have to be monotonically rising. The point @code{0/0} is assumed but
2948 may be overridden (by @code{0/out-dBn}). Typical values for the transfer
2949 function are @code{-70/-70|-60/-20|1/0}.
2950
2951 @item soft-knee
2952 Set the curve radius in dB for all joints. It defaults to 0.01.
2953
2954 @item gain
2955 Set the additional gain in dB to be applied at all points on the transfer
2956 function. This allows for easy adjustment of the overall gain.
2957 It defaults to 0.
2958
2959 @item volume
2960 Set an initial volume, in dB, to be assumed for each channel when filtering
2961 starts. This permits the user to supply a nominal level initially, so that, for
2962 example, a very large gain is not applied to initial signal levels before the
2963 companding has begun to operate. A typical value for audio which is initially
2964 quiet is -90 dB. It defaults to 0.
2965
2966 @item delay
2967 Set a delay, in seconds. The input audio is analyzed immediately, but audio is
2968 delayed before being fed to the volume adjuster. Specifying a delay
2969 approximately equal to the attack/decay times allows the filter to effectively
2970 operate in predictive rather than reactive mode. It defaults to 0.
2971
2972 @end table
2973
2974 @subsection Examples
2975
2976 @itemize
2977 @item
2978 Make music with both quiet and loud passages suitable for listening to in a
2979 noisy environment:
2980 @example
2981 compand=.3|.3:1|1:-90/-60|-60/-40|-40/-30|-20/-20:6:0:-90:0.2
2982 @end example
2983
2984 Another example for audio with whisper and explosion parts:
2985 @example
2986 compand=0|0:1|1:-90/-900|-70/-70|-30/-9|0/-3:6:0:0:0
2987 @end example
2988
2989 @item
2990 A noise gate for when the noise is at a lower level than the signal:
2991 @example
2992 compand=.1|.1:.2|.2:-900/-900|-50.1/-900|-50/-50:.01:0:-90:.1
2993 @end example
2994
2995 @item
2996 Here is another noise gate, this time for when the noise is at a higher level
2997 than the signal (making it, in some ways, similar to squelch):
2998 @example
2999 compand=.1|.1:.1|.1:-45.1/-45.1|-45/-900|0/-900:.01:45:-90:.1
3000 @end example
3001
3002 @item
3003 2:1 compression starting at -6dB:
3004 @example
3005 compand=points=-80/-80|-6/-6|0/-3.8|20/3.5
3006 @end example
3007
3008 @item
3009 2:1 compression starting at -9dB:
3010 @example
3011 compand=points=-80/-80|-9/-9|0/-5.3|20/2.9
3012 @end example
3013
3014 @item
3015 2:1 compression starting at -12dB:
3016 @example
3017 compand=points=-80/-80|-12/-12|0/-6.8|20/1.9
3018 @end example
3019
3020 @item
3021 2:1 compression starting at -18dB:
3022 @example
3023 compand=points=-80/-80|-18/-18|0/-9.8|20/0.7
3024 @end example
3025
3026 @item
3027 3:1 compression starting at -15dB:
3028 @example
3029 compand=points=-80/-80|-15/-15|0/-10.8|20/-5.2
3030 @end example
3031
3032 @item
3033 Compressor/Gate:
3034 @example
3035 compand=points=-80/-105|-62/-80|-15.4/-15.4|0/-12|20/-7.6
3036 @end example
3037
3038 @item
3039 Expander:
3040 @example
3041 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
3042 @end example
3043
3044 @item
3045 Hard limiter at -6dB:
3046 @example
3047 compand=attacks=0:points=-80/-80|-6/-6|20/-6
3048 @end example
3049
3050 @item
3051 Hard limiter at -12dB:
3052 @example
3053 compand=attacks=0:points=-80/-80|-12/-12|20/-12
3054 @end example
3055
3056 @item
3057 Hard noise gate at -35 dB:
3058 @example
3059 compand=attacks=0:points=-80/-115|-35.1/-80|-35/-35|20/20
3060 @end example
3061
3062 @item
3063 Soft limiter:
3064 @example
3065 compand=attacks=0:points=-80/-80|-12.4/-12.4|-6/-8|0/-6.8|20/-2.8
3066 @end example
3067 @end itemize
3068
3069 @section compensationdelay
3070
3071 Compensation Delay Line is a metric based delay to compensate differing
3072 positions of microphones or speakers.
3073
3074 For example, you have recorded guitar with two microphones placed in
3075 different locations. Because the front of sound wave has fixed speed in
3076 normal conditions, the phasing of microphones can vary and depends on
3077 their location and interposition. The best sound mix can be achieved when
3078 these microphones are in phase (synchronized). Note that a distance of
3079 ~30 cm between microphones makes one microphone capture the signal in
3080 antiphase to the other microphone. That makes the final mix sound moody.
3081 This filter helps to solve phasing problems by adding different delays
3082 to each microphone track and make them synchronized.
3083
3084 The best result can be reached when you take one track as base and
3085 synchronize other tracks one by one with it.
3086 Remember that synchronization/delay tolerance depends on sample rate, too.
3087 Higher sample rates will give more tolerance.
3088
3089 The filter accepts the following parameters:
3090
3091 @table @option
3092 @item mm
3093 Set millimeters distance. This is compensation distance for fine tuning.
3094 Default is 0.
3095
3096 @item cm
3097 Set cm distance. This is compensation distance for tightening distance setup.
3098 Default is 0.
3099
3100 @item m
3101 Set meters distance. This is compensation distance for hard distance setup.
3102 Default is 0.
3103
3104 @item dry
3105 Set dry amount. Amount of unprocessed (dry) signal.
3106 Default is 0.
3107
3108 @item wet
3109 Set wet amount. Amount of processed (wet) signal.
3110 Default is 1.
3111
3112 @item temp
3113 Set temperature in degrees Celsius. This is the temperature of the environment.
3114 Default is 20.
3115 @end table
3116
3117 @section crossfeed
3118 Apply headphone crossfeed filter.
3119
3120 Crossfeed is the process of blending the left and right channels of stereo
3121 audio recording.
3122 It is mainly used to reduce extreme stereo separation of low frequencies.
3123
3124 The intent is to produce more speaker like sound to the listener.
3125
3126 The filter accepts the following options:
3127
3128 @table @option
3129 @item strength
3130 Set strength of crossfeed. Default is 0.2. Allowed range is from 0 to 1.
3131 This sets gain of low shelf filter for side part of stereo image.
3132 Default is -6dB. Max allowed is -30db when strength is set to 1.
3133
3134 @item range
3135 Set soundstage wideness. Default is 0.5. Allowed range is from 0 to 1.
3136 This sets cut off frequency of low shelf filter. Default is cut off near
3137 1550 Hz. With range set to 1 cut off frequency is set to 2100 Hz.
3138
3139 @item level_in
3140 Set input gain. Default is 0.9.
3141
3142 @item level_out
3143 Set output gain. Default is 1.
3144 @end table
3145
3146 @section crystalizer
3147 Simple algorithm to expand audio dynamic range.
3148
3149 The filter accepts the following options:
3150
3151 @table @option
3152 @item i
3153 Sets the intensity of effect (default: 2.0). Must be in range between 0.0
3154 (unchanged sound) to 10.0 (maximum effect).
3155
3156 @item c
3157 Enable clipping. By default is enabled.
3158 @end table
3159
3160 @section dcshift
3161 Apply a DC shift to the audio.
3162
3163 This can be useful to remove a DC offset (caused perhaps by a hardware problem
3164 in the recording chain) from the audio. The effect of a DC offset is reduced
3165 headroom and hence volume. The @ref{astats} filter can be used to determine if
3166 a signal has a DC offset.
3167
3168 @table @option
3169 @item shift
3170 Set the DC shift, allowed range is [-1, 1]. It indicates the amount to shift
3171 the audio.
3172
3173 @item limitergain
3174 Optional. It should have a value much less than 1 (e.g. 0.05 or 0.02) and is
3175 used to prevent clipping.
3176 @end table
3177
3178 @section deesser
3179
3180 Apply de-essing to the audio samples.
3181
3182 @table @option
3183 @item i
3184 Set intensity for triggering de-essing. Allowed range is from 0 to 1.
3185 Default is 0.
3186
3187 @item m
3188 Set amount of ducking on treble part of sound. Allowed range is from 0 to 1.
3189 Default is 0.5.
3190
3191 @item f
3192 How much of original frequency content to keep when de-essing. Allowed range is from 0 to 1.
3193 Default is 0.5.
3194
3195 @item s
3196 Set the output mode.
3197
3198 It accepts the following values:
3199 @table @option
3200 @item i
3201 Pass input unchanged.
3202
3203 @item o
3204 Pass ess filtered out.
3205
3206 @item e
3207 Pass only ess.
3208
3209 Default value is @var{o}.
3210 @end table
3211
3212 @end table
3213
3214 @section drmeter
3215 Measure audio dynamic range.
3216
3217 DR values of 14 and higher is found in very dynamic material. DR of 8 to 13
3218 is found in transition material. And anything less that 8 have very poor dynamics
3219 and is very compressed.
3220
3221 The filter accepts the following options:
3222
3223 @table @option
3224 @item length
3225 Set window length in seconds used to split audio into segments of equal length.
3226 Default is 3 seconds.
3227 @end table
3228
3229 @section dynaudnorm
3230 Dynamic Audio Normalizer.
3231
3232 This filter applies a certain amount of gain to the input audio in order
3233 to bring its peak magnitude to a target level (e.g. 0 dBFS). However, in
3234 contrast to more "simple" normalization algorithms, the Dynamic Audio
3235 Normalizer *dynamically* re-adjusts the gain factor to the input audio.
3236 This allows for applying extra gain to the "quiet" sections of the audio
3237 while avoiding distortions or clipping the "loud" sections. In other words:
3238 The Dynamic Audio Normalizer will "even out" the volume of quiet and loud
3239 sections, in the sense that the volume of each section is brought to the
3240 same target level. Note, however, that the Dynamic Audio Normalizer achieves
3241 this goal *without* applying "dynamic range compressing". It will retain 100%
3242 of the dynamic range *within* each section of the audio file.
3243
3244 @table @option
3245 @item framelen, f
3246 Set the frame length in milliseconds. In range from 10 to 8000 milliseconds.
3247 Default is 500 milliseconds.
3248 The Dynamic Audio Normalizer processes the input audio in small chunks,
3249 referred to as frames. This is required, because a peak magnitude has no
3250 meaning for just a single sample value. Instead, we need to determine the
3251 peak magnitude for a contiguous sequence of sample values. While a "standard"
3252 normalizer would simply use the peak magnitude of the complete file, the
3253 Dynamic Audio Normalizer determines the peak magnitude individually for each
3254 frame. The length of a frame is specified in milliseconds. By default, the
3255 Dynamic Audio Normalizer uses a frame length of 500 milliseconds, which has
3256 been found to give good results with most files.
3257 Note that the exact frame length, in number of samples, will be determined
3258 automatically, based on the sampling rate of the individual input audio file.
3259
3260 @item gausssize, g
3261 Set the Gaussian filter window size. In range from 3 to 301, must be odd
3262 number. Default is 31.
3263 Probably the most important parameter of the Dynamic Audio Normalizer is the
3264 @code{window size} of the Gaussian smoothing filter. The filter's window size
3265 is specified in frames, centered around the current frame. For the sake of
3266 simplicity, this must be an odd number. Consequently, the default value of 31
3267 takes into account the current frame, as well as the 15 preceding frames and
3268 the 15 subsequent frames. Using a larger window results in a stronger
3269 smoothing effect and thus in less gain variation, i.e. slower gain
3270 adaptation. Conversely, using a smaller window results in a weaker smoothing
3271 effect and thus in more gain variation, i.e. faster gain adaptation.
3272 In other words, the more you increase this value, the more the Dynamic Audio
3273 Normalizer will behave like a "traditional" normalization filter. On the
3274 contrary, the more you decrease this value, the more the Dynamic Audio
3275 Normalizer will behave like a dynamic range compressor.
3276
3277 @item peak, p
3278 Set the target peak value. This specifies the highest permissible magnitude
3279 level for the normalized audio input. This filter will try to approach the
3280 target peak magnitude as closely as possible, but at the same time it also
3281 makes sure that the normalized signal will never exceed the peak magnitude.
3282 A frame's maximum local gain factor is imposed directly by the target peak
3283 magnitude. The default value is 0.95 and thus leaves a headroom of 5%*.
3284 It is not recommended to go above this value.
3285
3286 @item maxgain, m
3287 Set the maximum gain factor. In range from 1.0 to 100.0. Default is 10.0.
3288 The Dynamic Audio Normalizer determines the maximum possible (local) gain
3289 factor for each input frame, i.e. the maximum gain factor that does not
3290 result in clipping or distortion. The maximum gain factor is determined by
3291 the frame's highest magnitude sample. However, the Dynamic Audio Normalizer
3292 additionally bounds the frame's maximum gain factor by a predetermined
3293 (global) maximum gain factor. This is done in order to avoid excessive gain
3294 factors in "silent" or almost silent frames. By default, the maximum gain
3295 factor is 10.0, For most inputs the default value should be sufficient and
3296 it usually is not recommended to increase this value. Though, for input
3297 with an extremely low overall volume level, it may be necessary to allow even
3298 higher gain factors. Note, however, that the Dynamic Audio Normalizer does
3299 not simply apply a "hard" threshold (i.e. cut off values above the threshold).
3300 Instead, a "sigmoid" threshold function will be applied. This way, the
3301 gain factors will smoothly approach the threshold value, but never exceed that
3302 value.
3303
3304 @item targetrms, r
3305 Set the target RMS. In range from 0.0 to 1.0. Default is 0.0 - disabled.
3306 By default, the Dynamic Audio Normalizer performs "peak" normalization.
3307 This means that the maximum local gain factor for each frame is defined
3308 (only) by the frame's highest magnitude sample. This way, the samples can
3309 be amplified as much as possible without exceeding the maximum signal
3310 level, i.e. without clipping. Optionally, however, the Dynamic Audio
3311 Normalizer can also take into account the frame's root mean square,
3312 abbreviated RMS. In electrical engineering, the RMS is commonly used to
3313 determine the power of a time-varying signal. It is therefore considered
3314 that the RMS is a better approximation of the "perceived loudness" than
3315 just looking at the signal's peak magnitude. Consequently, by adjusting all
3316 frames to a constant RMS value, a uniform "perceived loudness" can be
3317 established. If a target RMS value has been specified, a frame's local gain
3318 factor is defined as the factor that would result in exactly that RMS value.
3319 Note, however, that the maximum local gain factor is still restricted by the
3320 frame's highest magnitude sample, in order to prevent clipping.
3321
3322 @item coupling, n
3323 Enable channels coupling. By default is enabled.
3324 By default, the Dynamic Audio Normalizer will amplify all channels by the same
3325 amount. This means the same gain factor will be applied to all channels, i.e.
3326 the maximum possible gain factor is determined by the "loudest" channel.
3327 However, in some recordings, it may happen that the volume of the different
3328 channels is uneven, e.g. one channel may be "quieter" than the other one(s).
3329 In this case, this option can be used to disable the channel coupling. This way,
3330 the gain factor will be determined independently for each channel, depending
3331 only on the individual channel's highest magnitude sample. This allows for
3332 harmonizing the volume of the different channels.
3333
3334 @item correctdc, c
3335 Enable DC bias correction. By default is disabled.
3336 An audio signal (in the time domain) is a sequence of sample values.
3337 In the Dynamic Audio Normalizer these sample values are represented in the
3338 -1.0 to 1.0 range, regardless of the original input format. Normally, the
3339 audio signal, or "waveform", should be centered around the zero point.
3340 That means if we calculate the mean value of all samples in a file, or in a
3341 single frame, then the result should be 0.0 or at least very close to that
3342 value. If, however, there is a significant deviation of the mean value from
3343 0.0, in either positive or negative direction, this is referred to as a
3344 DC bias or DC offset. Since a DC bias is clearly undesirable, the Dynamic
3345 Audio Normalizer provides optional DC bias correction.
3346 With DC bias correction enabled, the Dynamic Audio Normalizer will determine
3347 the mean value, or "DC correction" offset, of each input frame and subtract
3348 that value from all of the frame's sample values which ensures those samples
3349 are centered around 0.0 again. Also, in order to avoid "gaps" at the frame
3350 boundaries, the DC correction offset values will be interpolated smoothly
3351 between neighbouring frames.
3352
3353 @item altboundary, b
3354 Enable alternative boundary mode. By default is disabled.
3355 The Dynamic Audio Normalizer takes into account a certain neighbourhood
3356 around each frame. This includes the preceding frames as well as the
3357 subsequent frames. However, for the "boundary" frames, located at the very
3358 beginning and at the very end of the audio file, not all neighbouring
3359 frames are available. In particular, for the first few frames in the audio
3360 file, the preceding frames are not known. And, similarly, for the last few
3361 frames in the audio file, the subsequent frames are not known. Thus, the
3362 question arises which gain factors should be assumed for the missing frames
3363 in the "boundary" region. The Dynamic Audio Normalizer implements two modes
3364 to deal with this situation. The default boundary mode assumes a gain factor
3365 of exactly 1.0 for the missing frames, resulting in a smooth "fade in" and
3366 "fade out" at the beginning and at the end of the input, respectively.
3367
3368 @item compress, s
3369 Set the compress factor. In range from 0.0 to 30.0. Default is 0.0.
3370 By default, the Dynamic Audio Normalizer does not apply "traditional"
3371 compression. This means that signal peaks will not be pruned and thus the
3372 full dynamic range will be retained within each local neighbourhood. However,
3373 in some cases it may be desirable to combine the Dynamic Audio Normalizer's
3374 normalization algorithm with a more "traditional" compression.
3375 For this purpose, the Dynamic Audio Normalizer provides an optional compression
3376 (thresholding) function. If (and only if) the compression feature is enabled,
3377 all input frames will be processed by a soft knee thresholding function prior
3378 to the actual normalization process. Put simply, the thresholding function is
3379 going to prune all samples whose magnitude exceeds a certain threshold value.
3380 However, the Dynamic Audio Normalizer does not simply apply a fixed threshold
3381 value. Instead, the threshold value will be adjusted for each individual
3382 frame.
3383 In general, smaller parameters result in stronger compression, and vice versa.
3384 Values below 3.0 are not recommended, because audible distortion may appear.
3385 @end table
3386
3387 @section earwax
3388
3389 Make audio easier to listen to on headphones.
3390
3391 This filter adds `cues' to 44.1kHz stereo (i.e. audio CD format) audio
3392 so that when listened to on headphones the stereo image is moved from
3393 inside your head (standard for headphones) to outside and in front of
3394 the listener (standard for speakers).
3395
3396 Ported from SoX.
3397
3398 @section equalizer
3399
3400 Apply a two-pole peaking equalisation (EQ) filter. With this
3401 filter, the signal-level at and around a selected frequency can
3402 be increased or decreased, whilst (unlike bandpass and bandreject
3403 filters) that at all other frequencies is unchanged.
3404
3405 In order to produce complex equalisation curves, this filter can
3406 be given several times, each with a different central frequency.
3407
3408 The filter accepts the following options:
3409
3410 @table @option
3411 @item frequency, f
3412 Set the filter's central frequency in Hz.
3413
3414 @item width_type, t
3415 Set method to specify band-width of filter.
3416 @table @option
3417 @item h
3418 Hz
3419 @item q
3420 Q-Factor
3421 @item o
3422 octave
3423 @item s
3424 slope
3425 @item k
3426 kHz
3427 @end table
3428
3429 @item width, w
3430 Specify the band-width of a filter in width_type units.
3431
3432 @item gain, g
3433 Set the required gain or attenuation in dB.
3434 Beware of clipping when using a positive gain.
3435
3436 @item mix, m
3437 How much to use filtered signal in output. Default is 1.
3438 Range is between 0 and 1.
3439
3440 @item channels, c
3441 Specify which channels to filter, by default all available are filtered.
3442 @end table
3443
3444 @subsection Examples
3445 @itemize
3446 @item
3447 Attenuate 10 dB at 1000 Hz, with a bandwidth of 200 Hz:
3448 @example
3449 equalizer=f=1000:t=h:width=200:g=-10
3450 @end example
3451
3452 @item
3453 Apply 2 dB gain at 1000 Hz with Q 1 and attenuate 5 dB at 100 Hz with Q 2:
3454 @example
3455 equalizer=f=1000:t=q:w=1:g=2,equalizer=f=100:t=q:w=2:g=-5
3456 @end example
3457 @end itemize
3458
3459 @subsection Commands
3460
3461 This filter supports the following commands:
3462 @table @option
3463 @item frequency, f
3464 Change equalizer frequency.
3465 Syntax for the command is : "@var{frequency}"
3466
3467 @item width_type, t
3468 Change equalizer width_type.
3469 Syntax for the command is : "@var{width_type}"
3470
3471 @item width, w
3472 Change equalizer width.
3473 Syntax for the command is : "@var{width}"
3474
3475 @item gain, g
3476 Change equalizer gain.
3477 Syntax for the command is : "@var{gain}"
3478
3479 @item mix, m
3480 Change equalizer mix.
3481 Syntax for the command is : "@var{mix}"
3482 @end table
3483
3484 @section extrastereo
3485
3486 Linearly increases the difference between left and right channels which
3487 adds some sort of "live" effect to playback.
3488
3489 The filter accepts the following options:
3490
3491 @table @option
3492 @item m
3493 Sets the difference coefficient (default: 2.5). 0.0 means mono sound
3494 (average of both channels), with 1.0 sound will be unchanged, with
3495 -1.0 left and right channels will be swapped.
3496
3497 @item c
3498 Enable clipping. By default is enabled.
3499 @end table
3500
3501 @section firequalizer
3502 Apply FIR Equalization using arbitrary frequency response.
3503
3504 The filter accepts the following option:
3505
3506 @table @option
3507 @item gain
3508 Set gain curve equation (in dB). The expression can contain variables:
3509 @table @option
3510 @item f
3511 the evaluated frequency
3512 @item sr
3513 sample rate
3514 @item ch
3515 channel number, set to 0 when multichannels evaluation is disabled
3516 @item chid
3517 channel id, see libavutil/channel_layout.h, set to the first channel id when
3518 multichannels evaluation is disabled
3519 @item chs
3520 number of channels
3521 @item chlayout
3522 channel_layout, see libavutil/channel_layout.h
3523
3524 @end table
3525 and functions:
3526 @table @option
3527 @item gain_interpolate(f)
3528 interpolate gain on frequency f based on gain_entry
3529 @item cubic_interpolate(f)
3530 same as gain_interpolate, but smoother
3531 @end table
3532 This option is also available as command. Default is @code{gain_interpolate(f)}.
3533
3534 @item gain_entry
3535 Set gain entry for gain_interpolate function. The expression can
3536 contain functions:
3537 @table @option
3538 @item entry(f, g)
3539 store gain entry at frequency f with value g
3540 @end table
3541 This option is also available as command.
3542
3543 @item delay
3544 Set filter delay in seconds. Higher value means more accurate.
3545 Default is @code{0.01}.
3546
3547 @item accuracy
3548 Set filter accuracy in Hz. Lower value means more accurate.
3549 Default is @code{5}.
3550
3551 @item wfunc
3552 Set window function. Acceptable values are:
3553 @table @option
3554 @item rectangular
3555 rectangular window, useful when gain curve is already smooth
3556 @item hann
3557 hann window (default)
3558 @item hamming
3559 hamming window
3560 @item blackman
3561 blackman window
3562 @item nuttall3
3563 3-terms continuous 1st derivative nuttall window
3564 @item mnuttall3
3565 minimum 3-terms discontinuous nuttall window
3566 @item nuttall
3567 4-terms continuous 1st derivative nuttall window
3568 @item bnuttall
3569 minimum 4-terms discontinuous nuttall (blackman-nuttall) window
3570 @item bharris
3571 blackman-harris window
3572 @item tukey
3573 tukey window
3574 @end table
3575
3576 @item fixed
3577 If enabled, use fixed number of audio samples. This improves speed when
3578 filtering with large delay. Default is disabled.
3579
3580 @item multi
3581 Enable multichannels evaluation on gain. Default is disabled.
3582
3583 @item zero_phase
3584 Enable zero phase mode by subtracting timestamp to compensate delay.
3585 Default is disabled.
3586
3587 @item scale
3588 Set scale used by gain. Acceptable values are:
3589 @table @option
3590 @item linlin
3591 linear frequency, linear gain
3592 @item linlog
3593 linear frequency, logarithmic (in dB) gain (default)
3594 @item loglin
3595 logarithmic (in octave scale where 20 Hz is 0) frequency, linear gain
3596 @item loglog
3597 logarithmic frequency, logarithmic gain
3598 @end table
3599
3600 @item dumpfile
3601 Set file for dumping, suitable for gnuplot.
3602
3603 @item dumpscale
3604 Set scale for dumpfile. Acceptable values are same with scale option.
3605 Default is linlog.
3606
3607 @item fft2
3608 Enable 2-channel convolution using complex FFT. This improves speed significantly.
3609 Default is disabled.
3610
3611 @item min_phase
3612 Enable minimum phase impulse response. Default is disabled.
3613 @end table
3614
3615 @subsection Examples
3616 @itemize
3617 @item
3618 lowpass at 1000 Hz:
3619 @example
3620 firequalizer=gain='if(lt(f,1000), 0, -INF)'
3621 @end example
3622 @item
3623 lowpass at 1000 Hz with gain_entry:
3624 @example
3625 firequalizer=gain_entry='entry(1000,0); entry(1001, -INF)'
3626 @end example
3627 @item
3628 custom equalization:
3629 @example
3630 firequalizer=gain_entry='entry(100,0); entry(400, -4); entry(1000, -6); entry(2000, 0)'
3631 @end example
3632 @item
3633 higher delay with zero phase to compensate delay:
3634 @example
3635 firequalizer=delay=0.1:fixed=on:zero_phase=on
3636 @end example
3637 @item
3638 lowpass on left channel, highpass on right channel:
3639 @example
3640 firequalizer=gain='if(eq(chid,1), gain_interpolate(f), if(eq(chid,2), gain_interpolate(1e6+f), 0))'
3641 :gain_entry='entry(1000, 0); entry(1001,-INF); entry(1e6+1000,0)':multi=on
3642 @end example
3643 @end itemize
3644
3645 @section flanger
3646 Apply a flanging effect to the audio.
3647
3648 The filter accepts the following options:
3649
3650 @table @option
3651 @item delay
3652 Set base delay in milliseconds. Range from 0 to 30. Default value is 0.
3653
3654 @item depth
3655 Set added sweep delay in milliseconds. Range from 0 to 10. Default value is 2.
3656
3657 @item regen
3658 Set percentage regeneration (delayed signal feedback). Range from -95 to 95.
3659 Default value is 0.
3660
3661 @item width
3662 Set percentage of delayed signal mixed with original. Range from 0 to 100.
3663 Default value is 71.
3664
3665 @item speed
3666 Set sweeps per second (Hz). Range from 0.1 to 10. Default value is 0.5.
3667
3668 @item shape
3669 Set swept wave shape, can be @var{triangular} or @var{sinusoidal}.
3670 Default value is @var{sinusoidal}.
3671
3672 @item phase
3673 Set swept wave percentage-shift for multi channel. Range from 0 to 100.
3674 Default value is 25.
3675
3676 @item interp
3677 Set delay-line interpolation, @var{linear} or @var{quadratic}.
3678 Default is @var{linear}.
3679 @end table
3680
3681 @section haas
3682 Apply Haas effect to audio.
3683
3684 Note that this makes most sense to apply on mono signals.
3685 With this filter applied to mono signals it give some directionality and
3686 stretches its stereo image.
3687
3688 The filter accepts the following options:
3689
3690 @table @option
3691 @item level_in
3692 Set input level. By default is @var{1}, or 0dB
3693
3694 @item level_out
3695 Set output level. By default is @var{1}, or 0dB.
3696
3697 @item side_gain
3698 Set gain applied to side part of signal. By default is @var{1}.
3699
3700 @item middle_source
3701 Set kind of middle source. Can be one of the following:
3702
3703 @table @samp
3704 @item left
3705 Pick left channel.
3706
3707 @item right
3708 Pick right channel.
3709
3710 @item mid
3711 Pick middle part signal of stereo image.
3712
3713 @item side
3714 Pick side part signal of stereo image.
3715 @end table
3716
3717 @item middle_phase
3718 Change middle phase. By default is disabled.
3719
3720 @item left_delay
3721 Set left channel delay. By default is @var{2.05} milliseconds.
3722
3723 @item left_balance
3724 Set left channel balance. By default is @var{-1}.
3725
3726 @item left_gain
3727 Set left channel gain. By default is @var{1}.
3728
3729 @item left_phase
3730 Change left phase. By default is disabled.
3731
3732 @item right_delay
3733 Set right channel delay. By defaults is @var{2.12} milliseconds.
3734
3735 @item right_balance
3736 Set right channel balance. By default is @var{1}.
3737
3738 @item right_gain
3739 Set right channel gain. By default is @var{1}.
3740
3741 @item right_phase
3742 Change right phase. By default is enabled.
3743 @end table
3744
3745 @section hdcd
3746
3747 Decodes High Definition Compatible Digital (HDCD) data. A 16-bit PCM stream with
3748 embedded HDCD codes is expanded into a 20-bit PCM stream.
3749
3750 The filter supports the Peak Extend and Low-level Gain Adjustment features
3751 of HDCD, and detects the Transient Filter flag.
3752
3753 @example
3754 ffmpeg -i HDCD16.flac -af hdcd OUT24.flac
3755 @end example
3756
3757 When using the filter with wav, note the default encoding for wav is 16-bit,
3758 so the resulting 20-bit stream will be truncated back to 16-bit. Use something
3759 like @command{-acodec pcm_s24le} after the filter to get 24-bit PCM output.
3760 @example
3761 ffmpeg -i HDCD16.wav -af hdcd OUT16.wav
3762 ffmpeg -i HDCD16.wav -af hdcd -c:a pcm_s24le OUT24.wav
3763 @end example
3764
3765 The filter accepts the following options:
3766
3767 @table @option
3768 @item disable_autoconvert
3769 Disable any automatic format conversion or resampling in the filter graph.
3770
3771 @item process_stereo
3772 Process the stereo channels together. If target_gain does not match between
3773 channels, consider it invalid and use the last valid target_gain.
3774
3775 @item cdt_ms
3776 Set the code detect timer period in ms.
3777
3778 @item force_pe
3779 Always extend peaks above -3dBFS even if PE isn't signaled.
3780
3781 @item analyze_mode
3782 Replace audio with a solid tone and adjust the amplitude to signal some
3783 specific aspect of the decoding process. The output file can be loaded in
3784 an audio editor alongside the original to aid analysis.
3785
3786 @code{analyze_mode=pe:force_pe=true} can be used to see all samples above the PE level.
3787
3788 Modes are:
3789 @table @samp
3790 @item 0, off
3791 Disabled
3792 @item 1, lle
3793 Gain adjustment level at each sample
3794 @item 2, pe
3795 Samples where peak extend occurs
3796 @item 3, cdt
3797 Samples where the code detect timer is active
3798 @item 4, tgm
3799 Samples where the target gain does not match between channels
3800 @end table
3801 @end table
3802
3803 @section headphone
3804
3805 Apply head-related transfer functions (HRTFs) to create virtual
3806 loudspeakers around the user for binaural listening via headphones.
3807 The HRIRs are provided via additional streams, for each channel
3808 one stereo input stream is needed.
3809
3810 The filter accepts the following options:
3811
3812 @table @option
3813 @item map
3814 Set mapping of input streams for convolution.
3815 The argument is a '|'-separated list of channel names in order as they
3816 are given as additional stream inputs for filter.
3817 This also specify number of input streams. Number of input streams
3818 must be not less than number of channels in first stream plus one.
3819
3820 @item gain
3821 Set gain applied to audio. Value is in dB. Default is 0.
3822
3823 @item type
3824 Set processing type. Can be @var{time} or @var{freq}. @var{time} is
3825 processing audio in time domain which is slow.
3826 @var{freq} is processing audio in frequency domain which is fast.
3827 Default is @var{freq}.
3828
3829 @item lfe
3830 Set custom gain for LFE channels. Value is in dB. Default is 0.
3831
3832 @item size
3833 Set size of frame in number of samples which will be processed at once.
3834 Default value is @var{1024}. Allowed range is from 1024 to 96000.
3835
3836 @item hrir
3837 Set format of hrir stream.
3838 Default value is @var{stereo}. Alternative value is @var{multich}.
3839 If value is set to @var{stereo}, number of additional streams should
3840 be greater or equal to number of input channels in first input stream.
3841 Also each additional stream should have stereo number of channels.
3842 If value is set to @var{multich}, number of additional streams should
3843 be exactly one. Also number of input channels of additional stream
3844 should be equal or greater than twice number of channels of first input
3845 stream.
3846 @end table
3847
3848 @subsection Examples
3849
3850 @itemize
3851 @item
3852 Full example using wav files as coefficients with amovie filters for 7.1 downmix,
3853 each amovie filter use stereo file with IR coefficients as input.
3854 The files give coefficients for each position of virtual loudspeaker:
3855 @example
3856 ffmpeg -i input.wav
3857 -filter_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];[0:a][fl][fr][fc][lfe][bl][br][sl][sr]headphone=FL|FR|FC|LFE|BL|BR|SL|SR"
3858 output.wav
3859 @end example
3860
3861 @item
3862 Full example using wav files as coefficients with amovie filters for 7.1 downmix,
3863 but now in @var{multich} @var{hrir} format.
3864 @example
3865 ffmpeg -i input.wav -filter_complex "amovie=minp.wav[hrirs];[0:a][hrirs]headphone=map=FL|FR|FC|LFE|BL|BR|SL|SR:hrir=multich"
3866 output.wav
3867 @end example
3868 @end itemize
3869
3870 @section highpass
3871
3872 Apply a high-pass filter with 3dB point frequency.
3873 The filter can be either single-pole, or double-pole (the default).
3874 The filter roll off at 6dB per pole per octave (20dB per pole per decade).
3875
3876 The filter accepts the following options:
3877
3878 @table @option
3879 @item frequency, f
3880 Set frequency in Hz. Default is 3000.
3881
3882 @item poles, p
3883 Set number of poles. Default is 2.
3884
3885 @item width_type, t
3886 Set method to specify band-width of filter.
3887 @table @option
3888 @item h
3889 Hz
3890 @item q
3891 Q-Factor
3892 @item o
3893 octave
3894 @item s
3895 slope
3896 @item k
3897 kHz
3898 @end table
3899
3900 @item width, w
3901 Specify the band-width of a filter in width_type units.
3902 Applies only to double-pole filter.
3903 The default is 0.707q and gives a Butterworth response.
3904
3905 @item mix, m
3906 How much to use filtered signal in output. Default is 1.
3907 Range is between 0 and 1.
3908
3909 @item channels, c
3910 Specify which channels to filter, by default all available are filtered.
3911 @end table
3912
3913 @subsection Commands
3914
3915 This filter supports the following commands:
3916 @table @option
3917 @item frequency, f
3918 Change highpass frequency.
3919 Syntax for the command is : "@var{frequency}"
3920
3921 @item width_type, t
3922 Change highpass width_type.
3923 Syntax for the command is : "@var{width_type}"
3924
3925 @item width, w
3926 Change highpass width.
3927 Syntax for the command is : "@var{width}"
3928
3929 @item mix, m
3930 Change highpass mix.
3931 Syntax for the command is : "@var{mix}"
3932 @end table
3933
3934 @section join
3935
3936 Join multiple input streams into one multi-channel stream.
3937
3938 It accepts the following parameters:
3939 @table @option
3940
3941 @item inputs
3942 The number of input streams. It defaults to 2.
3943
3944 @item channel_layout
3945 The desired output channel layout. It defaults to stereo.
3946
3947 @item map
3948 Map channels from inputs to output. The argument is a '|'-separated list of
3949 mappings, each in the @code{@var{input_idx}.@var{in_channel}-@var{out_channel}}
3950 form. @var{input_idx} is the 0-based index of the input stream. @var{in_channel}
3951 can be either the name of the input channel (e.g. FL for front left) or its
3952 index in the specified input stream. @var{out_channel} is the name of the output
3953 channel.
3954 @end table
3955
3956 The filter will attempt to guess the mappings when they are not specified
3957 explicitly. It does so by first trying to find an unused matching input channel
3958 and if that fails it picks the first unused input channel.
3959
3960 Join 3 inputs (with properly set channel layouts):
3961 @example
3962 ffmpeg -i INPUT1 -i INPUT2 -i INPUT3 -filter_complex join=inputs=3 OUTPUT
3963 @end example
3964
3965 Build a 5.1 output from 6 single-channel streams:
3966 @example
3967 ffmpeg -i fl -i fr -i fc -i sl -i sr -i lfe -filter_complex
3968 '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'
3969 out
3970 @end example
3971
3972 @section ladspa
3973
3974 Load a LADSPA (Linux Audio Developer's Simple Plugin API) plugin.
3975
3976 To enable compilation of this filter you need to configure FFmpeg with
3977 @code{--enable-ladspa}.
3978
3979 @table @option
3980 @item file, f
3981 Specifies the name of LADSPA plugin library to load. If the environment
3982 variable @env{LADSPA_PATH} is defined, the LADSPA plugin is searched in
3983 each one of the directories specified by the colon separated list in
3984 @env{LADSPA_PATH}, otherwise in the standard LADSPA paths, which are in
3985 this order: @file{HOME/.ladspa/lib/}, @file{/usr/local/lib/ladspa/},
3986 @file{/usr/lib/ladspa/}.
3987
3988 @item plugin, p
3989 Specifies the plugin within the library. Some libraries contain only
3990 one plugin, but others contain many of them. If this is not set filter
3991 will list all available plugins within the specified library.
3992
3993 @item controls, c
3994 Set the '|' separated list of controls which are zero or more floating point
3995 values that determine the behavior of the loaded plugin (for example delay,
3996 threshold or gain).
3997 Controls need to be defined using the following syntax:
3998 c0=@var{value0}|c1=@var{value1}|c2=@var{value2}|..., where
3999 @var{valuei} is the value set on the @var{i}-th control.
4000 Alternatively they can be also defined using the following syntax:
4001 @var{value0}|@var{value1}|@var{value2}|..., where
4002 @var{valuei} is the value set on the @var{i}-th control.
4003 If @option{controls} is set to @code{help}, all available controls and
4004 their valid ranges are printed.
4005
4006 @item sample_rate, s
4007 Specify the sample rate, default to 44100. Only used if plugin have
4008 zero inputs.
4009
4010 @item nb_samples, n
4011 Set the number of samples per channel per each output frame, default
4012 is 1024. Only used if plugin have zero inputs.
4013
4014 @item duration, d
4015 Set the minimum duration of the sourced audio. See
4016 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
4017 for the accepted syntax.
4018 Note that the resulting duration may be greater than the specified duration,
4019 as the generated audio is always cut at the end of a complete frame.
4020 If not specified, or the expressed duration is negative, the audio is
4021 supposed to be generated forever.
4022 Only used if plugin have zero inputs.
4023
4024 @end table
4025
4026 @subsection Examples
4027
4028 @itemize
4029 @item
4030 List all available plugins within amp (LADSPA example plugin) library:
4031 @example
4032 ladspa=file=amp
4033 @end example
4034
4035 @item
4036 List all available controls and their valid ranges for @code{vcf_notch}
4037 plugin from @code{VCF} library:
4038 @example
4039 ladspa=f=vcf:p=vcf_notch:c=help
4040 @end example
4041
4042 @item
4043 Simulate low quality audio equipment using @code{Computer Music Toolkit} (CMT)
4044 plugin library:
4045 @example
4046 ladspa=file=cmt:plugin=lofi:controls=c0=22|c1=12|c2=12
4047 @end example
4048
4049 @item
4050 Add reverberation to the audio using TAP-plugins
4051 (Tom's Audio Processing plugins):
4052 @example
4053 ladspa=file=tap_reverb:tap_reverb
4054 @end example
4055
4056 @item
4057 Generate white noise, with 0.2 amplitude:
4058 @example
4059 ladspa=file=cmt:noise_source_white:c=c0=.2
4060 @end example
4061
4062 @item
4063 Generate 20 bpm clicks using plugin @code{C* Click - Metronome} from the
4064 @code{C* Audio Plugin Suite} (CAPS) library:
4065 @example
4066 ladspa=file=caps:Click:c=c1=20'
4067 @end example
4068
4069 @item
4070 Apply @code{C* Eq10X2 - Stereo 10-band equaliser} effect:
4071 @example
4072 ladspa=caps:Eq10X2:c=c0=-48|c9=-24|c3=12|c4=2
4073 @end example
4074
4075 @item
4076 Increase volume by 20dB using fast lookahead limiter from Steve Harris
4077 @code{SWH Plugins} collection:
4078 @example
4079 ladspa=fast_lookahead_limiter_1913:fastLookaheadLimiter:20|0|2
4080 @end example
4081
4082 @item
4083 Attenuate low frequencies using Multiband EQ from Steve Harris
4084 @code{SWH Plugins} collection:
4085 @example
4086 ladspa=mbeq_1197:mbeq:-24|-24|-24|0|0|0|0|0|0|0|0|0|0|0|0
4087 @end example
4088
4089 @item
4090 Reduce stereo image using @code{Narrower} from the @code{C* Audio Plugin Suite}
4091 (CAPS) library:
4092 @example
4093 ladspa=caps:Narrower
4094 @end example
4095
4096 @item
4097 Another white noise, now using @code{C* Audio Plugin Suite} (CAPS) library:
4098 @example
4099 ladspa=caps:White:.2
4100 @end example
4101
4102 @item
4103 Some fractal noise, using @code{C* Audio Plugin Suite} (CAPS) library:
4104 @example
4105 ladspa=caps:Fractal:c=c1=1
4106 @end example
4107
4108 @item
4109 Dynamic volume normalization using @code{VLevel} plugin:
4110 @example
4111 ladspa=vlevel-ladspa:vlevel_mono
4112 @end example
4113 @end itemize
4114
4115 @subsection Commands
4116
4117 This filter supports the following commands:
4118 @table @option
4119 @item cN
4120 Modify the @var{N}-th control value.
4121
4122 If the specified value is not valid, it is ignored and prior one is kept.
4123 @end table
4124
4125 @section loudnorm
4126
4127 EBU R128 loudness normalization. Includes both dynamic and linear normalization modes.
4128 Support for both single pass (livestreams, files) and double pass (files) modes.
4129 This algorithm can target IL, LRA, and maximum true peak. To accurately detect true peaks,
4130 the audio stream will be upsampled to 192 kHz unless the normalization mode is linear.
4131 Use the @code{-ar} option or @code{aresample} filter to explicitly set an output sample rate.
4132
4133 The filter accepts the following options:
4134
4135 @table @option
4136 @item I, i
4137 Set integrated loudness target.
4138 Range is -70.0 - -5.0. Default value is -24.0.
4139
4140 @item LRA, lra
4141 Set loudness range target.
4142 Range is 1.0 - 20.0. Default value is 7.0.
4143
4144 @item TP, tp
4145 Set maximum true peak.
4146 Range is -9.0 - +0.0. Default value is -2.0.
4147
4148 @item measured_I, measured_i
4149 Measured IL of input file.
4150 Range is -99.0 - +0.0.
4151
4152 @item measured_LRA, measured_lra
4153 Measured LRA of input file.
4154 Range is  0.0 - 99.0.
4155
4156 @item measured_TP, measured_tp
4157 Measured true peak of input file.
4158 Range is  -99.0 - +99.0.
4159
4160 @item measured_thresh
4161 Measured threshold of input file.
4162 Range is -99.0 - +0.0.
4163
4164 @item offset
4165 Set offset gain. Gain is applied before the true-peak limiter.
4166 Range is  -99.0 - +99.0. Default is +0.0.
4167
4168 @item linear
4169 Normalize linearly if possible.
4170 measured_I, measured_LRA, measured_TP, and measured_thresh must also
4171 to be specified in order to use this mode.
4172 Options are true or false. Default is true.
4173
4174 @item dual_mono
4175 Treat mono input files as "dual-mono". If a mono file is intended for playback
4176 on a stereo system, its EBU R128 measurement will be perceptually incorrect.
4177 If set to @code{true}, this option will compensate for this effect.
4178 Multi-channel input files are not affected by this option.
4179 Options are true or false. Default is false.
4180
4181 @item print_format
4182 Set print format for stats. Options are summary, json, or none.
4183 Default value is none.
4184 @end table
4185
4186 @section lowpass
4187
4188 Apply a low-pass filter with 3dB point frequency.
4189 The filter can be either single-pole or double-pole (the default).
4190 The filter roll off at 6dB per pole per octave (20dB per pole per decade).
4191
4192 The filter accepts the following options:
4193
4194 @table @option
4195 @item frequency, f
4196 Set frequency in Hz. Default is 500.
4197
4198 @item poles, p
4199 Set number of poles. Default is 2.
4200
4201 @item width_type, t
4202 Set method to specify band-width of filter.
4203 @table @option
4204 @item h
4205 Hz
4206 @item q
4207 Q-Factor
4208 @item o
4209 octave
4210 @item s
4211 slope
4212 @item k
4213 kHz
4214 @end table
4215
4216 @item width, w
4217 Specify the band-width of a filter in width_type units.
4218 Applies only to double-pole filter.
4219 The default is 0.707q and gives a Butterworth response.
4220
4221 @item mix, m
4222 How much to use filtered signal in output. Default is 1.
4223 Range is between 0 and 1.
4224
4225 @item channels, c
4226 Specify which channels to filter, by default all available are filtered.
4227 @end table
4228
4229 @subsection Examples
4230 @itemize
4231 @item
4232 Lowpass only LFE channel, it LFE is not present it does nothing:
4233 @example
4234 lowpass=c=LFE
4235 @end example
4236 @end itemize
4237
4238 @subsection Commands
4239
4240 This filter supports the following commands:
4241 @table @option
4242 @item frequency, f
4243 Change lowpass frequency.
4244 Syntax for the command is : "@var{frequency}"
4245
4246 @item width_type, t
4247 Change lowpass width_type.
4248 Syntax for the command is : "@var{width_type}"
4249
4250 @item width, w
4251 Change lowpass width.
4252 Syntax for the command is : "@var{width}"
4253
4254 @item mix, m
4255 Change lowpass mix.
4256 Syntax for the command is : "@var{mix}"
4257 @end table
4258
4259 @section lv2
4260
4261 Load a LV2 (LADSPA Version 2) plugin.
4262
4263 To enable compilation of this filter you need to configure FFmpeg with
4264 @code{--enable-lv2}.
4265
4266 @table @option
4267 @item plugin, p
4268 Specifies the plugin URI. You may need to escape ':'.
4269
4270 @item controls, c
4271 Set the '|' separated list of controls which are zero or more floating point
4272 values that determine the behavior of the loaded plugin (for example delay,
4273 threshold or gain).
4274 If @option{controls} is set to @code{help}, all available controls and
4275 their valid ranges are printed.
4276
4277 @item sample_rate, s
4278 Specify the sample rate, default to 44100. Only used if plugin have
4279 zero inputs.
4280
4281 @item nb_samples, n
4282 Set the number of samples per channel per each output frame, default
4283 is 1024. Only used if plugin have zero inputs.
4284
4285 @item duration, d
4286 Set the minimum duration of the sourced audio. See
4287 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
4288 for the accepted syntax.
4289 Note that the resulting duration may be greater than the specified duration,
4290 as the generated audio is always cut at the end of a complete frame.
4291 If not specified, or the expressed duration is negative, the audio is
4292 supposed to be generated forever.
4293 Only used if plugin have zero inputs.
4294 @end table
4295
4296 @subsection Examples
4297
4298 @itemize
4299 @item
4300 Apply bass enhancer plugin from Calf:
4301 @example
4302 lv2=p=http\\\\://calf.sourceforge.net/plugins/BassEnhancer:c=amount=2
4303 @end example
4304
4305 @item
4306 Apply vinyl plugin from Calf:
4307 @example
4308 lv2=p=http\\\\://calf.sourceforge.net/plugins/Vinyl:c=drone=0.2|aging=0.5
4309 @end example
4310
4311 @item
4312 Apply bit crusher plugin from ArtyFX:
4313 @example
4314 lv2=p=http\\\\://www.openavproductions.com/artyfx#bitta:c=crush=0.3
4315 @end example
4316 @end itemize
4317
4318 @section mcompand
4319 Multiband Compress or expand the audio's dynamic range.
4320
4321 The input audio is divided into bands using 4th order Linkwitz-Riley IIRs.
4322 This is akin to the crossover of a loudspeaker, and results in flat frequency
4323 response when absent compander action.
4324
4325 It accepts the following parameters:
4326
4327 @table @option
4328 @item args
4329 This option syntax is:
4330 attack,decay,[attack,decay..] soft-knee points crossover_frequency [delay [initial_volume [gain]]] | attack,decay ...
4331 For explanation of each item refer to compand filter documentation.
4332 @end table
4333
4334 @anchor{pan}
4335 @section pan
4336
4337 Mix channels with specific gain levels. The filter accepts the output
4338 channel layout followed by a set of channels definitions.
4339
4340 This filter is also designed to efficiently remap the channels of an audio
4341 stream.
4342
4343 The filter accepts parameters of the form:
4344 "@var{l}|@var{outdef}|@var{outdef}|..."
4345
4346 @table @option
4347 @item l
4348 output channel layout or number of channels
4349
4350 @item outdef
4351 output channel specification, of the form:
4352 "@var{out_name}=[@var{gain}*]@var{in_name}[(+-)[@var{gain}*]@var{in_name}...]"
4353
4354 @item out_name
4355 output channel to define, either a channel name (FL, FR, etc.) or a channel
4356 number (c0, c1, etc.)
4357
4358 @item gain
4359 multiplicative coefficient for the channel, 1 leaving the volume unchanged
4360
4361 @item in_name
4362 input channel to use, see out_name for details; it is not possible to mix
4363 named and numbered input channels
4364 @end table
4365
4366 If the `=' in a channel specification is replaced by `<', then the gains for
4367 that specification will be renormalized so that the total is 1, thus
4368 avoiding clipping noise.
4369
4370 @subsection Mixing examples
4371
4372 For example, if you want to down-mix from stereo to mono, but with a bigger
4373 factor for the left channel:
4374 @example
4375 pan=1c|c0=0.9*c0+0.1*c1
4376 @end example
4377
4378 A customized down-mix to stereo that works automatically for 3-, 4-, 5- and
4379 7-channels surround:
4380 @example
4381 pan=stereo| FL < FL + 0.5*FC + 0.6*BL + 0.6*SL | FR < FR + 0.5*FC + 0.6*BR + 0.6*SR
4382 @end example
4383
4384 Note that @command{ffmpeg} integrates a default down-mix (and up-mix) system
4385 that should be preferred (see "-ac" option) unless you have very specific
4386 needs.
4387
4388 @subsection Remapping examples
4389
4390 The channel remapping will be effective if, and only if:
4391
4392 @itemize
4393 @item gain coefficients are zeroes or ones,
4394 @item only one input per channel output,
4395 @end itemize
4396
4397 If all these conditions are satisfied, the filter will notify the user ("Pure
4398 channel mapping detected"), and use an optimized and lossless method to do the
4399 remapping.
4400
4401 For example, if you have a 5.1 source and want a stereo audio stream by
4402 dropping the extra channels:
4403 @example
4404 pan="stereo| c0=FL | c1=FR"
4405 @end example
4406
4407 Given the same source, you can also switch front left and front right channels
4408 and keep the input channel layout:
4409 @example
4410 pan="5.1| c0=c1 | c1=c0 | c2=c2 | c3=c3 | c4=c4 | c5=c5"
4411 @end example
4412
4413 If the input is a stereo audio stream, you can mute the front left channel (and
4414 still keep the stereo channel layout) with:
4415 @example
4416 pan="stereo|c1=c1"
4417 @end example
4418
4419 Still with a stereo audio stream input, you can copy the right channel in both
4420 front left and right:
4421 @example
4422 pan="stereo| c0=FR | c1=FR"
4423 @end example
4424
4425 @section replaygain
4426
4427 ReplayGain scanner filter. This filter takes an audio stream as an input and
4428 outputs it unchanged.
4429 At end of filtering it displays @code{track_gain} and @code{track_peak}.
4430
4431 @section resample
4432
4433 Convert the audio sample format, sample rate and channel layout. It is
4434 not meant to be used directly.
4435
4436 @section rubberband
4437 Apply time-stretching and pitch-shifting with librubberband.
4438
4439 To enable compilation of this filter, you need to configure FFmpeg with
4440 @code{--enable-librubberband}.
4441
4442 The filter accepts the following options:
4443
4444 @table @option
4445 @item tempo
4446 Set tempo scale factor.
4447
4448 @item pitch
4449 Set pitch scale factor.
4450
4451 @item transients
4452 Set transients detector.
4453 Possible values are:
4454 @table @var
4455 @item crisp
4456 @item mixed
4457 @item smooth
4458 @end table
4459
4460 @item detector
4461 Set detector.
4462 Possible values are:
4463 @table @var
4464 @item compound
4465 @item percussive
4466 @item soft
4467 @end table
4468
4469 @item phase
4470 Set phase.
4471 Possible values are:
4472 @table @var
4473 @item laminar
4474 @item independent
4475 @end table
4476
4477 @item window
4478 Set processing window size.
4479 Possible values are:
4480 @table @var
4481 @item standard
4482 @item short
4483 @item long
4484 @end table
4485
4486 @item smoothing
4487 Set smoothing.
4488 Possible values are:
4489 @table @var
4490 @item off
4491 @item on
4492 @end table
4493
4494 @item formant
4495 Enable formant preservation when shift pitching.
4496 Possible values are:
4497 @table @var
4498 @item shifted
4499 @item preserved
4500 @end table
4501
4502 @item pitchq
4503 Set pitch quality.
4504 Possible values are:
4505 @table @var
4506 @item quality
4507 @item speed
4508 @item consistency
4509 @end table
4510
4511 @item channels
4512 Set channels.
4513 Possible values are:
4514 @table @var
4515 @item apart
4516 @item together
4517 @end table
4518 @end table
4519
4520 @subsection Commands
4521
4522 This filter supports the following commands:
4523 @table @option
4524 @item tempo
4525 Change filter tempo scale factor.
4526 Syntax for the command is : "@var{tempo}"
4527
4528 @item pitch
4529 Change filter pitch scale factor.
4530 Syntax for the command is : "@var{pitch}"
4531 @end table
4532
4533 @section sidechaincompress
4534
4535 This filter acts like normal compressor but has the ability to compress
4536 detected signal using second input signal.
4537 It needs two input streams and returns one output stream.
4538 First input stream will be processed depending on second stream signal.
4539 The filtered signal then can be filtered with other filters in later stages of
4540 processing. See @ref{pan} and @ref{amerge} filter.
4541
4542 The filter accepts the following options:
4543
4544 @table @option
4545 @item level_in
4546 Set input gain. Default is 1. Range is between 0.015625 and 64.
4547
4548 @item mode
4549 Set mode of compressor operation. Can be @code{upward} or @code{downward}.
4550 Default is @code{downward}.
4551
4552 @item threshold
4553 If a signal of second stream raises above this level it will affect the gain
4554 reduction of first stream.
4555 By default is 0.125. Range is between 0.00097563 and 1.
4556
4557 @item ratio
4558 Set a ratio about which the signal is reduced. 1:2 means that if the level
4559 raised 4dB above the threshold, it will be only 2dB above after the reduction.
4560 Default is 2. Range is between 1 and 20.
4561
4562 @item attack
4563 Amount of milliseconds the signal has to rise above the threshold before gain
4564 reduction starts. Default is 20. Range is between 0.01 and 2000.
4565
4566 @item release
4567 Amount of milliseconds the signal has to fall below the threshold before
4568 reduction is decreased again. Default is 250. Range is between 0.01 and 9000.
4569
4570 @item makeup
4571 Set the amount by how much signal will be amplified after processing.
4572 Default is 1. Range is from 1 to 64.
4573
4574 @item knee
4575 Curve the sharp knee around the threshold to enter gain reduction more softly.
4576 Default is 2.82843. Range is between 1 and 8.
4577
4578 @item link
4579 Choose if the @code{average} level between all channels of side-chain stream
4580 or the louder(@code{maximum}) channel of side-chain stream affects the
4581 reduction. Default is @code{average}.
4582
4583 @item detection
4584 Should the exact signal be taken in case of @code{peak} or an RMS one in case
4585 of @code{rms}. Default is @code{rms} which is mainly smoother.
4586
4587 @item level_sc
4588 Set sidechain gain. Default is 1. Range is between 0.015625 and 64.
4589
4590 @item mix
4591 How much to use compressed signal in output. Default is 1.
4592 Range is between 0 and 1.
4593 @end table
4594
4595 @subsection Examples
4596
4597 @itemize
4598 @item
4599 Full ffmpeg example taking 2 audio inputs, 1st input to be compressed
4600 depending on the signal of 2nd input and later compressed signal to be
4601 merged with 2nd input:
4602 @example
4603 ffmpeg -i main.flac -i sidechain.flac -filter_complex "[1:a]asplit=2[sc][mix];[0:a][sc]sidechaincompress[compr];[compr][mix]amerge"
4604 @end example
4605 @end itemize
4606
4607 @section sidechaingate
4608
4609 A sidechain gate acts like a normal (wideband) gate but has the ability to
4610 filter the detected signal before sending it to the gain reduction stage.
4611 Normally a gate uses the full range signal to detect a level above the
4612 threshold.
4613 For example: If you cut all lower frequencies from your sidechain signal
4614 the gate will decrease the volume of your track only if not enough highs
4615 appear. With this technique you are able to reduce the resonation of a
4616 natural drum or remove "rumbling" of muted strokes from a heavily distorted
4617 guitar.
4618 It needs two input streams and returns one output stream.
4619 First input stream will be processed depending on second stream signal.
4620
4621 The filter accepts the following options:
4622
4623 @table @option
4624 @item level_in
4625 Set input level before filtering.
4626 Default is 1. Allowed range is from 0.015625 to 64.
4627
4628 @item mode
4629 Set the mode of operation. Can be @code{upward} or @code{downward}.
4630 Default is @code{downward}. If set to @code{upward} mode, higher parts of signal
4631 will be amplified, expanding dynamic range in upward direction.
4632 Otherwise, in case of @code{downward} lower parts of signal will be reduced.
4633
4634 @item range
4635 Set the level of gain reduction when the signal is below the threshold.
4636 Default is 0.06125. Allowed range is from 0 to 1.
4637 Setting this to 0 disables reduction and then filter behaves like expander.
4638
4639 @item threshold
4640 If a signal rises above this level the gain reduction is released.
4641 Default is 0.125. Allowed range is from 0 to 1.
4642
4643 @item ratio
4644 Set a ratio about which the signal is reduced.
4645 Default is 2. Allowed range is from 1 to 9000.
4646
4647 @item attack
4648 Amount of milliseconds the signal has to rise above the threshold before gain
4649 reduction stops.
4650 Default is 20 milliseconds. Allowed range is from 0.01 to 9000.
4651
4652 @item release
4653 Amount of milliseconds the signal has to fall below the threshold before the
4654 reduction is increased again. Default is 250 milliseconds.
4655 Allowed range is from 0.01 to 9000.
4656
4657 @item makeup
4658 Set amount of amplification of signal after processing.
4659 Default is 1. Allowed range is from 1 to 64.
4660
4661 @item knee
4662 Curve the sharp knee around the threshold to enter gain reduction more softly.
4663 Default is 2.828427125. Allowed range is from 1 to 8.
4664
4665 @item detection
4666 Choose if exact signal should be taken for detection or an RMS like one.
4667 Default is rms. Can be peak or rms.
4668
4669 @item link
4670 Choose if the average level between all channels or the louder channel affects
4671 the reduction.
4672 Default is average. Can be average or maximum.
4673
4674 @item level_sc
4675 Set sidechain gain. Default is 1. Range is from 0.015625 to 64.
4676 @end table
4677
4678 @section silencedetect
4679
4680 Detect silence in an audio stream.
4681
4682 This filter logs a message when it detects that the input audio volume is less
4683 or equal to a noise tolerance value for a duration greater or equal to the
4684 minimum detected noise duration.
4685
4686 The printed times and duration are expressed in seconds. The
4687 @code{lavfi.silence_start} or @code{lavfi.silence_start.X} metadata key
4688 is set on the first frame whose timestamp equals or exceeds the detection
4689 duration and it contains the timestamp of the first frame of the silence.
4690
4691 The @code{lavfi.silence_duration} or @code{lavfi.silence_duration.X}
4692 and @code{lavfi.silence_end} or @code{lavfi.silence_end.X} metadata
4693 keys are set on the first frame after the silence. If @option{mono} is
4694 enabled, and each channel is evaluated separately, the @code{.X}
4695 suffixed keys are used, and @code{X} corresponds to the channel number.
4696
4697 The filter accepts the following options:
4698
4699 @table @option
4700 @item noise, n
4701 Set noise tolerance. Can be specified in dB (in case "dB" is appended to the
4702 specified value) or amplitude ratio. Default is -60dB, or 0.001.
4703
4704 @item duration, d
4705 Set silence duration until notification (default is 2 seconds). See
4706 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
4707 for the accepted syntax.
4708
4709 @item mono, m
4710 Process each channel separately, instead of combined. By default is disabled.
4711 @end table
4712
4713 @subsection Examples
4714
4715 @itemize
4716 @item
4717 Detect 5 seconds of silence with -50dB noise tolerance:
4718 @example
4719 silencedetect=n=-50dB:d=5
4720 @end example
4721
4722 @item
4723 Complete example with @command{ffmpeg} to detect silence with 0.0001 noise
4724 tolerance in @file{silence.mp3}:
4725 @example
4726 ffmpeg -i silence.mp3 -af silencedetect=noise=0.0001 -f null -
4727 @end example
4728 @end itemize
4729
4730 @section silenceremove
4731
4732 Remove silence from the beginning, middle or end of the audio.
4733
4734 The filter accepts the following options:
4735
4736 @table @option
4737 @item start_periods
4738 This value is used to indicate if audio should be trimmed at beginning of
4739 the audio. A value of zero indicates no silence should be trimmed from the
4740 beginning. When specifying a non-zero value, it trims audio up until it
4741 finds non-silence. Normally, when trimming silence from beginning of audio
4742 the @var{start_periods} will be @code{1} but it can be increased to higher
4743 values to trim all audio up to specific count of non-silence periods.
4744 Default value is @code{0}.
4745
4746 @item start_duration
4747 Specify the amount of time that non-silence must be detected before it stops
4748 trimming audio. By increasing the duration, bursts of noises can be treated
4749 as silence and trimmed off. Default value is @code{0}.
4750
4751 @item start_threshold
4752 This indicates what sample value should be treated as silence. For digital
4753 audio, a value of @code{0} may be fine but for audio recorded from analog,
4754 you may wish to increase the value to account for background noise.
4755 Can be specified in dB (in case "dB" is appended to the specified value)
4756 or amplitude ratio. Default value is @code{0}.
4757
4758 @item start_silence
4759 Specify max duration of silence at beginning that will be kept after
4760 trimming. Default is 0, which is equal to trimming all samples detected
4761 as silence.
4762
4763 @item start_mode
4764 Specify mode of detection of silence end in start of multi-channel audio.
4765 Can be @var{any} or @var{all}. Default is @var{any}.
4766 With @var{any}, any sample that is detected as non-silence will cause
4767 stopped trimming of silence.
4768 With @var{all}, only if all channels are detected as non-silence will cause
4769 stopped trimming of silence.
4770
4771 @item stop_periods
4772 Set the count for trimming silence from the end of audio.
4773 To remove silence from the middle of a file, specify a @var{stop_periods}
4774 that is negative. This value is then treated as a positive value and is
4775 used to indicate the effect should restart processing as specified by
4776 @var{start_periods}, making it suitable for removing periods of silence
4777 in the middle of the audio.
4778 Default value is @code{0}.
4779
4780 @item stop_duration
4781 Specify a duration of silence that must exist before audio is not copied any
4782 more. By specifying a higher duration, silence that is wanted can be left in
4783 the audio.
4784 Default value is @code{0}.
4785
4786 @item stop_threshold
4787 This is the same as @option{start_threshold} but for trimming silence from
4788 the end of audio.
4789 Can be specified in dB (in case "dB" is appended to the specified value)
4790 or amplitude ratio. Default value is @code{0}.
4791
4792 @item stop_silence
4793 Specify max duration of silence at end that will be kept after
4794 trimming. Default is 0, which is equal to trimming all samples detected
4795 as silence.
4796
4797 @item stop_mode
4798 Specify mode of detection of silence start in end of multi-channel audio.
4799 Can be @var{any} or @var{all}. Default is @var{any}.
4800 With @var{any}, any sample that is detected as non-silence will cause
4801 stopped trimming of silence.
4802 With @var{all}, only if all channels are detected as non-silence will cause
4803 stopped trimming of silence.
4804
4805 @item detection
4806 Set how is silence detected. Can be @code{rms} or @code{peak}. Second is faster
4807 and works better with digital silence which is exactly 0.
4808 Default value is @code{rms}.
4809
4810 @item window
4811 Set duration in number of seconds used to calculate size of window in number
4812 of samples for detecting silence.
4813 Default value is @code{0.02}. Allowed range is from @code{0} to @code{10}.
4814 @end table
4815
4816 @subsection Examples
4817
4818 @itemize
4819 @item
4820 The following example shows how this filter can be used to start a recording
4821 that does not contain the delay at the start which usually occurs between
4822 pressing the record button and the start of the performance:
4823 @example
4824 silenceremove=start_periods=1:start_duration=5:start_threshold=0.02
4825 @end example
4826
4827 @item
4828 Trim all silence encountered from beginning to end where there is more than 1
4829 second of silence in audio:
4830 @example
4831 silenceremove=stop_periods=-1:stop_duration=1:stop_threshold=-90dB
4832 @end example
4833
4834 @item
4835 Trim all digital silence samples, using peak detection, from beginning to end
4836 where there is more than 0 samples of digital silence in audio and digital
4837 silence is detected in all channels at same positions in stream:
4838 @example
4839 silenceremove=window=0:detection=peak:stop_mode=all:start_mode=all:stop_periods=-1:stop_threshold=0
4840 @end example
4841 @end itemize
4842
4843 @section sofalizer
4844
4845 SOFAlizer uses head-related transfer functions (HRTFs) to create virtual
4846 loudspeakers around the user for binaural listening via headphones (audio
4847 formats up to 9 channels supported).
4848 The HRTFs are stored in SOFA files (see @url{http://www.sofacoustics.org/} for a database).
4849 SOFAlizer is developed at the Acoustics Research Institute (ARI) of the
4850 Austrian Academy of Sciences.
4851
4852 To enable compilation of this filter you need to configure FFmpeg with
4853 @code{--enable-libmysofa}.
4854
4855 The filter accepts the following options:
4856
4857 @table @option
4858 @item sofa
4859 Set the SOFA file used for rendering.
4860
4861 @item gain
4862 Set gain applied to audio. Value is in dB. Default is 0.
4863
4864 @item rotation
4865 Set rotation of virtual loudspeakers in deg. Default is 0.
4866
4867 @item elevation
4868 Set elevation of virtual speakers in deg. Default is 0.
4869
4870 @item radius
4871 Set distance in meters between loudspeakers and the listener with near-field
4872 HRTFs. Default is 1.
4873
4874 @item type
4875 Set processing type. Can be @var{time} or @var{freq}. @var{time} is
4876 processing audio in time domain which is slow.
4877 @var{freq} is processing audio in frequency domain which is fast.
4878 Default is @var{freq}.
4879
4880 @item speakers
4881 Set custom positions of virtual loudspeakers. Syntax for this option is:
4882 <CH> <AZIM> <ELEV>[|<CH> <AZIM> <ELEV>|...].
4883 Each virtual loudspeaker is described with short channel name following with
4884 azimuth and elevation in degrees.
4885 Each virtual loudspeaker description is separated by '|'.
4886 For example to override front left and front right channel positions use:
4887 'speakers=FL 45 15|FR 345 15'.
4888 Descriptions with unrecognised channel names are ignored.
4889
4890 @item lfegain
4891 Set custom gain for LFE channels. Value is in dB. Default is 0.
4892
4893 @item framesize
4894 Set custom frame size in number of samples. Default is 1024.
4895 Allowed range is from 1024 to 96000. Only used if option @samp{type}
4896 is set to @var{freq}.
4897
4898 @item normalize
4899 Should all IRs be normalized upon importing SOFA file.
4900 By default is enabled.
4901
4902 @item interpolate
4903 Should nearest IRs be interpolated with neighbor IRs if exact position
4904 does not match. By default is disabled.
4905
4906 @item minphase
4907 Minphase all IRs upon loading of SOFA file. By default is disabled.
4908
4909 @item anglestep
4910 Set neighbor search angle step. Only used if option @var{interpolate} is enabled.
4911
4912 @item radstep
4913 Set neighbor search radius step. Only used if option @var{interpolate} is enabled.
4914 @end table
4915
4916 @subsection Examples
4917
4918 @itemize
4919 @item
4920 Using ClubFritz6 sofa file:
4921 @example
4922 sofalizer=sofa=/path/to/ClubFritz6.sofa:type=freq:radius=1
4923 @end example
4924
4925 @item
4926 Using ClubFritz12 sofa file and bigger radius with small rotation:
4927 @example
4928 sofalizer=sofa=/path/to/ClubFritz12.sofa:type=freq:radius=2:rotation=5
4929 @end example
4930
4931 @item
4932 Similar as above but with custom speaker positions for front left, front right, back left and back right
4933 and also with custom gain:
4934 @example
4935 "sofalizer=sofa=/path/to/ClubFritz6.sofa:type=freq:radius=2:speakers=FL 45|FR 315|BL 135|BR 225:gain=28"
4936 @end example
4937 @end itemize
4938
4939 @section stereotools
4940
4941 This filter has some handy utilities to manage stereo signals, for converting
4942 M/S stereo recordings to L/R signal while having control over the parameters
4943 or spreading the stereo image of master track.
4944
4945 The filter accepts the following options:
4946
4947 @table @option
4948 @item level_in
4949 Set input level before filtering for both channels. Defaults is 1.
4950 Allowed range is from 0.015625 to 64.
4951
4952 @item level_out
4953 Set output level after filtering for both channels. Defaults is 1.
4954 Allowed range is from 0.015625 to 64.
4955
4956 @item balance_in
4957 Set input balance between both channels. Default is 0.
4958 Allowed range is from -1 to 1.
4959
4960 @item balance_out
4961 Set output balance between both channels. Default is 0.
4962 Allowed range is from -1 to 1.
4963
4964 @item softclip
4965 Enable softclipping. Results in analog distortion instead of harsh digital 0dB
4966 clipping. Disabled by default.
4967
4968 @item mutel
4969 Mute the left channel. Disabled by default.
4970
4971 @item muter
4972 Mute the right channel. Disabled by default.
4973
4974 @item phasel
4975 Change the phase of the left channel. Disabled by default.
4976
4977 @item phaser
4978 Change the phase of the right channel. Disabled by default.
4979
4980 @item mode
4981 Set stereo mode. Available values are:
4982
4983 @table @samp
4984 @item lr>lr
4985 Left/Right to Left/Right, this is default.
4986
4987 @item lr>ms
4988 Left/Right to Mid/Side.
4989
4990 @item ms>lr
4991 Mid/Side to Left/Right.
4992
4993 @item lr>ll
4994 Left/Right to Left/Left.
4995
4996 @item lr>rr
4997 Left/Right to Right/Right.
4998
4999 @item lr>l+r
5000 Left/Right to Left + Right.
5001
5002 @item lr>rl
5003 Left/Right to Right/Left.
5004
5005 @item ms>ll
5006 Mid/Side to Left/Left.
5007
5008 @item ms>rr
5009 Mid/Side to Right/Right.
5010 @end table
5011
5012 @item slev
5013 Set level of side signal. Default is 1.
5014 Allowed range is from 0.015625 to 64.
5015
5016 @item sbal
5017 Set balance of side signal. Default is 0.
5018 Allowed range is from -1 to 1.
5019
5020 @item mlev
5021 Set level of the middle signal. Default is 1.
5022 Allowed range is from 0.015625 to 64.
5023
5024 @item mpan
5025 Set middle signal pan. Default is 0. Allowed range is from -1 to 1.
5026
5027 @item base
5028 Set stereo base between mono and inversed channels. Default is 0.
5029 Allowed range is from -1 to 1.
5030
5031 @item delay
5032 Set delay in milliseconds how much to delay left from right channel and
5033 vice versa. Default is 0. Allowed range is from -20 to 20.
5034
5035 @item sclevel
5036 Set S/C level. Default is 1. Allowed range is from 1 to 100.
5037
5038 @item phase
5039 Set the stereo phase in degrees. Default is 0. Allowed range is from 0 to 360.
5040
5041 @item bmode_in, bmode_out
5042 Set balance mode for balance_in/balance_out option.
5043
5044 Can be one of the following:
5045
5046 @table @samp
5047 @item balance
5048 Classic balance mode. Attenuate one channel at time.
5049 Gain is raised up to 1.
5050
5051 @item amplitude
5052 Similar as classic mode above but gain is raised up to 2.
5053
5054 @item power
5055 Equal power distribution, from -6dB to +6dB range.
5056 @end table
5057 @end table
5058
5059 @subsection Examples
5060
5061 @itemize
5062 @item
5063 Apply karaoke like effect:
5064 @example
5065 stereotools=mlev=0.015625
5066 @end example
5067
5068 @item
5069 Convert M/S signal to L/R:
5070 @example
5071 "stereotools=mode=ms>lr"
5072 @end example
5073 @end itemize
5074
5075 @section stereowiden
5076
5077 This filter enhance the stereo effect by suppressing signal common to both
5078 channels and by delaying the signal of left into right and vice versa,
5079 thereby widening the stereo effect.
5080
5081 The filter accepts the following options:
5082
5083 @table @option
5084 @item delay
5085 Time in milliseconds of the delay of left signal into right and vice versa.
5086 Default is 20 milliseconds.
5087
5088 @item feedback
5089 Amount of gain in delayed signal into right and vice versa. Gives a delay
5090 effect of left signal in right output and vice versa which gives widening
5091 effect. Default is 0.3.
5092
5093 @item crossfeed
5094 Cross feed of left into right with inverted phase. This helps in suppressing
5095 the mono. If the value is 1 it will cancel all the signal common to both
5096 channels. Default is 0.3.
5097
5098 @item drymix
5099 Set level of input signal of original channel. Default is 0.8.
5100 @end table
5101
5102 @section superequalizer
5103 Apply 18 band equalizer.
5104
5105 The filter accepts the following options:
5106 @table @option
5107 @item 1b
5108 Set 65Hz band gain.
5109 @item 2b
5110 Set 92Hz band gain.
5111 @item 3b
5112 Set 131Hz band gain.
5113 @item 4b
5114 Set 185Hz band gain.
5115 @item 5b
5116 Set 262Hz band gain.
5117 @item 6b
5118 Set 370Hz band gain.
5119 @item 7b
5120 Set 523Hz band gain.
5121 @item 8b
5122 Set 740Hz band gain.
5123 @item 9b
5124 Set 1047Hz band gain.
5125 @item 10b
5126 Set 1480Hz band gain.
5127 @item 11b
5128 Set 2093Hz band gain.
5129 @item 12b
5130 Set 2960Hz band gain.
5131 @item 13b
5132 Set 4186Hz band gain.
5133 @item 14b
5134 Set 5920Hz band gain.
5135 @item 15b
5136 Set 8372Hz band gain.
5137 @item 16b
5138 Set 11840Hz band gain.
5139 @item 17b
5140 Set 16744Hz band gain.
5141 @item 18b
5142 Set 20000Hz band gain.
5143 @end table
5144
5145 @section surround
5146 Apply audio surround upmix filter.
5147
5148 This filter allows to produce multichannel output from audio stream.
5149
5150 The filter accepts the following options:
5151
5152 @table @option
5153 @item chl_out
5154 Set output channel layout. By default, this is @var{5.1}.
5155
5156 See @ref{channel layout syntax,,the Channel Layout section in the ffmpeg-utils(1) manual,ffmpeg-utils}
5157 for the required syntax.
5158
5159 @item chl_in
5160 Set input channel layout. By default, this is @var{stereo}.
5161
5162 See @ref{channel layout syntax,,the Channel Layout section in the ffmpeg-utils(1) manual,ffmpeg-utils}
5163 for the required syntax.
5164
5165 @item level_in
5166 Set input volume level. By default, this is @var{1}.
5167
5168 @item level_out
5169 Set output volume level. By default, this is @var{1}.
5170
5171 @item lfe
5172 Enable LFE channel output if output channel layout has it. By default, this is enabled.
5173
5174 @item lfe_low
5175 Set LFE low cut off frequency. By default, this is @var{128} Hz.
5176
5177 @item lfe_high
5178 Set LFE high cut off frequency. By default, this is @var{256} Hz.
5179
5180 @item lfe_mode
5181 Set LFE mode, can be @var{add} or @var{sub}. Default is @var{add}.
5182 In @var{add} mode, LFE channel is created from input audio and added to output.
5183 In @var{sub} mode, LFE channel is created from input audio and added to output but
5184 also all non-LFE output channels are subtracted with output LFE channel.
5185
5186 @item angle
5187 Set angle of stereo surround transform, Allowed range is from @var{0} to @var{360}.
5188 Default is @var{90}.
5189
5190 @item fc_in
5191 Set front center input volume. By default, this is @var{1}.
5192
5193 @item fc_out
5194 Set front center output volume. By default, this is @var{1}.
5195
5196 @item fl_in
5197 Set front left input volume. By default, this is @var{1}.
5198
5199 @item fl_out
5200 Set front left output volume. By default, this is @var{1}.
5201
5202 @item fr_in
5203 Set front right input volume. By default, this is @var{1}.
5204
5205 @item fr_out
5206 Set front right output volume. By default, this is @var{1}.
5207
5208 @item sl_in
5209 Set side left input volume. By default, this is @var{1}.
5210
5211 @item sl_out
5212 Set side left output volume. By default, this is @var{1}.
5213
5214 @item sr_in
5215 Set side right input volume. By default, this is @var{1}.
5216
5217 @item sr_out
5218 Set side right output volume. By default, this is @var{1}.
5219
5220 @item bl_in
5221 Set back left input volume. By default, this is @var{1}.
5222
5223 @item bl_out
5224 Set back left output volume. By default, this is @var{1}.
5225
5226 @item br_in
5227 Set back right input volume. By default, this is @var{1}.
5228
5229 @item br_out
5230 Set back right output volume. By default, this is @var{1}.
5231
5232 @item bc_in
5233 Set back center input volume. By default, this is @var{1}.
5234
5235 @item bc_out
5236 Set back center output volume. By default, this is @var{1}.
5237
5238 @item lfe_in
5239 Set LFE input volume. By default, this is @var{1}.
5240
5241 @item lfe_out
5242 Set LFE output volume. By default, this is @var{1}.
5243
5244 @item allx
5245 Set spread usage of stereo image across X axis for all channels.
5246
5247 @item ally
5248 Set spread usage of stereo image across Y axis for all channels.
5249
5250 @item fcx, flx, frx, blx, brx, slx, srx, bcx
5251 Set spread usage of stereo image across X axis for each channel.
5252
5253 @item fcy, fly, fry, bly, bry, sly, sry, bcy
5254 Set spread usage of stereo image across Y axis for each channel.
5255
5256 @item win_size
5257 Set window size. Allowed range is from @var{1024} to @var{65536}. Default size is @var{4096}.
5258
5259 @item win_func
5260 Set window function.
5261
5262 It accepts the following values:
5263 @table @samp
5264 @item rect
5265 @item bartlett
5266 @item hann, hanning
5267 @item hamming
5268 @item blackman
5269 @item welch
5270 @item flattop
5271 @item bharris
5272 @item bnuttall
5273 @item bhann
5274 @item sine
5275 @item nuttall
5276 @item lanczos
5277 @item gauss
5278 @item tukey
5279 @item dolph
5280 @item cauchy
5281 @item parzen
5282 @item poisson
5283 @item bohman
5284 @end table
5285 Default is @code{hann}.
5286
5287 @item overlap
5288 Set window overlap. If set to 1, the recommended overlap for selected
5289 window function will be picked. Default is @code{0.5}.
5290 @end table
5291
5292 @section treble, highshelf
5293
5294 Boost or cut treble (upper) frequencies of the audio using a two-pole
5295 shelving filter with a response similar to that of a standard
5296 hi-fi's tone-controls. This is also known as shelving equalisation (EQ).
5297
5298 The filter accepts the following options:
5299
5300 @table @option
5301 @item gain, g
5302 Give the gain at whichever is the lower of ~22 kHz and the
5303 Nyquist frequency. Its useful range is about -20 (for a large cut)
5304 to +20 (for a large boost). Beware of clipping when using a positive gain.
5305
5306 @item frequency, f
5307 Set the filter's central frequency and so can be used
5308 to extend or reduce the frequency range to be boosted or cut.
5309 The default value is @code{3000} Hz.
5310
5311 @item width_type, t
5312 Set method to specify band-width of filter.
5313 @table @option
5314 @item h
5315 Hz
5316 @item q
5317 Q-Factor
5318 @item o
5319 octave
5320 @item s
5321 slope
5322 @item k
5323 kHz
5324 @end table
5325
5326 @item width, w
5327 Determine how steep is the filter's shelf transition.
5328
5329 @item mix, m
5330 How much to use filtered signal in output. Default is 1.
5331 Range is between 0 and 1.
5332
5333 @item channels, c
5334 Specify which channels to filter, by default all available are filtered.
5335 @end table
5336
5337 @subsection Commands
5338
5339 This filter supports the following commands:
5340 @table @option
5341 @item frequency, f
5342 Change treble frequency.
5343 Syntax for the command is : "@var{frequency}"
5344
5345 @item width_type, t
5346 Change treble width_type.
5347 Syntax for the command is : "@var{width_type}"
5348
5349 @item width, w
5350 Change treble width.
5351 Syntax for the command is : "@var{width}"
5352
5353 @item gain, g
5354 Change treble gain.
5355 Syntax for the command is : "@var{gain}"
5356
5357 @item mix, m
5358 Change treble mix.
5359 Syntax for the command is : "@var{mix}"
5360 @end table
5361
5362 @section tremolo
5363
5364 Sinusoidal amplitude modulation.
5365
5366 The filter accepts the following options:
5367
5368 @table @option
5369 @item f
5370 Modulation frequency in Hertz. Modulation frequencies in the subharmonic range
5371 (20 Hz or lower) will result in a tremolo effect.
5372 This filter may also be used as a ring modulator by specifying
5373 a modulation frequency higher than 20 Hz.
5374 Range is 0.1 - 20000.0. Default value is 5.0 Hz.
5375
5376 @item d
5377 Depth of modulation as a percentage. Range is 0.0 - 1.0.
5378 Default value is 0.5.
5379 @end table
5380
5381 @section vibrato
5382
5383 Sinusoidal phase modulation.
5384
5385 The filter accepts the following options:
5386
5387 @table @option
5388 @item f
5389 Modulation frequency in Hertz.
5390 Range is 0.1 - 20000.0. Default value is 5.0 Hz.
5391
5392 @item d
5393 Depth of modulation as a percentage. Range is 0.0 - 1.0.
5394 Default value is 0.5.
5395 @end table
5396
5397 @section volume
5398
5399 Adjust the input audio volume.
5400
5401 It accepts the following parameters:
5402 @table @option
5403
5404 @item volume
5405 Set audio volume expression.
5406
5407 Output values are clipped to the maximum value.
5408
5409 The output audio volume is given by the relation:
5410 @example
5411 @var{output_volume} = @var{volume} * @var{input_volume}
5412 @end example
5413
5414 The default value for @var{volume} is "1.0".
5415
5416 @item precision
5417 This parameter represents the mathematical precision.
5418
5419 It determines which input sample formats will be allowed, which affects the
5420 precision of the volume scaling.
5421
5422 @table @option
5423 @item fixed
5424 8-bit fixed-point; this limits input sample format to U8, S16, and S32.
5425 @item float
5426 32-bit floating-point; this limits input sample format to FLT. (default)
5427 @item double
5428 64-bit floating-point; this limits input sample format to DBL.
5429 @end table
5430
5431 @item replaygain
5432 Choose the behaviour on encountering ReplayGain side data in input frames.
5433
5434 @table @option
5435 @item drop
5436 Remove ReplayGain side data, ignoring its contents (the default).
5437
5438 @item ignore
5439 Ignore ReplayGain side data, but leave it in the frame.
5440
5441 @item track
5442 Prefer the track gain, if present.
5443
5444 @item album
5445 Prefer the album gain, if present.
5446 @end table
5447
5448 @item replaygain_preamp
5449 Pre-amplification gain in dB to apply to the selected replaygain gain.
5450
5451 Default value for @var{replaygain_preamp} is 0.0.
5452
5453 @item eval
5454 Set when the volume expression is evaluated.
5455
5456 It accepts the following values:
5457 @table @samp
5458 @item once
5459 only evaluate expression once during the filter initialization, or
5460 when the @samp{volume} command is sent
5461
5462 @item frame
5463 evaluate expression for each incoming frame
5464 @end table
5465
5466 Default value is @samp{once}.
5467 @end table
5468
5469 The volume expression can contain the following parameters.
5470
5471 @table @option
5472 @item n
5473 frame number (starting at zero)
5474 @item nb_channels
5475 number of channels
5476 @item nb_consumed_samples
5477 number of samples consumed by the filter
5478 @item nb_samples
5479 number of samples in the current frame
5480 @item pos
5481 original frame position in the file
5482 @item pts
5483 frame PTS
5484 @item sample_rate
5485 sample rate
5486 @item startpts
5487 PTS at start of stream
5488 @item startt
5489 time at start of stream
5490 @item t
5491 frame time
5492 @item tb
5493 timestamp timebase
5494 @item volume
5495 last set volume value
5496 @end table
5497
5498 Note that when @option{eval} is set to @samp{once} only the
5499 @var{sample_rate} and @var{tb} variables are available, all other
5500 variables will evaluate to NAN.
5501
5502 @subsection Commands
5503
5504 This filter supports the following commands:
5505 @table @option
5506 @item volume
5507 Modify the volume expression.
5508 The command accepts the same syntax of the corresponding option.
5509
5510 If the specified expression is not valid, it is kept at its current
5511 value.
5512 @item replaygain_noclip
5513 Prevent clipping by limiting the gain applied.
5514
5515 Default value for @var{replaygain_noclip} is 1.
5516
5517 @end table
5518
5519 @subsection Examples
5520
5521 @itemize
5522 @item
5523 Halve the input audio volume:
5524 @example
5525 volume=volume=0.5
5526 volume=volume=1/2
5527 volume=volume=-6.0206dB
5528 @end example
5529
5530 In all the above example the named key for @option{volume} can be
5531 omitted, for example like in:
5532 @example
5533 volume=0.5
5534 @end example
5535
5536 @item
5537 Increase input audio power by 6 decibels using fixed-point precision:
5538 @example
5539 volume=volume=6dB:precision=fixed
5540 @end example
5541
5542 @item
5543 Fade volume after time 10 with an annihilation period of 5 seconds:
5544 @example
5545 volume='if(lt(t,10),1,max(1-(t-10)/5,0))':eval=frame
5546 @end example
5547 @end itemize
5548
5549 @section volumedetect
5550
5551 Detect the volume of the input video.
5552
5553 The filter has no parameters. The input is not modified. Statistics about
5554 the volume will be printed in the log when the input stream end is reached.
5555
5556 In particular it will show the mean volume (root mean square), maximum
5557 volume (on a per-sample basis), and the beginning of a histogram of the
5558 registered volume values (from the maximum value to a cumulated 1/1000 of
5559 the samples).
5560
5561 All volumes are in decibels relative to the maximum PCM value.
5562
5563 @subsection Examples
5564
5565 Here is an excerpt of the output:
5566 @example
5567 [Parsed_volumedetect_0 @ 0xa23120] mean_volume: -27 dB
5568 [Parsed_volumedetect_0 @ 0xa23120] max_volume: -4 dB
5569 [Parsed_volumedetect_0 @ 0xa23120] histogram_4db: 6
5570 [Parsed_volumedetect_0 @ 0xa23120] histogram_5db: 62
5571 [Parsed_volumedetect_0 @ 0xa23120] histogram_6db: 286
5572 [Parsed_volumedetect_0 @ 0xa23120] histogram_7db: 1042
5573 [Parsed_volumedetect_0 @ 0xa23120] histogram_8db: 2551
5574 [Parsed_volumedetect_0 @ 0xa23120] histogram_9db: 4609
5575 [Parsed_volumedetect_0 @ 0xa23120] histogram_10db: 8409
5576 @end example
5577
5578 It means that:
5579 @itemize
5580 @item
5581 The mean square energy is approximately -27 dB, or 10^-2.7.
5582 @item
5583 The largest sample is at -4 dB, or more precisely between -4 dB and -5 dB.
5584 @item
5585 There are 6 samples at -4 dB, 62 at -5 dB, 286 at -6 dB, etc.
5586 @end itemize
5587
5588 In other words, raising the volume by +4 dB does not cause any clipping,
5589 raising it by +5 dB causes clipping for 6 samples, etc.
5590
5591 @c man end AUDIO FILTERS
5592
5593 @chapter Audio Sources
5594 @c man begin AUDIO SOURCES
5595
5596 Below is a description of the currently available audio sources.
5597
5598 @section abuffer
5599
5600 Buffer audio frames, and make them available to the filter chain.
5601
5602 This source is mainly intended for a programmatic use, in particular
5603 through the interface defined in @file{libavfilter/asrc_abuffer.h}.
5604
5605 It accepts the following parameters:
5606 @table @option
5607
5608 @item time_base
5609 The timebase which will be used for timestamps of submitted frames. It must be
5610 either a floating-point number or in @var{numerator}/@var{denominator} form.
5611
5612 @item sample_rate
5613 The sample rate of the incoming audio buffers.
5614
5615 @item sample_fmt
5616 The sample format of the incoming audio buffers.
5617 Either a sample format name or its corresponding integer representation from
5618 the enum AVSampleFormat in @file{libavutil/samplefmt.h}
5619
5620 @item channel_layout
5621 The channel layout of the incoming audio buffers.
5622 Either a channel layout name from channel_layout_map in
5623 @file{libavutil/channel_layout.c} or its corresponding integer representation
5624 from the AV_CH_LAYOUT_* macros in @file{libavutil/channel_layout.h}
5625
5626 @item channels
5627 The number of channels of the incoming audio buffers.
5628 If both @var{channels} and @var{channel_layout} are specified, then they
5629 must be consistent.
5630
5631 @end table
5632
5633 @subsection Examples
5634
5635 @example
5636 abuffer=sample_rate=44100:sample_fmt=s16p:channel_layout=stereo
5637 @end example
5638
5639 will instruct the source to accept planar 16bit signed stereo at 44100Hz.
5640 Since the sample format with name "s16p" corresponds to the number
5641 6 and the "stereo" channel layout corresponds to the value 0x3, this is
5642 equivalent to:
5643 @example
5644 abuffer=sample_rate=44100:sample_fmt=6:channel_layout=0x3
5645 @end example
5646
5647 @section aevalsrc
5648
5649 Generate an audio signal specified by an expression.
5650
5651 This source accepts in input one or more expressions (one for each
5652 channel), which are evaluated and used to generate a corresponding
5653 audio signal.
5654
5655 This source accepts the following options:
5656
5657 @table @option
5658 @item exprs
5659 Set the '|'-separated expressions list for each separate channel. In case the
5660 @option{channel_layout} option is not specified, the selected channel layout
5661 depends on the number of provided expressions. Otherwise the last
5662 specified expression is applied to the remaining output channels.
5663
5664 @item channel_layout, c
5665 Set the channel layout. The number of channels in the specified layout
5666 must be equal to the number of specified expressions.
5667
5668 @item duration, d
5669 Set the minimum duration of the sourced audio. See
5670 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
5671 for the accepted syntax.
5672 Note that the resulting duration may be greater than the specified
5673 duration, as the generated audio is always cut at the end of a
5674 complete frame.
5675
5676 If not specified, or the expressed duration is negative, the audio is
5677 supposed to be generated forever.
5678
5679 @item nb_samples, n
5680 Set the number of samples per channel per each output frame,
5681 default to 1024.
5682
5683 @item sample_rate, s
5684 Specify the sample rate, default to 44100.
5685 @end table
5686
5687 Each expression in @var{exprs} can contain the following constants:
5688
5689 @table @option
5690 @item n
5691 number of the evaluated sample, starting from 0
5692
5693 @item t
5694 time of the evaluated sample expressed in seconds, starting from 0
5695
5696 @item s
5697 sample rate
5698
5699 @end table
5700
5701 @subsection Examples
5702
5703 @itemize
5704 @item
5705 Generate silence:
5706 @example
5707 aevalsrc=0
5708 @end example
5709
5710 @item
5711 Generate a sin signal with frequency of 440 Hz, set sample rate to
5712 8000 Hz:
5713 @example
5714 aevalsrc="sin(440*2*PI*t):s=8000"
5715 @end example
5716
5717 @item
5718 Generate a two channels signal, specify the channel layout (Front
5719 Center + Back Center) explicitly:
5720 @example
5721 aevalsrc="sin(420*2*PI*t)|cos(430*2*PI*t):c=FC|BC"
5722 @end example
5723
5724 @item
5725 Generate white noise:
5726 @example
5727 aevalsrc="-2+random(0)"
5728 @end example
5729
5730 @item
5731 Generate an amplitude modulated signal:
5732 @example
5733 aevalsrc="sin(10*2*PI*t)*sin(880*2*PI*t)"
5734 @end example
5735
5736 @item
5737 Generate 2.5 Hz binaural beats on a 360 Hz carrier:
5738 @example
5739 aevalsrc="0.1*sin(2*PI*(360-2.5/2)*t) | 0.1*sin(2*PI*(360+2.5/2)*t)"
5740 @end example
5741
5742 @end itemize
5743
5744 @section anullsrc
5745
5746 The null audio source, return unprocessed audio frames. It is mainly useful
5747 as a template and to be employed in analysis / debugging tools, or as
5748 the source for filters which ignore the input data (for example the sox
5749 synth filter).
5750
5751 This source accepts the following options:
5752
5753 @table @option
5754
5755 @item channel_layout, cl
5756
5757 Specifies the channel layout, and can be either an integer or a string
5758 representing a channel layout. The default value of @var{channel_layout}
5759 is "stereo".
5760
5761 Check the channel_layout_map definition in
5762 @file{libavutil/channel_layout.c} for the mapping between strings and
5763 channel layout values.
5764
5765 @item sample_rate, r
5766 Specifies the sample rate, and defaults to 44100.
5767
5768 @item nb_samples, n
5769 Set the number of samples per requested frames.
5770
5771 @end table
5772
5773 @subsection Examples
5774
5775 @itemize
5776 @item
5777 Set the sample rate to 48000 Hz and the channel layout to AV_CH_LAYOUT_MONO.
5778 @example
5779 anullsrc=r=48000:cl=4
5780 @end example
5781
5782 @item
5783 Do the same operation with a more obvious syntax:
5784 @example
5785 anullsrc=r=48000:cl=mono
5786 @end example
5787 @end itemize
5788
5789 All the parameters need to be explicitly defined.
5790
5791 @section flite
5792
5793 Synthesize a voice utterance using the libflite library.
5794
5795 To enable compilation of this filter you need to configure FFmpeg with
5796 @code{--enable-libflite}.
5797
5798 Note that versions of the flite library prior to 2.0 are not thread-safe.
5799
5800 The filter accepts the following options:
5801
5802 @table @option
5803
5804 @item list_voices
5805 If set to 1, list the names of the available voices and exit
5806 immediately. Default value is 0.
5807
5808 @item nb_samples, n
5809 Set the maximum number of samples per frame. Default value is 512.
5810
5811 @item textfile
5812 Set the filename containing the text to speak.
5813
5814 @item text
5815 Set the text to speak.
5816
5817 @item voice, v
5818 Set the voice to use for the speech synthesis. Default value is
5819 @code{kal}. See also the @var{list_voices} option.
5820 @end table
5821
5822 @subsection Examples
5823
5824 @itemize
5825 @item
5826 Read from file @file{speech.txt}, and synthesize the text using the
5827 standard flite voice:
5828 @example
5829 flite=textfile=speech.txt
5830 @end example
5831
5832 @item
5833 Read the specified text selecting the @code{slt} voice:
5834 @example
5835 flite=text='So fare thee well, poor devil of a Sub-Sub, whose commentator I am':voice=slt
5836 @end example
5837
5838 @item
5839 Input text to ffmpeg:
5840 @example
5841 ffmpeg -f lavfi -i flite=text='So fare thee well, poor devil of a Sub-Sub, whose commentator I am':voice=slt
5842 @end example
5843
5844 @item
5845 Make @file{ffplay} speak the specified text, using @code{flite} and
5846 the @code{lavfi} device:
5847 @example
5848 ffplay -f lavfi flite=text='No more be grieved for which that thou hast done.'
5849 @end example
5850 @end itemize
5851
5852 For more information about libflite, check:
5853 @url{http://www.festvox.org/flite/}
5854
5855 @section anoisesrc
5856
5857 Generate a noise audio signal.
5858
5859 The filter accepts the following options:
5860
5861 @table @option
5862 @item sample_rate, r
5863 Specify the sample rate. Default value is 48000 Hz.
5864
5865 @item amplitude, a
5866 Specify the amplitude (0.0 - 1.0) of the generated audio stream. Default value
5867 is 1.0.
5868
5869 @item duration, d
5870 Specify the duration of the generated audio stream. Not specifying this option
5871 results in noise with an infinite length.
5872
5873 @item color, colour, c
5874 Specify the color of noise. Available noise colors are white, pink, brown,
5875 blue and violet. Default color is white.
5876
5877 @item seed, s
5878 Specify a value used to seed the PRNG.
5879
5880 @item nb_samples, n
5881 Set the number of samples per each output frame, default is 1024.
5882 @end table
5883
5884 @subsection Examples
5885
5886 @itemize
5887
5888 @item
5889 Generate 60 seconds of pink noise, with a 44.1 kHz sampling rate and an amplitude of 0.5:
5890 @example
5891 anoisesrc=d=60:c=pink:r=44100:a=0.5
5892 @end example
5893 @end itemize
5894
5895 @section hilbert
5896
5897 Generate odd-tap Hilbert transform FIR coefficients.
5898
5899 The resulting stream can be used with @ref{afir} filter for phase-shifting
5900 the signal by 90 degrees.
5901
5902 This is used in many matrix coding schemes and for analytic signal generation.
5903 The process is often written as a multiplication by i (or j), the imaginary unit.
5904
5905 The filter accepts the following options:
5906
5907 @table @option
5908
5909 @item sample_rate, s
5910 Set sample rate, default is 44100.
5911
5912 @item taps, t
5913 Set length of FIR filter, default is 22051.
5914
5915 @item nb_samples, n
5916 Set number of samples per each frame.
5917
5918 @item win_func, w
5919 Set window function to be used when generating FIR coefficients.
5920 @end table
5921
5922 @section sinc
5923
5924 Generate a sinc kaiser-windowed low-pass, high-pass, band-pass, or band-reject FIR coefficients.
5925
5926 The resulting stream can be used with @ref{afir} filter for filtering the audio signal.
5927
5928 The filter accepts the following options:
5929
5930 @table @option
5931 @item sample_rate, r
5932 Set sample rate, default is 44100.
5933
5934 @item nb_samples, n
5935 Set number of samples per each frame. Default is 1024.
5936
5937 @item hp
5938 Set high-pass frequency. Default is 0.
5939
5940 @item lp
5941 Set low-pass frequency. Default is 0.
5942 If high-pass frequency is lower than low-pass frequency and low-pass frequency
5943 is higher than 0 then filter will create band-pass filter coefficients,
5944 otherwise band-reject filter coefficients.
5945
5946 @item phase
5947 Set filter phase response. Default is 50. Allowed range is from 0 to 100.
5948
5949 @item beta
5950 Set Kaiser window beta.
5951
5952 @item att
5953 Set stop-band attenuation. Default is 120dB, allowed range is from 40 to 180 dB.
5954
5955 @item round
5956 Enable rounding, by default is disabled.
5957
5958 @item hptaps
5959 Set number of taps for high-pass filter.
5960
5961 @item lptaps
5962 Set number of taps for low-pass filter.
5963 @end table
5964
5965 @section sine
5966
5967 Generate an audio signal made of a sine wave with amplitude 1/8.
5968
5969 The audio signal is bit-exact.
5970
5971 The filter accepts the following options:
5972
5973 @table @option
5974
5975 @item frequency, f
5976 Set the carrier frequency. Default is 440 Hz.
5977
5978 @item beep_factor, b
5979 Enable a periodic beep every second with frequency @var{beep_factor} times
5980 the carrier frequency. Default is 0, meaning the beep is disabled.
5981
5982 @item sample_rate, r
5983 Specify the sample rate, default is 44100.
5984
5985 @item duration, d
5986 Specify the duration of the generated audio stream.
5987
5988 @item samples_per_frame
5989 Set the number of samples per output frame.
5990
5991 The expression can contain the following constants:
5992
5993 @table @option
5994 @item n
5995 The (sequential) number of the output audio frame, starting from 0.
5996
5997 @item pts
5998 The PTS (Presentation TimeStamp) of the output audio frame,
5999 expressed in @var{TB} units.
6000
6001 @item t
6002 The PTS of the output audio frame, expressed in seconds.
6003
6004 @item TB
6005 The timebase of the output audio frames.
6006 @end table
6007
6008 Default is @code{1024}.
6009 @end table
6010
6011 @subsection Examples
6012
6013 @itemize
6014
6015 @item
6016 Generate a simple 440 Hz sine wave:
6017 @example
6018 sine
6019 @end example
6020
6021 @item
6022 Generate a 220 Hz sine wave with a 880 Hz beep each second, for 5 seconds:
6023 @example
6024 sine=220:4:d=5
6025 sine=f=220:b=4:d=5
6026 sine=frequency=220:beep_factor=4:duration=5
6027 @end example
6028
6029 @item
6030 Generate a 1 kHz sine wave following @code{1602,1601,1602,1601,1602} NTSC
6031 pattern:
6032 @example
6033 sine=1000:samples_per_frame='st(0,mod(n,5)); 1602-not(not(eq(ld(0),1)+eq(ld(0),3)))'
6034 @end example
6035 @end itemize
6036
6037 @c man end AUDIO SOURCES
6038
6039 @chapter Audio Sinks
6040 @c man begin AUDIO SINKS
6041
6042 Below is a description of the currently available audio sinks.
6043
6044 @section abuffersink
6045
6046 Buffer audio frames, and make them available to the end of filter chain.
6047
6048 This sink is mainly intended for programmatic use, in particular
6049 through the interface defined in @file{libavfilter/buffersink.h}
6050 or the options system.
6051
6052 It accepts a pointer to an AVABufferSinkContext structure, which
6053 defines the incoming buffers' formats, to be passed as the opaque
6054 parameter to @code{avfilter_init_filter} for initialization.
6055 @section anullsink
6056
6057 Null audio sink; do absolutely nothing with the input audio. It is
6058 mainly useful as a template and for use in analysis / debugging
6059 tools.
6060
6061 @c man end AUDIO SINKS
6062
6063 @chapter Video Filters
6064 @c man begin VIDEO FILTERS
6065
6066 When you configure your FFmpeg build, you can disable any of the
6067 existing filters using @code{--disable-filters}.
6068 The configure output will show the video filters included in your
6069 build.
6070
6071 Below is a description of the currently available video filters.
6072
6073 @section addroi
6074
6075 Mark a region of interest in a video frame.
6076
6077 The frame data is passed through unchanged, but metadata is attached
6078 to the frame indicating regions of interest which can affect the
6079 behaviour of later encoding.  Multiple regions can be marked by
6080 applying the filter multiple times.
6081
6082 @table @option
6083 @item x
6084 Region distance in pixels from the left edge of the frame.
6085 @item y
6086 Region distance in pixels from the top edge of the frame.
6087 @item w
6088 Region width in pixels.
6089 @item h
6090 Region height in pixels.
6091
6092 The parameters @var{x}, @var{y}, @var{w} and @var{h} are expressions,
6093 and may contain the following variables:
6094 @table @option
6095 @item iw
6096 Width of the input frame.
6097 @item ih
6098 Height of the input frame.
6099 @end table
6100
6101 @item qoffset
6102 Quantisation offset to apply within the region.
6103
6104 This must be a real value in the range -1 to +1.  A value of zero
6105 indicates no quality change.  A negative value asks for better quality
6106 (less quantisation), while a positive value asks for worse quality
6107 (greater quantisation).
6108
6109 The range is calibrated so that the extreme values indicate the
6110 largest possible offset - if the rest of the frame is encoded with the
6111 worst possible quality, an offset of -1 indicates that this region
6112 should be encoded with the best possible quality anyway.  Intermediate
6113 values are then interpolated in some codec-dependent way.
6114
6115 For example, in 10-bit H.264 the quantisation parameter varies between
6116 -12 and 51.  A typical qoffset value of -1/10 therefore indicates that
6117 this region should be encoded with a QP around one-tenth of the full
6118 range better than the rest of the frame.  So, if most of the frame
6119 were to be encoded with a QP of around 30, this region would get a QP
6120 of around 24 (an offset of approximately -1/10 * (51 - -12) = -6.3).
6121 An extreme value of -1 would indicate that this region should be
6122 encoded with the best possible quality regardless of the treatment of
6123 the rest of the frame - that is, should be encoded at a QP of -12.
6124 @item clear
6125 If set to true, remove any existing regions of interest marked on the
6126 frame before adding the new one.
6127 @end table
6128
6129 @subsection Examples
6130
6131 @itemize
6132 @item
6133 Mark the centre quarter of the frame as interesting.
6134 @example
6135 addroi=iw/4:ih/4:iw/2:ih/2:-1/10
6136 @end example
6137 @item
6138 Mark the 100-pixel-wide region on the left edge of the frame as very
6139 uninteresting (to be encoded at much lower quality than the rest of
6140 the frame).
6141 @example
6142 addroi=0:0:100:ih:+1/5
6143 @end example
6144 @end itemize
6145
6146 @section alphaextract
6147
6148 Extract the alpha component from the input as a grayscale video. This
6149 is especially useful with the @var{alphamerge} filter.
6150
6151 @section alphamerge
6152
6153 Add or replace the alpha component of the primary input with the
6154 grayscale value of a second input. This is intended for use with
6155 @var{alphaextract} to allow the transmission or storage of frame
6156 sequences that have alpha in a format that doesn't support an alpha
6157 channel.
6158
6159 For example, to reconstruct full frames from a normal YUV-encoded video
6160 and a separate video created with @var{alphaextract}, you might use:
6161 @example
6162 movie=in_alpha.mkv [alpha]; [in][alpha] alphamerge [out]
6163 @end example
6164
6165 Since this filter is designed for reconstruction, it operates on frame
6166 sequences without considering timestamps, and terminates when either
6167 input reaches end of stream. This will cause problems if your encoding
6168 pipeline drops frames. If you're trying to apply an image as an
6169 overlay to a video stream, consider the @var{overlay} filter instead.
6170
6171 @section amplify
6172
6173 Amplify differences between current pixel and pixels of adjacent frames in
6174 same pixel location.
6175
6176 This filter accepts the following options:
6177
6178 @table @option
6179 @item radius
6180 Set frame radius. Default is 2. Allowed range is from 1 to 63.
6181 For example radius of 3 will instruct filter to calculate average of 7 frames.
6182
6183 @item factor
6184 Set factor to amplify difference. Default is 2. Allowed range is from 0 to 65535.
6185
6186 @item threshold
6187 Set threshold for difference amplification. Any difference greater or equal to
6188 this value will not alter source pixel. Default is 10.
6189 Allowed range is from 0 to 65535.
6190
6191 @item tolerance
6192 Set tolerance for difference amplification. Any difference lower to
6193 this value will not alter source pixel. Default is 0.
6194 Allowed range is from 0 to 65535.
6195
6196 @item low
6197 Set lower limit for changing source pixel. Default is 65535. Allowed range is from 0 to 65535.
6198 This option controls maximum possible value that will decrease source pixel value.
6199
6200 @item high
6201 Set high limit for changing source pixel. Default is 65535. Allowed range is from 0 to 65535.
6202 This option controls maximum possible value that will increase source pixel value.
6203
6204 @item planes
6205 Set which planes to filter. Default is all. Allowed range is from 0 to 15.
6206 @end table
6207
6208 @subsection Commands
6209
6210 This filter supports the following @ref{commands} that corresponds to option of same name:
6211 @table @option
6212 @item factor
6213 @item threshold
6214 @item tolerance
6215 @item low
6216 @item high
6217 @item planes
6218 @end table
6219
6220 @section ass
6221
6222 Same as the @ref{subtitles} filter, except that it doesn't require libavcodec
6223 and libavformat to work. On the other hand, it is limited to ASS (Advanced
6224 Substation Alpha) subtitles files.
6225
6226 This filter accepts the following option in addition to the common options from
6227 the @ref{subtitles} filter:
6228
6229 @table @option
6230 @item shaping
6231 Set the shaping engine
6232
6233 Available values are:
6234 @table @samp
6235 @item auto
6236 The default libass shaping engine, which is the best available.
6237 @item simple
6238 Fast, font-agnostic shaper that can do only substitutions
6239 @item complex
6240 Slower shaper using OpenType for substitutions and positioning
6241 @end table
6242
6243 The default is @code{auto}.
6244 @end table
6245
6246 @section atadenoise
6247 Apply an Adaptive Temporal Averaging Denoiser to the video input.
6248
6249 The filter accepts the following options:
6250
6251 @table @option
6252 @item 0a
6253 Set threshold A for 1st plane. Default is 0.02.
6254 Valid range is 0 to 0.3.
6255
6256 @item 0b
6257 Set threshold B for 1st plane. Default is 0.04.
6258 Valid range is 0 to 5.
6259
6260 @item 1a
6261 Set threshold A for 2nd plane. Default is 0.02.
6262 Valid range is 0 to 0.3.
6263
6264 @item 1b
6265 Set threshold B for 2nd plane. Default is 0.04.
6266 Valid range is 0 to 5.
6267
6268 @item 2a
6269 Set threshold A for 3rd plane. Default is 0.02.
6270 Valid range is 0 to 0.3.
6271
6272 @item 2b
6273 Set threshold B for 3rd plane. Default is 0.04.
6274 Valid range is 0 to 5.
6275
6276 Threshold A is designed to react on abrupt changes in the input signal and
6277 threshold B is designed to react on continuous changes in the input signal.
6278
6279 @item s
6280 Set number of frames filter will use for averaging. Default is 9. Must be odd
6281 number in range [5, 129].
6282
6283 @item p
6284 Set what planes of frame filter will use for averaging. Default is all.
6285
6286 @item a
6287 Set what variant of algorithm filter will use for averaging. Default is @code{p} parallel.
6288 Alternatively can be set to @code{s} serial.
6289
6290 Parallel can be faster then serial, while other way around is never true.
6291 Parallel will abort early on first change being greater then thresholds, while serial
6292 will continue processing other side of frames if they are equal or bellow thresholds.
6293 @end table
6294
6295 @subsection Commands
6296 This filter supports same @ref{commands} as options except option @code{s}.
6297 The command accepts the same syntax of the corresponding option.
6298
6299 @section avgblur
6300
6301 Apply average blur filter.
6302
6303 The filter accepts the following options:
6304
6305 @table @option
6306 @item sizeX
6307 Set horizontal radius size.
6308
6309 @item planes
6310 Set which planes to filter. By default all planes are filtered.
6311
6312 @item sizeY
6313 Set vertical radius size, if zero it will be same as @code{sizeX}.
6314 Default is @code{0}.
6315 @end table
6316
6317 @subsection Commands
6318 This filter supports same commands as options.
6319 The command accepts the same syntax of the corresponding option.
6320
6321 If the specified expression is not valid, it is kept at its current
6322 value.
6323
6324 @section bbox
6325
6326 Compute the bounding box for the non-black pixels in the input frame
6327 luminance plane.
6328
6329 This filter computes the bounding box containing all the pixels with a
6330 luminance value greater than the minimum allowed value.
6331 The parameters describing the bounding box are printed on the filter
6332 log.
6333
6334 The filter accepts the following option:
6335
6336 @table @option
6337 @item min_val
6338 Set the minimal luminance value. Default is @code{16}.
6339 @end table
6340
6341 @section bilateral
6342 Apply bilateral filter, spatial smoothing while preserving edges.
6343
6344 The filter accepts the following options:
6345 @table @option
6346 @item sigmaS
6347 Set sigma of gaussian function to calculate spatial weight.
6348 Allowed range is 0 to 10. Default is 0.1.
6349
6350 @item sigmaR
6351 Set sigma of gaussian function to calculate range weight.
6352 Allowed range is 0 to 1. Default is 0.1.
6353
6354 @item planes
6355 Set planes to filter. Default is first only.
6356 @end table
6357
6358 @section bitplanenoise
6359
6360 Show and measure bit plane noise.
6361
6362 The filter accepts the following options:
6363
6364 @table @option
6365 @item bitplane
6366 Set which plane to analyze. Default is @code{1}.
6367
6368 @item filter
6369 Filter out noisy pixels from @code{bitplane} set above.
6370 Default is disabled.
6371 @end table
6372
6373 @section blackdetect
6374
6375 Detect video intervals that are (almost) completely black. Can be
6376 useful to detect chapter transitions, commercials, or invalid
6377 recordings. Output lines contains the time for the start, end and
6378 duration of the detected black interval expressed in seconds.
6379
6380 In order to display the output lines, you need to set the loglevel at
6381 least to the AV_LOG_INFO value.
6382
6383 The filter accepts the following options:
6384
6385 @table @option
6386 @item black_min_duration, d
6387 Set the minimum detected black duration expressed in seconds. It must
6388 be a non-negative floating point number.
6389
6390 Default value is 2.0.
6391
6392 @item picture_black_ratio_th, pic_th
6393 Set the threshold for considering a picture "black".
6394 Express the minimum value for the ratio:
6395 @example
6396 @var{nb_black_pixels} / @var{nb_pixels}
6397 @end example
6398
6399 for which a picture is considered black.
6400 Default value is 0.98.
6401
6402 @item pixel_black_th, pix_th
6403 Set the threshold for considering a pixel "black".
6404
6405 The threshold expresses the maximum pixel luminance value for which a
6406 pixel is considered "black". The provided value is scaled according to
6407 the following equation:
6408 @example
6409 @var{absolute_threshold} = @var{luminance_minimum_value} + @var{pixel_black_th} * @var{luminance_range_size}
6410 @end example
6411
6412 @var{luminance_range_size} and @var{luminance_minimum_value} depend on
6413 the input video format, the range is [0-255] for YUV full-range
6414 formats and [16-235] for YUV non full-range formats.
6415
6416 Default value is 0.10.
6417 @end table
6418
6419 The following example sets the maximum pixel threshold to the minimum
6420 value, and detects only black intervals of 2 or more seconds:
6421 @example
6422 blackdetect=d=2:pix_th=0.00
6423 @end example
6424
6425 @section blackframe
6426
6427 Detect frames that are (almost) completely black. Can be useful to
6428 detect chapter transitions or commercials. Output lines consist of
6429 the frame number of the detected frame, the percentage of blackness,
6430 the position in the file if known or -1 and the timestamp in seconds.
6431
6432 In order to display the output lines, you need to set the loglevel at
6433 least to the AV_LOG_INFO value.
6434
6435 This filter exports frame metadata @code{lavfi.blackframe.pblack}.
6436 The value represents the percentage of pixels in the picture that
6437 are below the threshold value.
6438
6439 It accepts the following parameters:
6440
6441 @table @option
6442
6443 @item amount
6444 The percentage of the pixels that have to be below the threshold; it defaults to
6445 @code{98}.
6446
6447 @item threshold, thresh
6448 The threshold below which a pixel value is considered black; it defaults to
6449 @code{32}.
6450
6451 @end table
6452
6453 @section blend, tblend
6454
6455 Blend two video frames into each other.
6456
6457 The @code{blend} filter takes two input streams and outputs one
6458 stream, the first input is the "top" layer and second input is
6459 "bottom" layer.  By default, the output terminates when the longest input terminates.
6460
6461 The @code{tblend} (time blend) filter takes two consecutive frames
6462 from one single stream, and outputs the result obtained by blending
6463 the new frame on top of the old frame.
6464
6465 A description of the accepted options follows.
6466
6467 @table @option
6468 @item c0_mode
6469 @item c1_mode
6470 @item c2_mode
6471 @item c3_mode
6472 @item all_mode
6473 Set blend mode for specific pixel component or all pixel components in case
6474 of @var{all_mode}. Default value is @code{normal}.
6475
6476 Available values for component modes are:
6477 @table @samp
6478 @item addition
6479 @item grainmerge
6480 @item and
6481 @item average
6482 @item burn
6483 @item darken
6484 @item difference
6485 @item grainextract
6486 @item divide
6487 @item dodge
6488 @item freeze
6489 @item exclusion
6490 @item extremity
6491 @item glow
6492 @item hardlight
6493 @item hardmix
6494 @item heat
6495 @item lighten
6496 @item linearlight
6497 @item multiply
6498 @item multiply128
6499 @item negation
6500 @item normal
6501 @item or
6502 @item overlay
6503 @item phoenix
6504 @item pinlight
6505 @item reflect
6506 @item screen
6507 @item softlight
6508 @item subtract
6509 @item vividlight
6510 @item xor
6511 @end table
6512
6513 @item c0_opacity
6514 @item c1_opacity
6515 @item c2_opacity
6516 @item c3_opacity
6517 @item all_opacity
6518 Set blend opacity for specific pixel component or all pixel components in case
6519 of @var{all_opacity}. Only used in combination with pixel component blend modes.
6520
6521 @item c0_expr
6522 @item c1_expr
6523 @item c2_expr
6524 @item c3_expr
6525 @item all_expr
6526 Set blend expression for specific pixel component or all pixel components in case
6527 of @var{all_expr}. Note that related mode options will be ignored if those are set.
6528
6529 The expressions can use the following variables:
6530
6531 @table @option
6532 @item N
6533 The sequential number of the filtered frame, starting from @code{0}.
6534
6535 @item X
6536 @item Y
6537 the coordinates of the current sample
6538
6539 @item W
6540 @item H
6541 the width and height of currently filtered plane
6542
6543 @item SW
6544 @item SH
6545 Width and height scale for the plane being filtered. It is the
6546 ratio between the dimensions of the current plane to the luma plane,
6547 e.g. for a @code{yuv420p} frame, the values are @code{1,1} for
6548 the luma plane and @code{0.5,0.5} for the chroma planes.
6549
6550 @item T
6551 Time of the current frame, expressed in seconds.
6552
6553 @item TOP, A
6554 Value of pixel component at current location for first video frame (top layer).
6555
6556 @item BOTTOM, B
6557 Value of pixel component at current location for second video frame (bottom layer).
6558 @end table
6559 @end table
6560
6561 The @code{blend} filter also supports the @ref{framesync} options.
6562
6563 @subsection Examples
6564
6565 @itemize
6566 @item
6567 Apply transition from bottom layer to top layer in first 10 seconds:
6568 @example
6569 blend=all_expr='A*(if(gte(T,10),1,T/10))+B*(1-(if(gte(T,10),1,T/10)))'
6570 @end example
6571
6572 @item
6573 Apply linear horizontal transition from top layer to bottom layer:
6574 @example
6575 blend=all_expr='A*(X/W)+B*(1-X/W)'
6576 @end example
6577
6578 @item
6579 Apply 1x1 checkerboard effect:
6580 @example
6581 blend=all_expr='if(eq(mod(X,2),mod(Y,2)),A,B)'
6582 @end example
6583
6584 @item
6585 Apply uncover left effect:
6586 @example
6587 blend=all_expr='if(gte(N*SW+X,W),A,B)'
6588 @end example
6589
6590 @item
6591 Apply uncover down effect:
6592 @example
6593 blend=all_expr='if(gte(Y-N*SH,0),A,B)'
6594 @end example
6595
6596 @item
6597 Apply uncover up-left effect:
6598 @example
6599 blend=all_expr='if(gte(T*SH*40+Y,H)*gte((T*40*SW+X)*W/H,W),A,B)'
6600 @end example
6601
6602 @item
6603 Split diagonally video and shows top and bottom layer on each side:
6604 @example
6605 blend=all_expr='if(gt(X,Y*(W/H)),A,B)'
6606 @end example
6607
6608 @item
6609 Display differences between the current and the previous frame:
6610 @example
6611 tblend=all_mode=grainextract
6612 @end example
6613 @end itemize
6614
6615 @section bm3d
6616
6617 Denoise frames using Block-Matching 3D algorithm.
6618
6619 The filter accepts the following options.
6620
6621 @table @option
6622 @item sigma
6623 Set denoising strength. Default value is 1.
6624 Allowed range is from 0 to 999.9.
6625 The denoising algorithm is very sensitive to sigma, so adjust it
6626 according to the source.
6627
6628 @item block
6629 Set local patch size. This sets dimensions in 2D.
6630
6631 @item bstep
6632 Set sliding step for processing blocks. Default value is 4.
6633 Allowed range is from 1 to 64.
6634 Smaller values allows processing more reference blocks and is slower.
6635
6636 @item group
6637 Set maximal number of similar blocks for 3rd dimension. Default value is 1.
6638 When set to 1, no block matching is done. Larger values allows more blocks
6639 in single group.
6640 Allowed range is from 1 to 256.
6641
6642 @item range
6643 Set radius for search block matching. Default is 9.
6644 Allowed range is from 1 to INT32_MAX.
6645
6646 @item mstep
6647 Set step between two search locations for block matching. Default is 1.
6648 Allowed range is from 1 to 64. Smaller is slower.
6649
6650 @item thmse
6651 Set threshold of mean square error for block matching. Valid range is 0 to
6652 INT32_MAX.
6653
6654 @item hdthr
6655 Set thresholding parameter for hard thresholding in 3D transformed domain.
6656 Larger values results in stronger hard-thresholding filtering in frequency
6657 domain.
6658
6659 @item estim
6660 Set filtering estimation mode. Can be @code{basic} or @code{final}.
6661 Default is @code{basic}.
6662
6663 @item ref
6664 If enabled, filter will use 2nd stream for block matching.
6665 Default is disabled for @code{basic} value of @var{estim} option,
6666 and always enabled if value of @var{estim} is @code{final}.
6667
6668 @item planes
6669 Set planes to filter. Default is all available except alpha.
6670 @end table
6671
6672 @subsection Examples
6673
6674 @itemize
6675 @item
6676 Basic filtering with bm3d:
6677 @example
6678 bm3d=sigma=3:block=4:bstep=2:group=1:estim=basic
6679 @end example
6680
6681 @item
6682 Same as above, but filtering only luma:
6683 @example
6684 bm3d=sigma=3:block=4:bstep=2:group=1:estim=basic:planes=1
6685 @end example
6686
6687 @item
6688 Same as above, but with both estimation modes:
6689 @example
6690 split[a][b],[a]bm3d=sigma=3:block=4:bstep=2:group=1:estim=basic[a],[b][a]bm3d=sigma=3:block=4:bstep=2:group=16:estim=final:ref=1
6691 @end example
6692
6693 @item
6694 Same as above, but prefilter with @ref{nlmeans} filter instead:
6695 @example
6696 split[a][b],[a]nlmeans=s=3:r=7:p=3[a],[b][a]bm3d=sigma=3:block=4:bstep=2:group=16:estim=final:ref=1
6697 @end example
6698 @end itemize
6699
6700 @section boxblur
6701
6702 Apply a boxblur algorithm to the input video.
6703
6704 It accepts the following parameters:
6705
6706 @table @option
6707
6708 @item luma_radius, lr
6709 @item luma_power, lp
6710 @item chroma_radius, cr
6711 @item chroma_power, cp
6712 @item alpha_radius, ar
6713 @item alpha_power, ap
6714
6715 @end table
6716
6717 A description of the accepted options follows.
6718
6719 @table @option
6720 @item luma_radius, lr
6721 @item chroma_radius, cr
6722 @item alpha_radius, ar
6723 Set an expression for the box radius in pixels used for blurring the
6724 corresponding input plane.
6725
6726 The radius value must be a non-negative number, and must not be
6727 greater than the value of the expression @code{min(w,h)/2} for the
6728 luma and alpha planes, and of @code{min(cw,ch)/2} for the chroma
6729 planes.
6730
6731 Default value for @option{luma_radius} is "2". If not specified,
6732 @option{chroma_radius} and @option{alpha_radius} default to the
6733 corresponding value set for @option{luma_radius}.
6734
6735 The expressions can contain the following constants:
6736 @table @option
6737 @item w
6738 @item h
6739 The input width and height in pixels.
6740
6741 @item cw
6742 @item ch
6743 The input chroma image width and height in pixels.
6744
6745 @item hsub
6746 @item vsub
6747 The horizontal and vertical chroma subsample values. For example, for the
6748 pixel format "yuv422p", @var{hsub} is 2 and @var{vsub} is 1.
6749 @end table
6750
6751 @item luma_power, lp
6752 @item chroma_power, cp
6753 @item alpha_power, ap
6754 Specify how many times the boxblur filter is applied to the
6755 corresponding plane.
6756
6757 Default value for @option{luma_power} is 2. If not specified,
6758 @option{chroma_power} and @option{alpha_power} default to the
6759 corresponding value set for @option{luma_power}.
6760
6761 A value of 0 will disable the effect.
6762 @end table
6763
6764 @subsection Examples
6765
6766 @itemize
6767 @item
6768 Apply a boxblur filter with the luma, chroma, and alpha radii
6769 set to 2:
6770 @example
6771 boxblur=luma_radius=2:luma_power=1
6772 boxblur=2:1
6773 @end example
6774
6775 @item
6776 Set the luma radius to 2, and alpha and chroma radius to 0:
6777 @example
6778 boxblur=2:1:cr=0:ar=0
6779 @end example
6780
6781 @item
6782 Set the luma and chroma radii to a fraction of the video dimension:
6783 @example
6784 boxblur=luma_radius=min(h\,w)/10:luma_power=1:chroma_radius=min(cw\,ch)/10:chroma_power=1
6785 @end example
6786 @end itemize
6787
6788 @section bwdif
6789
6790 Deinterlace the input video ("bwdif" stands for "Bob Weaver
6791 Deinterlacing Filter").
6792
6793 Motion adaptive deinterlacing based on yadif with the use of w3fdif and cubic
6794 interpolation algorithms.
6795 It accepts the following parameters:
6796
6797 @table @option
6798 @item mode
6799 The interlacing mode to adopt. It accepts one of the following values:
6800
6801 @table @option
6802 @item 0, send_frame
6803 Output one frame for each frame.
6804 @item 1, send_field
6805 Output one frame for each field.
6806 @end table
6807
6808 The default value is @code{send_field}.
6809
6810 @item parity
6811 The picture field parity assumed for the input interlaced video. It accepts one
6812 of the following values:
6813
6814 @table @option
6815 @item 0, tff
6816 Assume the top field is first.
6817 @item 1, bff
6818 Assume the bottom field is first.
6819 @item -1, auto
6820 Enable automatic detection of field parity.
6821 @end table
6822
6823 The default value is @code{auto}.
6824 If the interlacing is unknown or the decoder does not export this information,
6825 top field first will be assumed.
6826
6827 @item deint
6828 Specify which frames to deinterlace. Accepts one of the following
6829 values:
6830
6831 @table @option
6832 @item 0, all
6833 Deinterlace all frames.
6834 @item 1, interlaced
6835 Only deinterlace frames marked as interlaced.
6836 @end table
6837
6838 The default value is @code{all}.
6839 @end table
6840
6841 @section chromahold
6842 Remove all color information for all colors except for certain one.
6843
6844 The filter accepts the following options:
6845
6846 @table @option
6847 @item color
6848 The color which will not be replaced with neutral chroma.
6849
6850 @item similarity
6851 Similarity percentage with the above color.
6852 0.01 matches only the exact key color, while 1.0 matches everything.
6853
6854 @item blend
6855 Blend percentage.
6856 0.0 makes pixels either fully gray, or not gray at all.
6857 Higher values result in more preserved color.
6858
6859 @item yuv
6860 Signals that the color passed is already in YUV instead of RGB.
6861
6862 Literal colors like "green" or "red" don't make sense with this enabled anymore.
6863 This can be used to pass exact YUV values as hexadecimal numbers.
6864 @end table
6865
6866 @section chromakey
6867 YUV colorspace color/chroma keying.
6868
6869 The filter accepts the following options:
6870
6871 @table @option
6872 @item color
6873 The color which will be replaced with transparency.
6874
6875 @item similarity
6876 Similarity percentage with the key color.
6877
6878 0.01 matches only the exact key color, while 1.0 matches everything.
6879
6880 @item blend
6881 Blend percentage.
6882
6883 0.0 makes pixels either fully transparent, or not transparent at all.
6884
6885 Higher values result in semi-transparent pixels, with a higher transparency
6886 the more similar the pixels color is to the key color.
6887
6888 @item yuv
6889 Signals that the color passed is already in YUV instead of RGB.
6890
6891 Literal colors like "green" or "red" don't make sense with this enabled anymore.
6892 This can be used to pass exact YUV values as hexadecimal numbers.
6893 @end table
6894
6895 @subsection Examples
6896
6897 @itemize
6898 @item
6899 Make every green pixel in the input image transparent:
6900 @example
6901 ffmpeg -i input.png -vf chromakey=green out.png
6902 @end example
6903
6904 @item
6905 Overlay a greenscreen-video on top of a static black background.
6906 @example
6907 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
6908 @end example
6909 @end itemize
6910
6911 @section chromashift
6912 Shift chroma pixels horizontally and/or vertically.
6913
6914 The filter accepts the following options:
6915 @table @option
6916 @item cbh
6917 Set amount to shift chroma-blue horizontally.
6918 @item cbv
6919 Set amount to shift chroma-blue vertically.
6920 @item crh
6921 Set amount to shift chroma-red horizontally.
6922 @item crv
6923 Set amount to shift chroma-red vertically.
6924 @item edge
6925 Set edge mode, can be @var{smear}, default, or @var{warp}.
6926 @end table
6927
6928 @section ciescope
6929
6930 Display CIE color diagram with pixels overlaid onto it.
6931
6932 The filter accepts the following options:
6933
6934 @table @option
6935 @item system
6936 Set color system.
6937
6938 @table @samp
6939 @item ntsc, 470m
6940 @item ebu, 470bg
6941 @item smpte
6942 @item 240m
6943 @item apple
6944 @item widergb
6945 @item cie1931
6946 @item rec709, hdtv
6947 @item uhdtv, rec2020
6948 @item dcip3
6949 @end table
6950
6951 @item cie
6952 Set CIE system.
6953
6954 @table @samp
6955 @item xyy
6956 @item ucs
6957 @item luv
6958 @end table
6959
6960 @item gamuts
6961 Set what gamuts to draw.
6962
6963 See @code{system} option for available values.
6964
6965 @item size, s
6966 Set ciescope size, by default set to 512.
6967
6968 @item intensity, i
6969 Set intensity used to map input pixel values to CIE diagram.
6970
6971 @item contrast
6972 Set contrast used to draw tongue colors that are out of active color system gamut.
6973
6974 @item corrgamma
6975 Correct gamma displayed on scope, by default enabled.
6976
6977 @item showwhite
6978 Show white point on CIE diagram, by default disabled.
6979
6980 @item gamma
6981 Set input gamma. Used only with XYZ input color space.
6982 @end table
6983
6984 @section codecview
6985
6986 Visualize information exported by some codecs.
6987
6988 Some codecs can export information through frames using side-data or other
6989 means. For example, some MPEG based codecs export motion vectors through the
6990 @var{export_mvs} flag in the codec @option{flags2} option.
6991
6992 The filter accepts the following option:
6993
6994 @table @option
6995 @item mv
6996 Set motion vectors to visualize.
6997
6998 Available flags for @var{mv} are:
6999
7000 @table @samp
7001 @item pf
7002 forward predicted MVs of P-frames
7003 @item bf
7004 forward predicted MVs of B-frames
7005 @item bb
7006 backward predicted MVs of B-frames
7007 @end table
7008
7009 @item qp
7010 Display quantization parameters using the chroma planes.
7011
7012 @item mv_type, mvt
7013 Set motion vectors type to visualize. Includes MVs from all frames unless specified by @var{frame_type} option.
7014
7015 Available flags for @var{mv_type} are:
7016
7017 @table @samp
7018 @item fp
7019 forward predicted MVs
7020 @item bp
7021 backward predicted MVs
7022 @end table
7023
7024 @item frame_type, ft
7025 Set frame type to visualize motion vectors of.
7026
7027 Available flags for @var{frame_type} are:
7028
7029 @table @samp
7030 @item if
7031 intra-coded frames (I-frames)
7032 @item pf
7033 predicted frames (P-frames)
7034 @item bf
7035 bi-directionally predicted frames (B-frames)
7036 @end table
7037 @end table
7038
7039 @subsection Examples
7040
7041 @itemize
7042 @item
7043 Visualize forward predicted MVs of all frames using @command{ffplay}:
7044 @example
7045 ffplay -flags2 +export_mvs input.mp4 -vf codecview=mv_type=fp
7046 @end example
7047
7048 @item
7049 Visualize multi-directionals MVs of P and B-Frames using @command{ffplay}:
7050 @example
7051 ffplay -flags2 +export_mvs input.mp4 -vf codecview=mv=pf+bf+bb
7052 @end example
7053 @end itemize
7054
7055 @section colorbalance
7056 Modify intensity of primary colors (red, green and blue) of input frames.
7057
7058 The filter allows an input frame to be adjusted in the shadows, midtones or highlights
7059 regions for the red-cyan, green-magenta or blue-yellow balance.
7060
7061 A positive adjustment value shifts the balance towards the primary color, a negative
7062 value towards the complementary color.
7063
7064 The filter accepts the following options:
7065
7066 @table @option
7067 @item rs
7068 @item gs
7069 @item bs
7070 Adjust red, green and blue shadows (darkest pixels).
7071
7072 @item rm
7073 @item gm
7074 @item bm
7075 Adjust red, green and blue midtones (medium pixels).
7076
7077 @item rh
7078 @item gh
7079 @item bh
7080 Adjust red, green and blue highlights (brightest pixels).
7081
7082 Allowed ranges for options are @code{[-1.0, 1.0]}. Defaults are @code{0}.
7083 @end table
7084
7085 @subsection Examples
7086
7087 @itemize
7088 @item
7089 Add red color cast to shadows:
7090 @example
7091 colorbalance=rs=.3
7092 @end example
7093 @end itemize
7094
7095 @section colorchannelmixer
7096
7097 Adjust video input frames by re-mixing color channels.
7098
7099 This filter modifies a color channel by adding the values associated to
7100 the other channels of the same pixels. For example if the value to
7101 modify is red, the output value will be:
7102 @example
7103 @var{red}=@var{red}*@var{rr} + @var{blue}*@var{rb} + @var{green}*@var{rg} + @var{alpha}*@var{ra}
7104 @end example
7105
7106 The filter accepts the following options:
7107
7108 @table @option
7109 @item rr
7110 @item rg
7111 @item rb
7112 @item ra
7113 Adjust contribution of input red, green, blue and alpha channels for output red channel.
7114 Default is @code{1} for @var{rr}, and @code{0} for @var{rg}, @var{rb} and @var{ra}.
7115
7116 @item gr
7117 @item gg
7118 @item gb
7119 @item ga
7120 Adjust contribution of input red, green, blue and alpha channels for output green channel.
7121 Default is @code{1} for @var{gg}, and @code{0} for @var{gr}, @var{gb} and @var{ga}.
7122
7123 @item br
7124 @item bg
7125 @item bb
7126 @item ba
7127 Adjust contribution of input red, green, blue and alpha channels for output blue channel.
7128 Default is @code{1} for @var{bb}, and @code{0} for @var{br}, @var{bg} and @var{ba}.
7129
7130 @item ar
7131 @item ag
7132 @item ab
7133 @item aa
7134 Adjust contribution of input red, green, blue and alpha channels for output alpha channel.
7135 Default is @code{1} for @var{aa}, and @code{0} for @var{ar}, @var{ag} and @var{ab}.
7136
7137 Allowed ranges for options are @code{[-2.0, 2.0]}.
7138 @end table
7139
7140 @subsection Examples
7141
7142 @itemize
7143 @item
7144 Convert source to grayscale:
7145 @example
7146 colorchannelmixer=.3:.4:.3:0:.3:.4:.3:0:.3:.4:.3
7147 @end example
7148 @item
7149 Simulate sepia tones:
7150 @example
7151 colorchannelmixer=.393:.769:.189:0:.349:.686:.168:0:.272:.534:.131
7152 @end example
7153 @end itemize
7154
7155 @subsection Commands
7156
7157 This filter supports the all above options as @ref{commands}.
7158
7159 @section colorkey
7160 RGB colorspace color keying.
7161
7162 The filter accepts the following options:
7163
7164 @table @option
7165 @item color
7166 The color which will be replaced with transparency.
7167
7168 @item similarity
7169 Similarity percentage with the key color.
7170
7171 0.01 matches only the exact key color, while 1.0 matches everything.
7172
7173 @item blend
7174 Blend percentage.
7175
7176 0.0 makes pixels either fully transparent, or not transparent at all.
7177
7178 Higher values result in semi-transparent pixels, with a higher transparency
7179 the more similar the pixels color is to the key color.
7180 @end table
7181
7182 @subsection Examples
7183
7184 @itemize
7185 @item
7186 Make every green pixel in the input image transparent:
7187 @example
7188 ffmpeg -i input.png -vf colorkey=green out.png
7189 @end example
7190
7191 @item
7192 Overlay a greenscreen-video on top of a static background image.
7193 @example
7194 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
7195 @end example
7196 @end itemize
7197
7198 @section colorhold
7199 Remove all color information for all RGB colors except for certain one.
7200
7201 The filter accepts the following options:
7202
7203 @table @option
7204 @item color
7205 The color which will not be replaced with neutral gray.
7206
7207 @item similarity
7208 Similarity percentage with the above color.
7209 0.01 matches only the exact key color, while 1.0 matches everything.
7210
7211 @item blend
7212 Blend percentage. 0.0 makes pixels fully gray.
7213 Higher values result in more preserved color.
7214 @end table
7215
7216 @section colorlevels
7217
7218 Adjust video input frames using levels.
7219
7220 The filter accepts the following options:
7221
7222 @table @option
7223 @item rimin
7224 @item gimin
7225 @item bimin
7226 @item aimin
7227 Adjust red, green, blue and alpha input black point.
7228 Allowed ranges for options are @code{[-1.0, 1.0]}. Defaults are @code{0}.
7229
7230 @item rimax
7231 @item gimax
7232 @item bimax
7233 @item aimax
7234 Adjust red, green, blue and alpha input white point.
7235 Allowed ranges for options are @code{[-1.0, 1.0]}. Defaults are @code{1}.
7236
7237 Input levels are used to lighten highlights (bright tones), darken shadows
7238 (dark tones), change the balance of bright and dark tones.
7239
7240 @item romin
7241 @item gomin
7242 @item bomin
7243 @item aomin
7244 Adjust red, green, blue and alpha output black point.
7245 Allowed ranges for options are @code{[0, 1.0]}. Defaults are @code{0}.
7246
7247 @item romax
7248 @item gomax
7249 @item bomax
7250 @item aomax
7251 Adjust red, green, blue and alpha output white point.
7252 Allowed ranges for options are @code{[0, 1.0]}. Defaults are @code{1}.
7253
7254 Output levels allows manual selection of a constrained output level range.
7255 @end table
7256
7257 @subsection Examples
7258
7259 @itemize
7260 @item
7261 Make video output darker:
7262 @example
7263 colorlevels=rimin=0.058:gimin=0.058:bimin=0.058
7264 @end example
7265
7266 @item
7267 Increase contrast:
7268 @example
7269 colorlevels=rimin=0.039:gimin=0.039:bimin=0.039:rimax=0.96:gimax=0.96:bimax=0.96
7270 @end example
7271
7272 @item
7273 Make video output lighter:
7274 @example
7275 colorlevels=rimax=0.902:gimax=0.902:bimax=0.902
7276 @end example
7277
7278 @item
7279 Increase brightness:
7280 @example
7281 colorlevels=romin=0.5:gomin=0.5:bomin=0.5
7282 @end example
7283 @end itemize
7284
7285 @section colormatrix
7286
7287 Convert color matrix.
7288
7289 The filter accepts the following options:
7290
7291 @table @option
7292 @item src
7293 @item dst
7294 Specify the source and destination color matrix. Both values must be
7295 specified.
7296
7297 The accepted values are:
7298 @table @samp
7299 @item bt709
7300 BT.709
7301
7302 @item fcc
7303 FCC
7304
7305 @item bt601
7306 BT.601
7307
7308 @item bt470
7309 BT.470
7310
7311 @item bt470bg
7312 BT.470BG
7313
7314 @item smpte170m
7315 SMPTE-170M
7316
7317 @item smpte240m
7318 SMPTE-240M
7319
7320 @item bt2020
7321 BT.2020
7322 @end table
7323 @end table
7324
7325 For example to convert from BT.601 to SMPTE-240M, use the command:
7326 @example
7327 colormatrix=bt601:smpte240m
7328 @end example
7329
7330 @section colorspace
7331
7332 Convert colorspace, transfer characteristics or color primaries.
7333 Input video needs to have an even size.
7334
7335 The filter accepts the following options:
7336
7337 @table @option
7338 @anchor{all}
7339 @item all
7340 Specify all color properties at once.
7341
7342 The accepted values are:
7343 @table @samp
7344 @item bt470m
7345 BT.470M
7346
7347 @item bt470bg
7348 BT.470BG
7349
7350 @item bt601-6-525
7351 BT.601-6 525
7352
7353 @item bt601-6-625
7354 BT.601-6 625
7355
7356 @item bt709
7357 BT.709
7358
7359 @item smpte170m
7360 SMPTE-170M
7361
7362 @item smpte240m
7363 SMPTE-240M
7364
7365 @item bt2020
7366 BT.2020
7367
7368 @end table
7369
7370 @anchor{space}
7371 @item space
7372 Specify output colorspace.
7373
7374 The accepted values are:
7375 @table @samp
7376 @item bt709
7377 BT.709
7378
7379 @item fcc
7380 FCC
7381
7382 @item bt470bg
7383 BT.470BG or BT.601-6 625
7384
7385 @item smpte170m
7386 SMPTE-170M or BT.601-6 525
7387
7388 @item smpte240m
7389 SMPTE-240M
7390
7391 @item ycgco
7392 YCgCo
7393
7394 @item bt2020ncl
7395 BT.2020 with non-constant luminance
7396
7397 @end table
7398
7399 @anchor{trc}
7400 @item trc
7401 Specify output transfer characteristics.
7402
7403 The accepted values are:
7404 @table @samp
7405 @item bt709
7406 BT.709
7407
7408 @item bt470m
7409 BT.470M
7410
7411 @item bt470bg
7412 BT.470BG
7413
7414 @item gamma22
7415 Constant gamma of 2.2
7416
7417 @item gamma28
7418 Constant gamma of 2.8
7419
7420 @item smpte170m
7421 SMPTE-170M, BT.601-6 625 or BT.601-6 525
7422
7423 @item smpte240m
7424 SMPTE-240M
7425
7426 @item srgb
7427 SRGB
7428
7429 @item iec61966-2-1
7430 iec61966-2-1
7431
7432 @item iec61966-2-4
7433 iec61966-2-4
7434
7435 @item xvycc
7436 xvycc
7437
7438 @item bt2020-10
7439 BT.2020 for 10-bits content
7440
7441 @item bt2020-12
7442 BT.2020 for 12-bits content
7443
7444 @end table
7445
7446 @anchor{primaries}
7447 @item primaries
7448 Specify output color primaries.
7449
7450 The accepted values are:
7451 @table @samp
7452 @item bt709
7453 BT.709
7454
7455 @item bt470m
7456 BT.470M
7457
7458 @item bt470bg
7459 BT.470BG or BT.601-6 625
7460
7461 @item smpte170m
7462 SMPTE-170M or BT.601-6 525
7463
7464 @item smpte240m
7465 SMPTE-240M
7466
7467 @item film
7468 film
7469
7470 @item smpte431
7471 SMPTE-431
7472
7473 @item smpte432
7474 SMPTE-432
7475
7476 @item bt2020
7477 BT.2020
7478
7479 @item jedec-p22
7480 JEDEC P22 phosphors
7481
7482 @end table
7483
7484 @anchor{range}
7485 @item range
7486 Specify output color range.
7487
7488 The accepted values are:
7489 @table @samp
7490 @item tv
7491 TV (restricted) range
7492
7493 @item mpeg
7494 MPEG (restricted) range
7495
7496 @item pc
7497 PC (full) range
7498
7499 @item jpeg
7500 JPEG (full) range
7501
7502 @end table
7503
7504 @item format
7505 Specify output color format.
7506
7507 The accepted values are:
7508 @table @samp
7509 @item yuv420p
7510 YUV 4:2:0 planar 8-bits
7511
7512 @item yuv420p10
7513 YUV 4:2:0 planar 10-bits
7514
7515 @item yuv420p12
7516 YUV 4:2:0 planar 12-bits
7517
7518 @item yuv422p
7519 YUV 4:2:2 planar 8-bits
7520
7521 @item yuv422p10
7522 YUV 4:2:2 planar 10-bits
7523
7524 @item yuv422p12
7525 YUV 4:2:2 planar 12-bits
7526
7527 @item yuv444p
7528 YUV 4:4:4 planar 8-bits
7529
7530 @item yuv444p10
7531 YUV 4:4:4 planar 10-bits
7532
7533 @item yuv444p12
7534 YUV 4:4:4 planar 12-bits
7535
7536 @end table
7537
7538 @item fast
7539 Do a fast conversion, which skips gamma/primary correction. This will take
7540 significantly less CPU, but will be mathematically incorrect. To get output
7541 compatible with that produced by the colormatrix filter, use fast=1.
7542
7543 @item dither
7544 Specify dithering mode.
7545
7546 The accepted values are:
7547 @table @samp
7548 @item none
7549 No dithering
7550
7551 @item fsb
7552 Floyd-Steinberg dithering
7553 @end table
7554
7555 @item wpadapt
7556 Whitepoint adaptation mode.
7557
7558 The accepted values are:
7559 @table @samp
7560 @item bradford
7561 Bradford whitepoint adaptation
7562
7563 @item vonkries
7564 von Kries whitepoint adaptation
7565
7566 @item identity
7567 identity whitepoint adaptation (i.e. no whitepoint adaptation)
7568 @end table
7569
7570 @item iall
7571 Override all input properties at once. Same accepted values as @ref{all}.
7572
7573 @item ispace
7574 Override input colorspace. Same accepted values as @ref{space}.
7575
7576 @item iprimaries
7577 Override input color primaries. Same accepted values as @ref{primaries}.
7578
7579 @item itrc
7580 Override input transfer characteristics. Same accepted values as @ref{trc}.
7581
7582 @item irange
7583 Override input color range. Same accepted values as @ref{range}.
7584
7585 @end table
7586
7587 The filter converts the transfer characteristics, color space and color
7588 primaries to the specified user values. The output value, if not specified,
7589 is set to a default value based on the "all" property. If that property is
7590 also not specified, the filter will log an error. The output color range and
7591 format default to the same value as the input color range and format. The
7592 input transfer characteristics, color space, color primaries and color range
7593 should be set on the input data. If any of these are missing, the filter will
7594 log an error and no conversion will take place.
7595
7596 For example to convert the input to SMPTE-240M, use the command:
7597 @example
7598 colorspace=smpte240m
7599 @end example
7600
7601 @section convolution
7602
7603 Apply convolution of 3x3, 5x5, 7x7 or horizontal/vertical up to 49 elements.
7604
7605 The filter accepts the following options:
7606
7607 @table @option
7608 @item 0m
7609 @item 1m
7610 @item 2m
7611 @item 3m
7612 Set matrix for each plane.
7613 Matrix is sequence of 9, 25 or 49 signed integers in @var{square} mode,
7614 and from 1 to 49 odd number of signed integers in @var{row} mode.
7615
7616 @item 0rdiv
7617 @item 1rdiv
7618 @item 2rdiv
7619 @item 3rdiv
7620 Set multiplier for calculated value for each plane.
7621 If unset or 0, it will be sum of all matrix elements.
7622
7623 @item 0bias
7624 @item 1bias
7625 @item 2bias
7626 @item 3bias
7627 Set bias for each plane. This value is added to the result of the multiplication.
7628 Useful for making the overall image brighter or darker. Default is 0.0.
7629
7630 @item 0mode
7631 @item 1mode
7632 @item 2mode
7633 @item 3mode
7634 Set matrix mode for each plane. Can be @var{square}, @var{row} or @var{column}.
7635 Default is @var{square}.
7636 @end table
7637
7638 @subsection Examples
7639
7640 @itemize
7641 @item
7642 Apply sharpen:
7643 @example
7644 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"
7645 @end example
7646
7647 @item
7648 Apply blur:
7649 @example
7650 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"
7651 @end example
7652
7653 @item
7654 Apply edge enhance:
7655 @example
7656 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"
7657 @end example
7658
7659 @item
7660 Apply edge detect:
7661 @example
7662 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"
7663 @end example
7664
7665 @item
7666 Apply laplacian edge detector which includes diagonals:
7667 @example
7668 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"
7669 @end example
7670
7671 @item
7672 Apply emboss:
7673 @example
7674 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"
7675 @end example
7676 @end itemize
7677
7678 @section convolve
7679
7680 Apply 2D convolution of video stream in frequency domain using second stream
7681 as impulse.
7682
7683 The filter accepts the following options:
7684
7685 @table @option
7686 @item planes
7687 Set which planes to process.
7688
7689 @item impulse
7690 Set which impulse video frames will be processed, can be @var{first}
7691 or @var{all}. Default is @var{all}.
7692 @end table
7693
7694 The @code{convolve} filter also supports the @ref{framesync} options.
7695
7696 @section copy
7697
7698 Copy the input video source unchanged to the output. This is mainly useful for
7699 testing purposes.
7700
7701 @anchor{coreimage}
7702 @section coreimage
7703 Video filtering on GPU using Apple's CoreImage API on OSX.
7704
7705 Hardware acceleration is based on an OpenGL context. Usually, this means it is
7706 processed by video hardware. However, software-based OpenGL implementations
7707 exist which means there is no guarantee for hardware processing. It depends on
7708 the respective OSX.
7709
7710 There are many filters and image generators provided by Apple that come with a
7711 large variety of options. The filter has to be referenced by its name along
7712 with its options.
7713
7714 The coreimage filter accepts the following options:
7715 @table @option
7716 @item list_filters
7717 List all available filters and generators along with all their respective
7718 options as well as possible minimum and maximum values along with the default
7719 values.
7720 @example
7721 list_filters=true
7722 @end example
7723
7724 @item filter
7725 Specify all filters by their respective name and options.
7726 Use @var{list_filters} to determine all valid filter names and options.
7727 Numerical options are specified by a float value and are automatically clamped
7728 to their respective value range.  Vector and color options have to be specified
7729 by a list of space separated float values. Character escaping has to be done.
7730 A special option name @code{default} is available to use default options for a
7731 filter.
7732
7733 It is required to specify either @code{default} or at least one of the filter options.
7734 All omitted options are used with their default values.
7735 The syntax of the filter string is as follows:
7736 @example
7737 filter=<NAME>@@<OPTION>=<VALUE>[@@<OPTION>=<VALUE>][@@...][#<NAME>@@<OPTION>=<VALUE>[@@<OPTION>=<VALUE>][@@...]][#...]
7738 @end example
7739
7740 @item output_rect
7741 Specify a rectangle where the output of the filter chain is copied into the
7742 input image. It is given by a list of space separated float values:
7743 @example
7744 output_rect=x\ y\ width\ height
7745 @end example
7746 If not given, the output rectangle equals the dimensions of the input image.
7747 The output rectangle is automatically cropped at the borders of the input
7748 image. Negative values are valid for each component.
7749 @example
7750 output_rect=25\ 25\ 100\ 100
7751 @end example
7752 @end table
7753
7754 Several filters can be chained for successive processing without GPU-HOST
7755 transfers allowing for fast processing of complex filter chains.
7756 Currently, only filters with zero (generators) or exactly one (filters) input
7757 image and one output image are supported. Also, transition filters are not yet
7758 usable as intended.
7759
7760 Some filters generate output images with additional padding depending on the
7761 respective filter kernel. The padding is automatically removed to ensure the
7762 filter output has the same size as the input image.
7763
7764 For image generators, the size of the output image is determined by the
7765 previous output image of the filter chain or the input image of the whole
7766 filterchain, respectively. The generators do not use the pixel information of
7767 this image to generate their output. However, the generated output is
7768 blended onto this image, resulting in partial or complete coverage of the
7769 output image.
7770
7771 The @ref{coreimagesrc} video source can be used for generating input images
7772 which are directly fed into the filter chain. By using it, providing input
7773 images by another video source or an input video is not required.
7774
7775 @subsection Examples
7776
7777 @itemize
7778
7779 @item
7780 List all filters available:
7781 @example
7782 coreimage=list_filters=true
7783 @end example
7784
7785 @item
7786 Use the CIBoxBlur filter with default options to blur an image:
7787 @example
7788 coreimage=filter=CIBoxBlur@@default
7789 @end example
7790
7791 @item
7792 Use a filter chain with CISepiaTone at default values and CIVignetteEffect with
7793 its center at 100x100 and a radius of 50 pixels:
7794 @example
7795 coreimage=filter=CIBoxBlur@@default#CIVignetteEffect@@inputCenter=100\ 100@@inputRadius=50
7796 @end example
7797
7798 @item
7799 Use nullsrc and CIQRCodeGenerator to create a QR code for the FFmpeg homepage,
7800 given as complete and escaped command-line for Apple's standard bash shell:
7801 @example
7802 ffmpeg -f lavfi -i nullsrc=s=100x100,coreimage=filter=CIQRCodeGenerator@@inputMessage=https\\\\\://FFmpeg.org/@@inputCorrectionLevel=H -frames:v 1 QRCode.png
7803 @end example
7804 @end itemize
7805
7806 @section cover_rect
7807
7808 Cover a rectangular object
7809
7810 It accepts the following options:
7811
7812 @table @option
7813 @item cover
7814 Filepath of the optional cover image, needs to be in yuv420.
7815
7816 @item mode
7817 Set covering mode.
7818
7819 It accepts the following values:
7820 @table @samp
7821 @item cover
7822 cover it by the supplied image
7823 @item blur
7824 cover it by interpolating the surrounding pixels
7825 @end table
7826
7827 Default value is @var{blur}.
7828 @end table
7829
7830 @subsection Examples
7831
7832 @itemize
7833 @item
7834 Cover a rectangular object by the supplied image of a given video using @command{ffmpeg}:
7835 @example
7836 ffmpeg -i file.ts -vf find_rect=newref.pgm,cover_rect=cover.jpg:mode=cover new.mkv
7837 @end example
7838 @end itemize
7839
7840 @section crop
7841
7842 Crop the input video to given dimensions.
7843
7844 It accepts the following parameters:
7845
7846 @table @option
7847 @item w, out_w
7848 The width of the output video. It defaults to @code{iw}.
7849 This expression is evaluated only once during the filter
7850 configuration, or when the @samp{w} or @samp{out_w} command is sent.
7851
7852 @item h, out_h
7853 The height of the output video. It defaults to @code{ih}.
7854 This expression is evaluated only once during the filter
7855 configuration, or when the @samp{h} or @samp{out_h} command is sent.
7856
7857 @item x
7858 The horizontal position, in the input video, of the left edge of the output
7859 video. It defaults to @code{(in_w-out_w)/2}.
7860 This expression is evaluated per-frame.
7861
7862 @item y
7863 The vertical position, in the input video, of the top edge of the output video.
7864 It defaults to @code{(in_h-out_h)/2}.
7865 This expression is evaluated per-frame.
7866
7867 @item keep_aspect
7868 If set to 1 will force the output display aspect ratio
7869 to be the same of the input, by changing the output sample aspect
7870 ratio. It defaults to 0.
7871
7872 @item exact
7873 Enable exact cropping. If enabled, subsampled videos will be cropped at exact
7874 width/height/x/y as specified and will not be rounded to nearest smaller value.
7875 It defaults to 0.
7876 @end table
7877
7878 The @var{out_w}, @var{out_h}, @var{x}, @var{y} parameters are
7879 expressions containing the following constants:
7880
7881 @table @option
7882 @item x
7883 @item y
7884 The computed values for @var{x} and @var{y}. They are evaluated for
7885 each new frame.
7886
7887 @item in_w
7888 @item in_h
7889 The input width and height.
7890
7891 @item iw
7892 @item ih
7893 These are the same as @var{in_w} and @var{in_h}.
7894
7895 @item out_w
7896 @item out_h
7897 The output (cropped) width and height.
7898
7899 @item ow
7900 @item oh
7901 These are the same as @var{out_w} and @var{out_h}.
7902
7903 @item a
7904 same as @var{iw} / @var{ih}
7905
7906 @item sar
7907 input sample aspect ratio
7908
7909 @item dar
7910 input display aspect ratio, it is the same as (@var{iw} / @var{ih}) * @var{sar}
7911
7912 @item hsub
7913 @item vsub
7914 horizontal and vertical chroma subsample values. For example for the
7915 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
7916
7917 @item n
7918 The number of the input frame, starting from 0.
7919
7920 @item pos
7921 the position in the file of the input frame, NAN if unknown
7922
7923 @item t
7924 The timestamp expressed in seconds. It's NAN if the input timestamp is unknown.
7925
7926 @end table
7927
7928 The expression for @var{out_w} may depend on the value of @var{out_h},
7929 and the expression for @var{out_h} may depend on @var{out_w}, but they
7930 cannot depend on @var{x} and @var{y}, as @var{x} and @var{y} are
7931 evaluated after @var{out_w} and @var{out_h}.
7932
7933 The @var{x} and @var{y} parameters specify the expressions for the
7934 position of the top-left corner of the output (non-cropped) area. They
7935 are evaluated for each frame. If the evaluated value is not valid, it
7936 is approximated to the nearest valid value.
7937
7938 The expression for @var{x} may depend on @var{y}, and the expression
7939 for @var{y} may depend on @var{x}.
7940
7941 @subsection Examples
7942
7943 @itemize
7944 @item
7945 Crop area with size 100x100 at position (12,34).
7946 @example
7947 crop=100:100:12:34
7948 @end example
7949
7950 Using named options, the example above becomes:
7951 @example
7952 crop=w=100:h=100:x=12:y=34
7953 @end example
7954
7955 @item
7956 Crop the central input area with size 100x100:
7957 @example
7958 crop=100:100
7959 @end example
7960
7961 @item
7962 Crop the central input area with size 2/3 of the input video:
7963 @example
7964 crop=2/3*in_w:2/3*in_h
7965 @end example
7966
7967 @item
7968 Crop the input video central square:
7969 @example
7970 crop=out_w=in_h
7971 crop=in_h
7972 @end example
7973
7974 @item
7975 Delimit the rectangle with the top-left corner placed at position
7976 100:100 and the right-bottom corner corresponding to the right-bottom
7977 corner of the input image.
7978 @example
7979 crop=in_w-100:in_h-100:100:100
7980 @end example
7981
7982 @item
7983 Crop 10 pixels from the left and right borders, and 20 pixels from
7984 the top and bottom borders
7985 @example
7986 crop=in_w-2*10:in_h-2*20
7987 @end example
7988
7989 @item
7990 Keep only the bottom right quarter of the input image:
7991 @example
7992 crop=in_w/2:in_h/2:in_w/2:in_h/2
7993 @end example
7994
7995 @item
7996 Crop height for getting Greek harmony:
7997 @example
7998 crop=in_w:1/PHI*in_w
7999 @end example
8000
8001 @item
8002 Apply trembling effect:
8003 @example
8004 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)
8005 @end example
8006
8007 @item
8008 Apply erratic camera effect depending on timestamp:
8009 @example
8010 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)"
8011 @end example
8012
8013 @item
8014 Set x depending on the value of y:
8015 @example
8016 crop=in_w/2:in_h/2:y:10+10*sin(n/10)
8017 @end example
8018 @end itemize
8019
8020 @subsection Commands
8021
8022 This filter supports the following commands:
8023 @table @option
8024 @item w, out_w
8025 @item h, out_h
8026 @item x
8027 @item y
8028 Set width/height of the output video and the horizontal/vertical position
8029 in the input video.
8030 The command accepts the same syntax of the corresponding option.
8031
8032 If the specified expression is not valid, it is kept at its current
8033 value.
8034 @end table
8035
8036 @section cropdetect
8037
8038 Auto-detect the crop size.
8039
8040 It calculates the necessary cropping parameters and prints the
8041 recommended parameters via the logging system. The detected dimensions
8042 correspond to the non-black area of the input video.
8043
8044 It accepts the following parameters:
8045
8046 @table @option
8047
8048 @item limit
8049 Set higher black value threshold, which can be optionally specified
8050 from nothing (0) to everything (255 for 8-bit based formats). An intensity
8051 value greater to the set value is considered non-black. It defaults to 24.
8052 You can also specify a value between 0.0 and 1.0 which will be scaled depending
8053 on the bitdepth of the pixel format.
8054
8055 @item round
8056 The value which the width/height should be divisible by. It defaults to
8057 16. The offset is automatically adjusted to center the video. Use 2 to
8058 get only even dimensions (needed for 4:2:2 video). 16 is best when
8059 encoding to most video codecs.
8060
8061 @item reset_count, reset
8062 Set the counter that determines after how many frames cropdetect will
8063 reset the previously detected largest video area and start over to
8064 detect the current optimal crop area. Default value is 0.
8065
8066 This can be useful when channel logos distort the video area. 0
8067 indicates 'never reset', and returns the largest area encountered during
8068 playback.
8069 @end table
8070
8071 @anchor{cue}
8072 @section cue
8073
8074 Delay video filtering until a given wallclock timestamp. The filter first
8075 passes on @option{preroll} amount of frames, then it buffers at most
8076 @option{buffer} amount of frames and waits for the cue. After reaching the cue
8077 it forwards the buffered frames and also any subsequent frames coming in its
8078 input.
8079
8080 The filter can be used synchronize the output of multiple ffmpeg processes for
8081 realtime output devices like decklink. By putting the delay in the filtering
8082 chain and pre-buffering frames the process can pass on data to output almost
8083 immediately after the target wallclock timestamp is reached.
8084
8085 Perfect frame accuracy cannot be guaranteed, but the result is good enough for
8086 some use cases.
8087
8088 @table @option
8089
8090 @item cue
8091 The cue timestamp expressed in a UNIX timestamp in microseconds. Default is 0.
8092
8093 @item preroll
8094 The duration of content to pass on as preroll expressed in seconds. Default is 0.
8095
8096 @item buffer
8097 The maximum duration of content to buffer before waiting for the cue expressed
8098 in seconds. Default is 0.
8099
8100 @end table
8101
8102 @anchor{curves}
8103 @section curves
8104
8105 Apply color adjustments using curves.
8106
8107 This filter is similar to the Adobe Photoshop and GIMP curves tools. Each
8108 component (red, green and blue) has its values defined by @var{N} key points
8109 tied from each other using a smooth curve. The x-axis represents the pixel
8110 values from the input frame, and the y-axis the new pixel values to be set for
8111 the output frame.
8112
8113 By default, a component curve is defined by the two points @var{(0;0)} and
8114 @var{(1;1)}. This creates a straight line where each original pixel value is
8115 "adjusted" to its own value, which means no change to the image.
8116
8117 The filter allows you to redefine these two points and add some more. A new
8118 curve (using a natural cubic spline interpolation) will be define to pass
8119 smoothly through all these new coordinates. The new defined points needs to be
8120 strictly increasing over the x-axis, and their @var{x} and @var{y} values must
8121 be in the @var{[0;1]} interval.  If the computed curves happened to go outside
8122 the vector spaces, the values will be clipped accordingly.
8123
8124 The filter accepts the following options:
8125
8126 @table @option
8127 @item preset
8128 Select one of the available color presets. This option can be used in addition
8129 to the @option{r}, @option{g}, @option{b} parameters; in this case, the later
8130 options takes priority on the preset values.
8131 Available presets are:
8132 @table @samp
8133 @item none
8134 @item color_negative
8135 @item cross_process
8136 @item darker
8137 @item increase_contrast
8138 @item lighter
8139 @item linear_contrast
8140 @item medium_contrast
8141 @item negative
8142 @item strong_contrast
8143 @item vintage
8144 @end table
8145 Default is @code{none}.
8146 @item master, m
8147 Set the master key points. These points will define a second pass mapping. It
8148 is sometimes called a "luminance" or "value" mapping. It can be used with
8149 @option{r}, @option{g}, @option{b} or @option{all} since it acts like a
8150 post-processing LUT.
8151 @item red, r
8152 Set the key points for the red component.
8153 @item green, g
8154 Set the key points for the green component.
8155 @item blue, b
8156 Set the key points for the blue component.
8157 @item all
8158 Set the key points for all components (not including master).
8159 Can be used in addition to the other key points component
8160 options. In this case, the unset component(s) will fallback on this
8161 @option{all} setting.
8162 @item psfile
8163 Specify a Photoshop curves file (@code{.acv}) to import the settings from.
8164 @item plot
8165 Save Gnuplot script of the curves in specified file.
8166 @end table
8167
8168 To avoid some filtergraph syntax conflicts, each key points list need to be
8169 defined using the following syntax: @code{x0/y0 x1/y1 x2/y2 ...}.
8170
8171 @subsection Examples
8172
8173 @itemize
8174 @item
8175 Increase slightly the middle level of blue:
8176 @example
8177 curves=blue='0/0 0.5/0.58 1/1'
8178 @end example
8179
8180 @item
8181 Vintage effect:
8182 @example
8183 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'
8184 @end example
8185 Here we obtain the following coordinates for each components:
8186 @table @var
8187 @item red
8188 @code{(0;0.11) (0.42;0.51) (1;0.95)}
8189 @item green
8190 @code{(0;0) (0.50;0.48) (1;1)}
8191 @item blue
8192 @code{(0;0.22) (0.49;0.44) (1;0.80)}
8193 @end table
8194
8195 @item
8196 The previous example can also be achieved with the associated built-in preset:
8197 @example
8198 curves=preset=vintage
8199 @end example
8200
8201 @item
8202 Or simply:
8203 @example
8204 curves=vintage
8205 @end example
8206
8207 @item
8208 Use a Photoshop preset and redefine the points of the green component:
8209 @example
8210 curves=psfile='MyCurvesPresets/purple.acv':green='0/0 0.45/0.53 1/1'
8211 @end example
8212
8213 @item
8214 Check out the curves of the @code{cross_process} profile using @command{ffmpeg}
8215 and @command{gnuplot}:
8216 @example
8217 ffmpeg -f lavfi -i color -vf curves=cross_process:plot=/tmp/curves.plt -frames:v 1 -f null -
8218 gnuplot -p /tmp/curves.plt
8219 @end example
8220 @end itemize
8221
8222 @section datascope
8223
8224 Video data analysis filter.
8225
8226 This filter shows hexadecimal pixel values of part of video.
8227
8228 The filter accepts the following options:
8229
8230 @table @option
8231 @item size, s
8232 Set output video size.
8233
8234 @item x
8235 Set x offset from where to pick pixels.
8236
8237 @item y
8238 Set y offset from where to pick pixels.
8239
8240 @item mode
8241 Set scope mode, can be one of the following:
8242 @table @samp
8243 @item mono
8244 Draw hexadecimal pixel values with white color on black background.
8245
8246 @item color
8247 Draw hexadecimal pixel values with input video pixel color on black
8248 background.
8249
8250 @item color2
8251 Draw hexadecimal pixel values on color background picked from input video,
8252 the text color is picked in such way so its always visible.
8253 @end table
8254
8255 @item axis
8256 Draw rows and columns numbers on left and top of video.
8257
8258 @item opacity
8259 Set background opacity.
8260 @end table
8261
8262 @section dctdnoiz
8263
8264 Denoise frames using 2D DCT (frequency domain filtering).
8265
8266 This filter is not designed for real time.
8267
8268 The filter accepts the following options:
8269
8270 @table @option
8271 @item sigma, s
8272 Set the noise sigma constant.
8273
8274 This @var{sigma} defines a hard threshold of @code{3 * sigma}; every DCT
8275 coefficient (absolute value) below this threshold with be dropped.
8276
8277 If you need a more advanced filtering, see @option{expr}.
8278
8279 Default is @code{0}.
8280
8281 @item overlap
8282 Set number overlapping pixels for each block. Since the filter can be slow, you
8283 may want to reduce this value, at the cost of a less effective filter and the
8284 risk of various artefacts.
8285
8286 If the overlapping value doesn't permit processing the whole input width or
8287 height, a warning will be displayed and according borders won't be denoised.
8288
8289 Default value is @var{blocksize}-1, which is the best possible setting.
8290
8291 @item expr, e
8292 Set the coefficient factor expression.
8293
8294 For each coefficient of a DCT block, this expression will be evaluated as a
8295 multiplier value for the coefficient.
8296
8297 If this is option is set, the @option{sigma} option will be ignored.
8298
8299 The absolute value of the coefficient can be accessed through the @var{c}
8300 variable.
8301
8302 @item n
8303 Set the @var{blocksize} using the number of bits. @code{1<<@var{n}} defines the
8304 @var{blocksize}, which is the width and height of the processed blocks.
8305
8306 The default value is @var{3} (8x8) and can be raised to @var{4} for a
8307 @var{blocksize} of 16x16. Note that changing this setting has huge consequences
8308 on the speed processing. Also, a larger block size does not necessarily means a
8309 better de-noising.
8310 @end table
8311
8312 @subsection Examples
8313
8314 Apply a denoise with a @option{sigma} of @code{4.5}:
8315 @example
8316 dctdnoiz=4.5
8317 @end example
8318
8319 The same operation can be achieved using the expression system:
8320 @example
8321 dctdnoiz=e='gte(c, 4.5*3)'
8322 @end example
8323
8324 Violent denoise using a block size of @code{16x16}:
8325 @example
8326 dctdnoiz=15:n=4
8327 @end example
8328
8329 @section deband
8330
8331 Remove banding artifacts from input video.
8332 It works by replacing banded pixels with average value of referenced pixels.
8333
8334 The filter accepts the following options:
8335
8336 @table @option
8337 @item 1thr
8338 @item 2thr
8339 @item 3thr
8340 @item 4thr
8341 Set banding detection threshold for each plane. Default is 0.02.
8342 Valid range is 0.00003 to 0.5.
8343 If difference between current pixel and reference pixel is less than threshold,
8344 it will be considered as banded.
8345
8346 @item range, r
8347 Banding detection range in pixels. Default is 16. If positive, random number
8348 in range 0 to set value will be used. If negative, exact absolute value
8349 will be used.
8350 The range defines square of four pixels around current pixel.
8351
8352 @item direction, d
8353 Set direction in radians from which four pixel will be compared. If positive,
8354 random direction from 0 to set direction will be picked. If negative, exact of
8355 absolute value will be picked. For example direction 0, -PI or -2*PI radians
8356 will pick only pixels on same row and -PI/2 will pick only pixels on same
8357 column.
8358
8359 @item blur, b
8360 If enabled, current pixel is compared with average value of all four
8361 surrounding pixels. The default is enabled. If disabled current pixel is
8362 compared with all four surrounding pixels. The pixel is considered banded
8363 if only all four differences with surrounding pixels are less than threshold.
8364
8365 @item coupling, c
8366 If enabled, current pixel is changed if and only if all pixel components are banded,
8367 e.g. banding detection threshold is triggered for all color components.
8368 The default is disabled.
8369 @end table
8370
8371 @section deblock
8372
8373 Remove blocking artifacts from input video.
8374
8375 The filter accepts the following options:
8376
8377 @table @option
8378 @item filter
8379 Set filter type, can be @var{weak} or @var{strong}. Default is @var{strong}.
8380 This controls what kind of deblocking is applied.
8381
8382 @item block
8383 Set size of block, allowed range is from 4 to 512. Default is @var{8}.
8384
8385 @item alpha
8386 @item beta
8387 @item gamma
8388 @item delta
8389 Set blocking detection thresholds. Allowed range is 0 to 1.
8390 Defaults are: @var{0.098} for @var{alpha} and @var{0.05} for the rest.
8391 Using higher threshold gives more deblocking strength.
8392 Setting @var{alpha} controls threshold detection at exact edge of block.
8393 Remaining options controls threshold detection near the edge. Each one for
8394 below/above or left/right. Setting any of those to @var{0} disables
8395 deblocking.
8396
8397 @item planes
8398 Set planes to filter. Default is to filter all available planes.
8399 @end table
8400
8401 @subsection Examples
8402
8403 @itemize
8404 @item
8405 Deblock using weak filter and block size of 4 pixels.
8406 @example
8407 deblock=filter=weak:block=4
8408 @end example
8409
8410 @item
8411 Deblock using strong filter, block size of 4 pixels and custom thresholds for
8412 deblocking more edges.
8413 @example
8414 deblock=filter=strong:block=4:alpha=0.12:beta=0.07:gamma=0.06:delta=0.05
8415 @end example
8416
8417 @item
8418 Similar as above, but filter only first plane.
8419 @example
8420 deblock=filter=strong:block=4:alpha=0.12:beta=0.07:gamma=0.06:delta=0.05:planes=1
8421 @end example
8422
8423 @item
8424 Similar as above, but filter only second and third plane.
8425 @example
8426 deblock=filter=strong:block=4:alpha=0.12:beta=0.07:gamma=0.06:delta=0.05:planes=6
8427 @end example
8428 @end itemize
8429
8430 @anchor{decimate}
8431 @section decimate
8432
8433 Drop duplicated frames at regular intervals.
8434
8435 The filter accepts the following options:
8436
8437 @table @option
8438 @item cycle
8439 Set the number of frames from which one will be dropped. Setting this to
8440 @var{N} means one frame in every batch of @var{N} frames will be dropped.
8441 Default is @code{5}.
8442
8443 @item dupthresh
8444 Set the threshold for duplicate detection. If the difference metric for a frame
8445 is less than or equal to this value, then it is declared as duplicate. Default
8446 is @code{1.1}
8447
8448 @item scthresh
8449 Set scene change threshold. Default is @code{15}.
8450
8451 @item blockx
8452 @item blocky
8453 Set the size of the x and y-axis blocks used during metric calculations.
8454 Larger blocks give better noise suppression, but also give worse detection of
8455 small movements. Must be a power of two. Default is @code{32}.
8456
8457 @item ppsrc
8458 Mark main input as a pre-processed input and activate clean source input
8459 stream. This allows the input to be pre-processed with various filters to help
8460 the metrics calculation while keeping the frame selection lossless. When set to
8461 @code{1}, the first stream is for the pre-processed input, and the second
8462 stream is the clean source from where the kept frames are chosen. Default is
8463 @code{0}.
8464
8465 @item chroma
8466 Set whether or not chroma is considered in the metric calculations. Default is
8467 @code{1}.
8468 @end table
8469
8470 @section deconvolve
8471
8472 Apply 2D deconvolution of video stream in frequency domain using second stream
8473 as impulse.
8474
8475 The filter accepts the following options:
8476
8477 @table @option
8478 @item planes
8479 Set which planes to process.
8480
8481 @item impulse
8482 Set which impulse video frames will be processed, can be @var{first}
8483 or @var{all}. Default is @var{all}.
8484
8485 @item noise
8486 Set noise when doing divisions. Default is @var{0.0000001}. Useful when width
8487 and height are not same and not power of 2 or if stream prior to convolving
8488 had noise.
8489 @end table
8490
8491 The @code{deconvolve} filter also supports the @ref{framesync} options.
8492
8493 @section dedot
8494
8495 Reduce cross-luminance (dot-crawl) and cross-color (rainbows) from video.
8496
8497 It accepts the following options:
8498
8499 @table @option
8500 @item m
8501 Set mode of operation. Can be combination of @var{dotcrawl} for cross-luminance reduction and/or
8502 @var{rainbows} for cross-color reduction.
8503
8504 @item lt
8505 Set spatial luma threshold. Lower values increases reduction of cross-luminance.
8506
8507 @item tl
8508 Set tolerance for temporal luma. Higher values increases reduction of cross-luminance.
8509
8510 @item tc
8511 Set tolerance for chroma temporal variation. Higher values increases reduction of cross-color.
8512
8513 @item ct
8514 Set temporal chroma threshold. Lower values increases reduction of cross-color.
8515 @end table
8516
8517 @section deflate
8518
8519 Apply deflate effect to the video.
8520
8521 This filter replaces the pixel by the local(3x3) average by taking into account
8522 only values lower than the pixel.
8523
8524 It accepts the following options:
8525
8526 @table @option
8527 @item threshold0
8528 @item threshold1
8529 @item threshold2
8530 @item threshold3
8531 Limit the maximum change for each plane, default is 65535.
8532 If 0, plane will remain unchanged.
8533 @end table
8534
8535 @section deflicker
8536
8537 Remove temporal frame luminance variations.
8538
8539 It accepts the following options:
8540
8541 @table @option
8542 @item size, s
8543 Set moving-average filter size in frames. Default is 5. Allowed range is 2 - 129.
8544
8545 @item mode, m
8546 Set averaging mode to smooth temporal luminance variations.
8547
8548 Available values are:
8549 @table @samp
8550 @item am
8551 Arithmetic mean
8552
8553 @item gm
8554 Geometric mean
8555
8556 @item hm
8557 Harmonic mean
8558
8559 @item qm
8560 Quadratic mean
8561
8562 @item cm
8563 Cubic mean
8564
8565 @item pm
8566 Power mean
8567
8568 @item median
8569 Median
8570 @end table
8571
8572 @item bypass
8573 Do not actually modify frame. Useful when one only wants metadata.
8574 @end table
8575
8576 @section dejudder
8577
8578 Remove judder produced by partially interlaced telecined content.
8579
8580 Judder can be introduced, for instance, by @ref{pullup} filter. If the original
8581 source was partially telecined content then the output of @code{pullup,dejudder}
8582 will have a variable frame rate. May change the recorded frame rate of the
8583 container. Aside from that change, this filter will not affect constant frame
8584 rate video.
8585
8586 The option available in this filter is:
8587 @table @option
8588
8589 @item cycle
8590 Specify the length of the window over which the judder repeats.
8591
8592 Accepts any integer greater than 1. Useful values are:
8593 @table @samp
8594
8595 @item 4
8596 If the original was telecined from 24 to 30 fps (Film to NTSC).
8597
8598 @item 5
8599 If the original was telecined from 25 to 30 fps (PAL to NTSC).
8600
8601 @item 20
8602 If a mixture of the two.
8603 @end table
8604
8605 The default is @samp{4}.
8606 @end table
8607
8608 @section delogo
8609
8610 Suppress a TV station logo by a simple interpolation of the surrounding
8611 pixels. Just set a rectangle covering the logo and watch it disappear
8612 (and sometimes something even uglier appear - your mileage may vary).
8613
8614 It accepts the following parameters:
8615 @table @option
8616
8617 @item x
8618 @item y
8619 Specify the top left corner coordinates of the logo. They must be
8620 specified.
8621
8622 @item w
8623 @item h
8624 Specify the width and height of the logo to clear. They must be
8625 specified.
8626
8627 @item band, t
8628 Specify the thickness of the fuzzy edge of the rectangle (added to
8629 @var{w} and @var{h}). The default value is 1. This option is
8630 deprecated, setting higher values should no longer be necessary and
8631 is not recommended.
8632
8633 @item show
8634 When set to 1, a green rectangle is drawn on the screen to simplify
8635 finding the right @var{x}, @var{y}, @var{w}, and @var{h} parameters.
8636 The default value is 0.
8637
8638 The rectangle is drawn on the outermost pixels which will be (partly)
8639 replaced with interpolated values. The values of the next pixels
8640 immediately outside this rectangle in each direction will be used to
8641 compute the interpolated pixel values inside the rectangle.
8642
8643 @end table
8644
8645 @subsection Examples
8646
8647 @itemize
8648 @item
8649 Set a rectangle covering the area with top left corner coordinates 0,0
8650 and size 100x77, and a band of size 10:
8651 @example
8652 delogo=x=0:y=0:w=100:h=77:band=10
8653 @end example
8654
8655 @end itemize
8656
8657 @section derain
8658
8659 Remove the rain in the input image/video by applying the derain methods based on
8660 convolutional neural networks. Supported models:
8661
8662 @itemize
8663 @item
8664 Recurrent Squeeze-and-Excitation Context Aggregation Net (RESCAN).
8665 See @url{http://openaccess.thecvf.com/content_ECCV_2018/papers/Xia_Li_Recurrent_Squeeze-and-Excitation_Context_ECCV_2018_paper.pdf}.
8666 @end itemize
8667
8668 Training as well as model generation scripts are provided in
8669 the repository at @url{https://github.com/XueweiMeng/derain_filter.git}.
8670
8671 Native model files (.model) can be generated from TensorFlow model
8672 files (.pb) by using tools/python/convert.py
8673
8674 The filter accepts the following options:
8675
8676 @table @option
8677 @item filter_type
8678 Specify which filter to use. This option accepts the following values:
8679
8680 @table @samp
8681 @item derain
8682 Derain filter. To conduct derain filter, you need to use a derain model.
8683
8684 @item dehaze
8685 Dehaze filter. To conduct dehaze filter, you need to use a dehaze model.
8686 @end table
8687 Default value is @samp{derain}.
8688
8689 @item dnn_backend
8690 Specify which DNN backend to use for model loading and execution. This option accepts
8691 the following values:
8692
8693 @table @samp
8694 @item native
8695 Native implementation of DNN loading and execution.
8696
8697 @item tensorflow
8698 TensorFlow backend. To enable this backend you
8699 need to install the TensorFlow for C library (see
8700 @url{https://www.tensorflow.org/install/install_c}) and configure FFmpeg with
8701 @code{--enable-libtensorflow}
8702 @end table
8703 Default value is @samp{native}.
8704
8705 @item model
8706 Set path to model file specifying network architecture and its parameters.
8707 Note that different backends use different file formats. TensorFlow and native
8708 backend can load files for only its format.
8709 @end table
8710
8711 @section deshake
8712
8713 Attempt to fix small changes in horizontal and/or vertical shift. This
8714 filter helps remove camera shake from hand-holding a camera, bumping a
8715 tripod, moving on a vehicle, etc.
8716
8717 The filter accepts the following options:
8718
8719 @table @option
8720
8721 @item x
8722 @item y
8723 @item w
8724 @item h
8725 Specify a rectangular area where to limit the search for motion
8726 vectors.
8727 If desired the search for motion vectors can be limited to a
8728 rectangular area of the frame defined by its top left corner, width
8729 and height. These parameters have the same meaning as the drawbox
8730 filter which can be used to visualise the position of the bounding
8731 box.
8732
8733 This is useful when simultaneous movement of subjects within the frame
8734 might be confused for camera motion by the motion vector search.
8735
8736 If any or all of @var{x}, @var{y}, @var{w} and @var{h} are set to -1
8737 then the full frame is used. This allows later options to be set
8738 without specifying the bounding box for the motion vector search.
8739
8740 Default - search the whole frame.
8741
8742 @item rx
8743 @item ry
8744 Specify the maximum extent of movement in x and y directions in the
8745 range 0-64 pixels. Default 16.
8746
8747 @item edge
8748 Specify how to generate pixels to fill blanks at the edge of the
8749 frame. Available values are:
8750 @table @samp
8751 @item blank, 0
8752 Fill zeroes at blank locations
8753 @item original, 1
8754 Original image at blank locations
8755 @item clamp, 2
8756 Extruded edge value at blank locations
8757 @item mirror, 3
8758 Mirrored edge at blank locations
8759 @end table
8760 Default value is @samp{mirror}.
8761
8762 @item blocksize
8763 Specify the blocksize to use for motion search. Range 4-128 pixels,
8764 default 8.
8765
8766 @item contrast
8767 Specify the contrast threshold for blocks. Only blocks with more than
8768 the specified contrast (difference between darkest and lightest
8769 pixels) will be considered. Range 1-255, default 125.
8770
8771 @item search
8772 Specify the search strategy. Available values are:
8773 @table @samp
8774 @item exhaustive, 0
8775 Set exhaustive search
8776 @item less, 1
8777 Set less exhaustive search.
8778 @end table
8779 Default value is @samp{exhaustive}.
8780
8781 @item filename
8782 If set then a detailed log of the motion search is written to the
8783 specified file.
8784
8785 @end table
8786
8787 @section despill
8788
8789 Remove unwanted contamination of foreground colors, caused by reflected color of
8790 greenscreen or bluescreen.
8791
8792 This filter accepts the following options:
8793
8794 @table @option
8795 @item type
8796 Set what type of despill to use.
8797
8798 @item mix
8799 Set how spillmap will be generated.
8800
8801 @item expand
8802 Set how much to get rid of still remaining spill.
8803
8804 @item red
8805 Controls amount of red in spill area.
8806
8807 @item green
8808 Controls amount of green in spill area.
8809 Should be -1 for greenscreen.
8810
8811 @item blue
8812 Controls amount of blue in spill area.
8813 Should be -1 for bluescreen.
8814
8815 @item brightness
8816 Controls brightness of spill area, preserving colors.
8817
8818 @item alpha
8819 Modify alpha from generated spillmap.
8820 @end table
8821
8822 @section detelecine
8823
8824 Apply an exact inverse of the telecine operation. It requires a predefined
8825 pattern specified using the pattern option which must be the same as that passed
8826 to the telecine filter.
8827
8828 This filter accepts the following options:
8829
8830 @table @option
8831 @item first_field
8832 @table @samp
8833 @item top, t
8834 top field first
8835 @item bottom, b
8836 bottom field first
8837 The default value is @code{top}.
8838 @end table
8839
8840 @item pattern
8841 A string of numbers representing the pulldown pattern you wish to apply.
8842 The default value is @code{23}.
8843
8844 @item start_frame
8845 A number representing position of the first frame with respect to the telecine
8846 pattern. This is to be used if the stream is cut. The default value is @code{0}.
8847 @end table
8848
8849 @section dilation
8850
8851 Apply dilation effect to the video.
8852
8853 This filter replaces the pixel by the local(3x3) maximum.
8854
8855 It accepts the following options:
8856
8857 @table @option
8858 @item threshold0
8859 @item threshold1
8860 @item threshold2
8861 @item threshold3
8862 Limit the maximum change for each plane, default is 65535.
8863 If 0, plane will remain unchanged.
8864
8865 @item coordinates
8866 Flag which specifies the pixel to refer to. Default is 255 i.e. all eight
8867 pixels are used.
8868
8869 Flags to local 3x3 coordinates maps like this:
8870
8871     1 2 3
8872     4   5
8873     6 7 8
8874 @end table
8875
8876 @section displace
8877
8878 Displace pixels as indicated by second and third input stream.
8879
8880 It takes three input streams and outputs one stream, the first input is the
8881 source, and second and third input are displacement maps.
8882
8883 The second input specifies how much to displace pixels along the
8884 x-axis, while the third input specifies how much to displace pixels
8885 along the y-axis.
8886 If one of displacement map streams terminates, last frame from that
8887 displacement map will be used.
8888
8889 Note that once generated, displacements maps can be reused over and over again.
8890
8891 A description of the accepted options follows.
8892
8893 @table @option
8894 @item edge
8895 Set displace behavior for pixels that are out of range.
8896
8897 Available values are:
8898 @table @samp
8899 @item blank
8900 Missing pixels are replaced by black pixels.
8901
8902 @item smear
8903 Adjacent pixels will spread out to replace missing pixels.
8904
8905 @item wrap
8906 Out of range pixels are wrapped so they point to pixels of other side.
8907
8908 @item mirror
8909 Out of range pixels will be replaced with mirrored pixels.
8910 @end table
8911 Default is @samp{smear}.
8912
8913 @end table
8914
8915 @subsection Examples
8916
8917 @itemize
8918 @item
8919 Add ripple effect to rgb input of video size hd720:
8920 @example
8921 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
8922 @end example
8923
8924 @item
8925 Add wave effect to rgb input of video size hd720:
8926 @example
8927 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
8928 @end example
8929 @end itemize
8930
8931 @section drawbox
8932
8933 Draw a colored box on the input image.
8934
8935 It accepts the following parameters:
8936
8937 @table @option
8938 @item x
8939 @item y
8940 The expressions which specify the top left corner coordinates of the box. It defaults to 0.
8941
8942 @item width, w
8943 @item height, h
8944 The expressions which specify the width and height of the box; if 0 they are interpreted as
8945 the input width and height. It defaults to 0.
8946
8947 @item color, c
8948 Specify the color of the box to write. For the general syntax of this option,
8949 check the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}. If the special
8950 value @code{invert} is used, the box edge color is the same as the
8951 video with inverted luma.
8952
8953 @item thickness, t
8954 The expression which sets the thickness of the box edge.
8955 A value of @code{fill} will create a filled box. Default value is @code{3}.
8956
8957 See below for the list of accepted constants.
8958
8959 @item replace
8960 Applicable if the input has alpha. With value @code{1}, the pixels of the painted box
8961 will overwrite the video's color and alpha pixels.
8962 Default is @code{0}, which composites the box onto the input, leaving the video's alpha intact.
8963 @end table
8964
8965 The parameters for @var{x}, @var{y}, @var{w} and @var{h} and @var{t} are expressions containing the
8966 following constants:
8967
8968 @table @option
8969 @item dar
8970 The input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}.
8971
8972 @item hsub
8973 @item vsub
8974 horizontal and vertical chroma subsample values. For example for the
8975 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
8976
8977 @item in_h, ih
8978 @item in_w, iw
8979 The input width and height.
8980
8981 @item sar
8982 The input sample aspect ratio.
8983
8984 @item x
8985 @item y
8986 The x and y offset coordinates where the box is drawn.
8987
8988 @item w
8989 @item h
8990 The width and height of the drawn box.
8991
8992 @item t
8993 The thickness of the drawn box.
8994
8995 These constants allow the @var{x}, @var{y}, @var{w}, @var{h} and @var{t} expressions to refer to
8996 each other, so you may for example specify @code{y=x/dar} or @code{h=w/dar}.
8997
8998 @end table
8999
9000 @subsection Examples
9001
9002 @itemize
9003 @item
9004 Draw a black box around the edge of the input image:
9005 @example
9006 drawbox
9007 @end example
9008
9009 @item
9010 Draw a box with color red and an opacity of 50%:
9011 @example
9012 drawbox=10:20:200:60:red@@0.5
9013 @end example
9014
9015 The previous example can be specified as:
9016 @example
9017 drawbox=x=10:y=20:w=200:h=60:color=red@@0.5
9018 @end example
9019
9020 @item
9021 Fill the box with pink color:
9022 @example
9023 drawbox=x=10:y=10:w=100:h=100:color=pink@@0.5:t=fill
9024 @end example
9025
9026 @item
9027 Draw a 2-pixel red 2.40:1 mask:
9028 @example
9029 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
9030 @end example
9031 @end itemize
9032
9033 @subsection Commands
9034 This filter supports same commands as options.
9035 The command accepts the same syntax of the corresponding option.
9036
9037 If the specified expression is not valid, it is kept at its current
9038 value.
9039
9040 @section drawgrid
9041
9042 Draw a grid on the input image.
9043
9044 It accepts the following parameters:
9045
9046 @table @option
9047 @item x
9048 @item y
9049 The expressions which specify the coordinates of some point of grid intersection (meant to configure offset). Both default to 0.
9050
9051 @item width, w
9052 @item height, h
9053 The expressions which specify the width and height of the grid cell, if 0 they are interpreted as the
9054 input width and height, respectively, minus @code{thickness}, so image gets
9055 framed. Default to 0.
9056
9057 @item color, c
9058 Specify the color of the grid. For the general syntax of this option,
9059 check the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}. If the special
9060 value @code{invert} is used, the grid color is the same as the
9061 video with inverted luma.
9062
9063 @item thickness, t
9064 The expression which sets the thickness of the grid line. Default value is @code{1}.
9065
9066 See below for the list of accepted constants.
9067
9068 @item replace
9069 Applicable if the input has alpha. With @code{1} the pixels of the painted grid
9070 will overwrite the video's color and alpha pixels.
9071 Default is @code{0}, which composites the grid onto the input, leaving the video's alpha intact.
9072 @end table
9073
9074 The parameters for @var{x}, @var{y}, @var{w} and @var{h} and @var{t} are expressions containing the
9075 following constants:
9076
9077 @table @option
9078 @item dar
9079 The input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}.
9080
9081 @item hsub
9082 @item vsub
9083 horizontal and vertical chroma subsample values. For example for the
9084 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
9085
9086 @item in_h, ih
9087 @item in_w, iw
9088 The input grid cell width and height.
9089
9090 @item sar
9091 The input sample aspect ratio.
9092
9093 @item x
9094 @item y
9095 The x and y coordinates of some point of grid intersection (meant to configure offset).
9096
9097 @item w
9098 @item h
9099 The width and height of the drawn cell.
9100
9101 @item t
9102 The thickness of the drawn cell.
9103
9104 These constants allow the @var{x}, @var{y}, @var{w}, @var{h} and @var{t} expressions to refer to
9105 each other, so you may for example specify @code{y=x/dar} or @code{h=w/dar}.
9106
9107 @end table
9108
9109 @subsection Examples
9110
9111 @itemize
9112 @item
9113 Draw a grid with cell 100x100 pixels, thickness 2 pixels, with color red and an opacity of 50%:
9114 @example
9115 drawgrid=width=100:height=100:thickness=2:color=red@@0.5
9116 @end example
9117
9118 @item
9119 Draw a white 3x3 grid with an opacity of 50%:
9120 @example
9121 drawgrid=w=iw/3:h=ih/3:t=2:c=white@@0.5
9122 @end example
9123 @end itemize
9124
9125 @subsection Commands
9126 This filter supports same commands as options.
9127 The command accepts the same syntax of the corresponding option.
9128
9129 If the specified expression is not valid, it is kept at its current
9130 value.
9131
9132 @anchor{drawtext}
9133 @section drawtext
9134
9135 Draw a text string or text from a specified file on top of a video, using the
9136 libfreetype library.
9137
9138 To enable compilation of this filter, you need to configure FFmpeg with
9139 @code{--enable-libfreetype}.
9140 To enable default font fallback and the @var{font} option you need to
9141 configure FFmpeg with @code{--enable-libfontconfig}.
9142 To enable the @var{text_shaping} option, you need to configure FFmpeg with
9143 @code{--enable-libfribidi}.
9144
9145 @subsection Syntax
9146
9147 It accepts the following parameters:
9148
9149 @table @option
9150
9151 @item box
9152 Used to draw a box around text using the background color.
9153 The value must be either 1 (enable) or 0 (disable).
9154 The default value of @var{box} is 0.
9155
9156 @item boxborderw
9157 Set the width of the border to be drawn around the box using @var{boxcolor}.
9158 The default value of @var{boxborderw} is 0.
9159
9160 @item boxcolor
9161 The color to be used for drawing box around text. For the syntax of this
9162 option, check the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
9163
9164 The default value of @var{boxcolor} is "white".
9165
9166 @item line_spacing
9167 Set the line spacing in pixels of the border to be drawn around the box using @var{box}.
9168 The default value of @var{line_spacing} is 0.
9169
9170 @item borderw
9171 Set the width of the border to be drawn around the text using @var{bordercolor}.
9172 The default value of @var{borderw} is 0.
9173
9174 @item bordercolor
9175 Set the color to be used for drawing border around text. For the syntax of this
9176 option, check the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
9177
9178 The default value of @var{bordercolor} is "black".
9179
9180 @item expansion
9181 Select how the @var{text} is expanded. Can be either @code{none},
9182 @code{strftime} (deprecated) or
9183 @code{normal} (default). See the @ref{drawtext_expansion, Text expansion} section
9184 below for details.
9185
9186 @item basetime
9187 Set a start time for the count. Value is in microseconds. Only applied
9188 in the deprecated strftime expansion mode. To emulate in normal expansion
9189 mode use the @code{pts} function, supplying the start time (in seconds)
9190 as the second argument.
9191
9192 @item fix_bounds
9193 If true, check and fix text coords to avoid clipping.
9194
9195 @item fontcolor
9196 The color to be used for drawing fonts. For the syntax of this option, check
9197 the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
9198
9199 The default value of @var{fontcolor} is "black".
9200
9201 @item fontcolor_expr
9202 String which is expanded the same way as @var{text} to obtain dynamic
9203 @var{fontcolor} value. By default this option has empty value and is not
9204 processed. When this option is set, it overrides @var{fontcolor} option.
9205
9206 @item font
9207 The font family to be used for drawing text. By default Sans.
9208
9209 @item fontfile
9210 The font file to be used for drawing text. The path must be included.
9211 This parameter is mandatory if the fontconfig support is disabled.
9212
9213 @item alpha
9214 Draw the text applying alpha blending. The value can
9215 be a number between 0.0 and 1.0.
9216 The expression accepts the same variables @var{x, y} as well.
9217 The default value is 1.
9218 Please see @var{fontcolor_expr}.
9219
9220 @item fontsize
9221 The font size to be used for drawing text.
9222 The default value of @var{fontsize} is 16.
9223
9224 @item text_shaping
9225 If set to 1, attempt to shape the text (for example, reverse the order of
9226 right-to-left text and join Arabic characters) before drawing it.
9227 Otherwise, just draw the text exactly as given.
9228 By default 1 (if supported).
9229
9230 @item ft_load_flags
9231 The flags to be used for loading the fonts.
9232
9233 The flags map the corresponding flags supported by libfreetype, and are
9234 a combination of the following values:
9235 @table @var
9236 @item default
9237 @item no_scale
9238 @item no_hinting
9239 @item render
9240 @item no_bitmap
9241 @item vertical_layout
9242 @item force_autohint
9243 @item crop_bitmap
9244 @item pedantic
9245 @item ignore_global_advance_width
9246 @item no_recurse
9247 @item ignore_transform
9248 @item monochrome
9249 @item linear_design
9250 @item no_autohint
9251 @end table
9252
9253 Default value is "default".
9254
9255 For more information consult the documentation for the FT_LOAD_*
9256 libfreetype flags.
9257
9258 @item shadowcolor
9259 The color to be used for drawing a shadow behind the drawn text. For the
9260 syntax of this option, check the @ref{color syntax,,"Color" section in the
9261 ffmpeg-utils manual,ffmpeg-utils}.
9262
9263 The default value of @var{shadowcolor} is "black".
9264
9265 @item shadowx
9266 @item shadowy
9267 The x and y offsets for the text shadow position with respect to the
9268 position of the text. They can be either positive or negative
9269 values. The default value for both is "0".
9270
9271 @item start_number
9272 The starting frame number for the n/frame_num variable. The default value
9273 is "0".
9274
9275 @item tabsize
9276 The size in number of spaces to use for rendering the tab.
9277 Default value is 4.
9278
9279 @item timecode
9280 Set the initial timecode representation in "hh:mm:ss[:;.]ff"
9281 format. It can be used with or without text parameter. @var{timecode_rate}
9282 option must be specified.
9283
9284 @item timecode_rate, rate, r
9285 Set the timecode frame rate (timecode only). Value will be rounded to nearest
9286 integer. Minimum value is "1".
9287 Drop-frame timecode is supported for frame rates 30 & 60.
9288
9289 @item tc24hmax
9290 If set to 1, the output of the timecode option will wrap around at 24 hours.
9291 Default is 0 (disabled).
9292
9293 @item text
9294 The text string to be drawn. The text must be a sequence of UTF-8
9295 encoded characters.
9296 This parameter is mandatory if no file is specified with the parameter
9297 @var{textfile}.
9298
9299 @item textfile
9300 A text file containing text to be drawn. The text must be a sequence
9301 of UTF-8 encoded characters.
9302
9303 This parameter is mandatory if no text string is specified with the
9304 parameter @var{text}.
9305
9306 If both @var{text} and @var{textfile} are specified, an error is thrown.
9307
9308 @item reload
9309 If set to 1, the @var{textfile} will be reloaded before each frame.
9310 Be sure to update it atomically, or it may be read partially, or even fail.
9311
9312 @item x
9313 @item y
9314 The expressions which specify the offsets where text will be drawn
9315 within the video frame. They are relative to the top/left border of the
9316 output image.
9317
9318 The default value of @var{x} and @var{y} is "0".
9319
9320 See below for the list of accepted constants and functions.
9321 @end table
9322
9323 The parameters for @var{x} and @var{y} are expressions containing the
9324 following constants and functions:
9325
9326 @table @option
9327 @item dar
9328 input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}
9329
9330 @item hsub
9331 @item vsub
9332 horizontal and vertical chroma subsample values. For example for the
9333 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
9334
9335 @item line_h, lh
9336 the height of each text line
9337
9338 @item main_h, h, H
9339 the input height
9340
9341 @item main_w, w, W
9342 the input width
9343
9344 @item max_glyph_a, ascent
9345 the maximum distance from the baseline to the highest/upper grid
9346 coordinate used to place a glyph outline point, for all the rendered
9347 glyphs.
9348 It is a positive value, due to the grid's orientation with the Y axis
9349 upwards.
9350
9351 @item max_glyph_d, descent
9352 the maximum distance from the baseline to the lowest grid coordinate
9353 used to place a glyph outline point, for all the rendered glyphs.
9354 This is a negative value, due to the grid's orientation, with the Y axis
9355 upwards.
9356
9357 @item max_glyph_h
9358 maximum glyph height, that is the maximum height for all the glyphs
9359 contained in the rendered text, it is equivalent to @var{ascent} -
9360 @var{descent}.
9361
9362 @item max_glyph_w
9363 maximum glyph width, that is the maximum width for all the glyphs
9364 contained in the rendered text
9365
9366 @item n
9367 the number of input frame, starting from 0
9368
9369 @item rand(min, max)
9370 return a random number included between @var{min} and @var{max}
9371
9372 @item sar
9373 The input sample aspect ratio.
9374
9375 @item t
9376 timestamp expressed in seconds, NAN if the input timestamp is unknown
9377
9378 @item text_h, th
9379 the height of the rendered text
9380
9381 @item text_w, tw
9382 the width of the rendered text
9383
9384 @item x
9385 @item y
9386 the x and y offset coordinates where the text is drawn.
9387
9388 These parameters allow the @var{x} and @var{y} expressions to refer
9389 to each other, so you can for example specify @code{y=x/dar}.
9390
9391 @item pict_type
9392 A one character description of the current frame's picture type.
9393
9394 @item pkt_pos
9395 The current packet's position in the input file or stream
9396 (in bytes, from the start of the input). A value of -1 indicates
9397 this info is not available.
9398
9399 @item pkt_duration
9400 The current packet's duration, in seconds.
9401
9402 @item pkt_size
9403 The current packet's size (in bytes).
9404 @end table
9405
9406 @anchor{drawtext_expansion}
9407 @subsection Text expansion
9408
9409 If @option{expansion} is set to @code{strftime},
9410 the filter recognizes strftime() sequences in the provided text and
9411 expands them accordingly. Check the documentation of strftime(). This
9412 feature is deprecated.
9413
9414 If @option{expansion} is set to @code{none}, the text is printed verbatim.
9415
9416 If @option{expansion} is set to @code{normal} (which is the default),
9417 the following expansion mechanism is used.
9418
9419 The backslash character @samp{\}, followed by any character, always expands to
9420 the second character.
9421
9422 Sequences of the form @code{%@{...@}} are expanded. The text between the
9423 braces is a function name, possibly followed by arguments separated by ':'.
9424 If the arguments contain special characters or delimiters (':' or '@}'),
9425 they should be escaped.
9426
9427 Note that they probably must also be escaped as the value for the
9428 @option{text} option in the filter argument string and as the filter
9429 argument in the filtergraph description, and possibly also for the shell,
9430 that makes up to four levels of escaping; using a text file avoids these
9431 problems.
9432
9433 The following functions are available:
9434
9435 @table @command
9436
9437 @item expr, e
9438 The expression evaluation result.
9439
9440 It must take one argument specifying the expression to be evaluated,
9441 which accepts the same constants and functions as the @var{x} and
9442 @var{y} values. Note that not all constants should be used, for
9443 example the text size is not known when evaluating the expression, so
9444 the constants @var{text_w} and @var{text_h} will have an undefined
9445 value.
9446
9447 @item expr_int_format, eif
9448 Evaluate the expression's value and output as formatted integer.
9449
9450 The first argument is the expression to be evaluated, just as for the @var{expr} function.
9451 The second argument specifies the output format. Allowed values are @samp{x},
9452 @samp{X}, @samp{d} and @samp{u}. They are treated exactly as in the
9453 @code{printf} function.
9454 The third parameter is optional and sets the number of positions taken by the output.
9455 It can be used to add padding with zeros from the left.
9456
9457 @item gmtime
9458 The time at which the filter is running, expressed in UTC.
9459 It can accept an argument: a strftime() format string.
9460
9461 @item localtime
9462 The time at which the filter is running, expressed in the local time zone.
9463 It can accept an argument: a strftime() format string.
9464
9465 @item metadata
9466 Frame metadata. Takes one or two arguments.
9467
9468 The first argument is mandatory and specifies the metadata key.
9469
9470 The second argument is optional and specifies a default value, used when the
9471 metadata key is not found or empty.
9472
9473 Available metadata can be identified by inspecting entries
9474 starting with TAG included within each frame section
9475 printed by running @code{ffprobe -show_frames}.
9476
9477 String metadata generated in filters leading to
9478 the drawtext filter are also available.
9479
9480 @item n, frame_num
9481 The frame number, starting from 0.
9482
9483 @item pict_type
9484 A one character description of the current picture type.
9485
9486 @item pts
9487 The timestamp of the current frame.
9488 It can take up to three arguments.
9489
9490 The first argument is the format of the timestamp; it defaults to @code{flt}
9491 for seconds as a decimal number with microsecond accuracy; @code{hms} stands
9492 for a formatted @var{[-]HH:MM:SS.mmm} timestamp with millisecond accuracy.
9493 @code{gmtime} stands for the timestamp of the frame formatted as UTC time;
9494 @code{localtime} stands for the timestamp of the frame formatted as
9495 local time zone time.
9496
9497 The second argument is an offset added to the timestamp.
9498
9499 If the format is set to @code{hms}, a third argument @code{24HH} may be
9500 supplied to present the hour part of the formatted timestamp in 24h format
9501 (00-23).
9502
9503 If the format is set to @code{localtime} or @code{gmtime},
9504 a third argument may be supplied: a strftime() format string.
9505 By default, @var{YYYY-MM-DD HH:MM:SS} format will be used.
9506 @end table
9507
9508 @subsection Commands
9509
9510 This filter supports altering parameters via commands:
9511 @table @option
9512 @item reinit
9513 Alter existing filter parameters.
9514
9515 Syntax for the argument is the same as for filter invocation, e.g.
9516
9517 @example
9518 fontsize=56:fontcolor=green:text='Hello World'
9519 @end example
9520
9521 Full filter invocation with sendcmd would look like this:
9522
9523 @example
9524 sendcmd=c='56.0 drawtext reinit fontsize=56\:fontcolor=green\:text=Hello\\ World'
9525 @end example
9526 @end table
9527
9528 If the entire argument can't be parsed or applied as valid values then the filter will
9529 continue with its existing parameters.
9530
9531 @subsection Examples
9532
9533 @itemize
9534 @item
9535 Draw "Test Text" with font FreeSerif, using the default values for the
9536 optional parameters.
9537
9538 @example
9539 drawtext="fontfile=/usr/share/fonts/truetype/freefont/FreeSerif.ttf: text='Test Text'"
9540 @end example
9541
9542 @item
9543 Draw 'Test Text' with font FreeSerif of size 24 at position x=100
9544 and y=50 (counting from the top-left corner of the screen), text is
9545 yellow with a red box around it. Both the text and the box have an
9546 opacity of 20%.
9547
9548 @example
9549 drawtext="fontfile=/usr/share/fonts/truetype/freefont/FreeSerif.ttf: text='Test Text':\
9550           x=100: y=50: fontsize=24: fontcolor=yellow@@0.2: box=1: boxcolor=red@@0.2"
9551 @end example
9552
9553 Note that the double quotes are not necessary if spaces are not used
9554 within the parameter list.
9555
9556 @item
9557 Show the text at the center of the video frame:
9558 @example
9559 drawtext="fontsize=30:fontfile=FreeSerif.ttf:text='hello world':x=(w-text_w)/2:y=(h-text_h)/2"
9560 @end example
9561
9562 @item
9563 Show the text at a random position, switching to a new position every 30 seconds:
9564 @example
9565 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)"
9566 @end example
9567
9568 @item
9569 Show a text line sliding from right to left in the last row of the video
9570 frame. The file @file{LONG_LINE} is assumed to contain a single line
9571 with no newlines.
9572 @example
9573 drawtext="fontsize=15:fontfile=FreeSerif.ttf:text=LONG_LINE:y=h-line_h:x=-50*t"
9574 @end example
9575
9576 @item
9577 Show the content of file @file{CREDITS} off the bottom of the frame and scroll up.
9578 @example
9579 drawtext="fontsize=20:fontfile=FreeSerif.ttf:textfile=CREDITS:y=h-20*t"
9580 @end example
9581
9582 @item
9583 Draw a single green letter "g", at the center of the input video.
9584 The glyph baseline is placed at half screen height.
9585 @example
9586 drawtext="fontsize=60:fontfile=FreeSerif.ttf:fontcolor=green:text=g:x=(w-max_glyph_w)/2:y=h/2-ascent"
9587 @end example
9588
9589 @item
9590 Show text for 1 second every 3 seconds:
9591 @example
9592 drawtext="fontfile=FreeSerif.ttf:fontcolor=white:x=100:y=x/dar:enable=lt(mod(t\,3)\,1):text='blink'"
9593 @end example
9594
9595 @item
9596 Use fontconfig to set the font. Note that the colons need to be escaped.
9597 @example
9598 drawtext='fontfile=Linux Libertine O-40\:style=Semibold:text=FFmpeg'
9599 @end example
9600
9601 @item
9602 Print the date of a real-time encoding (see strftime(3)):
9603 @example
9604 drawtext='fontfile=FreeSans.ttf:text=%@{localtime\:%a %b %d %Y@}'
9605 @end example
9606
9607 @item
9608 Show text fading in and out (appearing/disappearing):
9609 @example
9610 #!/bin/sh
9611 DS=1.0 # display start
9612 DE=10.0 # display end
9613 FID=1.5 # fade in duration
9614 FOD=5 # fade out duration
9615 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 @}"
9616 @end example
9617
9618 @item
9619 Horizontally align multiple separate texts. Note that @option{max_glyph_a}
9620 and the @option{fontsize} value are included in the @option{y} offset.
9621 @example
9622 drawtext=fontfile=FreeSans.ttf:text=DOG:fontsize=24:x=10:y=20+24-max_glyph_a,
9623 drawtext=fontfile=FreeSans.ttf:text=cow:fontsize=24:x=80:y=20+24-max_glyph_a
9624 @end example
9625
9626 @end itemize
9627
9628 For more information about libfreetype, check:
9629 @url{http://www.freetype.org/}.
9630
9631 For more information about fontconfig, check:
9632 @url{http://freedesktop.org/software/fontconfig/fontconfig-user.html}.
9633
9634 For more information about libfribidi, check:
9635 @url{http://fribidi.org/}.
9636
9637 @section edgedetect
9638
9639 Detect and draw edges. The filter uses the Canny Edge Detection algorithm.
9640
9641 The filter accepts the following options:
9642
9643 @table @option
9644 @item low
9645 @item high
9646 Set low and high threshold values used by the Canny thresholding
9647 algorithm.
9648
9649 The high threshold selects the "strong" edge pixels, which are then
9650 connected through 8-connectivity with the "weak" edge pixels selected
9651 by the low threshold.
9652
9653 @var{low} and @var{high} threshold values must be chosen in the range
9654 [0,1], and @var{low} should be lesser or equal to @var{high}.
9655
9656 Default value for @var{low} is @code{20/255}, and default value for @var{high}
9657 is @code{50/255}.
9658
9659 @item mode
9660 Define the drawing mode.
9661
9662 @table @samp
9663 @item wires
9664 Draw white/gray wires on black background.
9665
9666 @item colormix
9667 Mix the colors to create a paint/cartoon effect.
9668
9669 @item canny
9670 Apply Canny edge detector on all selected planes.
9671 @end table
9672 Default value is @var{wires}.
9673
9674 @item planes
9675 Select planes for filtering. By default all available planes are filtered.
9676 @end table
9677
9678 @subsection Examples
9679
9680 @itemize
9681 @item
9682 Standard edge detection with custom values for the hysteresis thresholding:
9683 @example
9684 edgedetect=low=0.1:high=0.4
9685 @end example
9686
9687 @item
9688 Painting effect without thresholding:
9689 @example
9690 edgedetect=mode=colormix:high=0
9691 @end example
9692 @end itemize
9693
9694 @section elbg
9695
9696 Apply a posterize effect using the ELBG (Enhanced LBG) algorithm.
9697
9698 For each input image, the filter will compute the optimal mapping from
9699 the input to the output given the codebook length, that is the number
9700 of distinct output colors.
9701
9702 This filter accepts the following options.
9703
9704 @table @option
9705 @item codebook_length, l
9706 Set codebook length. The value must be a positive integer, and
9707 represents the number of distinct output colors. Default value is 256.
9708
9709 @item nb_steps, n
9710 Set the maximum number of iterations to apply for computing the optimal
9711 mapping. The higher the value the better the result and the higher the
9712 computation time. Default value is 1.
9713
9714 @item seed, s
9715 Set a random seed, must be an integer included between 0 and
9716 UINT32_MAX. If not specified, or if explicitly set to -1, the filter
9717 will try to use a good random seed on a best effort basis.
9718
9719 @item pal8
9720 Set pal8 output pixel format. This option does not work with codebook
9721 length greater than 256.
9722 @end table
9723
9724 @section entropy
9725
9726 Measure graylevel entropy in histogram of color channels of video frames.
9727
9728 It accepts the following parameters:
9729
9730 @table @option
9731 @item mode
9732 Can be either @var{normal} or @var{diff}. Default is @var{normal}.
9733
9734 @var{diff} mode measures entropy of histogram delta values, absolute differences
9735 between neighbour histogram values.
9736 @end table
9737
9738 @section eq
9739 Set brightness, contrast, saturation and approximate gamma adjustment.
9740
9741 The filter accepts the following options:
9742
9743 @table @option
9744 @item contrast
9745 Set the contrast expression. The value must be a float value in range
9746 @code{-1000.0} to @code{1000.0}. The default value is "1".
9747
9748 @item brightness
9749 Set the brightness expression. The value must be a float value in
9750 range @code{-1.0} to @code{1.0}. The default value is "0".
9751
9752 @item saturation
9753 Set the saturation expression. The value must be a float in
9754 range @code{0.0} to @code{3.0}. The default value is "1".
9755
9756 @item gamma
9757 Set the gamma expression. The value must be a float in range
9758 @code{0.1} to @code{10.0}.  The default value is "1".
9759
9760 @item gamma_r
9761 Set the gamma expression for red. The value must be a float in
9762 range @code{0.1} to @code{10.0}. The default value is "1".
9763
9764 @item gamma_g
9765 Set the gamma expression for green. The value must be a float in range
9766 @code{0.1} to @code{10.0}. The default value is "1".
9767
9768 @item gamma_b
9769 Set the gamma expression for blue. The value must be a float in range
9770 @code{0.1} to @code{10.0}. The default value is "1".
9771
9772 @item gamma_weight
9773 Set the gamma weight expression. It can be used to reduce the effect
9774 of a high gamma value on bright image areas, e.g. keep them from
9775 getting overamplified and just plain white. The value must be a float
9776 in range @code{0.0} to @code{1.0}. A value of @code{0.0} turns the
9777 gamma correction all the way down while @code{1.0} leaves it at its
9778 full strength. Default is "1".
9779
9780 @item eval
9781 Set when the expressions for brightness, contrast, saturation and
9782 gamma expressions are evaluated.
9783
9784 It accepts the following values:
9785 @table @samp
9786 @item init
9787 only evaluate expressions once during the filter initialization or
9788 when a command is processed
9789
9790 @item frame
9791 evaluate expressions for each incoming frame
9792 @end table
9793
9794 Default value is @samp{init}.
9795 @end table
9796
9797 The expressions accept the following parameters:
9798 @table @option
9799 @item n
9800 frame count of the input frame starting from 0
9801
9802 @item pos
9803 byte position of the corresponding packet in the input file, NAN if
9804 unspecified
9805
9806 @item r
9807 frame rate of the input video, NAN if the input frame rate is unknown
9808
9809 @item t
9810 timestamp expressed in seconds, NAN if the input timestamp is unknown
9811 @end table
9812
9813 @subsection Commands
9814 The filter supports the following commands:
9815
9816 @table @option
9817 @item contrast
9818 Set the contrast expression.
9819
9820 @item brightness
9821 Set the brightness expression.
9822
9823 @item saturation
9824 Set the saturation expression.
9825
9826 @item gamma
9827 Set the gamma expression.
9828
9829 @item gamma_r
9830 Set the gamma_r expression.
9831
9832 @item gamma_g
9833 Set gamma_g expression.
9834
9835 @item gamma_b
9836 Set gamma_b expression.
9837
9838 @item gamma_weight
9839 Set gamma_weight expression.
9840
9841 The command accepts the same syntax of the corresponding option.
9842
9843 If the specified expression is not valid, it is kept at its current
9844 value.
9845
9846 @end table
9847
9848 @section erosion
9849
9850 Apply erosion effect to the video.
9851
9852 This filter replaces the pixel by the local(3x3) minimum.
9853
9854 It accepts the following options:
9855
9856 @table @option
9857 @item threshold0
9858 @item threshold1
9859 @item threshold2
9860 @item threshold3
9861 Limit the maximum change for each plane, default is 65535.
9862 If 0, plane will remain unchanged.
9863
9864 @item coordinates
9865 Flag which specifies the pixel to refer to. Default is 255 i.e. all eight
9866 pixels are used.
9867
9868 Flags to local 3x3 coordinates maps like this:
9869
9870     1 2 3
9871     4   5
9872     6 7 8
9873 @end table
9874
9875 @section extractplanes
9876
9877 Extract color channel components from input video stream into
9878 separate grayscale video streams.
9879
9880 The filter accepts the following option:
9881
9882 @table @option
9883 @item planes
9884 Set plane(s) to extract.
9885
9886 Available values for planes are:
9887 @table @samp
9888 @item y
9889 @item u
9890 @item v
9891 @item a
9892 @item r
9893 @item g
9894 @item b
9895 @end table
9896
9897 Choosing planes not available in the input will result in an error.
9898 That means you cannot select @code{r}, @code{g}, @code{b} planes
9899 with @code{y}, @code{u}, @code{v} planes at same time.
9900 @end table
9901
9902 @subsection Examples
9903
9904 @itemize
9905 @item
9906 Extract luma, u and v color channel component from input video frame
9907 into 3 grayscale outputs:
9908 @example
9909 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
9910 @end example
9911 @end itemize
9912
9913 @section fade
9914
9915 Apply a fade-in/out effect to the input video.
9916
9917 It accepts the following parameters:
9918
9919 @table @option
9920 @item type, t
9921 The effect type can be either "in" for a fade-in, or "out" for a fade-out
9922 effect.
9923 Default is @code{in}.
9924
9925 @item start_frame, s
9926 Specify the number of the frame to start applying the fade
9927 effect at. Default is 0.
9928
9929 @item nb_frames, n
9930 The number of frames that the fade effect lasts. At the end of the
9931 fade-in effect, the output video will have the same intensity as the input video.
9932 At the end of the fade-out transition, the output video will be filled with the
9933 selected @option{color}.
9934 Default is 25.
9935
9936 @item alpha
9937 If set to 1, fade only alpha channel, if one exists on the input.
9938 Default value is 0.
9939
9940 @item start_time, st
9941 Specify the timestamp (in seconds) of the frame to start to apply the fade
9942 effect. If both start_frame and start_time are specified, the fade will start at
9943 whichever comes last.  Default is 0.
9944
9945 @item duration, d
9946 The number of seconds for which the fade effect has to last. At the end of the
9947 fade-in effect the output video will have the same intensity as the input video,
9948 at the end of the fade-out transition the output video will be filled with the
9949 selected @option{color}.
9950 If both duration and nb_frames are specified, duration is used. Default is 0
9951 (nb_frames is used by default).
9952
9953 @item color, c
9954 Specify the color of the fade. Default is "black".
9955 @end table
9956
9957 @subsection Examples
9958
9959 @itemize
9960 @item
9961 Fade in the first 30 frames of video:
9962 @example
9963 fade=in:0:30
9964 @end example
9965
9966 The command above is equivalent to:
9967 @example
9968 fade=t=in:s=0:n=30
9969 @end example
9970
9971 @item
9972 Fade out the last 45 frames of a 200-frame video:
9973 @example
9974 fade=out:155:45
9975 fade=type=out:start_frame=155:nb_frames=45
9976 @end example
9977
9978 @item
9979 Fade in the first 25 frames and fade out the last 25 frames of a 1000-frame video:
9980 @example
9981 fade=in:0:25, fade=out:975:25
9982 @end example
9983
9984 @item
9985 Make the first 5 frames yellow, then fade in from frame 5-24:
9986 @example
9987 fade=in:5:20:color=yellow
9988 @end example
9989
9990 @item
9991 Fade in alpha over first 25 frames of video:
9992 @example
9993 fade=in:0:25:alpha=1
9994 @end example
9995
9996 @item
9997 Make the first 5.5 seconds black, then fade in for 0.5 seconds:
9998 @example
9999 fade=t=in:st=5.5:d=0.5
10000 @end example
10001
10002 @end itemize
10003
10004 @section fftdnoiz
10005 Denoise frames using 3D FFT (frequency domain filtering).
10006
10007 The filter accepts the following options:
10008
10009 @table @option
10010 @item sigma
10011 Set the noise sigma constant. This sets denoising strength.
10012 Default value is 1. Allowed range is from 0 to 30.
10013 Using very high sigma with low overlap may give blocking artifacts.
10014
10015 @item amount
10016 Set amount of denoising. By default all detected noise is reduced.
10017 Default value is 1. Allowed range is from 0 to 1.
10018
10019 @item block
10020 Set size of block, Default is 4, can be 3, 4, 5 or 6.
10021 Actual size of block in pixels is 2 to power of @var{block}, so by default
10022 block size in pixels is 2^4 which is 16.
10023
10024 @item overlap
10025 Set block overlap. Default is 0.5. Allowed range is from 0.2 to 0.8.
10026
10027 @item prev
10028 Set number of previous frames to use for denoising. By default is set to 0.
10029
10030 @item next
10031 Set number of next frames to to use for denoising. By default is set to 0.
10032
10033 @item planes
10034 Set planes which will be filtered, by default are all available filtered
10035 except alpha.
10036 @end table
10037
10038 @section fftfilt
10039 Apply arbitrary expressions to samples in frequency domain
10040
10041 @table @option
10042 @item dc_Y
10043 Adjust the dc value (gain) of the luma plane of the image. The filter
10044 accepts an integer value in range @code{0} to @code{1000}. The default
10045 value is set to @code{0}.
10046
10047 @item dc_U
10048 Adjust the dc value (gain) of the 1st chroma plane of the image. The
10049 filter accepts an integer value in range @code{0} to @code{1000}. The
10050 default value is set to @code{0}.
10051
10052 @item dc_V
10053 Adjust the dc value (gain) of the 2nd chroma plane of the image. The
10054 filter accepts an integer value in range @code{0} to @code{1000}. The
10055 default value is set to @code{0}.
10056
10057 @item weight_Y
10058 Set the frequency domain weight expression for the luma plane.
10059
10060 @item weight_U
10061 Set the frequency domain weight expression for the 1st chroma plane.
10062
10063 @item weight_V
10064 Set the frequency domain weight expression for the 2nd chroma plane.
10065
10066 @item eval
10067 Set when the expressions are evaluated.
10068
10069 It accepts the following values:
10070 @table @samp
10071 @item init
10072 Only evaluate expressions once during the filter initialization.
10073
10074 @item frame
10075 Evaluate expressions for each incoming frame.
10076 @end table
10077
10078 Default value is @samp{init}.
10079
10080 The filter accepts the following variables:
10081 @item X
10082 @item Y
10083 The coordinates of the current sample.
10084
10085 @item W
10086 @item H
10087 The width and height of the image.
10088
10089 @item N
10090 The number of input frame, starting from 0.
10091 @end table
10092
10093 @subsection Examples
10094
10095 @itemize
10096 @item
10097 High-pass:
10098 @example
10099 fftfilt=dc_Y=128:weight_Y='squish(1-(Y+X)/100)'
10100 @end example
10101
10102 @item
10103 Low-pass:
10104 @example
10105 fftfilt=dc_Y=0:weight_Y='squish((Y+X)/100-1)'
10106 @end example
10107
10108 @item
10109 Sharpen:
10110 @example
10111 fftfilt=dc_Y=0:weight_Y='1+squish(1-(Y+X)/100)'
10112 @end example
10113
10114 @item
10115 Blur:
10116 @example
10117 fftfilt=dc_Y=0:weight_Y='exp(-4 * ((Y+X)/(W+H)))'
10118 @end example
10119
10120 @end itemize
10121
10122 @section field
10123
10124 Extract a single field from an interlaced image using stride
10125 arithmetic to avoid wasting CPU time. The output frames are marked as
10126 non-interlaced.
10127
10128 The filter accepts the following options:
10129
10130 @table @option
10131 @item type
10132 Specify whether to extract the top (if the value is @code{0} or
10133 @code{top}) or the bottom field (if the value is @code{1} or
10134 @code{bottom}).
10135 @end table
10136
10137 @section fieldhint
10138
10139 Create new frames by copying the top and bottom fields from surrounding frames
10140 supplied as numbers by the hint file.
10141
10142 @table @option
10143 @item hint
10144 Set file containing hints: absolute/relative frame numbers.
10145
10146 There must be one line for each frame in a clip. Each line must contain two
10147 numbers separated by the comma, optionally followed by @code{-} or @code{+}.
10148 Numbers supplied on each line of file can not be out of [N-1,N+1] where N
10149 is current frame number for @code{absolute} mode or out of [-1, 1] range
10150 for @code{relative} mode. First number tells from which frame to pick up top
10151 field and second number tells from which frame to pick up bottom field.
10152
10153 If optionally followed by @code{+} output frame will be marked as interlaced,
10154 else if followed by @code{-} output frame will be marked as progressive, else
10155 it will be marked same as input frame.
10156 If optionally followed by @code{t} output frame will use only top field, or in
10157 case of @code{b} it will use only bottom field.
10158 If line starts with @code{#} or @code{;} that line is skipped.
10159
10160 @item mode
10161 Can be item @code{absolute} or @code{relative}. Default is @code{absolute}.
10162 @end table
10163
10164 Example of first several lines of @code{hint} file for @code{relative} mode:
10165 @example
10166 0,0 - # first frame
10167 1,0 - # second frame, use third's frame top field and second's frame bottom field
10168 1,0 - # third frame, use fourth's frame top field and third's frame bottom field
10169 1,0 -
10170 0,0 -
10171 0,0 -
10172 1,0 -
10173 1,0 -
10174 1,0 -
10175 0,0 -
10176 0,0 -
10177 1,0 -
10178 1,0 -
10179 1,0 -
10180 0,0 -
10181 @end example
10182
10183 @section fieldmatch
10184
10185 Field matching filter for inverse telecine. It is meant to reconstruct the
10186 progressive frames from a telecined stream. The filter does not drop duplicated
10187 frames, so to achieve a complete inverse telecine @code{fieldmatch} needs to be
10188 followed by a decimation filter such as @ref{decimate} in the filtergraph.
10189
10190 The separation of the field matching and the decimation is notably motivated by
10191 the possibility of inserting a de-interlacing filter fallback between the two.
10192 If the source has mixed telecined and real interlaced content,
10193 @code{fieldmatch} will not be able to match fields for the interlaced parts.
10194 But these remaining combed frames will be marked as interlaced, and thus can be
10195 de-interlaced by a later filter such as @ref{yadif} before decimation.
10196
10197 In addition to the various configuration options, @code{fieldmatch} can take an
10198 optional second stream, activated through the @option{ppsrc} option. If
10199 enabled, the frames reconstruction will be based on the fields and frames from
10200 this second stream. This allows the first input to be pre-processed in order to
10201 help the various algorithms of the filter, while keeping the output lossless
10202 (assuming the fields are matched properly). Typically, a field-aware denoiser,
10203 or brightness/contrast adjustments can help.
10204
10205 Note that this filter uses the same algorithms as TIVTC/TFM (AviSynth project)
10206 and VIVTC/VFM (VapourSynth project). The later is a light clone of TFM from
10207 which @code{fieldmatch} is based on. While the semantic and usage are very
10208 close, some behaviour and options names can differ.
10209
10210 The @ref{decimate} filter currently only works for constant frame rate input.
10211 If your input has mixed telecined (30fps) and progressive content with a lower
10212 framerate like 24fps use the following filterchain to produce the necessary cfr
10213 stream: @code{dejudder,fps=30000/1001,fieldmatch,decimate}.
10214
10215 The filter accepts the following options:
10216
10217 @table @option
10218 @item order
10219 Specify the assumed field order of the input stream. Available values are:
10220
10221 @table @samp
10222 @item auto
10223 Auto detect parity (use FFmpeg's internal parity value).
10224 @item bff
10225 Assume bottom field first.
10226 @item tff
10227 Assume top field first.
10228 @end table
10229
10230 Note that it is sometimes recommended not to trust the parity announced by the
10231 stream.
10232
10233 Default value is @var{auto}.
10234
10235 @item mode
10236 Set the matching mode or strategy to use. @option{pc} mode is the safest in the
10237 sense that it won't risk creating jerkiness due to duplicate frames when
10238 possible, but if there are bad edits or blended fields it will end up
10239 outputting combed frames when a good match might actually exist. On the other
10240 hand, @option{pcn_ub} mode is the most risky in terms of creating jerkiness,
10241 but will almost always find a good frame if there is one. The other values are
10242 all somewhere in between @option{pc} and @option{pcn_ub} in terms of risking
10243 jerkiness and creating duplicate frames versus finding good matches in sections
10244 with bad edits, orphaned fields, blended fields, etc.
10245
10246 More details about p/c/n/u/b are available in @ref{p/c/n/u/b meaning} section.
10247
10248 Available values are:
10249
10250 @table @samp
10251 @item pc
10252 2-way matching (p/c)
10253 @item pc_n
10254 2-way matching, and trying 3rd match if still combed (p/c + n)
10255 @item pc_u
10256 2-way matching, and trying 3rd match (same order) if still combed (p/c + u)
10257 @item pc_n_ub
10258 2-way matching, trying 3rd match if still combed, and trying 4th/5th matches if
10259 still combed (p/c + n + u/b)
10260 @item pcn
10261 3-way matching (p/c/n)
10262 @item pcn_ub
10263 3-way matching, and trying 4th/5th matches if all 3 of the original matches are
10264 detected as combed (p/c/n + u/b)
10265 @end table
10266
10267 The parenthesis at the end indicate the matches that would be used for that
10268 mode assuming @option{order}=@var{tff} (and @option{field} on @var{auto} or
10269 @var{top}).
10270
10271 In terms of speed @option{pc} mode is by far the fastest and @option{pcn_ub} is
10272 the slowest.
10273
10274 Default value is @var{pc_n}.
10275
10276 @item ppsrc
10277 Mark the main input stream as a pre-processed input, and enable the secondary
10278 input stream as the clean source to pick the fields from. See the filter
10279 introduction for more details. It is similar to the @option{clip2} feature from
10280 VFM/TFM.
10281
10282 Default value is @code{0} (disabled).
10283
10284 @item field
10285 Set the field to match from. It is recommended to set this to the same value as
10286 @option{order} unless you experience matching failures with that setting. In
10287 certain circumstances changing the field that is used to match from can have a
10288 large impact on matching performance. Available values are:
10289
10290 @table @samp
10291 @item auto
10292 Automatic (same value as @option{order}).
10293 @item bottom
10294 Match from the bottom field.
10295 @item top
10296 Match from the top field.
10297 @end table
10298
10299 Default value is @var{auto}.
10300
10301 @item mchroma
10302 Set whether or not chroma is included during the match comparisons. In most
10303 cases it is recommended to leave this enabled. You should set this to @code{0}
10304 only if your clip has bad chroma problems such as heavy rainbowing or other
10305 artifacts. Setting this to @code{0} could also be used to speed things up at
10306 the cost of some accuracy.
10307
10308 Default value is @code{1}.
10309
10310 @item y0
10311 @item y1
10312 These define an exclusion band which excludes the lines between @option{y0} and
10313 @option{y1} from being included in the field matching decision. An exclusion
10314 band can be used to ignore subtitles, a logo, or other things that may
10315 interfere with the matching. @option{y0} sets the starting scan line and
10316 @option{y1} sets the ending line; all lines in between @option{y0} and
10317 @option{y1} (including @option{y0} and @option{y1}) will be ignored. Setting
10318 @option{y0} and @option{y1} to the same value will disable the feature.
10319 @option{y0} and @option{y1} defaults to @code{0}.
10320
10321 @item scthresh
10322 Set the scene change detection threshold as a percentage of maximum change on
10323 the luma plane. Good values are in the @code{[8.0, 14.0]} range. Scene change
10324 detection is only relevant in case @option{combmatch}=@var{sc}.  The range for
10325 @option{scthresh} is @code{[0.0, 100.0]}.
10326
10327 Default value is @code{12.0}.
10328
10329 @item combmatch
10330 When @option{combatch} is not @var{none}, @code{fieldmatch} will take into
10331 account the combed scores of matches when deciding what match to use as the
10332 final match. Available values are:
10333
10334 @table @samp
10335 @item none
10336 No final matching based on combed scores.
10337 @item sc
10338 Combed scores are only used when a scene change is detected.
10339 @item full
10340 Use combed scores all the time.
10341 @end table
10342
10343 Default is @var{sc}.
10344
10345 @item combdbg
10346 Force @code{fieldmatch} to calculate the combed metrics for certain matches and
10347 print them. This setting is known as @option{micout} in TFM/VFM vocabulary.
10348 Available values are:
10349
10350 @table @samp
10351 @item none
10352 No forced calculation.
10353 @item pcn
10354 Force p/c/n calculations.
10355 @item pcnub
10356 Force p/c/n/u/b calculations.
10357 @end table
10358
10359 Default value is @var{none}.
10360
10361 @item cthresh
10362 This is the area combing threshold used for combed frame detection. This
10363 essentially controls how "strong" or "visible" combing must be to be detected.
10364 Larger values mean combing must be more visible and smaller values mean combing
10365 can be less visible or strong and still be detected. Valid settings are from
10366 @code{-1} (every pixel will be detected as combed) to @code{255} (no pixel will
10367 be detected as combed). This is basically a pixel difference value. A good
10368 range is @code{[8, 12]}.
10369
10370 Default value is @code{9}.
10371
10372 @item chroma
10373 Sets whether or not chroma is considered in the combed frame decision.  Only
10374 disable this if your source has chroma problems (rainbowing, etc.) that are
10375 causing problems for the combed frame detection with chroma enabled. Actually,
10376 using @option{chroma}=@var{0} is usually more reliable, except for the case
10377 where there is chroma only combing in the source.
10378
10379 Default value is @code{0}.
10380
10381 @item blockx
10382 @item blocky
10383 Respectively set the x-axis and y-axis size of the window used during combed
10384 frame detection. This has to do with the size of the area in which
10385 @option{combpel} pixels are required to be detected as combed for a frame to be
10386 declared combed. See the @option{combpel} parameter description for more info.
10387 Possible values are any number that is a power of 2 starting at 4 and going up
10388 to 512.
10389
10390 Default value is @code{16}.
10391
10392 @item combpel
10393 The number of combed pixels inside any of the @option{blocky} by
10394 @option{blockx} size blocks on the frame for the frame to be detected as
10395 combed. While @option{cthresh} controls how "visible" the combing must be, this
10396 setting controls "how much" combing there must be in any localized area (a
10397 window defined by the @option{blockx} and @option{blocky} settings) on the
10398 frame. Minimum value is @code{0} and maximum is @code{blocky x blockx} (at
10399 which point no frames will ever be detected as combed). This setting is known
10400 as @option{MI} in TFM/VFM vocabulary.
10401
10402 Default value is @code{80}.
10403 @end table
10404
10405 @anchor{p/c/n/u/b meaning}
10406 @subsection p/c/n/u/b meaning
10407
10408 @subsubsection p/c/n
10409
10410 We assume the following telecined stream:
10411
10412 @example
10413 Top fields:     1 2 2 3 4
10414 Bottom fields:  1 2 3 4 4
10415 @end example
10416
10417 The numbers correspond to the progressive frame the fields relate to. Here, the
10418 first two frames are progressive, the 3rd and 4th are combed, and so on.
10419
10420 When @code{fieldmatch} is configured to run a matching from bottom
10421 (@option{field}=@var{bottom}) this is how this input stream get transformed:
10422
10423 @example
10424 Input stream:
10425                 T     1 2 2 3 4
10426                 B     1 2 3 4 4   <-- matching reference
10427
10428 Matches:              c c n n c
10429
10430 Output stream:
10431                 T     1 2 3 4 4
10432                 B     1 2 3 4 4
10433 @end example
10434
10435 As a result of the field matching, we can see that some frames get duplicated.
10436 To perform a complete inverse telecine, you need to rely on a decimation filter
10437 after this operation. See for instance the @ref{decimate} filter.
10438
10439 The same operation now matching from top fields (@option{field}=@var{top})
10440 looks like this:
10441
10442 @example
10443 Input stream:
10444                 T     1 2 2 3 4   <-- matching reference
10445                 B     1 2 3 4 4
10446
10447 Matches:              c c p p c
10448
10449 Output stream:
10450                 T     1 2 2 3 4
10451                 B     1 2 2 3 4
10452 @end example
10453
10454 In these examples, we can see what @var{p}, @var{c} and @var{n} mean;
10455 basically, they refer to the frame and field of the opposite parity:
10456
10457 @itemize
10458 @item @var{p} matches the field of the opposite parity in the previous frame
10459 @item @var{c} matches the field of the opposite parity in the current frame
10460 @item @var{n} matches the field of the opposite parity in the next frame
10461 @end itemize
10462
10463 @subsubsection u/b
10464
10465 The @var{u} and @var{b} matching are a bit special in the sense that they match
10466 from the opposite parity flag. In the following examples, we assume that we are
10467 currently matching the 2nd frame (Top:2, bottom:2). According to the match, a
10468 'x' is placed above and below each matched fields.
10469
10470 With bottom matching (@option{field}=@var{bottom}):
10471 @example
10472 Match:           c         p           n          b          u
10473
10474                  x       x               x        x          x
10475   Top          1 2 2     1 2 2       1 2 2      1 2 2      1 2 2
10476   Bottom       1 2 3     1 2 3       1 2 3      1 2 3      1 2 3
10477                  x         x           x        x              x
10478
10479 Output frames:
10480                  2          1          2          2          2
10481                  2          2          2          1          3
10482 @end example
10483
10484 With top matching (@option{field}=@var{top}):
10485 @example
10486 Match:           c         p           n          b          u
10487
10488                  x         x           x        x              x
10489   Top          1 2 2     1 2 2       1 2 2      1 2 2      1 2 2
10490   Bottom       1 2 3     1 2 3       1 2 3      1 2 3      1 2 3
10491                  x       x               x        x          x
10492
10493 Output frames:
10494                  2          2          2          1          2
10495                  2          1          3          2          2
10496 @end example
10497
10498 @subsection Examples
10499
10500 Simple IVTC of a top field first telecined stream:
10501 @example
10502 fieldmatch=order=tff:combmatch=none, decimate
10503 @end example
10504
10505 Advanced IVTC, with fallback on @ref{yadif} for still combed frames:
10506 @example
10507 fieldmatch=order=tff:combmatch=full, yadif=deint=interlaced, decimate
10508 @end example
10509
10510 @section fieldorder
10511
10512 Transform the field order of the input video.
10513
10514 It accepts the following parameters:
10515
10516 @table @option
10517
10518 @item order
10519 The output field order. Valid values are @var{tff} for top field first or @var{bff}
10520 for bottom field first.
10521 @end table
10522
10523 The default value is @samp{tff}.
10524
10525 The transformation is done by shifting the picture content up or down
10526 by one line, and filling the remaining line with appropriate picture content.
10527 This method is consistent with most broadcast field order converters.
10528
10529 If the input video is not flagged as being interlaced, or it is already
10530 flagged as being of the required output field order, then this filter does
10531 not alter the incoming video.
10532
10533 It is very useful when converting to or from PAL DV material,
10534 which is bottom field first.
10535
10536 For example:
10537 @example
10538 ffmpeg -i in.vob -vf "fieldorder=bff" out.dv
10539 @end example
10540
10541 @section fifo, afifo
10542
10543 Buffer input images and send them when they are requested.
10544
10545 It is mainly useful when auto-inserted by the libavfilter
10546 framework.
10547
10548 It does not take parameters.
10549
10550 @section fillborders
10551
10552 Fill borders of the input video, without changing video stream dimensions.
10553 Sometimes video can have garbage at the four edges and you may not want to
10554 crop video input to keep size multiple of some number.
10555
10556 This filter accepts the following options:
10557
10558 @table @option
10559 @item left
10560 Number of pixels to fill from left border.
10561
10562 @item right
10563 Number of pixels to fill from right border.
10564
10565 @item top
10566 Number of pixels to fill from top border.
10567
10568 @item bottom
10569 Number of pixels to fill from bottom border.
10570
10571 @item mode
10572 Set fill mode.
10573
10574 It accepts the following values:
10575 @table @samp
10576 @item smear
10577 fill pixels using outermost pixels
10578
10579 @item mirror
10580 fill pixels using mirroring
10581
10582 @item fixed
10583 fill pixels with constant value
10584 @end table
10585
10586 Default is @var{smear}.
10587
10588 @item color
10589 Set color for pixels in fixed mode. Default is @var{black}.
10590 @end table
10591
10592 @section find_rect
10593
10594 Find a rectangular object
10595
10596 It accepts the following options:
10597
10598 @table @option
10599 @item object
10600 Filepath of the object image, needs to be in gray8.
10601
10602 @item threshold
10603 Detection threshold, default is 0.5.
10604
10605 @item mipmaps
10606 Number of mipmaps, default is 3.
10607
10608 @item xmin, ymin, xmax, ymax
10609 Specifies the rectangle in which to search.
10610 @end table
10611
10612 @subsection Examples
10613
10614 @itemize
10615 @item
10616 Cover a rectangular object by the supplied image of a given video using @command{ffmpeg}:
10617 @example
10618 ffmpeg -i file.ts -vf find_rect=newref.pgm,cover_rect=cover.jpg:mode=cover new.mkv
10619 @end example
10620 @end itemize
10621
10622 @section floodfill
10623
10624 Flood area with values of same pixel components with another values.
10625
10626 It accepts the following options:
10627 @table @option
10628 @item x
10629 Set pixel x coordinate.
10630
10631 @item y
10632 Set pixel y coordinate.
10633
10634 @item s0
10635 Set source #0 component value.
10636
10637 @item s1
10638 Set source #1 component value.
10639
10640 @item s2
10641 Set source #2 component value.
10642
10643 @item s3
10644 Set source #3 component value.
10645
10646 @item d0
10647 Set destination #0 component value.
10648
10649 @item d1
10650 Set destination #1 component value.
10651
10652 @item d2
10653 Set destination #2 component value.
10654
10655 @item d3
10656 Set destination #3 component value.
10657 @end table
10658
10659 @anchor{format}
10660 @section format
10661
10662 Convert the input video to one of the specified pixel formats.
10663 Libavfilter will try to pick one that is suitable as input to
10664 the next filter.
10665
10666 It accepts the following parameters:
10667 @table @option
10668
10669 @item pix_fmts
10670 A '|'-separated list of pixel format names, such as
10671 "pix_fmts=yuv420p|monow|rgb24".
10672
10673 @end table
10674
10675 @subsection Examples
10676
10677 @itemize
10678 @item
10679 Convert the input video to the @var{yuv420p} format
10680 @example
10681 format=pix_fmts=yuv420p
10682 @end example
10683
10684 Convert the input video to any of the formats in the list
10685 @example
10686 format=pix_fmts=yuv420p|yuv444p|yuv410p
10687 @end example
10688 @end itemize
10689
10690 @anchor{fps}
10691 @section fps
10692
10693 Convert the video to specified constant frame rate by duplicating or dropping
10694 frames as necessary.
10695
10696 It accepts the following parameters:
10697 @table @option
10698
10699 @item fps
10700 The desired output frame rate. The default is @code{25}.
10701
10702 @item start_time
10703 Assume the first PTS should be the given value, in seconds. This allows for
10704 padding/trimming at the start of stream. By default, no assumption is made
10705 about the first frame's expected PTS, so no padding or trimming is done.
10706 For example, this could be set to 0 to pad the beginning with duplicates of
10707 the first frame if a video stream starts after the audio stream or to trim any
10708 frames with a negative PTS.
10709
10710 @item round
10711 Timestamp (PTS) rounding method.
10712
10713 Possible values are:
10714 @table @option
10715 @item zero
10716 round towards 0
10717 @item inf
10718 round away from 0
10719 @item down
10720 round towards -infinity
10721 @item up
10722 round towards +infinity
10723 @item near
10724 round to nearest
10725 @end table
10726 The default is @code{near}.
10727
10728 @item eof_action
10729 Action performed when reading the last frame.
10730
10731 Possible values are:
10732 @table @option
10733 @item round
10734 Use same timestamp rounding method as used for other frames.
10735 @item pass
10736 Pass through last frame if input duration has not been reached yet.
10737 @end table
10738 The default is @code{round}.
10739
10740 @end table
10741
10742 Alternatively, the options can be specified as a flat string:
10743 @var{fps}[:@var{start_time}[:@var{round}]].
10744
10745 See also the @ref{setpts} filter.
10746
10747 @subsection Examples
10748
10749 @itemize
10750 @item
10751 A typical usage in order to set the fps to 25:
10752 @example
10753 fps=fps=25
10754 @end example
10755
10756 @item
10757 Sets the fps to 24, using abbreviation and rounding method to round to nearest:
10758 @example
10759 fps=fps=film:round=near
10760 @end example
10761 @end itemize
10762
10763 @section framepack
10764
10765 Pack two different video streams into a stereoscopic video, setting proper
10766 metadata on supported codecs. The two views should have the same size and
10767 framerate and processing will stop when the shorter video ends. Please note
10768 that you may conveniently adjust view properties with the @ref{scale} and
10769 @ref{fps} filters.
10770
10771 It accepts the following parameters:
10772 @table @option
10773
10774 @item format
10775 The desired packing format. Supported values are:
10776
10777 @table @option
10778
10779 @item sbs
10780 The views are next to each other (default).
10781
10782 @item tab
10783 The views are on top of each other.
10784
10785 @item lines
10786 The views are packed by line.
10787
10788 @item columns
10789 The views are packed by column.
10790
10791 @item frameseq
10792 The views are temporally interleaved.
10793
10794 @end table
10795
10796 @end table
10797
10798 Some examples:
10799
10800 @example
10801 # Convert left and right views into a frame-sequential video
10802 ffmpeg -i LEFT -i RIGHT -filter_complex framepack=frameseq OUTPUT
10803
10804 # Convert views into a side-by-side video with the same output resolution as the input
10805 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
10806 @end example
10807
10808 @section framerate
10809
10810 Change the frame rate by interpolating new video output frames from the source
10811 frames.
10812
10813 This filter is not designed to function correctly with interlaced media. If
10814 you wish to change the frame rate of interlaced media then you are required
10815 to deinterlace before this filter and re-interlace after this filter.
10816
10817 A description of the accepted options follows.
10818
10819 @table @option
10820 @item fps
10821 Specify the output frames per second. This option can also be specified
10822 as a value alone. The default is @code{50}.
10823
10824 @item interp_start
10825 Specify the start of a range where the output frame will be created as a
10826 linear interpolation of two frames. The range is [@code{0}-@code{255}],
10827 the default is @code{15}.
10828
10829 @item interp_end
10830 Specify the end of a range where the output frame will be created as a
10831 linear interpolation of two frames. The range is [@code{0}-@code{255}],
10832 the default is @code{240}.
10833
10834 @item scene
10835 Specify the level at which a scene change is detected as a value between
10836 0 and 100 to indicate a new scene; a low value reflects a low
10837 probability for the current frame to introduce a new scene, while a higher
10838 value means the current frame is more likely to be one.
10839 The default is @code{8.2}.
10840
10841 @item flags
10842 Specify flags influencing the filter process.
10843
10844 Available value for @var{flags} is:
10845
10846 @table @option
10847 @item scene_change_detect, scd
10848 Enable scene change detection using the value of the option @var{scene}.
10849 This flag is enabled by default.
10850 @end table
10851 @end table
10852
10853 @section framestep
10854
10855 Select one frame every N-th frame.
10856
10857 This filter accepts the following option:
10858 @table @option
10859 @item step
10860 Select frame after every @code{step} frames.
10861 Allowed values are positive integers higher than 0. Default value is @code{1}.
10862 @end table
10863
10864 @section freezedetect
10865
10866 Detect frozen video.
10867
10868 This filter logs a message and sets frame metadata when it detects that the
10869 input video has no significant change in content during a specified duration.
10870 Video freeze detection calculates the mean average absolute difference of all
10871 the components of video frames and compares it to a noise floor.
10872
10873 The printed times and duration are expressed in seconds. The
10874 @code{lavfi.freezedetect.freeze_start} metadata key is set on the first frame
10875 whose timestamp equals or exceeds the detection duration and it contains the
10876 timestamp of the first frame of the freeze. The
10877 @code{lavfi.freezedetect.freeze_duration} and
10878 @code{lavfi.freezedetect.freeze_end} metadata keys are set on the first frame
10879 after the freeze.
10880
10881 The filter accepts the following options:
10882
10883 @table @option
10884 @item noise, n
10885 Set noise tolerance. Can be specified in dB (in case "dB" is appended to the
10886 specified value) or as a difference ratio between 0 and 1. Default is -60dB, or
10887 0.001.
10888
10889 @item duration, d
10890 Set freeze duration until notification (default is 2 seconds).
10891 @end table
10892
10893 @anchor{frei0r}
10894 @section frei0r
10895
10896 Apply a frei0r effect to the input video.
10897
10898 To enable the compilation of this filter, you need to install the frei0r
10899 header and configure FFmpeg with @code{--enable-frei0r}.
10900
10901 It accepts the following parameters:
10902
10903 @table @option
10904
10905 @item filter_name
10906 The name of the frei0r effect to load. If the environment variable
10907 @env{FREI0R_PATH} is defined, the frei0r effect is searched for in each of the
10908 directories specified by the colon-separated list in @env{FREI0R_PATH}.
10909 Otherwise, the standard frei0r paths are searched, in this order:
10910 @file{HOME/.frei0r-1/lib/}, @file{/usr/local/lib/frei0r-1/},
10911 @file{/usr/lib/frei0r-1/}.
10912
10913 @item filter_params
10914 A '|'-separated list of parameters to pass to the frei0r effect.
10915
10916 @end table
10917
10918 A frei0r effect parameter can be a boolean (its value is either
10919 "y" or "n"), a double, a color (specified as
10920 @var{R}/@var{G}/@var{B}, where @var{R}, @var{G}, and @var{B} are floating point
10921 numbers between 0.0 and 1.0, inclusive) or a color description as specified in the
10922 @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils},
10923 a position (specified as @var{X}/@var{Y}, where
10924 @var{X} and @var{Y} are floating point numbers) and/or a string.
10925
10926 The number and types of parameters depend on the loaded effect. If an
10927 effect parameter is not specified, the default value is set.
10928
10929 @subsection Examples
10930
10931 @itemize
10932 @item
10933 Apply the distort0r effect, setting the first two double parameters:
10934 @example
10935 frei0r=filter_name=distort0r:filter_params=0.5|0.01
10936 @end example
10937
10938 @item
10939 Apply the colordistance effect, taking a color as the first parameter:
10940 @example
10941 frei0r=colordistance:0.2/0.3/0.4
10942 frei0r=colordistance:violet
10943 frei0r=colordistance:0x112233
10944 @end example
10945
10946 @item
10947 Apply the perspective effect, specifying the top left and top right image
10948 positions:
10949 @example
10950 frei0r=perspective:0.2/0.2|0.8/0.2
10951 @end example
10952 @end itemize
10953
10954 For more information, see
10955 @url{http://frei0r.dyne.org}
10956
10957 @section fspp
10958
10959 Apply fast and simple postprocessing. It is a faster version of @ref{spp}.
10960
10961 It splits (I)DCT into horizontal/vertical passes. Unlike the simple post-
10962 processing filter, one of them is performed once per block, not per pixel.
10963 This allows for much higher speed.
10964
10965 The filter accepts the following options:
10966
10967 @table @option
10968 @item quality
10969 Set quality. This option defines the number of levels for averaging. It accepts
10970 an integer in the range 4-5. Default value is @code{4}.
10971
10972 @item qp
10973 Force a constant quantization parameter. It accepts an integer in range 0-63.
10974 If not set, the filter will use the QP from the video stream (if available).
10975
10976 @item strength
10977 Set filter strength. It accepts an integer in range -15 to 32. Lower values mean
10978 more details but also more artifacts, while higher values make the image smoother
10979 but also blurrier. Default value is @code{0} âˆ’ PSNR optimal.
10980
10981 @item use_bframe_qp
10982 Enable the use of the QP from the B-Frames if set to @code{1}. Using this
10983 option may cause flicker since the B-Frames have often larger QP. Default is
10984 @code{0} (not enabled).
10985
10986 @end table
10987
10988 @section gblur
10989
10990 Apply Gaussian blur filter.
10991
10992 The filter accepts the following options:
10993
10994 @table @option
10995 @item sigma
10996 Set horizontal sigma, standard deviation of Gaussian blur. Default is @code{0.5}.
10997
10998 @item steps
10999 Set number of steps for Gaussian approximation. Default is @code{1}.
11000
11001 @item planes
11002 Set which planes to filter. By default all planes are filtered.
11003
11004 @item sigmaV
11005 Set vertical sigma, if negative it will be same as @code{sigma}.
11006 Default is @code{-1}.
11007 @end table
11008
11009 @subsection Commands
11010 This filter supports same commands as options.
11011 The command accepts the same syntax of the corresponding option.
11012
11013 If the specified expression is not valid, it is kept at its current
11014 value.
11015
11016 @section geq
11017
11018 Apply generic equation to each pixel.
11019
11020 The filter accepts the following options:
11021
11022 @table @option
11023 @item lum_expr, lum
11024 Set the luminance expression.
11025 @item cb_expr, cb
11026 Set the chrominance blue expression.
11027 @item cr_expr, cr
11028 Set the chrominance red expression.
11029 @item alpha_expr, a
11030 Set the alpha expression.
11031 @item red_expr, r
11032 Set the red expression.
11033 @item green_expr, g
11034 Set the green expression.
11035 @item blue_expr, b
11036 Set the blue expression.
11037 @end table
11038
11039 The colorspace is selected according to the specified options. If one
11040 of the @option{lum_expr}, @option{cb_expr}, or @option{cr_expr}
11041 options is specified, the filter will automatically select a YCbCr
11042 colorspace. If one of the @option{red_expr}, @option{green_expr}, or
11043 @option{blue_expr} options is specified, it will select an RGB
11044 colorspace.
11045
11046 If one of the chrominance expression is not defined, it falls back on the other
11047 one. If no alpha expression is specified it will evaluate to opaque value.
11048 If none of chrominance expressions are specified, they will evaluate
11049 to the luminance expression.
11050
11051 The expressions can use the following variables and functions:
11052
11053 @table @option
11054 @item N
11055 The sequential number of the filtered frame, starting from @code{0}.
11056
11057 @item X
11058 @item Y
11059 The coordinates of the current sample.
11060
11061 @item W
11062 @item H
11063 The width and height of the image.
11064
11065 @item SW
11066 @item SH
11067 Width and height scale depending on the currently filtered plane. It is the
11068 ratio between the corresponding luma plane number of pixels and the current
11069 plane ones. E.g. for YUV4:2:0 the values are @code{1,1} for the luma plane, and
11070 @code{0.5,0.5} for chroma planes.
11071
11072 @item T
11073 Time of the current frame, expressed in seconds.
11074
11075 @item p(x, y)
11076 Return the value of the pixel at location (@var{x},@var{y}) of the current
11077 plane.
11078
11079 @item lum(x, y)
11080 Return the value of the pixel at location (@var{x},@var{y}) of the luminance
11081 plane.
11082
11083 @item cb(x, y)
11084 Return the value of the pixel at location (@var{x},@var{y}) of the
11085 blue-difference chroma plane. Return 0 if there is no such plane.
11086
11087 @item cr(x, y)
11088 Return the value of the pixel at location (@var{x},@var{y}) of the
11089 red-difference chroma plane. Return 0 if there is no such plane.
11090
11091 @item r(x, y)
11092 @item g(x, y)
11093 @item b(x, y)
11094 Return the value of the pixel at location (@var{x},@var{y}) of the
11095 red/green/blue component. Return 0 if there is no such component.
11096
11097 @item alpha(x, y)
11098 Return the value of the pixel at location (@var{x},@var{y}) of the alpha
11099 plane. Return 0 if there is no such plane.
11100
11101 @item interpolation
11102 Set one of interpolation methods:
11103 @table @option
11104 @item nearest, n
11105 @item bilinear, b
11106 @end table
11107 Default is bilinear.
11108 @end table
11109
11110 For functions, if @var{x} and @var{y} are outside the area, the value will be
11111 automatically clipped to the closer edge.
11112
11113 @subsection Examples
11114
11115 @itemize
11116 @item
11117 Flip the image horizontally:
11118 @example
11119 geq=p(W-X\,Y)
11120 @end example
11121
11122 @item
11123 Generate a bidimensional sine wave, with angle @code{PI/3} and a
11124 wavelength of 100 pixels:
11125 @example
11126 geq=128 + 100*sin(2*(PI/100)*(cos(PI/3)*(X-50*T) + sin(PI/3)*Y)):128:128
11127 @end example
11128
11129 @item
11130 Generate a fancy enigmatic moving light:
11131 @example
11132 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
11133 @end example
11134
11135 @item
11136 Generate a quick emboss effect:
11137 @example
11138 format=gray,geq=lum_expr='(p(X,Y)+(256-p(X-4,Y-4)))/2'
11139 @end example
11140
11141 @item
11142 Modify RGB components depending on pixel position:
11143 @example
11144 geq=r='X/W*r(X,Y)':g='(1-X/W)*g(X,Y)':b='(H-Y)/H*b(X,Y)'
11145 @end example
11146
11147 @item
11148 Create a radial gradient that is the same size as the input (also see
11149 the @ref{vignette} filter):
11150 @example
11151 geq=lum=255*gauss((X/W-0.5)*3)*gauss((Y/H-0.5)*3)/gauss(0)/gauss(0),format=gray
11152 @end example
11153 @end itemize
11154
11155 @section gradfun
11156
11157 Fix the banding artifacts that are sometimes introduced into nearly flat
11158 regions by truncation to 8-bit color depth.
11159 Interpolate the gradients that should go where the bands are, and
11160 dither them.
11161
11162 It is designed for playback only.  Do not use it prior to
11163 lossy compression, because compression tends to lose the dither and
11164 bring back the bands.
11165
11166 It accepts the following parameters:
11167
11168 @table @option
11169
11170 @item strength
11171 The maximum amount by which the filter will change any one pixel. This is also
11172 the threshold for detecting nearly flat regions. Acceptable values range from
11173 .51 to 64; the default value is 1.2. Out-of-range values will be clipped to the
11174 valid range.
11175
11176 @item radius
11177 The neighborhood to fit the gradient to. A larger radius makes for smoother
11178 gradients, but also prevents the filter from modifying the pixels near detailed
11179 regions. Acceptable values are 8-32; the default value is 16. Out-of-range
11180 values will be clipped to the valid range.
11181
11182 @end table
11183
11184 Alternatively, the options can be specified as a flat string:
11185 @var{strength}[:@var{radius}]
11186
11187 @subsection Examples
11188
11189 @itemize
11190 @item
11191 Apply the filter with a @code{3.5} strength and radius of @code{8}:
11192 @example
11193 gradfun=3.5:8
11194 @end example
11195
11196 @item
11197 Specify radius, omitting the strength (which will fall-back to the default
11198 value):
11199 @example
11200 gradfun=radius=8
11201 @end example
11202
11203 @end itemize
11204
11205 @section graphmonitor, agraphmonitor
11206 Show various filtergraph stats.
11207
11208 With this filter one can debug complete filtergraph.
11209 Especially issues with links filling with queued frames.
11210
11211 The filter accepts the following options:
11212
11213 @table @option
11214 @item size, s
11215 Set video output size. Default is @var{hd720}.
11216
11217 @item opacity, o
11218 Set video opacity. Default is @var{0.9}. Allowed range is from @var{0} to @var{1}.
11219
11220 @item mode, m
11221 Set output mode, can be @var{fulll} or @var{compact}.
11222 In @var{compact} mode only filters with some queued frames have displayed stats.
11223
11224 @item flags, f
11225 Set flags which enable which stats are shown in video.
11226
11227 Available values for flags are:
11228 @table @samp
11229 @item queue
11230 Display number of queued frames in each link.
11231
11232 @item frame_count_in
11233 Display number of frames taken from filter.
11234
11235 @item frame_count_out
11236 Display number of frames given out from filter.
11237
11238 @item pts
11239 Display current filtered frame pts.
11240
11241 @item time
11242 Display current filtered frame time.
11243
11244 @item timebase
11245 Display time base for filter link.
11246
11247 @item format
11248 Display used format for filter link.
11249
11250 @item size
11251 Display video size or number of audio channels in case of audio used by filter link.
11252
11253 @item rate
11254 Display video frame rate or sample rate in case of audio used by filter link.
11255 @end table
11256
11257 @item rate, r
11258 Set upper limit for video rate of output stream, Default value is @var{25}.
11259 This guarantee that output video frame rate will not be higher than this value.
11260 @end table
11261
11262 @section greyedge
11263 A color constancy variation filter which estimates scene illumination via grey edge algorithm
11264 and corrects the scene colors accordingly.
11265
11266 See: @url{https://staff.science.uva.nl/th.gevers/pub/GeversTIP07.pdf}
11267
11268 The filter accepts the following options:
11269
11270 @table @option
11271 @item difford
11272 The order of differentiation to be applied on the scene. Must be chosen in the range
11273 [0,2] and default value is 1.
11274
11275 @item minknorm
11276 The Minkowski parameter to be used for calculating the Minkowski distance. Must
11277 be chosen in the range [0,20] and default value is 1. Set to 0 for getting
11278 max value instead of calculating Minkowski distance.
11279
11280 @item sigma
11281 The standard deviation of Gaussian blur to be applied on the scene. Must be
11282 chosen in the range [0,1024.0] and default value = 1. floor( @var{sigma} * break_off_sigma(3) )
11283 can't be equal to 0 if @var{difford} is greater than 0.
11284 @end table
11285
11286 @subsection Examples
11287 @itemize
11288
11289 @item
11290 Grey Edge:
11291 @example
11292 greyedge=difford=1:minknorm=5:sigma=2
11293 @end example
11294
11295 @item
11296 Max Edge:
11297 @example
11298 greyedge=difford=1:minknorm=0:sigma=2
11299 @end example
11300
11301 @end itemize
11302
11303 @anchor{haldclut}
11304 @section haldclut
11305
11306 Apply a Hald CLUT to a video stream.
11307
11308 First input is the video stream to process, and second one is the Hald CLUT.
11309 The Hald CLUT input can be a simple picture or a complete video stream.
11310
11311 The filter accepts the following options:
11312
11313 @table @option
11314 @item shortest
11315 Force termination when the shortest input terminates. Default is @code{0}.
11316 @item repeatlast
11317 Continue applying the last CLUT after the end of the stream. A value of
11318 @code{0} disable the filter after the last frame of the CLUT is reached.
11319 Default is @code{1}.
11320 @end table
11321
11322 @code{haldclut} also has the same interpolation options as @ref{lut3d} (both
11323 filters share the same internals).
11324
11325 This filter also supports the @ref{framesync} options.
11326
11327 More information about the Hald CLUT can be found on Eskil Steenberg's website
11328 (Hald CLUT author) at @url{http://www.quelsolaar.com/technology/clut.html}.
11329
11330 @subsection Workflow examples
11331
11332 @subsubsection Hald CLUT video stream
11333
11334 Generate an identity Hald CLUT stream altered with various effects:
11335 @example
11336 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
11337 @end example
11338
11339 Note: make sure you use a lossless codec.
11340
11341 Then use it with @code{haldclut} to apply it on some random stream:
11342 @example
11343 ffmpeg -f lavfi -i mandelbrot -i clut.nut -filter_complex '[0][1] haldclut' -t 20 mandelclut.mkv
11344 @end example
11345
11346 The Hald CLUT will be applied to the 10 first seconds (duration of
11347 @file{clut.nut}), then the latest picture of that CLUT stream will be applied
11348 to the remaining frames of the @code{mandelbrot} stream.
11349
11350 @subsubsection Hald CLUT with preview
11351
11352 A Hald CLUT is supposed to be a squared image of @code{Level*Level*Level} by
11353 @code{Level*Level*Level} pixels. For a given Hald CLUT, FFmpeg will select the
11354 biggest possible square starting at the top left of the picture. The remaining
11355 padding pixels (bottom or right) will be ignored. This area can be used to add
11356 a preview of the Hald CLUT.
11357
11358 Typically, the following generated Hald CLUT will be supported by the
11359 @code{haldclut} filter:
11360
11361 @example
11362 ffmpeg -f lavfi -i @ref{haldclutsrc}=8 -vf "
11363    pad=iw+320 [padded_clut];
11364    smptebars=s=320x256, split [a][b];
11365    [padded_clut][a] overlay=W-320:h, curves=color_negative [main];
11366    [main][b] overlay=W-320" -frames:v 1 clut.png
11367 @end example
11368
11369 It contains the original and a preview of the effect of the CLUT: SMPTE color
11370 bars are displayed on the right-top, and below the same color bars processed by
11371 the color changes.
11372
11373 Then, the effect of this Hald CLUT can be visualized with:
11374 @example
11375 ffplay input.mkv -vf "movie=clut.png, [in] haldclut"
11376 @end example
11377
11378 @section hflip
11379
11380 Flip the input video horizontally.
11381
11382 For example, to horizontally flip the input video with @command{ffmpeg}:
11383 @example
11384 ffmpeg -i in.avi -vf "hflip" out.avi
11385 @end example
11386
11387 @section histeq
11388 This filter applies a global color histogram equalization on a
11389 per-frame basis.
11390
11391 It can be used to correct video that has a compressed range of pixel
11392 intensities.  The filter redistributes the pixel intensities to
11393 equalize their distribution across the intensity range. It may be
11394 viewed as an "automatically adjusting contrast filter". This filter is
11395 useful only for correcting degraded or poorly captured source
11396 video.
11397
11398 The filter accepts the following options:
11399
11400 @table @option
11401 @item strength
11402 Determine the amount of equalization to be applied.  As the strength
11403 is reduced, the distribution of pixel intensities more-and-more
11404 approaches that of the input frame. The value must be a float number
11405 in the range [0,1] and defaults to 0.200.
11406
11407 @item intensity
11408 Set the maximum intensity that can generated and scale the output
11409 values appropriately.  The strength should be set as desired and then
11410 the intensity can be limited if needed to avoid washing-out. The value
11411 must be a float number in the range [0,1] and defaults to 0.210.
11412
11413 @item antibanding
11414 Set the antibanding level. If enabled the filter will randomly vary
11415 the luminance of output pixels by a small amount to avoid banding of
11416 the histogram. Possible values are @code{none}, @code{weak} or
11417 @code{strong}. It defaults to @code{none}.
11418 @end table
11419
11420 @section histogram
11421
11422 Compute and draw a color distribution histogram for the input video.
11423
11424 The computed histogram is a representation of the color component
11425 distribution in an image.
11426
11427 Standard histogram displays the color components distribution in an image.
11428 Displays color graph for each color component. Shows distribution of
11429 the Y, U, V, A or R, G, B components, depending on input format, in the
11430 current frame. Below each graph a color component scale meter is shown.
11431
11432 The filter accepts the following options:
11433
11434 @table @option
11435 @item level_height
11436 Set height of level. Default value is @code{200}.
11437 Allowed range is [50, 2048].
11438
11439 @item scale_height
11440 Set height of color scale. Default value is @code{12}.
11441 Allowed range is [0, 40].
11442
11443 @item display_mode
11444 Set display mode.
11445 It accepts the following values:
11446 @table @samp
11447 @item stack
11448 Per color component graphs are placed below each other.
11449
11450 @item parade
11451 Per color component graphs are placed side by side.
11452
11453 @item overlay
11454 Presents information identical to that in the @code{parade}, except
11455 that the graphs representing color components are superimposed directly
11456 over one another.
11457 @end table
11458 Default is @code{stack}.
11459
11460 @item levels_mode
11461 Set mode. Can be either @code{linear}, or @code{logarithmic}.
11462 Default is @code{linear}.
11463
11464 @item components
11465 Set what color components to display.
11466 Default is @code{7}.
11467
11468 @item fgopacity
11469 Set foreground opacity. Default is @code{0.7}.
11470
11471 @item bgopacity
11472 Set background opacity. Default is @code{0.5}.
11473 @end table
11474
11475 @subsection Examples
11476
11477 @itemize
11478
11479 @item
11480 Calculate and draw histogram:
11481 @example
11482 ffplay -i input -vf histogram
11483 @end example
11484
11485 @end itemize
11486
11487 @anchor{hqdn3d}
11488 @section hqdn3d
11489
11490 This is a high precision/quality 3d denoise filter. It aims to reduce
11491 image noise, producing smooth images and making still images really
11492 still. It should enhance compressibility.
11493
11494 It accepts the following optional parameters:
11495
11496 @table @option
11497 @item luma_spatial
11498 A non-negative floating point number which specifies spatial luma strength.
11499 It defaults to 4.0.
11500
11501 @item chroma_spatial
11502 A non-negative floating point number which specifies spatial chroma strength.
11503 It defaults to 3.0*@var{luma_spatial}/4.0.
11504
11505 @item luma_tmp
11506 A floating point number which specifies luma temporal strength. It defaults to
11507 6.0*@var{luma_spatial}/4.0.
11508
11509 @item chroma_tmp
11510 A floating point number which specifies chroma temporal strength. It defaults to
11511 @var{luma_tmp}*@var{chroma_spatial}/@var{luma_spatial}.
11512 @end table
11513
11514 @anchor{hwdownload}
11515 @section hwdownload
11516
11517 Download hardware frames to system memory.
11518
11519 The input must be in hardware frames, and the output a non-hardware format.
11520 Not all formats will be supported on the output - it may be necessary to insert
11521 an additional @option{format} filter immediately following in the graph to get
11522 the output in a supported format.
11523
11524 @section hwmap
11525
11526 Map hardware frames to system memory or to another device.
11527
11528 This filter has several different modes of operation; which one is used depends
11529 on the input and output formats:
11530 @itemize
11531 @item
11532 Hardware frame input, normal frame output
11533
11534 Map the input frames to system memory and pass them to the output.  If the
11535 original hardware frame is later required (for example, after overlaying
11536 something else on part of it), the @option{hwmap} filter can be used again
11537 in the next mode to retrieve it.
11538 @item
11539 Normal frame input, hardware frame output
11540
11541 If the input is actually a software-mapped hardware frame, then unmap it -
11542 that is, return the original hardware frame.
11543
11544 Otherwise, a device must be provided.  Create new hardware surfaces on that
11545 device for the output, then map them back to the software format at the input
11546 and give those frames to the preceding filter.  This will then act like the
11547 @option{hwupload} filter, but may be able to avoid an additional copy when
11548 the input is already in a compatible format.
11549 @item
11550 Hardware frame input and output
11551
11552 A device must be supplied for the output, either directly or with the
11553 @option{derive_device} option.  The input and output devices must be of
11554 different types and compatible - the exact meaning of this is
11555 system-dependent, but typically it means that they must refer to the same
11556 underlying hardware context (for example, refer to the same graphics card).
11557
11558 If the input frames were originally created on the output device, then unmap
11559 to retrieve the original frames.
11560
11561 Otherwise, map the frames to the output device - create new hardware frames
11562 on the output corresponding to the frames on the input.
11563 @end itemize
11564
11565 The following additional parameters are accepted:
11566
11567 @table @option
11568 @item mode
11569 Set the frame mapping mode.  Some combination of:
11570 @table @var
11571 @item read
11572 The mapped frame should be readable.
11573 @item write
11574 The mapped frame should be writeable.
11575 @item overwrite
11576 The mapping will always overwrite the entire frame.
11577
11578 This may improve performance in some cases, as the original contents of the
11579 frame need not be loaded.
11580 @item direct
11581 The mapping must not involve any copying.
11582
11583 Indirect mappings to copies of frames are created in some cases where either
11584 direct mapping is not possible or it would have unexpected properties.
11585 Setting this flag ensures that the mapping is direct and will fail if that is
11586 not possible.
11587 @end table
11588 Defaults to @var{read+write} if not specified.
11589
11590 @item derive_device @var{type}
11591 Rather than using the device supplied at initialisation, instead derive a new
11592 device of type @var{type} from the device the input frames exist on.
11593
11594 @item reverse
11595 In a hardware to hardware mapping, map in reverse - create frames in the sink
11596 and map them back to the source.  This may be necessary in some cases where
11597 a mapping in one direction is required but only the opposite direction is
11598 supported by the devices being used.
11599
11600 This option is dangerous - it may break the preceding filter in undefined
11601 ways if there are any additional constraints on that filter's output.
11602 Do not use it without fully understanding the implications of its use.
11603 @end table
11604
11605 @anchor{hwupload}
11606 @section hwupload
11607
11608 Upload system memory frames to hardware surfaces.
11609
11610 The device to upload to must be supplied when the filter is initialised.  If
11611 using ffmpeg, select the appropriate device with the @option{-filter_hw_device}
11612 option.
11613
11614 @anchor{hwupload_cuda}
11615 @section hwupload_cuda
11616
11617 Upload system memory frames to a CUDA device.
11618
11619 It accepts the following optional parameters:
11620
11621 @table @option
11622 @item device
11623 The number of the CUDA device to use
11624 @end table
11625
11626 @section hqx
11627
11628 Apply a high-quality magnification filter designed for pixel art. This filter
11629 was originally created by Maxim Stepin.
11630
11631 It accepts the following option:
11632
11633 @table @option
11634 @item n
11635 Set the scaling dimension: @code{2} for @code{hq2x}, @code{3} for
11636 @code{hq3x} and @code{4} for @code{hq4x}.
11637 Default is @code{3}.
11638 @end table
11639
11640 @section hstack
11641 Stack input videos horizontally.
11642
11643 All streams must be of same pixel format and of same height.
11644
11645 Note that this filter is faster than using @ref{overlay} and @ref{pad} filter
11646 to create same output.
11647
11648 The filter accepts the following option:
11649
11650 @table @option
11651 @item inputs
11652 Set number of input streams. Default is 2.
11653
11654 @item shortest
11655 If set to 1, force the output to terminate when the shortest input
11656 terminates. Default value is 0.
11657 @end table
11658
11659 @section hue
11660
11661 Modify the hue and/or the saturation of the input.
11662
11663 It accepts the following parameters:
11664
11665 @table @option
11666 @item h
11667 Specify the hue angle as a number of degrees. It accepts an expression,
11668 and defaults to "0".
11669
11670 @item s
11671 Specify the saturation in the [-10,10] range. It accepts an expression and
11672 defaults to "1".
11673
11674 @item H
11675 Specify the hue angle as a number of radians. It accepts an
11676 expression, and defaults to "0".
11677
11678 @item b
11679 Specify the brightness in the [-10,10] range. It accepts an expression and
11680 defaults to "0".
11681 @end table
11682
11683 @option{h} and @option{H} are mutually exclusive, and can't be
11684 specified at the same time.
11685
11686 The @option{b}, @option{h}, @option{H} and @option{s} option values are
11687 expressions containing the following constants:
11688
11689 @table @option
11690 @item n
11691 frame count of the input frame starting from 0
11692
11693 @item pts
11694 presentation timestamp of the input frame expressed in time base units
11695
11696 @item r
11697 frame rate of the input video, NAN if the input frame rate is unknown
11698
11699 @item t
11700 timestamp expressed in seconds, NAN if the input timestamp is unknown
11701
11702 @item tb
11703 time base of the input video
11704 @end table
11705
11706 @subsection Examples
11707
11708 @itemize
11709 @item
11710 Set the hue to 90 degrees and the saturation to 1.0:
11711 @example
11712 hue=h=90:s=1
11713 @end example
11714
11715 @item
11716 Same command but expressing the hue in radians:
11717 @example
11718 hue=H=PI/2:s=1
11719 @end example
11720
11721 @item
11722 Rotate hue and make the saturation swing between 0
11723 and 2 over a period of 1 second:
11724 @example
11725 hue="H=2*PI*t: s=sin(2*PI*t)+1"
11726 @end example
11727
11728 @item
11729 Apply a 3 seconds saturation fade-in effect starting at 0:
11730 @example
11731 hue="s=min(t/3\,1)"
11732 @end example
11733
11734 The general fade-in expression can be written as:
11735 @example
11736 hue="s=min(0\, max((t-START)/DURATION\, 1))"
11737 @end example
11738
11739 @item
11740 Apply a 3 seconds saturation fade-out effect starting at 5 seconds:
11741 @example
11742 hue="s=max(0\, min(1\, (8-t)/3))"
11743 @end example
11744
11745 The general fade-out expression can be written as:
11746 @example
11747 hue="s=max(0\, min(1\, (START+DURATION-t)/DURATION))"
11748 @end example
11749
11750 @end itemize
11751
11752 @subsection Commands
11753
11754 This filter supports the following commands:
11755 @table @option
11756 @item b
11757 @item s
11758 @item h
11759 @item H
11760 Modify the hue and/or the saturation and/or brightness of the input video.
11761 The command accepts the same syntax of the corresponding option.
11762
11763 If the specified expression is not valid, it is kept at its current
11764 value.
11765 @end table
11766
11767 @section hysteresis
11768
11769 Grow first stream into second stream by connecting components.
11770 This makes it possible to build more robust edge masks.
11771
11772 This filter accepts the following options:
11773
11774 @table @option
11775 @item planes
11776 Set which planes will be processed as bitmap, unprocessed planes will be
11777 copied from first stream.
11778 By default value 0xf, all planes will be processed.
11779
11780 @item threshold
11781 Set threshold which is used in filtering. If pixel component value is higher than
11782 this value filter algorithm for connecting components is activated.
11783 By default value is 0.
11784 @end table
11785
11786 @section idet
11787
11788 Detect video interlacing type.
11789
11790 This filter tries to detect if the input frames are interlaced, progressive,
11791 top or bottom field first. It will also try to detect fields that are
11792 repeated between adjacent frames (a sign of telecine).
11793
11794 Single frame detection considers only immediately adjacent frames when classifying each frame.
11795 Multiple frame detection incorporates the classification history of previous frames.
11796
11797 The filter will log these metadata values:
11798
11799 @table @option
11800 @item single.current_frame
11801 Detected type of current frame using single-frame detection. One of:
11802 ``tff'' (top field first), ``bff'' (bottom field first),
11803 ``progressive'', or ``undetermined''
11804
11805 @item single.tff
11806 Cumulative number of frames detected as top field first using single-frame detection.
11807
11808 @item multiple.tff
11809 Cumulative number of frames detected as top field first using multiple-frame detection.
11810
11811 @item single.bff
11812 Cumulative number of frames detected as bottom field first using single-frame detection.
11813
11814 @item multiple.current_frame
11815 Detected type of current frame using multiple-frame detection. One of:
11816 ``tff'' (top field first), ``bff'' (bottom field first),
11817 ``progressive'', or ``undetermined''
11818
11819 @item multiple.bff
11820 Cumulative number of frames detected as bottom field first using multiple-frame detection.
11821
11822 @item single.progressive
11823 Cumulative number of frames detected as progressive using single-frame detection.
11824
11825 @item multiple.progressive
11826 Cumulative number of frames detected as progressive using multiple-frame detection.
11827
11828 @item single.undetermined
11829 Cumulative number of frames that could not be classified using single-frame detection.
11830
11831 @item multiple.undetermined
11832 Cumulative number of frames that could not be classified using multiple-frame detection.
11833
11834 @item repeated.current_frame
11835 Which field in the current frame is repeated from the last. One of ``neither'', ``top'', or ``bottom''.
11836
11837 @item repeated.neither
11838 Cumulative number of frames with no repeated field.
11839
11840 @item repeated.top
11841 Cumulative number of frames with the top field repeated from the previous frame's top field.
11842
11843 @item repeated.bottom
11844 Cumulative number of frames with the bottom field repeated from the previous frame's bottom field.
11845 @end table
11846
11847 The filter accepts the following options:
11848
11849 @table @option
11850 @item intl_thres
11851 Set interlacing threshold.
11852 @item prog_thres
11853 Set progressive threshold.
11854 @item rep_thres
11855 Threshold for repeated field detection.
11856 @item half_life
11857 Number of frames after which a given frame's contribution to the
11858 statistics is halved (i.e., it contributes only 0.5 to its
11859 classification). The default of 0 means that all frames seen are given
11860 full weight of 1.0 forever.
11861 @item analyze_interlaced_flag
11862 When this is not 0 then idet will use the specified number of frames to determine
11863 if the interlaced flag is accurate, it will not count undetermined frames.
11864 If the flag is found to be accurate it will be used without any further
11865 computations, if it is found to be inaccurate it will be cleared without any
11866 further computations. This allows inserting the idet filter as a low computational
11867 method to clean up the interlaced flag
11868 @end table
11869
11870 @section il
11871
11872 Deinterleave or interleave fields.
11873
11874 This filter allows one to process interlaced images fields without
11875 deinterlacing them. Deinterleaving splits the input frame into 2
11876 fields (so called half pictures). Odd lines are moved to the top
11877 half of the output image, even lines to the bottom half.
11878 You can process (filter) them independently and then re-interleave them.
11879
11880 The filter accepts the following options:
11881
11882 @table @option
11883 @item luma_mode, l
11884 @item chroma_mode, c
11885 @item alpha_mode, a
11886 Available values for @var{luma_mode}, @var{chroma_mode} and
11887 @var{alpha_mode} are:
11888
11889 @table @samp
11890 @item none
11891 Do nothing.
11892
11893 @item deinterleave, d
11894 Deinterleave fields, placing one above the other.
11895
11896 @item interleave, i
11897 Interleave fields. Reverse the effect of deinterleaving.
11898 @end table
11899 Default value is @code{none}.
11900
11901 @item luma_swap, ls
11902 @item chroma_swap, cs
11903 @item alpha_swap, as
11904 Swap luma/chroma/alpha fields. Exchange even & odd lines. Default value is @code{0}.
11905 @end table
11906
11907 @section inflate
11908
11909 Apply inflate effect to the video.
11910
11911 This filter replaces the pixel by the local(3x3) average by taking into account
11912 only values higher than the pixel.
11913
11914 It accepts the following options:
11915
11916 @table @option
11917 @item threshold0
11918 @item threshold1
11919 @item threshold2
11920 @item threshold3
11921 Limit the maximum change for each plane, default is 65535.
11922 If 0, plane will remain unchanged.
11923 @end table
11924
11925 @section interlace
11926
11927 Simple interlacing filter from progressive contents. This interleaves upper (or
11928 lower) lines from odd frames with lower (or upper) lines from even frames,
11929 halving the frame rate and preserving image height.
11930
11931 @example
11932    Original        Original             New Frame
11933    Frame 'j'      Frame 'j+1'             (tff)
11934   ==========      ===========       ==================
11935     Line 0  -------------------->    Frame 'j' Line 0
11936     Line 1          Line 1  ---->   Frame 'j+1' Line 1
11937     Line 2 --------------------->    Frame 'j' Line 2
11938     Line 3          Line 3  ---->   Frame 'j+1' Line 3
11939      ...             ...                   ...
11940 New Frame + 1 will be generated by Frame 'j+2' and Frame 'j+3' and so on
11941 @end example
11942
11943 It accepts the following optional parameters:
11944
11945 @table @option
11946 @item scan
11947 This determines whether the interlaced frame is taken from the even
11948 (tff - default) or odd (bff) lines of the progressive frame.
11949
11950 @item lowpass
11951 Vertical lowpass filter to avoid twitter interlacing and
11952 reduce moire patterns.
11953
11954 @table @samp
11955 @item 0, off
11956 Disable vertical lowpass filter
11957
11958 @item 1, linear
11959 Enable linear filter (default)
11960
11961 @item 2, complex
11962 Enable complex filter. This will slightly less reduce twitter and moire
11963 but better retain detail and subjective sharpness impression.
11964
11965 @end table
11966 @end table
11967
11968 @section kerndeint
11969
11970 Deinterlace input video by applying Donald Graft's adaptive kernel
11971 deinterling. Work on interlaced parts of a video to produce
11972 progressive frames.
11973
11974 The description of the accepted parameters follows.
11975
11976 @table @option
11977 @item thresh
11978 Set the threshold which affects the filter's tolerance when
11979 determining if a pixel line must be processed. It must be an integer
11980 in the range [0,255] and defaults to 10. A value of 0 will result in
11981 applying the process on every pixels.
11982
11983 @item map
11984 Paint pixels exceeding the threshold value to white if set to 1.
11985 Default is 0.
11986
11987 @item order
11988 Set the fields order. Swap fields if set to 1, leave fields alone if
11989 0. Default is 0.
11990
11991 @item sharp
11992 Enable additional sharpening if set to 1. Default is 0.
11993
11994 @item twoway
11995 Enable twoway sharpening if set to 1. Default is 0.
11996 @end table
11997
11998 @subsection Examples
11999
12000 @itemize
12001 @item
12002 Apply default values:
12003 @example
12004 kerndeint=thresh=10:map=0:order=0:sharp=0:twoway=0
12005 @end example
12006
12007 @item
12008 Enable additional sharpening:
12009 @example
12010 kerndeint=sharp=1
12011 @end example
12012
12013 @item
12014 Paint processed pixels in white:
12015 @example
12016 kerndeint=map=1
12017 @end example
12018 @end itemize
12019
12020 @section lagfun
12021
12022 Slowly update darker pixels.
12023
12024 This filter makes short flashes of light appear longer.
12025 This filter accepts the following options:
12026
12027 @table @option
12028 @item decay
12029 Set factor for decaying. Default is .95. Allowed range is from 0 to 1.
12030
12031 @item planes
12032 Set which planes to filter. Default is all. Allowed range is from 0 to 15.
12033 @end table
12034
12035 @section lenscorrection
12036
12037 Correct radial lens distortion
12038
12039 This filter can be used to correct for radial distortion as can result from the use
12040 of wide angle lenses, and thereby re-rectify the image. To find the right parameters
12041 one can use tools available for example as part of opencv or simply trial-and-error.
12042 To use opencv use the calibration sample (under samples/cpp) from the opencv sources
12043 and extract the k1 and k2 coefficients from the resulting matrix.
12044
12045 Note that effectively the same filter is available in the open-source tools Krita and
12046 Digikam from the KDE project.
12047
12048 In contrast to the @ref{vignette} filter, which can also be used to compensate lens errors,
12049 this filter corrects the distortion of the image, whereas @ref{vignette} corrects the
12050 brightness distribution, so you may want to use both filters together in certain
12051 cases, though you will have to take care of ordering, i.e. whether vignetting should
12052 be applied before or after lens correction.
12053
12054 @subsection Options
12055
12056 The filter accepts the following options:
12057
12058 @table @option
12059 @item cx
12060 Relative x-coordinate of the focal point of the image, and thereby the center of the
12061 distortion. This value has a range [0,1] and is expressed as fractions of the image
12062 width. Default is 0.5.
12063 @item cy
12064 Relative y-coordinate of the focal point of the image, and thereby the center of the
12065 distortion. This value has a range [0,1] and is expressed as fractions of the image
12066 height. Default is 0.5.
12067 @item k1
12068 Coefficient of the quadratic correction term. This value has a range [-1,1]. 0 means
12069 no correction. Default is 0.
12070 @item k2
12071 Coefficient of the double quadratic correction term. This value has a range [-1,1].
12072 0 means no correction. Default is 0.
12073 @end table
12074
12075 The formula that generates the correction is:
12076
12077 @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)
12078
12079 where @var{r_0} is halve of the image diagonal and @var{r_src} and @var{r_tgt} are the
12080 distances from the focal point in the source and target images, respectively.
12081
12082 @section lensfun
12083
12084 Apply lens correction via the lensfun library (@url{http://lensfun.sourceforge.net/}).
12085
12086 The @code{lensfun} filter requires the camera make, camera model, and lens model
12087 to apply the lens correction. The filter will load the lensfun database and
12088 query it to find the corresponding camera and lens entries in the database. As
12089 long as these entries can be found with the given options, the filter can
12090 perform corrections on frames. Note that incomplete strings will result in the
12091 filter choosing the best match with the given options, and the filter will
12092 output the chosen camera and lens models (logged with level "info"). You must
12093 provide the make, camera model, and lens model as they are required.
12094
12095 The filter accepts the following options:
12096
12097 @table @option
12098 @item make
12099 The make of the camera (for example, "Canon"). This option is required.
12100
12101 @item model
12102 The model of the camera (for example, "Canon EOS 100D"). This option is
12103 required.
12104
12105 @item lens_model
12106 The model of the lens (for example, "Canon EF-S 18-55mm f/3.5-5.6 IS STM"). This
12107 option is required.
12108
12109 @item mode
12110 The type of correction to apply. The following values are valid options:
12111
12112 @table @samp
12113 @item vignetting
12114 Enables fixing lens vignetting.
12115
12116 @item geometry
12117 Enables fixing lens geometry. This is the default.
12118
12119 @item subpixel
12120 Enables fixing chromatic aberrations.
12121
12122 @item vig_geo
12123 Enables fixing lens vignetting and lens geometry.
12124
12125 @item vig_subpixel
12126 Enables fixing lens vignetting and chromatic aberrations.
12127
12128 @item distortion
12129 Enables fixing both lens geometry and chromatic aberrations.
12130
12131 @item all
12132 Enables all possible corrections.
12133
12134 @end table
12135 @item focal_length
12136 The focal length of the image/video (zoom; expected constant for video). For
12137 example, a 18--55mm lens has focal length range of [18--55], so a value in that
12138 range should be chosen when using that lens. Default 18.
12139
12140 @item aperture
12141 The aperture of the image/video (expected constant for video). Note that
12142 aperture is only used for vignetting correction. Default 3.5.
12143
12144 @item focus_distance
12145 The focus distance of the image/video (expected constant for video). Note that
12146 focus distance is only used for vignetting and only slightly affects the
12147 vignetting correction process. If unknown, leave it at the default value (which
12148 is 1000).
12149
12150 @item scale
12151 The scale factor which is applied after transformation. After correction the
12152 video is no longer necessarily rectangular. This parameter controls how much of
12153 the resulting image is visible. The value 0 means that a value will be chosen
12154 automatically such that there is little or no unmapped area in the output
12155 image. 1.0 means that no additional scaling is done. Lower values may result
12156 in more of the corrected image being visible, while higher values may avoid
12157 unmapped areas in the output.
12158
12159 @item target_geometry
12160 The target geometry of the output image/video. The following values are valid
12161 options:
12162
12163 @table @samp
12164 @item rectilinear (default)
12165 @item fisheye
12166 @item panoramic
12167 @item equirectangular
12168 @item fisheye_orthographic
12169 @item fisheye_stereographic
12170 @item fisheye_equisolid
12171 @item fisheye_thoby
12172 @end table
12173 @item reverse
12174 Apply the reverse of image correction (instead of correcting distortion, apply
12175 it).
12176
12177 @item interpolation
12178 The type of interpolation used when correcting distortion. The following values
12179 are valid options:
12180
12181 @table @samp
12182 @item nearest
12183 @item linear (default)
12184 @item lanczos
12185 @end table
12186 @end table
12187
12188 @subsection Examples
12189
12190 @itemize
12191 @item
12192 Apply lens correction with make "Canon", camera model "Canon EOS 100D", and lens
12193 model "Canon EF-S 18-55mm f/3.5-5.6 IS STM" with focal length of "18" and
12194 aperture of "8.0".
12195
12196 @example
12197 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
12198 @end example
12199
12200 @item
12201 Apply the same as before, but only for the first 5 seconds of video.
12202
12203 @example
12204 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
12205 @end example
12206
12207 @end itemize
12208
12209 @section libvmaf
12210
12211 Obtain the VMAF (Video Multi-Method Assessment Fusion)
12212 score between two input videos.
12213
12214 The obtained VMAF score is printed through the logging system.
12215
12216 It requires Netflix's vmaf library (libvmaf) as a pre-requisite.
12217 After installing the library it can be enabled using:
12218 @code{./configure --enable-libvmaf --enable-version3}.
12219 If no model path is specified it uses the default model: @code{vmaf_v0.6.1.pkl}.
12220
12221 The filter has following options:
12222
12223 @table @option
12224 @item model_path
12225 Set the model path which is to be used for SVM.
12226 Default value: @code{"vmaf_v0.6.1.pkl"}
12227
12228 @item log_path
12229 Set the file path to be used to store logs.
12230
12231 @item log_fmt
12232 Set the format of the log file (xml or json).
12233
12234 @item enable_transform
12235 This option can enable/disable the @code{score_transform} applied to the final predicted VMAF score,
12236 if you have specified score_transform option in the input parameter file passed to @code{run_vmaf_training.py}
12237 Default value: @code{false}
12238
12239 @item phone_model
12240 Invokes the phone model which will generate VMAF scores higher than in the
12241 regular model, which is more suitable for laptop, TV, etc. viewing conditions.
12242
12243 @item psnr
12244 Enables computing psnr along with vmaf.
12245
12246 @item ssim
12247 Enables computing ssim along with vmaf.
12248
12249 @item ms_ssim
12250 Enables computing ms_ssim along with vmaf.
12251
12252 @item pool
12253 Set the pool method (mean, min or harmonic mean) to be used for computing vmaf.
12254
12255 @item n_threads
12256 Set number of threads to be used when computing vmaf.
12257
12258 @item n_subsample
12259 Set interval for frame subsampling used when computing vmaf.
12260
12261 @item enable_conf_interval
12262 Enables confidence interval.
12263 @end table
12264
12265 This filter also supports the @ref{framesync} options.
12266
12267 On the below examples the input file @file{main.mpg} being processed is
12268 compared with the reference file @file{ref.mpg}.
12269
12270 @example
12271 ffmpeg -i main.mpg -i ref.mpg -lavfi libvmaf -f null -
12272 @end example
12273
12274 Example with options:
12275 @example
12276 ffmpeg -i main.mpg -i ref.mpg -lavfi libvmaf="psnr=1:log_fmt=json" -f null -
12277 @end example
12278
12279 @section limiter
12280
12281 Limits the pixel components values to the specified range [min, max].
12282
12283 The filter accepts the following options:
12284
12285 @table @option
12286 @item min
12287 Lower bound. Defaults to the lowest allowed value for the input.
12288
12289 @item max
12290 Upper bound. Defaults to the highest allowed value for the input.
12291
12292 @item planes
12293 Specify which planes will be processed. Defaults to all available.
12294 @end table
12295
12296 @section loop
12297
12298 Loop video frames.
12299
12300 The filter accepts the following options:
12301
12302 @table @option
12303 @item loop
12304 Set the number of loops. Setting this value to -1 will result in infinite loops.
12305 Default is 0.
12306
12307 @item size
12308 Set maximal size in number of frames. Default is 0.
12309
12310 @item start
12311 Set first frame of loop. Default is 0.
12312 @end table
12313
12314 @subsection Examples
12315
12316 @itemize
12317 @item
12318 Loop single first frame infinitely:
12319 @example
12320 loop=loop=-1:size=1:start=0
12321 @end example
12322
12323 @item
12324 Loop single first frame 10 times:
12325 @example
12326 loop=loop=10:size=1:start=0
12327 @end example
12328
12329 @item
12330 Loop 10 first frames 5 times:
12331 @example
12332 loop=loop=5:size=10:start=0
12333 @end example
12334 @end itemize
12335
12336 @section lut1d
12337
12338 Apply a 1D LUT to an input video.
12339
12340 The filter accepts the following options:
12341
12342 @table @option
12343 @item file
12344 Set the 1D LUT file name.
12345
12346 Currently supported formats:
12347 @table @samp
12348 @item cube
12349 Iridas
12350 @item csp
12351 cineSpace
12352 @end table
12353
12354 @item interp
12355 Select interpolation mode.
12356
12357 Available values are:
12358
12359 @table @samp
12360 @item nearest
12361 Use values from the nearest defined point.
12362 @item linear
12363 Interpolate values using the linear interpolation.
12364 @item cosine
12365 Interpolate values using the cosine interpolation.
12366 @item cubic
12367 Interpolate values using the cubic interpolation.
12368 @item spline
12369 Interpolate values using the spline interpolation.
12370 @end table
12371 @end table
12372
12373 @anchor{lut3d}
12374 @section lut3d
12375
12376 Apply a 3D LUT to an input video.
12377
12378 The filter accepts the following options:
12379
12380 @table @option
12381 @item file
12382 Set the 3D LUT file name.
12383
12384 Currently supported formats:
12385 @table @samp
12386 @item 3dl
12387 AfterEffects
12388 @item cube
12389 Iridas
12390 @item dat
12391 DaVinci
12392 @item m3d
12393 Pandora
12394 @item csp
12395 cineSpace
12396 @end table
12397 @item interp
12398 Select interpolation mode.
12399
12400 Available values are:
12401
12402 @table @samp
12403 @item nearest
12404 Use values from the nearest defined point.
12405 @item trilinear
12406 Interpolate values using the 8 points defining a cube.
12407 @item tetrahedral
12408 Interpolate values using a tetrahedron.
12409 @end table
12410 @end table
12411
12412 @section lumakey
12413
12414 Turn certain luma values into transparency.
12415
12416 The filter accepts the following options:
12417
12418 @table @option
12419 @item threshold
12420 Set the luma which will be used as base for transparency.
12421 Default value is @code{0}.
12422
12423 @item tolerance
12424 Set the range of luma values to be keyed out.
12425 Default value is @code{0}.
12426
12427 @item softness
12428 Set the range of softness. Default value is @code{0}.
12429 Use this to control gradual transition from zero to full transparency.
12430 @end table
12431
12432 @section lut, lutrgb, lutyuv
12433
12434 Compute a look-up table for binding each pixel component input value
12435 to an output value, and apply it to the input video.
12436
12437 @var{lutyuv} applies a lookup table to a YUV input video, @var{lutrgb}
12438 to an RGB input video.
12439
12440 These filters accept the following parameters:
12441 @table @option
12442 @item c0
12443 set first pixel component expression
12444 @item c1
12445 set second pixel component expression
12446 @item c2
12447 set third pixel component expression
12448 @item c3
12449 set fourth pixel component expression, corresponds to the alpha component
12450
12451 @item r
12452 set red component expression
12453 @item g
12454 set green component expression
12455 @item b
12456 set blue component expression
12457 @item a
12458 alpha component expression
12459
12460 @item y
12461 set Y/luminance component expression
12462 @item u
12463 set U/Cb component expression
12464 @item v
12465 set V/Cr component expression
12466 @end table
12467
12468 Each of them specifies the expression to use for computing the lookup table for
12469 the corresponding pixel component values.
12470
12471 The exact component associated to each of the @var{c*} options depends on the
12472 format in input.
12473
12474 The @var{lut} filter requires either YUV or RGB pixel formats in input,
12475 @var{lutrgb} requires RGB pixel formats in input, and @var{lutyuv} requires YUV.
12476
12477 The expressions can contain the following constants and functions:
12478
12479 @table @option
12480 @item w
12481 @item h
12482 The input width and height.
12483
12484 @item val
12485 The input value for the pixel component.
12486
12487 @item clipval
12488 The input value, clipped to the @var{minval}-@var{maxval} range.
12489
12490 @item maxval
12491 The maximum value for the pixel component.
12492
12493 @item minval
12494 The minimum value for the pixel component.
12495
12496 @item negval
12497 The negated value for the pixel component value, clipped to the
12498 @var{minval}-@var{maxval} range; it corresponds to the expression
12499 "maxval-clipval+minval".
12500
12501 @item clip(val)
12502 The computed value in @var{val}, clipped to the
12503 @var{minval}-@var{maxval} range.
12504
12505 @item gammaval(gamma)
12506 The computed gamma correction value of the pixel component value,
12507 clipped to the @var{minval}-@var{maxval} range. It corresponds to the
12508 expression
12509 "pow((clipval-minval)/(maxval-minval)\,@var{gamma})*(maxval-minval)+minval"
12510
12511 @end table
12512
12513 All expressions default to "val".
12514
12515 @subsection Examples
12516
12517 @itemize
12518 @item
12519 Negate input video:
12520 @example
12521 lutrgb="r=maxval+minval-val:g=maxval+minval-val:b=maxval+minval-val"
12522 lutyuv="y=maxval+minval-val:u=maxval+minval-val:v=maxval+minval-val"
12523 @end example
12524
12525 The above is the same as:
12526 @example
12527 lutrgb="r=negval:g=negval:b=negval"
12528 lutyuv="y=negval:u=negval:v=negval"
12529 @end example
12530
12531 @item
12532 Negate luminance:
12533 @example
12534 lutyuv=y=negval
12535 @end example
12536
12537 @item
12538 Remove chroma components, turning the video into a graytone image:
12539 @example
12540 lutyuv="u=128:v=128"
12541 @end example
12542
12543 @item
12544 Apply a luma burning effect:
12545 @example
12546 lutyuv="y=2*val"
12547 @end example
12548
12549 @item
12550 Remove green and blue components:
12551 @example
12552 lutrgb="g=0:b=0"
12553 @end example
12554
12555 @item
12556 Set a constant alpha channel value on input:
12557 @example
12558 format=rgba,lutrgb=a="maxval-minval/2"
12559 @end example
12560
12561 @item
12562 Correct luminance gamma by a factor of 0.5:
12563 @example
12564 lutyuv=y=gammaval(0.5)
12565 @end example
12566
12567 @item
12568 Discard least significant bits of luma:
12569 @example
12570 lutyuv=y='bitand(val, 128+64+32)'
12571 @end example
12572
12573 @item
12574 Technicolor like effect:
12575 @example
12576 lutyuv=u='(val-maxval/2)*2+maxval/2':v='(val-maxval/2)*2+maxval/2'
12577 @end example
12578 @end itemize
12579
12580 @section lut2, tlut2
12581
12582 The @code{lut2} filter takes two input streams and outputs one
12583 stream.
12584
12585 The @code{tlut2} (time lut2) filter takes two consecutive frames
12586 from one single stream.
12587
12588 This filter accepts the following parameters:
12589 @table @option
12590 @item c0
12591 set first pixel component expression
12592 @item c1
12593 set second pixel component expression
12594 @item c2
12595 set third pixel component expression
12596 @item c3
12597 set fourth pixel component expression, corresponds to the alpha component
12598
12599 @item d
12600 set output bit depth, only available for @code{lut2} filter. By default is 0,
12601 which means bit depth is automatically picked from first input format.
12602 @end table
12603
12604 Each of them specifies the expression to use for computing the lookup table for
12605 the corresponding pixel component values.
12606
12607 The exact component associated to each of the @var{c*} options depends on the
12608 format in inputs.
12609
12610 The expressions can contain the following constants:
12611
12612 @table @option
12613 @item w
12614 @item h
12615 The input width and height.
12616
12617 @item x
12618 The first input value for the pixel component.
12619
12620 @item y
12621 The second input value for the pixel component.
12622
12623 @item bdx
12624 The first input video bit depth.
12625
12626 @item bdy
12627 The second input video bit depth.
12628 @end table
12629
12630 All expressions default to "x".
12631
12632 @subsection Examples
12633
12634 @itemize
12635 @item
12636 Highlight differences between two RGB video streams:
12637 @example
12638 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)'
12639 @end example
12640
12641 @item
12642 Highlight differences between two YUV video streams:
12643 @example
12644 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)'
12645 @end example
12646
12647 @item
12648 Show max difference between two video streams:
12649 @example
12650 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)))'
12651 @end example
12652 @end itemize
12653
12654 @section maskedclamp
12655
12656 Clamp the first input stream with the second input and third input stream.
12657
12658 Returns the value of first stream to be between second input
12659 stream - @code{undershoot} and third input stream + @code{overshoot}.
12660
12661 This filter accepts the following options:
12662 @table @option
12663 @item undershoot
12664 Default value is @code{0}.
12665
12666 @item overshoot
12667 Default value is @code{0}.
12668
12669 @item planes
12670 Set which planes will be processed as bitmap, unprocessed planes will be
12671 copied from first stream.
12672 By default value 0xf, all planes will be processed.
12673 @end table
12674
12675 @section maskedmax
12676
12677 Merge the second and third input stream into output stream using absolute differences
12678 between second input stream and first input stream and absolute difference between
12679 third input stream and first input stream. The picked value will be from second input
12680 stream if second absolute difference is greater than first one or from third input stream
12681 otherwise.
12682
12683 This filter accepts the following options:
12684 @table @option
12685 @item planes
12686 Set which planes will be processed as bitmap, unprocessed planes will be
12687 copied from first stream.
12688 By default value 0xf, all planes will be processed.
12689 @end table
12690
12691 @section maskedmerge
12692
12693 Merge the first input stream with the second input stream using per pixel
12694 weights in the third input stream.
12695
12696 A value of 0 in the third stream pixel component means that pixel component
12697 from first stream is returned unchanged, while maximum value (eg. 255 for
12698 8-bit videos) means that pixel component from second stream is returned
12699 unchanged. Intermediate values define the amount of merging between both
12700 input stream's pixel components.
12701
12702 This filter accepts the following options:
12703 @table @option
12704 @item planes
12705 Set which planes will be processed as bitmap, unprocessed planes will be
12706 copied from first stream.
12707 By default value 0xf, all planes will be processed.
12708 @end table
12709
12710 @section maskedmin
12711
12712 Merge the second and third input stream into output stream using absolute differences
12713 between second input stream and first input stream and absolute difference between
12714 third input stream and first input stream. The picked value will be from second input
12715 stream if second absolute difference is less than first one or from third input stream
12716 otherwise.
12717
12718 This filter accepts the following options:
12719 @table @option
12720 @item planes
12721 Set which planes will be processed as bitmap, unprocessed planes will be
12722 copied from first stream.
12723 By default value 0xf, all planes will be processed.
12724 @end table
12725
12726 @section maskfun
12727 Create mask from input video.
12728
12729 For example it is useful to create motion masks after @code{tblend} filter.
12730
12731 This filter accepts the following options:
12732
12733 @table @option
12734 @item low
12735 Set low threshold. Any pixel component lower or exact than this value will be set to 0.
12736
12737 @item high
12738 Set high threshold. Any pixel component higher than this value will be set to max value
12739 allowed for current pixel format.
12740
12741 @item planes
12742 Set planes to filter, by default all available planes are filtered.
12743
12744 @item fill
12745 Fill all frame pixels with this value.
12746
12747 @item sum
12748 Set max average pixel value for frame. If sum of all pixel components is higher that this
12749 average, output frame will be completely filled with value set by @var{fill} option.
12750 Typically useful for scene changes when used in combination with @code{tblend} filter.
12751 @end table
12752
12753 @section mcdeint
12754
12755 Apply motion-compensation deinterlacing.
12756
12757 It needs one field per frame as input and must thus be used together
12758 with yadif=1/3 or equivalent.
12759
12760 This filter accepts the following options:
12761 @table @option
12762 @item mode
12763 Set the deinterlacing mode.
12764
12765 It accepts one of the following values:
12766 @table @samp
12767 @item fast
12768 @item medium
12769 @item slow
12770 use iterative motion estimation
12771 @item extra_slow
12772 like @samp{slow}, but use multiple reference frames.
12773 @end table
12774 Default value is @samp{fast}.
12775
12776 @item parity
12777 Set the picture field parity assumed for the input video. It must be
12778 one of the following values:
12779
12780 @table @samp
12781 @item 0, tff
12782 assume top field first
12783 @item 1, bff
12784 assume bottom field first
12785 @end table
12786
12787 Default value is @samp{bff}.
12788
12789 @item qp
12790 Set per-block quantization parameter (QP) used by the internal
12791 encoder.
12792
12793 Higher values should result in a smoother motion vector field but less
12794 optimal individual vectors. Default value is 1.
12795 @end table
12796
12797 @section mergeplanes
12798
12799 Merge color channel components from several video streams.
12800
12801 The filter accepts up to 4 input streams, and merge selected input
12802 planes to the output video.
12803
12804 This filter accepts the following options:
12805 @table @option
12806 @item mapping
12807 Set input to output plane mapping. Default is @code{0}.
12808
12809 The mappings is specified as a bitmap. It should be specified as a
12810 hexadecimal number in the form 0xAa[Bb[Cc[Dd]]]. 'Aa' describes the
12811 mapping for the first plane of the output stream. 'A' sets the number of
12812 the input stream to use (from 0 to 3), and 'a' the plane number of the
12813 corresponding input to use (from 0 to 3). The rest of the mappings is
12814 similar, 'Bb' describes the mapping for the output stream second
12815 plane, 'Cc' describes the mapping for the output stream third plane and
12816 'Dd' describes the mapping for the output stream fourth plane.
12817
12818 @item format
12819 Set output pixel format. Default is @code{yuva444p}.
12820 @end table
12821
12822 @subsection Examples
12823
12824 @itemize
12825 @item
12826 Merge three gray video streams of same width and height into single video stream:
12827 @example
12828 [a0][a1][a2]mergeplanes=0x001020:yuv444p
12829 @end example
12830
12831 @item
12832 Merge 1st yuv444p stream and 2nd gray video stream into yuva444p video stream:
12833 @example
12834 [a0][a1]mergeplanes=0x00010210:yuva444p
12835 @end example
12836
12837 @item
12838 Swap Y and A plane in yuva444p stream:
12839 @example
12840 format=yuva444p,mergeplanes=0x03010200:yuva444p
12841 @end example
12842
12843 @item
12844 Swap U and V plane in yuv420p stream:
12845 @example
12846 format=yuv420p,mergeplanes=0x000201:yuv420p
12847 @end example
12848
12849 @item
12850 Cast a rgb24 clip to yuv444p:
12851 @example
12852 format=rgb24,mergeplanes=0x000102:yuv444p
12853 @end example
12854 @end itemize
12855
12856 @section mestimate
12857
12858 Estimate and export motion vectors using block matching algorithms.
12859 Motion vectors are stored in frame side data to be used by other filters.
12860
12861 This filter accepts the following options:
12862 @table @option
12863 @item method
12864 Specify the motion estimation method. Accepts one of the following values:
12865
12866 @table @samp
12867 @item esa
12868 Exhaustive search algorithm.
12869 @item tss
12870 Three step search algorithm.
12871 @item tdls
12872 Two dimensional logarithmic search algorithm.
12873 @item ntss
12874 New three step search algorithm.
12875 @item fss
12876 Four step search algorithm.
12877 @item ds
12878 Diamond search algorithm.
12879 @item hexbs
12880 Hexagon-based search algorithm.
12881 @item epzs
12882 Enhanced predictive zonal search algorithm.
12883 @item umh
12884 Uneven multi-hexagon search algorithm.
12885 @end table
12886 Default value is @samp{esa}.
12887
12888 @item mb_size
12889 Macroblock size. Default @code{16}.
12890
12891 @item search_param
12892 Search parameter. Default @code{7}.
12893 @end table
12894
12895 @section midequalizer
12896
12897 Apply Midway Image Equalization effect using two video streams.
12898
12899 Midway Image Equalization adjusts a pair of images to have the same
12900 histogram, while maintaining their dynamics as much as possible. It's
12901 useful for e.g. matching exposures from a pair of stereo cameras.
12902
12903 This filter has two inputs and one output, which must be of same pixel format, but
12904 may be of different sizes. The output of filter is first input adjusted with
12905 midway histogram of both inputs.
12906
12907 This filter accepts the following option:
12908
12909 @table @option
12910 @item planes
12911 Set which planes to process. Default is @code{15}, which is all available planes.
12912 @end table
12913
12914 @section minterpolate
12915
12916 Convert the video to specified frame rate using motion interpolation.
12917
12918 This filter accepts the following options:
12919 @table @option
12920 @item fps
12921 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}.
12922
12923 @item mi_mode
12924 Motion interpolation mode. Following values are accepted:
12925 @table @samp
12926 @item dup
12927 Duplicate previous or next frame for interpolating new ones.
12928 @item blend
12929 Blend source frames. Interpolated frame is mean of previous and next frames.
12930 @item mci
12931 Motion compensated interpolation. Following options are effective when this mode is selected:
12932
12933 @table @samp
12934 @item mc_mode
12935 Motion compensation mode. Following values are accepted:
12936 @table @samp
12937 @item obmc
12938 Overlapped block motion compensation.
12939 @item aobmc
12940 Adaptive overlapped block motion compensation. Window weighting coefficients are controlled adaptively according to the reliabilities of the neighboring motion vectors to reduce oversmoothing.
12941 @end table
12942 Default mode is @samp{obmc}.
12943
12944 @item me_mode
12945 Motion estimation mode. Following values are accepted:
12946 @table @samp
12947 @item bidir
12948 Bidirectional motion estimation. Motion vectors are estimated for each source frame in both forward and backward directions.
12949 @item bilat
12950 Bilateral motion estimation. Motion vectors are estimated directly for interpolated frame.
12951 @end table
12952 Default mode is @samp{bilat}.
12953
12954 @item me
12955 The algorithm to be used for motion estimation. Following values are accepted:
12956 @table @samp
12957 @item esa
12958 Exhaustive search algorithm.
12959 @item tss
12960 Three step search algorithm.
12961 @item tdls
12962 Two dimensional logarithmic search algorithm.
12963 @item ntss
12964 New three step search algorithm.
12965 @item fss
12966 Four step search algorithm.
12967 @item ds
12968 Diamond search algorithm.
12969 @item hexbs
12970 Hexagon-based search algorithm.
12971 @item epzs
12972 Enhanced predictive zonal search algorithm.
12973 @item umh
12974 Uneven multi-hexagon search algorithm.
12975 @end table
12976 Default algorithm is @samp{epzs}.
12977
12978 @item mb_size
12979 Macroblock size. Default @code{16}.
12980
12981 @item search_param
12982 Motion estimation search parameter. Default @code{32}.
12983
12984 @item vsbmc
12985 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).
12986 @end table
12987 @end table
12988
12989 @item scd
12990 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:
12991 @table @samp
12992 @item none
12993 Disable scene change detection.
12994 @item fdiff
12995 Frame difference. Corresponding pixel values are compared and if it satisfies @var{scd_threshold} scene change is detected.
12996 @end table
12997 Default method is @samp{fdiff}.
12998
12999 @item scd_threshold
13000 Scene change detection threshold. Default is @code{5.0}.
13001 @end table
13002
13003 @section mix
13004
13005 Mix several video input streams into one video stream.
13006
13007 A description of the accepted options follows.
13008
13009 @table @option
13010 @item nb_inputs
13011 The number of inputs. If unspecified, it defaults to 2.
13012
13013 @item weights
13014 Specify weight of each input video stream as sequence.
13015 Each weight is separated by space. If number of weights
13016 is smaller than number of @var{frames} last specified
13017 weight will be used for all remaining unset weights.
13018
13019 @item scale
13020 Specify scale, if it is set it will be multiplied with sum
13021 of each weight multiplied with pixel values to give final destination
13022 pixel value. By default @var{scale} is auto scaled to sum of weights.
13023
13024 @item duration
13025 Specify how end of stream is determined.
13026 @table @samp
13027 @item longest
13028 The duration of the longest input. (default)
13029
13030 @item shortest
13031 The duration of the shortest input.
13032
13033 @item first
13034 The duration of the first input.
13035 @end table
13036 @end table
13037
13038 @section mpdecimate
13039
13040 Drop frames that do not differ greatly from the previous frame in
13041 order to reduce frame rate.
13042
13043 The main use of this filter is for very-low-bitrate encoding
13044 (e.g. streaming over dialup modem), but it could in theory be used for
13045 fixing movies that were inverse-telecined incorrectly.
13046
13047 A description of the accepted options follows.
13048
13049 @table @option
13050 @item max
13051 Set the maximum number of consecutive frames which can be dropped (if
13052 positive), or the minimum interval between dropped frames (if
13053 negative). If the value is 0, the frame is dropped disregarding the
13054 number of previous sequentially dropped frames.
13055
13056 Default value is 0.
13057
13058 @item hi
13059 @item lo
13060 @item frac
13061 Set the dropping threshold values.
13062
13063 Values for @option{hi} and @option{lo} are for 8x8 pixel blocks and
13064 represent actual pixel value differences, so a threshold of 64
13065 corresponds to 1 unit of difference for each pixel, or the same spread
13066 out differently over the block.
13067
13068 A frame is a candidate for dropping if no 8x8 blocks differ by more
13069 than a threshold of @option{hi}, and if no more than @option{frac} blocks (1
13070 meaning the whole image) differ by more than a threshold of @option{lo}.
13071
13072 Default value for @option{hi} is 64*12, default value for @option{lo} is
13073 64*5, and default value for @option{frac} is 0.33.
13074 @end table
13075
13076
13077 @section negate
13078
13079 Negate (invert) the input video.
13080
13081 It accepts the following option:
13082
13083 @table @option
13084
13085 @item negate_alpha
13086 With value 1, it negates the alpha component, if present. Default value is 0.
13087 @end table
13088
13089 @anchor{nlmeans}
13090 @section nlmeans
13091
13092 Denoise frames using Non-Local Means algorithm.
13093
13094 Each pixel is adjusted by looking for other pixels with similar contexts. This
13095 context similarity is defined by comparing their surrounding patches of size
13096 @option{p}x@option{p}. Patches are searched in an area of @option{r}x@option{r}
13097 around the pixel.
13098
13099 Note that the research area defines centers for patches, which means some
13100 patches will be made of pixels outside that research area.
13101
13102 The filter accepts the following options.
13103
13104 @table @option
13105 @item s
13106 Set denoising strength. Default is 1.0. Must be in range [1.0, 30.0].
13107
13108 @item p
13109 Set patch size. Default is 7. Must be odd number in range [0, 99].
13110
13111 @item pc
13112 Same as @option{p} but for chroma planes.
13113
13114 The default value is @var{0} and means automatic.
13115
13116 @item r
13117 Set research size. Default is 15. Must be odd number in range [0, 99].
13118
13119 @item rc
13120 Same as @option{r} but for chroma planes.
13121
13122 The default value is @var{0} and means automatic.
13123 @end table
13124
13125 @section nnedi
13126
13127 Deinterlace video using neural network edge directed interpolation.
13128
13129 This filter accepts the following options:
13130
13131 @table @option
13132 @item weights
13133 Mandatory option, without binary file filter can not work.
13134 Currently file can be found here:
13135 https://github.com/dubhater/vapoursynth-nnedi3/blob/master/src/nnedi3_weights.bin
13136
13137 @item deint
13138 Set which frames to deinterlace, by default it is @code{all}.
13139 Can be @code{all} or @code{interlaced}.
13140
13141 @item field
13142 Set mode of operation.
13143
13144 Can be one of the following:
13145
13146 @table @samp
13147 @item af
13148 Use frame flags, both fields.
13149 @item a
13150 Use frame flags, single field.
13151 @item t
13152 Use top field only.
13153 @item b
13154 Use bottom field only.
13155 @item tf
13156 Use both fields, top first.
13157 @item bf
13158 Use both fields, bottom first.
13159 @end table
13160
13161 @item planes
13162 Set which planes to process, by default filter process all frames.
13163
13164 @item nsize
13165 Set size of local neighborhood around each pixel, used by the predictor neural
13166 network.
13167
13168 Can be one of the following:
13169
13170 @table @samp
13171 @item s8x6
13172 @item s16x6
13173 @item s32x6
13174 @item s48x6
13175 @item s8x4
13176 @item s16x4
13177 @item s32x4
13178 @end table
13179
13180 @item nns
13181 Set the number of neurons in predictor neural network.
13182 Can be one of the following:
13183
13184 @table @samp
13185 @item n16
13186 @item n32
13187 @item n64
13188 @item n128
13189 @item n256
13190 @end table
13191
13192 @item qual
13193 Controls the number of different neural network predictions that are blended
13194 together to compute the final output value. Can be @code{fast}, default or
13195 @code{slow}.
13196
13197 @item etype
13198 Set which set of weights to use in the predictor.
13199 Can be one of the following:
13200
13201 @table @samp
13202 @item a
13203 weights trained to minimize absolute error
13204 @item s
13205 weights trained to minimize squared error
13206 @end table
13207
13208 @item pscrn
13209 Controls whether or not the prescreener neural network is used to decide
13210 which pixels should be processed by the predictor neural network and which
13211 can be handled by simple cubic interpolation.
13212 The prescreener is trained to know whether cubic interpolation will be
13213 sufficient for a pixel or whether it should be predicted by the predictor nn.
13214 The computational complexity of the prescreener nn is much less than that of
13215 the predictor nn. Since most pixels can be handled by cubic interpolation,
13216 using the prescreener generally results in much faster processing.
13217 The prescreener is pretty accurate, so the difference between using it and not
13218 using it is almost always unnoticeable.
13219
13220 Can be one of the following:
13221
13222 @table @samp
13223 @item none
13224 @item original
13225 @item new
13226 @end table
13227
13228 Default is @code{new}.
13229
13230 @item fapprox
13231 Set various debugging flags.
13232 @end table
13233
13234 @section noformat
13235
13236 Force libavfilter not to use any of the specified pixel formats for the
13237 input to the next filter.
13238
13239 It accepts the following parameters:
13240 @table @option
13241
13242 @item pix_fmts
13243 A '|'-separated list of pixel format names, such as
13244 pix_fmts=yuv420p|monow|rgb24".
13245
13246 @end table
13247
13248 @subsection Examples
13249
13250 @itemize
13251 @item
13252 Force libavfilter to use a format different from @var{yuv420p} for the
13253 input to the vflip filter:
13254 @example
13255 noformat=pix_fmts=yuv420p,vflip
13256 @end example
13257
13258 @item
13259 Convert the input video to any of the formats not contained in the list:
13260 @example
13261 noformat=yuv420p|yuv444p|yuv410p
13262 @end example
13263 @end itemize
13264
13265 @section noise
13266
13267 Add noise on video input frame.
13268
13269 The filter accepts the following options:
13270
13271 @table @option
13272 @item all_seed
13273 @item c0_seed
13274 @item c1_seed
13275 @item c2_seed
13276 @item c3_seed
13277 Set noise seed for specific pixel component or all pixel components in case
13278 of @var{all_seed}. Default value is @code{123457}.
13279
13280 @item all_strength, alls
13281 @item c0_strength, c0s
13282 @item c1_strength, c1s
13283 @item c2_strength, c2s
13284 @item c3_strength, c3s
13285 Set noise strength for specific pixel component or all pixel components in case
13286 @var{all_strength}. Default value is @code{0}. Allowed range is [0, 100].
13287
13288 @item all_flags, allf
13289 @item c0_flags, c0f
13290 @item c1_flags, c1f
13291 @item c2_flags, c2f
13292 @item c3_flags, c3f
13293 Set pixel component flags or set flags for all components if @var{all_flags}.
13294 Available values for component flags are:
13295 @table @samp
13296 @item a
13297 averaged temporal noise (smoother)
13298 @item p
13299 mix random noise with a (semi)regular pattern
13300 @item t
13301 temporal noise (noise pattern changes between frames)
13302 @item u
13303 uniform noise (gaussian otherwise)
13304 @end table
13305 @end table
13306
13307 @subsection Examples
13308
13309 Add temporal and uniform noise to input video:
13310 @example
13311 noise=alls=20:allf=t+u
13312 @end example
13313
13314 @section normalize
13315
13316 Normalize RGB video (aka histogram stretching, contrast stretching).
13317 See: https://en.wikipedia.org/wiki/Normalization_(image_processing)
13318
13319 For each channel of each frame, the filter computes the input range and maps
13320 it linearly to the user-specified output range. The output range defaults
13321 to the full dynamic range from pure black to pure white.
13322
13323 Temporal smoothing can be used on the input range to reduce flickering (rapid
13324 changes in brightness) caused when small dark or bright objects enter or leave
13325 the scene. This is similar to the auto-exposure (automatic gain control) on a
13326 video camera, and, like a video camera, it may cause a period of over- or
13327 under-exposure of the video.
13328
13329 The R,G,B channels can be normalized independently, which may cause some
13330 color shifting, or linked together as a single channel, which prevents
13331 color shifting. Linked normalization preserves hue. Independent normalization
13332 does not, so it can be used to remove some color casts. Independent and linked
13333 normalization can be combined in any ratio.
13334
13335 The normalize filter accepts the following options:
13336
13337 @table @option
13338 @item blackpt
13339 @item whitept
13340 Colors which define the output range. The minimum input value is mapped to
13341 the @var{blackpt}. The maximum input value is mapped to the @var{whitept}.
13342 The defaults are black and white respectively. Specifying white for
13343 @var{blackpt} and black for @var{whitept} will give color-inverted,
13344 normalized video. Shades of grey can be used to reduce the dynamic range
13345 (contrast). Specifying saturated colors here can create some interesting
13346 effects.
13347
13348 @item smoothing
13349 The number of previous frames to use for temporal smoothing. The input range
13350 of each channel is smoothed using a rolling average over the current frame
13351 and the @var{smoothing} previous frames. The default is 0 (no temporal
13352 smoothing).
13353
13354 @item independence
13355 Controls the ratio of independent (color shifting) channel normalization to
13356 linked (color preserving) normalization. 0.0 is fully linked, 1.0 is fully
13357 independent. Defaults to 1.0 (fully independent).
13358
13359 @item strength
13360 Overall strength of the filter. 1.0 is full strength. 0.0 is a rather
13361 expensive no-op. Defaults to 1.0 (full strength).
13362
13363 @end table
13364
13365 @subsection Examples
13366
13367 Stretch video contrast to use the full dynamic range, with no temporal
13368 smoothing; may flicker depending on the source content:
13369 @example
13370 normalize=blackpt=black:whitept=white:smoothing=0
13371 @end example
13372
13373 As above, but with 50 frames of temporal smoothing; flicker should be
13374 reduced, depending on the source content:
13375 @example
13376 normalize=blackpt=black:whitept=white:smoothing=50
13377 @end example
13378
13379 As above, but with hue-preserving linked channel normalization:
13380 @example
13381 normalize=blackpt=black:whitept=white:smoothing=50:independence=0
13382 @end example
13383
13384 As above, but with half strength:
13385 @example
13386 normalize=blackpt=black:whitept=white:smoothing=50:independence=0:strength=0.5
13387 @end example
13388
13389 Map the darkest input color to red, the brightest input color to cyan:
13390 @example
13391 normalize=blackpt=red:whitept=cyan
13392 @end example
13393
13394 @section null
13395
13396 Pass the video source unchanged to the output.
13397
13398 @section ocr
13399 Optical Character Recognition
13400
13401 This filter uses Tesseract for optical character recognition. To enable
13402 compilation of this filter, you need to configure FFmpeg with
13403 @code{--enable-libtesseract}.
13404
13405 It accepts the following options:
13406
13407 @table @option
13408 @item datapath
13409 Set datapath to tesseract data. Default is to use whatever was
13410 set at installation.
13411
13412 @item language
13413 Set language, default is "eng".
13414
13415 @item whitelist
13416 Set character whitelist.
13417
13418 @item blacklist
13419 Set character blacklist.
13420 @end table
13421
13422 The filter exports recognized text as the frame metadata @code{lavfi.ocr.text}.
13423 The filter exports confidence of recognized words as the frame metadata @code{lavfi.ocr.confidence}.
13424
13425 @section ocv
13426
13427 Apply a video transform using libopencv.
13428
13429 To enable this filter, install the libopencv library and headers and
13430 configure FFmpeg with @code{--enable-libopencv}.
13431
13432 It accepts the following parameters:
13433
13434 @table @option
13435
13436 @item filter_name
13437 The name of the libopencv filter to apply.
13438
13439 @item filter_params
13440 The parameters to pass to the libopencv filter. If not specified, the default
13441 values are assumed.
13442
13443 @end table
13444
13445 Refer to the official libopencv documentation for more precise
13446 information:
13447 @url{http://docs.opencv.org/master/modules/imgproc/doc/filtering.html}
13448
13449 Several libopencv filters are supported; see the following subsections.
13450
13451 @anchor{dilate}
13452 @subsection dilate
13453
13454 Dilate an image by using a specific structuring element.
13455 It corresponds to the libopencv function @code{cvDilate}.
13456
13457 It accepts the parameters: @var{struct_el}|@var{nb_iterations}.
13458
13459 @var{struct_el} represents a structuring element, and has the syntax:
13460 @var{cols}x@var{rows}+@var{anchor_x}x@var{anchor_y}/@var{shape}
13461
13462 @var{cols} and @var{rows} represent the number of columns and rows of
13463 the structuring element, @var{anchor_x} and @var{anchor_y} the anchor
13464 point, and @var{shape} the shape for the structuring element. @var{shape}
13465 must be "rect", "cross", "ellipse", or "custom".
13466
13467 If the value for @var{shape} is "custom", it must be followed by a
13468 string of the form "=@var{filename}". The file with name
13469 @var{filename} is assumed to represent a binary image, with each
13470 printable character corresponding to a bright pixel. When a custom
13471 @var{shape} is used, @var{cols} and @var{rows} are ignored, the number
13472 or columns and rows of the read file are assumed instead.
13473
13474 The default value for @var{struct_el} is "3x3+0x0/rect".
13475
13476 @var{nb_iterations} specifies the number of times the transform is
13477 applied to the image, and defaults to 1.
13478
13479 Some examples:
13480 @example
13481 # Use the default values
13482 ocv=dilate
13483
13484 # Dilate using a structuring element with a 5x5 cross, iterating two times
13485 ocv=filter_name=dilate:filter_params=5x5+2x2/cross|2
13486
13487 # Read the shape from the file diamond.shape, iterating two times.
13488 # The file diamond.shape may contain a pattern of characters like this
13489 #   *
13490 #  ***
13491 # *****
13492 #  ***
13493 #   *
13494 # The specified columns and rows are ignored
13495 # but the anchor point coordinates are not
13496 ocv=dilate:0x0+2x2/custom=diamond.shape|2
13497 @end example
13498
13499 @subsection erode
13500
13501 Erode an image by using a specific structuring element.
13502 It corresponds to the libopencv function @code{cvErode}.
13503
13504 It accepts the parameters: @var{struct_el}:@var{nb_iterations},
13505 with the same syntax and semantics as the @ref{dilate} filter.
13506
13507 @subsection smooth
13508
13509 Smooth the input video.
13510
13511 The filter takes the following parameters:
13512 @var{type}|@var{param1}|@var{param2}|@var{param3}|@var{param4}.
13513
13514 @var{type} is the type of smooth filter to apply, and must be one of
13515 the following values: "blur", "blur_no_scale", "median", "gaussian",
13516 or "bilateral". The default value is "gaussian".
13517
13518 The meaning of @var{param1}, @var{param2}, @var{param3}, and @var{param4}
13519 depends on the smooth type. @var{param1} and
13520 @var{param2} accept integer positive values or 0. @var{param3} and
13521 @var{param4} accept floating point values.
13522
13523 The default value for @var{param1} is 3. The default value for the
13524 other parameters is 0.
13525
13526 These parameters correspond to the parameters assigned to the
13527 libopencv function @code{cvSmooth}.
13528
13529 @section oscilloscope
13530
13531 2D Video Oscilloscope.
13532
13533 Useful to measure spatial impulse, step responses, chroma delays, etc.
13534
13535 It accepts the following parameters:
13536
13537 @table @option
13538 @item x
13539 Set scope center x position.
13540
13541 @item y
13542 Set scope center y position.
13543
13544 @item s
13545 Set scope size, relative to frame diagonal.
13546
13547 @item t
13548 Set scope tilt/rotation.
13549
13550 @item o
13551 Set trace opacity.
13552
13553 @item tx
13554 Set trace center x position.
13555
13556 @item ty
13557 Set trace center y position.
13558
13559 @item tw
13560 Set trace width, relative to width of frame.
13561
13562 @item th
13563 Set trace height, relative to height of frame.
13564
13565 @item c
13566 Set which components to trace. By default it traces first three components.
13567
13568 @item g
13569 Draw trace grid. By default is enabled.
13570
13571 @item st
13572 Draw some statistics. By default is enabled.
13573
13574 @item sc
13575 Draw scope. By default is enabled.
13576 @end table
13577
13578 @subsection Examples
13579
13580 @itemize
13581 @item
13582 Inspect full first row of video frame.
13583 @example
13584 oscilloscope=x=0.5:y=0:s=1
13585 @end example
13586
13587 @item
13588 Inspect full last row of video frame.
13589 @example
13590 oscilloscope=x=0.5:y=1:s=1
13591 @end example
13592
13593 @item
13594 Inspect full 5th line of video frame of height 1080.
13595 @example
13596 oscilloscope=x=0.5:y=5/1080:s=1
13597 @end example
13598
13599 @item
13600 Inspect full last column of video frame.
13601 @example
13602 oscilloscope=x=1:y=0.5:s=1:t=1
13603 @end example
13604
13605 @end itemize
13606
13607 @anchor{overlay}
13608 @section overlay
13609
13610 Overlay one video on top of another.
13611
13612 It takes two inputs and has one output. The first input is the "main"
13613 video on which the second input is overlaid.
13614
13615 It accepts the following parameters:
13616
13617 A description of the accepted options follows.
13618
13619 @table @option
13620 @item x
13621 @item y
13622 Set the expression for the x and y coordinates of the overlaid video
13623 on the main video. Default value is "0" for both expressions. In case
13624 the expression is invalid, it is set to a huge value (meaning that the
13625 overlay will not be displayed within the output visible area).
13626
13627 @item eof_action
13628 See @ref{framesync}.
13629
13630 @item eval
13631 Set when the expressions for @option{x}, and @option{y} are evaluated.
13632
13633 It accepts the following values:
13634 @table @samp
13635 @item init
13636 only evaluate expressions once during the filter initialization or
13637 when a command is processed
13638
13639 @item frame
13640 evaluate expressions for each incoming frame
13641 @end table
13642
13643 Default value is @samp{frame}.
13644
13645 @item shortest
13646 See @ref{framesync}.
13647
13648 @item format
13649 Set the format for the output video.
13650
13651 It accepts the following values:
13652 @table @samp
13653 @item yuv420
13654 force YUV420 output
13655
13656 @item yuv422
13657 force YUV422 output
13658
13659 @item yuv444
13660 force YUV444 output
13661
13662 @item rgb
13663 force packed RGB output
13664
13665 @item gbrp
13666 force planar RGB output
13667
13668 @item auto
13669 automatically pick format
13670 @end table
13671
13672 Default value is @samp{yuv420}.
13673
13674 @item repeatlast
13675 See @ref{framesync}.
13676
13677 @item alpha
13678 Set format of alpha of the overlaid video, it can be @var{straight} or
13679 @var{premultiplied}. Default is @var{straight}.
13680 @end table
13681
13682 The @option{x}, and @option{y} expressions can contain the following
13683 parameters.
13684
13685 @table @option
13686 @item main_w, W
13687 @item main_h, H
13688 The main input width and height.
13689
13690 @item overlay_w, w
13691 @item overlay_h, h
13692 The overlay input width and height.
13693
13694 @item x
13695 @item y
13696 The computed values for @var{x} and @var{y}. They are evaluated for
13697 each new frame.
13698
13699 @item hsub
13700 @item vsub
13701 horizontal and vertical chroma subsample values of the output
13702 format. For example for the pixel format "yuv422p" @var{hsub} is 2 and
13703 @var{vsub} is 1.
13704
13705 @item n
13706 the number of input frame, starting from 0
13707
13708 @item pos
13709 the position in the file of the input frame, NAN if unknown
13710
13711 @item t
13712 The timestamp, expressed in seconds. It's NAN if the input timestamp is unknown.
13713
13714 @end table
13715
13716 This filter also supports the @ref{framesync} options.
13717
13718 Note that the @var{n}, @var{pos}, @var{t} variables are available only
13719 when evaluation is done @emph{per frame}, and will evaluate to NAN
13720 when @option{eval} is set to @samp{init}.
13721
13722 Be aware that frames are taken from each input video in timestamp
13723 order, hence, if their initial timestamps differ, it is a good idea
13724 to pass the two inputs through a @var{setpts=PTS-STARTPTS} filter to
13725 have them begin in the same zero timestamp, as the example for
13726 the @var{movie} filter does.
13727
13728 You can chain together more overlays but you should test the
13729 efficiency of such approach.
13730
13731 @subsection Commands
13732
13733 This filter supports the following commands:
13734 @table @option
13735 @item x
13736 @item y
13737 Modify the x and y of the overlay input.
13738 The command accepts the same syntax of the corresponding option.
13739
13740 If the specified expression is not valid, it is kept at its current
13741 value.
13742 @end table
13743
13744 @subsection Examples
13745
13746 @itemize
13747 @item
13748 Draw the overlay at 10 pixels from the bottom right corner of the main
13749 video:
13750 @example
13751 overlay=main_w-overlay_w-10:main_h-overlay_h-10
13752 @end example
13753
13754 Using named options the example above becomes:
13755 @example
13756 overlay=x=main_w-overlay_w-10:y=main_h-overlay_h-10
13757 @end example
13758
13759 @item
13760 Insert a transparent PNG logo in the bottom left corner of the input,
13761 using the @command{ffmpeg} tool with the @code{-filter_complex} option:
13762 @example
13763 ffmpeg -i input -i logo -filter_complex 'overlay=10:main_h-overlay_h-10' output
13764 @end example
13765
13766 @item
13767 Insert 2 different transparent PNG logos (second logo on bottom
13768 right corner) using the @command{ffmpeg} tool:
13769 @example
13770 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
13771 @end example
13772
13773 @item
13774 Add a transparent color layer on top of the main video; @code{WxH}
13775 must specify the size of the main input to the overlay filter:
13776 @example
13777 color=color=red@@.3:size=WxH [over]; [in][over] overlay [out]
13778 @end example
13779
13780 @item
13781 Play an original video and a filtered version (here with the deshake
13782 filter) side by side using the @command{ffplay} tool:
13783 @example
13784 ffplay input.avi -vf 'split[a][b]; [a]pad=iw*2:ih[src]; [b]deshake[filt]; [src][filt]overlay=w'
13785 @end example
13786
13787 The above command is the same as:
13788 @example
13789 ffplay input.avi -vf 'split[b], pad=iw*2[src], [b]deshake, [src]overlay=w'
13790 @end example
13791
13792 @item
13793 Make a sliding overlay appearing from the left to the right top part of the
13794 screen starting since time 2:
13795 @example
13796 overlay=x='if(gte(t,2), -w+(t-2)*20, NAN)':y=0
13797 @end example
13798
13799 @item
13800 Compose output by putting two input videos side to side:
13801 @example
13802 ffmpeg -i left.avi -i right.avi -filter_complex "
13803 nullsrc=size=200x100 [background];
13804 [0:v] setpts=PTS-STARTPTS, scale=100x100 [left];
13805 [1:v] setpts=PTS-STARTPTS, scale=100x100 [right];
13806 [background][left]       overlay=shortest=1       [background+left];
13807 [background+left][right] overlay=shortest=1:x=100 [left+right]
13808 "
13809 @end example
13810
13811 @item
13812 Mask 10-20 seconds of a video by applying the delogo filter to a section
13813 @example
13814 ffmpeg -i test.avi -codec:v:0 wmv2 -ar 11025 -b:v 9000k
13815 -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]'
13816 masked.avi
13817 @end example
13818
13819 @item
13820 Chain several overlays in cascade:
13821 @example
13822 nullsrc=s=200x200 [bg];
13823 testsrc=s=100x100, split=4 [in0][in1][in2][in3];
13824 [in0] lutrgb=r=0, [bg]   overlay=0:0     [mid0];
13825 [in1] lutrgb=g=0, [mid0] overlay=100:0   [mid1];
13826 [in2] lutrgb=b=0, [mid1] overlay=0:100   [mid2];
13827 [in3] null,       [mid2] overlay=100:100 [out0]
13828 @end example
13829
13830 @end itemize
13831
13832 @section owdenoise
13833
13834 Apply Overcomplete Wavelet denoiser.
13835
13836 The filter accepts the following options:
13837
13838 @table @option
13839 @item depth
13840 Set depth.
13841
13842 Larger depth values will denoise lower frequency components more, but
13843 slow down filtering.
13844
13845 Must be an int in the range 8-16, default is @code{8}.
13846
13847 @item luma_strength, ls
13848 Set luma strength.
13849
13850 Must be a double value in the range 0-1000, default is @code{1.0}.
13851
13852 @item chroma_strength, cs
13853 Set chroma strength.
13854
13855 Must be a double value in the range 0-1000, default is @code{1.0}.
13856 @end table
13857
13858 @anchor{pad}
13859 @section pad
13860
13861 Add paddings to the input image, and place the original input at the
13862 provided @var{x}, @var{y} coordinates.
13863
13864 It accepts the following parameters:
13865
13866 @table @option
13867 @item width, w
13868 @item height, h
13869 Specify an expression for the size of the output image with the
13870 paddings added. If the value for @var{width} or @var{height} is 0, the
13871 corresponding input size is used for the output.
13872
13873 The @var{width} expression can reference the value set by the
13874 @var{height} expression, and vice versa.
13875
13876 The default value of @var{width} and @var{height} is 0.
13877
13878 @item x
13879 @item y
13880 Specify the offsets to place the input image at within the padded area,
13881 with respect to the top/left border of the output image.
13882
13883 The @var{x} expression can reference the value set by the @var{y}
13884 expression, and vice versa.
13885
13886 The default value of @var{x} and @var{y} is 0.
13887
13888 If @var{x} or @var{y} evaluate to a negative number, they'll be changed
13889 so the input image is centered on the padded area.
13890
13891 @item color
13892 Specify the color of the padded area. For the syntax of this option,
13893 check the @ref{color syntax,,"Color" section in the ffmpeg-utils
13894 manual,ffmpeg-utils}.
13895
13896 The default value of @var{color} is "black".
13897
13898 @item eval
13899 Specify when to evaluate  @var{width}, @var{height}, @var{x} and @var{y} expression.
13900
13901 It accepts the following values:
13902
13903 @table @samp
13904 @item init
13905 Only evaluate expressions once during the filter initialization or when
13906 a command is processed.
13907
13908 @item frame
13909 Evaluate expressions for each incoming frame.
13910
13911 @end table
13912
13913 Default value is @samp{init}.
13914
13915 @item aspect
13916 Pad to aspect instead to a resolution.
13917
13918 @end table
13919
13920 The value for the @var{width}, @var{height}, @var{x}, and @var{y}
13921 options are expressions containing the following constants:
13922
13923 @table @option
13924 @item in_w
13925 @item in_h
13926 The input video width and height.
13927
13928 @item iw
13929 @item ih
13930 These are the same as @var{in_w} and @var{in_h}.
13931
13932 @item out_w
13933 @item out_h
13934 The output width and height (the size of the padded area), as
13935 specified by the @var{width} and @var{height} expressions.
13936
13937 @item ow
13938 @item oh
13939 These are the same as @var{out_w} and @var{out_h}.
13940
13941 @item x
13942 @item y
13943 The x and y offsets as specified by the @var{x} and @var{y}
13944 expressions, or NAN if not yet specified.
13945
13946 @item a
13947 same as @var{iw} / @var{ih}
13948
13949 @item sar
13950 input sample aspect ratio
13951
13952 @item dar
13953 input display aspect ratio, it is the same as (@var{iw} / @var{ih}) * @var{sar}
13954
13955 @item hsub
13956 @item vsub
13957 The horizontal and vertical chroma subsample values. For example for the
13958 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
13959 @end table
13960
13961 @subsection Examples
13962
13963 @itemize
13964 @item
13965 Add paddings with the color "violet" to the input video. The output video
13966 size is 640x480, and the top-left corner of the input video is placed at
13967 column 0, row 40
13968 @example
13969 pad=640:480:0:40:violet
13970 @end example
13971
13972 The example above is equivalent to the following command:
13973 @example
13974 pad=width=640:height=480:x=0:y=40:color=violet
13975 @end example
13976
13977 @item
13978 Pad the input to get an output with dimensions increased by 3/2,
13979 and put the input video at the center of the padded area:
13980 @example
13981 pad="3/2*iw:3/2*ih:(ow-iw)/2:(oh-ih)/2"
13982 @end example
13983
13984 @item
13985 Pad the input to get a squared output with size equal to the maximum
13986 value between the input width and height, and put the input video at
13987 the center of the padded area:
13988 @example
13989 pad="max(iw\,ih):ow:(ow-iw)/2:(oh-ih)/2"
13990 @end example
13991
13992 @item
13993 Pad the input to get a final w/h ratio of 16:9:
13994 @example
13995 pad="ih*16/9:ih:(ow-iw)/2:(oh-ih)/2"
13996 @end example
13997
13998 @item
13999 In case of anamorphic video, in order to set the output display aspect
14000 correctly, it is necessary to use @var{sar} in the expression,
14001 according to the relation:
14002 @example
14003 (ih * X / ih) * sar = output_dar
14004 X = output_dar / sar
14005 @end example
14006
14007 Thus the previous example needs to be modified to:
14008 @example
14009 pad="ih*16/9/sar:ih:(ow-iw)/2:(oh-ih)/2"
14010 @end example
14011
14012 @item
14013 Double the output size and put the input video in the bottom-right
14014 corner of the output padded area:
14015 @example
14016 pad="2*iw:2*ih:ow-iw:oh-ih"
14017 @end example
14018 @end itemize
14019
14020 @anchor{palettegen}
14021 @section palettegen
14022
14023 Generate one palette for a whole video stream.
14024
14025 It accepts the following options:
14026
14027 @table @option
14028 @item max_colors
14029 Set the maximum number of colors to quantize in the palette.
14030 Note: the palette will still contain 256 colors; the unused palette entries
14031 will be black.
14032
14033 @item reserve_transparent
14034 Create a palette of 255 colors maximum and reserve the last one for
14035 transparency. Reserving the transparency color is useful for GIF optimization.
14036 If not set, the maximum of colors in the palette will be 256. You probably want
14037 to disable this option for a standalone image.
14038 Set by default.
14039
14040 @item transparency_color
14041 Set the color that will be used as background for transparency.
14042
14043 @item stats_mode
14044 Set statistics mode.
14045
14046 It accepts the following values:
14047 @table @samp
14048 @item full
14049 Compute full frame histograms.
14050 @item diff
14051 Compute histograms only for the part that differs from previous frame. This
14052 might be relevant to give more importance to the moving part of your input if
14053 the background is static.
14054 @item single
14055 Compute new histogram for each frame.
14056 @end table
14057
14058 Default value is @var{full}.
14059 @end table
14060
14061 The filter also exports the frame metadata @code{lavfi.color_quant_ratio}
14062 (@code{nb_color_in / nb_color_out}) which you can use to evaluate the degree of
14063 color quantization of the palette. This information is also visible at
14064 @var{info} logging level.
14065
14066 @subsection Examples
14067
14068 @itemize
14069 @item
14070 Generate a representative palette of a given video using @command{ffmpeg}:
14071 @example
14072 ffmpeg -i input.mkv -vf palettegen palette.png
14073 @end example
14074 @end itemize
14075
14076 @section paletteuse
14077
14078 Use a palette to downsample an input video stream.
14079
14080 The filter takes two inputs: one video stream and a palette. The palette must
14081 be a 256 pixels image.
14082
14083 It accepts the following options:
14084
14085 @table @option
14086 @item dither
14087 Select dithering mode. Available algorithms are:
14088 @table @samp
14089 @item bayer
14090 Ordered 8x8 bayer dithering (deterministic)
14091 @item heckbert
14092 Dithering as defined by Paul Heckbert in 1982 (simple error diffusion).
14093 Note: this dithering is sometimes considered "wrong" and is included as a
14094 reference.
14095 @item floyd_steinberg
14096 Floyd and Steingberg dithering (error diffusion)
14097 @item sierra2
14098 Frankie Sierra dithering v2 (error diffusion)
14099 @item sierra2_4a
14100 Frankie Sierra dithering v2 "Lite" (error diffusion)
14101 @end table
14102
14103 Default is @var{sierra2_4a}.
14104
14105 @item bayer_scale
14106 When @var{bayer} dithering is selected, this option defines the scale of the
14107 pattern (how much the crosshatch pattern is visible). A low value means more
14108 visible pattern for less banding, and higher value means less visible pattern
14109 at the cost of more banding.
14110
14111 The option must be an integer value in the range [0,5]. Default is @var{2}.
14112
14113 @item diff_mode
14114 If set, define the zone to process
14115
14116 @table @samp
14117 @item rectangle
14118 Only the changing rectangle will be reprocessed. This is similar to GIF
14119 cropping/offsetting compression mechanism. This option can be useful for speed
14120 if only a part of the image is changing, and has use cases such as limiting the
14121 scope of the error diffusal @option{dither} to the rectangle that bounds the
14122 moving scene (it leads to more deterministic output if the scene doesn't change
14123 much, and as a result less moving noise and better GIF compression).
14124 @end table
14125
14126 Default is @var{none}.
14127
14128 @item new
14129 Take new palette for each output frame.
14130
14131 @item alpha_threshold
14132 Sets the alpha threshold for transparency. Alpha values above this threshold
14133 will be treated as completely opaque, and values below this threshold will be
14134 treated as completely transparent.
14135
14136 The option must be an integer value in the range [0,255]. Default is @var{128}.
14137 @end table
14138
14139 @subsection Examples
14140
14141 @itemize
14142 @item
14143 Use a palette (generated for example with @ref{palettegen}) to encode a GIF
14144 using @command{ffmpeg}:
14145 @example
14146 ffmpeg -i input.mkv -i palette.png -lavfi paletteuse output.gif
14147 @end example
14148 @end itemize
14149
14150 @section perspective
14151
14152 Correct perspective of video not recorded perpendicular to the screen.
14153
14154 A description of the accepted parameters follows.
14155
14156 @table @option
14157 @item x0
14158 @item y0
14159 @item x1
14160 @item y1
14161 @item x2
14162 @item y2
14163 @item x3
14164 @item y3
14165 Set coordinates expression for top left, top right, bottom left and bottom right corners.
14166 Default values are @code{0:0:W:0:0:H:W:H} with which perspective will remain unchanged.
14167 If the @code{sense} option is set to @code{source}, then the specified points will be sent
14168 to the corners of the destination. If the @code{sense} option is set to @code{destination},
14169 then the corners of the source will be sent to the specified coordinates.
14170
14171 The expressions can use the following variables:
14172
14173 @table @option
14174 @item W
14175 @item H
14176 the width and height of video frame.
14177 @item in
14178 Input frame count.
14179 @item on
14180 Output frame count.
14181 @end table
14182
14183 @item interpolation
14184 Set interpolation for perspective correction.
14185
14186 It accepts the following values:
14187 @table @samp
14188 @item linear
14189 @item cubic
14190 @end table
14191
14192 Default value is @samp{linear}.
14193
14194 @item sense
14195 Set interpretation of coordinate options.
14196
14197 It accepts the following values:
14198 @table @samp
14199 @item 0, source
14200
14201 Send point in the source specified by the given coordinates to
14202 the corners of the destination.
14203
14204 @item 1, destination
14205
14206 Send the corners of the source to the point in the destination specified
14207 by the given coordinates.
14208
14209 Default value is @samp{source}.
14210 @end table
14211
14212 @item eval
14213 Set when the expressions for coordinates @option{x0,y0,...x3,y3} are evaluated.
14214
14215 It accepts the following values:
14216 @table @samp
14217 @item init
14218 only evaluate expressions once during the filter initialization or
14219 when a command is processed
14220
14221 @item frame
14222 evaluate expressions for each incoming frame
14223 @end table
14224
14225 Default value is @samp{init}.
14226 @end table
14227
14228 @section phase
14229
14230 Delay interlaced video by one field time so that the field order changes.
14231
14232 The intended use is to fix PAL movies that have been captured with the
14233 opposite field order to the film-to-video transfer.
14234
14235 A description of the accepted parameters follows.
14236
14237 @table @option
14238 @item mode
14239 Set phase mode.
14240
14241 It accepts the following values:
14242 @table @samp
14243 @item t
14244 Capture field order top-first, transfer bottom-first.
14245 Filter will delay the bottom field.
14246
14247 @item b
14248 Capture field order bottom-first, transfer top-first.
14249 Filter will delay the top field.
14250
14251 @item p
14252 Capture and transfer with the same field order. This mode only exists
14253 for the documentation of the other options to refer to, but if you
14254 actually select it, the filter will faithfully do nothing.
14255
14256 @item a
14257 Capture field order determined automatically by field flags, transfer
14258 opposite.
14259 Filter selects among @samp{t} and @samp{b} modes on a frame by frame
14260 basis using field flags. If no field information is available,
14261 then this works just like @samp{u}.
14262
14263 @item u
14264 Capture unknown or varying, transfer opposite.
14265 Filter selects among @samp{t} and @samp{b} on a frame by frame basis by
14266 analyzing the images and selecting the alternative that produces best
14267 match between the fields.
14268
14269 @item T
14270 Capture top-first, transfer unknown or varying.
14271 Filter selects among @samp{t} and @samp{p} using image analysis.
14272
14273 @item B
14274 Capture bottom-first, transfer unknown or varying.
14275 Filter selects among @samp{b} and @samp{p} using image analysis.
14276
14277 @item A
14278 Capture determined by field flags, transfer unknown or varying.
14279 Filter selects among @samp{t}, @samp{b} and @samp{p} using field flags and
14280 image analysis. If no field information is available, then this works just
14281 like @samp{U}. This is the default mode.
14282
14283 @item U
14284 Both capture and transfer unknown or varying.
14285 Filter selects among @samp{t}, @samp{b} and @samp{p} using image analysis only.
14286 @end table
14287 @end table
14288
14289 @section photosensitivity
14290 Reduce various flashes in video, so to help users with epilepsy.
14291
14292 It accepts the following options:
14293 @table @option
14294 @item frames, f
14295 Set how many frames to use when filtering. Default is 30.
14296
14297 @item threshold, t
14298 Set detection threshold factor. Default is 1.
14299 Lower is stricter.
14300
14301 @item skip
14302 Set how many pixels to skip when sampling frames. Defalt is 1.
14303 Allowed range is from 1 to 1024.
14304
14305 @item bypass
14306 Leave frames unchanged. Default is disabled.
14307 @end table
14308
14309 @section pixdesctest
14310
14311 Pixel format descriptor test filter, mainly useful for internal
14312 testing. The output video should be equal to the input video.
14313
14314 For example:
14315 @example
14316 format=monow, pixdesctest
14317 @end example
14318
14319 can be used to test the monowhite pixel format descriptor definition.
14320
14321 @section pixscope
14322
14323 Display sample values of color channels. Mainly useful for checking color
14324 and levels. Minimum supported resolution is 640x480.
14325
14326 The filters accept the following options:
14327
14328 @table @option
14329 @item x
14330 Set scope X position, relative offset on X axis.
14331
14332 @item y
14333 Set scope Y position, relative offset on Y axis.
14334
14335 @item w
14336 Set scope width.
14337
14338 @item h
14339 Set scope height.
14340
14341 @item o
14342 Set window opacity. This window also holds statistics about pixel area.
14343
14344 @item wx
14345 Set window X position, relative offset on X axis.
14346
14347 @item wy
14348 Set window Y position, relative offset on Y axis.
14349 @end table
14350
14351 @section pp
14352
14353 Enable the specified chain of postprocessing subfilters using libpostproc. This
14354 library should be automatically selected with a GPL build (@code{--enable-gpl}).
14355 Subfilters must be separated by '/' and can be disabled by prepending a '-'.
14356 Each subfilter and some options have a short and a long name that can be used
14357 interchangeably, i.e. dr/dering are the same.
14358
14359 The filters accept the following options:
14360
14361 @table @option
14362 @item subfilters
14363 Set postprocessing subfilters string.
14364 @end table
14365
14366 All subfilters share common options to determine their scope:
14367
14368 @table @option
14369 @item a/autoq
14370 Honor the quality commands for this subfilter.
14371
14372 @item c/chrom
14373 Do chrominance filtering, too (default).
14374
14375 @item y/nochrom
14376 Do luminance filtering only (no chrominance).
14377
14378 @item n/noluma
14379 Do chrominance filtering only (no luminance).
14380 @end table
14381
14382 These options can be appended after the subfilter name, separated by a '|'.
14383
14384 Available subfilters are:
14385
14386 @table @option
14387 @item hb/hdeblock[|difference[|flatness]]
14388 Horizontal deblocking filter
14389 @table @option
14390 @item difference
14391 Difference factor where higher values mean more deblocking (default: @code{32}).
14392 @item flatness
14393 Flatness threshold where lower values mean more deblocking (default: @code{39}).
14394 @end table
14395
14396 @item vb/vdeblock[|difference[|flatness]]
14397 Vertical deblocking filter
14398 @table @option
14399 @item difference
14400 Difference factor where higher values mean more deblocking (default: @code{32}).
14401 @item flatness
14402 Flatness threshold where lower values mean more deblocking (default: @code{39}).
14403 @end table
14404
14405 @item ha/hadeblock[|difference[|flatness]]
14406 Accurate horizontal deblocking filter
14407 @table @option
14408 @item difference
14409 Difference factor where higher values mean more deblocking (default: @code{32}).
14410 @item flatness
14411 Flatness threshold where lower values mean more deblocking (default: @code{39}).
14412 @end table
14413
14414 @item va/vadeblock[|difference[|flatness]]
14415 Accurate vertical deblocking filter
14416 @table @option
14417 @item difference
14418 Difference factor where higher values mean more deblocking (default: @code{32}).
14419 @item flatness
14420 Flatness threshold where lower values mean more deblocking (default: @code{39}).
14421 @end table
14422 @end table
14423
14424 The horizontal and vertical deblocking filters share the difference and
14425 flatness values so you cannot set different horizontal and vertical
14426 thresholds.
14427
14428 @table @option
14429 @item h1/x1hdeblock
14430 Experimental horizontal deblocking filter
14431
14432 @item v1/x1vdeblock
14433 Experimental vertical deblocking filter
14434
14435 @item dr/dering
14436 Deringing filter
14437
14438 @item tn/tmpnoise[|threshold1[|threshold2[|threshold3]]], temporal noise reducer
14439 @table @option
14440 @item threshold1
14441 larger -> stronger filtering
14442 @item threshold2
14443 larger -> stronger filtering
14444 @item threshold3
14445 larger -> stronger filtering
14446 @end table
14447
14448 @item al/autolevels[:f/fullyrange], automatic brightness / contrast correction
14449 @table @option
14450 @item f/fullyrange
14451 Stretch luminance to @code{0-255}.
14452 @end table
14453
14454 @item lb/linblenddeint
14455 Linear blend deinterlacing filter that deinterlaces the given block by
14456 filtering all lines with a @code{(1 2 1)} filter.
14457
14458 @item li/linipoldeint
14459 Linear interpolating deinterlacing filter that deinterlaces the given block by
14460 linearly interpolating every second line.
14461
14462 @item ci/cubicipoldeint
14463 Cubic interpolating deinterlacing filter deinterlaces the given block by
14464 cubically interpolating every second line.
14465
14466 @item md/mediandeint
14467 Median deinterlacing filter that deinterlaces the given block by applying a
14468 median filter to every second line.
14469
14470 @item fd/ffmpegdeint
14471 FFmpeg deinterlacing filter that deinterlaces the given block by filtering every
14472 second line with a @code{(-1 4 2 4 -1)} filter.
14473
14474 @item l5/lowpass5
14475 Vertically applied FIR lowpass deinterlacing filter that deinterlaces the given
14476 block by filtering all lines with a @code{(-1 2 6 2 -1)} filter.
14477
14478 @item fq/forceQuant[|quantizer]
14479 Overrides the quantizer table from the input with the constant quantizer you
14480 specify.
14481 @table @option
14482 @item quantizer
14483 Quantizer to use
14484 @end table
14485
14486 @item de/default
14487 Default pp filter combination (@code{hb|a,vb|a,dr|a})
14488
14489 @item fa/fast
14490 Fast pp filter combination (@code{h1|a,v1|a,dr|a})
14491
14492 @item ac
14493 High quality pp filter combination (@code{ha|a|128|7,va|a,dr|a})
14494 @end table
14495
14496 @subsection Examples
14497
14498 @itemize
14499 @item
14500 Apply horizontal and vertical deblocking, deringing and automatic
14501 brightness/contrast:
14502 @example
14503 pp=hb/vb/dr/al
14504 @end example
14505
14506 @item
14507 Apply default filters without brightness/contrast correction:
14508 @example
14509 pp=de/-al
14510 @end example
14511
14512 @item
14513 Apply default filters and temporal denoiser:
14514 @example
14515 pp=default/tmpnoise|1|2|3
14516 @end example
14517
14518 @item
14519 Apply deblocking on luminance only, and switch vertical deblocking on or off
14520 automatically depending on available CPU time:
14521 @example
14522 pp=hb|y/vb|a
14523 @end example
14524 @end itemize
14525
14526 @section pp7
14527 Apply Postprocessing filter 7. It is variant of the @ref{spp} filter,
14528 similar to spp = 6 with 7 point DCT, where only the center sample is
14529 used after IDCT.
14530
14531 The filter accepts the following options:
14532
14533 @table @option
14534 @item qp
14535 Force a constant quantization parameter. It accepts an integer in range
14536 0 to 63. If not set, the filter will use the QP from the video stream
14537 (if available).
14538
14539 @item mode
14540 Set thresholding mode. Available modes are:
14541
14542 @table @samp
14543 @item hard
14544 Set hard thresholding.
14545 @item soft
14546 Set soft thresholding (better de-ringing effect, but likely blurrier).
14547 @item medium
14548 Set medium thresholding (good results, default).
14549 @end table
14550 @end table
14551
14552 @section premultiply
14553 Apply alpha premultiply effect to input video stream using first plane
14554 of second stream as alpha.
14555
14556 Both streams must have same dimensions and same pixel format.
14557
14558 The filter accepts the following option:
14559
14560 @table @option
14561 @item planes
14562 Set which planes will be processed, unprocessed planes will be copied.
14563 By default value 0xf, all planes will be processed.
14564
14565 @item inplace
14566 Do not require 2nd input for processing, instead use alpha plane from input stream.
14567 @end table
14568
14569 @section prewitt
14570 Apply prewitt operator to input video stream.
14571
14572 The filter accepts the following option:
14573
14574 @table @option
14575 @item planes
14576 Set which planes will be processed, unprocessed planes will be copied.
14577 By default value 0xf, all planes will be processed.
14578
14579 @item scale
14580 Set value which will be multiplied with filtered result.
14581
14582 @item delta
14583 Set value which will be added to filtered result.
14584 @end table
14585
14586 @anchor{program_opencl}
14587 @section program_opencl
14588
14589 Filter video using an OpenCL program.
14590
14591 @table @option
14592
14593 @item source
14594 OpenCL program source file.
14595
14596 @item kernel
14597 Kernel name in program.
14598
14599 @item inputs
14600 Number of inputs to the filter.  Defaults to 1.
14601
14602 @item size, s
14603 Size of output frames.  Defaults to the same as the first input.
14604
14605 @end table
14606
14607 The program source file must contain a kernel function with the given name,
14608 which will be run once for each plane of the output.  Each run on a plane
14609 gets enqueued as a separate 2D global NDRange with one work-item for each
14610 pixel to be generated.  The global ID offset for each work-item is therefore
14611 the coordinates of a pixel in the destination image.
14612
14613 The kernel function needs to take the following arguments:
14614 @itemize
14615 @item
14616 Destination image, @var{__write_only image2d_t}.
14617
14618 This image will become the output; the kernel should write all of it.
14619 @item
14620 Frame index, @var{unsigned int}.
14621
14622 This is a counter starting from zero and increasing by one for each frame.
14623 @item
14624 Source images, @var{__read_only image2d_t}.
14625
14626 These are the most recent images on each input.  The kernel may read from
14627 them to generate the output, but they can't be written to.
14628 @end itemize
14629
14630 Example programs:
14631
14632 @itemize
14633 @item
14634 Copy the input to the output (output must be the same size as the input).
14635 @verbatim
14636 __kernel void copy(__write_only image2d_t destination,
14637                    unsigned int index,
14638                    __read_only  image2d_t source)
14639 {
14640     const sampler_t sampler = CLK_NORMALIZED_COORDS_FALSE;
14641
14642     int2 location = (int2)(get_global_id(0), get_global_id(1));
14643
14644     float4 value = read_imagef(source, sampler, location);
14645
14646     write_imagef(destination, location, value);
14647 }
14648 @end verbatim
14649
14650 @item
14651 Apply a simple transformation, rotating the input by an amount increasing
14652 with the index counter.  Pixel values are linearly interpolated by the
14653 sampler, and the output need not have the same dimensions as the input.
14654 @verbatim
14655 __kernel void rotate_image(__write_only image2d_t dst,
14656                            unsigned int index,
14657                            __read_only  image2d_t src)
14658 {
14659     const sampler_t sampler = (CLK_NORMALIZED_COORDS_FALSE |
14660                                CLK_FILTER_LINEAR);
14661
14662     float angle = (float)index / 100.0f;
14663
14664     float2 dst_dim = convert_float2(get_image_dim(dst));
14665     float2 src_dim = convert_float2(get_image_dim(src));
14666
14667     float2 dst_cen = dst_dim / 2.0f;
14668     float2 src_cen = src_dim / 2.0f;
14669
14670     int2   dst_loc = (int2)(get_global_id(0), get_global_id(1));
14671
14672     float2 dst_pos = convert_float2(dst_loc) - dst_cen;
14673     float2 src_pos = {
14674         cos(angle) * dst_pos.x - sin(angle) * dst_pos.y,
14675         sin(angle) * dst_pos.x + cos(angle) * dst_pos.y
14676     };
14677     src_pos = src_pos * src_dim / dst_dim;
14678
14679     float2 src_loc = src_pos + src_cen;
14680
14681     if (src_loc.x < 0.0f      || src_loc.y < 0.0f ||
14682         src_loc.x > src_dim.x || src_loc.y > src_dim.y)
14683         write_imagef(dst, dst_loc, 0.5f);
14684     else
14685         write_imagef(dst, dst_loc, read_imagef(src, sampler, src_loc));
14686 }
14687 @end verbatim
14688
14689 @item
14690 Blend two inputs together, with the amount of each input used varying
14691 with the index counter.
14692 @verbatim
14693 __kernel void blend_images(__write_only image2d_t dst,
14694                            unsigned int index,
14695                            __read_only  image2d_t src1,
14696                            __read_only  image2d_t src2)
14697 {
14698     const sampler_t sampler = (CLK_NORMALIZED_COORDS_FALSE |
14699                                CLK_FILTER_LINEAR);
14700
14701     float blend = (cos((float)index / 50.0f) + 1.0f) / 2.0f;
14702
14703     int2  dst_loc = (int2)(get_global_id(0), get_global_id(1));
14704     int2 src1_loc = dst_loc * get_image_dim(src1) / get_image_dim(dst);
14705     int2 src2_loc = dst_loc * get_image_dim(src2) / get_image_dim(dst);
14706
14707     float4 val1 = read_imagef(src1, sampler, src1_loc);
14708     float4 val2 = read_imagef(src2, sampler, src2_loc);
14709
14710     write_imagef(dst, dst_loc, val1 * blend + val2 * (1.0f - blend));
14711 }
14712 @end verbatim
14713
14714 @end itemize
14715
14716 @section pseudocolor
14717
14718 Alter frame colors in video with pseudocolors.
14719
14720 This filter accepts the following options:
14721
14722 @table @option
14723 @item c0
14724 set pixel first component expression
14725
14726 @item c1
14727 set pixel second component expression
14728
14729 @item c2
14730 set pixel third component expression
14731
14732 @item c3
14733 set pixel fourth component expression, corresponds to the alpha component
14734
14735 @item i
14736 set component to use as base for altering colors
14737 @end table
14738
14739 Each of them specifies the expression to use for computing the lookup table for
14740 the corresponding pixel component values.
14741
14742 The expressions can contain the following constants and functions:
14743
14744 @table @option
14745 @item w
14746 @item h
14747 The input width and height.
14748
14749 @item val
14750 The input value for the pixel component.
14751
14752 @item ymin, umin, vmin, amin
14753 The minimum allowed component value.
14754
14755 @item ymax, umax, vmax, amax
14756 The maximum allowed component value.
14757 @end table
14758
14759 All expressions default to "val".
14760
14761 @subsection Examples
14762
14763 @itemize
14764 @item
14765 Change too high luma values to gradient:
14766 @example
14767 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'"
14768 @end example
14769 @end itemize
14770
14771 @section psnr
14772
14773 Obtain the average, maximum and minimum PSNR (Peak Signal to Noise
14774 Ratio) between two input videos.
14775
14776 This filter takes in input two input videos, the first input is
14777 considered the "main" source and is passed unchanged to the
14778 output. The second input is used as a "reference" video for computing
14779 the PSNR.
14780
14781 Both video inputs must have the same resolution and pixel format for
14782 this filter to work correctly. Also it assumes that both inputs
14783 have the same number of frames, which are compared one by one.
14784
14785 The obtained average PSNR is printed through the logging system.
14786
14787 The filter stores the accumulated MSE (mean squared error) of each
14788 frame, and at the end of the processing it is averaged across all frames
14789 equally, and the following formula is applied to obtain the PSNR:
14790
14791 @example
14792 PSNR = 10*log10(MAX^2/MSE)
14793 @end example
14794
14795 Where MAX is the average of the maximum values of each component of the
14796 image.
14797
14798 The description of the accepted parameters follows.
14799
14800 @table @option
14801 @item stats_file, f
14802 If specified the filter will use the named file to save the PSNR of
14803 each individual frame. When filename equals "-" the data is sent to
14804 standard output.
14805
14806 @item stats_version
14807 Specifies which version of the stats file format to use. Details of
14808 each format are written below.
14809 Default value is 1.
14810
14811 @item stats_add_max
14812 Determines whether the max value is output to the stats log.
14813 Default value is 0.
14814 Requires stats_version >= 2. If this is set and stats_version < 2,
14815 the filter will return an error.
14816 @end table
14817
14818 This filter also supports the @ref{framesync} options.
14819
14820 The file printed if @var{stats_file} is selected, contains a sequence of
14821 key/value pairs of the form @var{key}:@var{value} for each compared
14822 couple of frames.
14823
14824 If a @var{stats_version} greater than 1 is specified, a header line precedes
14825 the list of per-frame-pair stats, with key value pairs following the frame
14826 format with the following parameters:
14827
14828 @table @option
14829 @item psnr_log_version
14830 The version of the log file format. Will match @var{stats_version}.
14831
14832 @item fields
14833 A comma separated list of the per-frame-pair parameters included in
14834 the log.
14835 @end table
14836
14837 A description of each shown per-frame-pair parameter follows:
14838
14839 @table @option
14840 @item n
14841 sequential number of the input frame, starting from 1
14842
14843 @item mse_avg
14844 Mean Square Error pixel-by-pixel average difference of the compared
14845 frames, averaged over all the image components.
14846
14847 @item mse_y, mse_u, mse_v, mse_r, mse_g, mse_b, mse_a
14848 Mean Square Error pixel-by-pixel average difference of the compared
14849 frames for the component specified by the suffix.
14850
14851 @item psnr_y, psnr_u, psnr_v, psnr_r, psnr_g, psnr_b, psnr_a
14852 Peak Signal to Noise ratio of the compared frames for the component
14853 specified by the suffix.
14854
14855 @item max_avg, max_y, max_u, max_v
14856 Maximum allowed value for each channel, and average over all
14857 channels.
14858 @end table
14859
14860 For example:
14861 @example
14862 movie=ref_movie.mpg, setpts=PTS-STARTPTS [main];
14863 [main][ref] psnr="stats_file=stats.log" [out]
14864 @end example
14865
14866 On this example the input file being processed is compared with the
14867 reference file @file{ref_movie.mpg}. The PSNR of each individual frame
14868 is stored in @file{stats.log}.
14869
14870 @anchor{pullup}
14871 @section pullup
14872
14873 Pulldown reversal (inverse telecine) filter, capable of handling mixed
14874 hard-telecine, 24000/1001 fps progressive, and 30000/1001 fps progressive
14875 content.
14876
14877 The pullup filter is designed to take advantage of future context in making
14878 its decisions. This filter is stateless in the sense that it does not lock
14879 onto a pattern to follow, but it instead looks forward to the following
14880 fields in order to identify matches and rebuild progressive frames.
14881
14882 To produce content with an even framerate, insert the fps filter after
14883 pullup, use @code{fps=24000/1001} if the input frame rate is 29.97fps,
14884 @code{fps=24} for 30fps and the (rare) telecined 25fps input.
14885
14886 The filter accepts the following options:
14887
14888 @table @option
14889 @item jl
14890 @item jr
14891 @item jt
14892 @item jb
14893 These options set the amount of "junk" to ignore at the left, right, top, and
14894 bottom of the image, respectively. Left and right are in units of 8 pixels,
14895 while top and bottom are in units of 2 lines.
14896 The default is 8 pixels on each side.
14897
14898 @item sb
14899 Set the strict breaks. Setting this option to 1 will reduce the chances of
14900 filter generating an occasional mismatched frame, but it may also cause an
14901 excessive number of frames to be dropped during high motion sequences.
14902 Conversely, setting it to -1 will make filter match fields more easily.
14903 This may help processing of video where there is slight blurring between
14904 the fields, but may also cause there to be interlaced frames in the output.
14905 Default value is @code{0}.
14906
14907 @item mp
14908 Set the metric plane to use. It accepts the following values:
14909 @table @samp
14910 @item l
14911 Use luma plane.
14912
14913 @item u
14914 Use chroma blue plane.
14915
14916 @item v
14917 Use chroma red plane.
14918 @end table
14919
14920 This option may be set to use chroma plane instead of the default luma plane
14921 for doing filter's computations. This may improve accuracy on very clean
14922 source material, but more likely will decrease accuracy, especially if there
14923 is chroma noise (rainbow effect) or any grayscale video.
14924 The main purpose of setting @option{mp} to a chroma plane is to reduce CPU
14925 load and make pullup usable in realtime on slow machines.
14926 @end table
14927
14928 For best results (without duplicated frames in the output file) it is
14929 necessary to change the output frame rate. For example, to inverse
14930 telecine NTSC input:
14931 @example
14932 ffmpeg -i input -vf pullup -r 24000/1001 ...
14933 @end example
14934
14935 @section qp
14936
14937 Change video quantization parameters (QP).
14938
14939 The filter accepts the following option:
14940
14941 @table @option
14942 @item qp
14943 Set expression for quantization parameter.
14944 @end table
14945
14946 The expression is evaluated through the eval API and can contain, among others,
14947 the following constants:
14948
14949 @table @var
14950 @item known
14951 1 if index is not 129, 0 otherwise.
14952
14953 @item qp
14954 Sequential index starting from -129 to 128.
14955 @end table
14956
14957 @subsection Examples
14958
14959 @itemize
14960 @item
14961 Some equation like:
14962 @example
14963 qp=2+2*sin(PI*qp)
14964 @end example
14965 @end itemize
14966
14967 @section random
14968
14969 Flush video frames from internal cache of frames into a random order.
14970 No frame is discarded.
14971 Inspired by @ref{frei0r} nervous filter.
14972
14973 @table @option
14974 @item frames
14975 Set size in number of frames of internal cache, in range from @code{2} to
14976 @code{512}. Default is @code{30}.
14977
14978 @item seed
14979 Set seed for random number generator, must be an integer included between
14980 @code{0} and @code{UINT32_MAX}. If not specified, or if explicitly set to
14981 less than @code{0}, the filter will try to use a good random seed on a
14982 best effort basis.
14983 @end table
14984
14985 @section readeia608
14986
14987 Read closed captioning (EIA-608) information from the top lines of a video frame.
14988
14989 This filter adds frame metadata for @code{lavfi.readeia608.X.cc} and
14990 @code{lavfi.readeia608.X.line}, where @code{X} is the number of the identified line
14991 with EIA-608 data (starting from 0). A description of each metadata value follows:
14992
14993 @table @option
14994 @item lavfi.readeia608.X.cc
14995 The two bytes stored as EIA-608 data (printed in hexadecimal).
14996
14997 @item lavfi.readeia608.X.line
14998 The number of the line on which the EIA-608 data was identified and read.
14999 @end table
15000
15001 This filter accepts the following options:
15002
15003 @table @option
15004 @item scan_min
15005 Set the line to start scanning for EIA-608 data. Default is @code{0}.
15006
15007 @item scan_max
15008 Set the line to end scanning for EIA-608 data. Default is @code{29}.
15009
15010 @item mac
15011 Set minimal acceptable amplitude change for sync codes detection.
15012 Default is @code{0.2}. Allowed range is @code{[0.001 - 1]}.
15013
15014 @item spw
15015 Set the ratio of width reserved for sync code detection.
15016 Default is @code{0.27}. Allowed range is @code{[0.01 - 0.7]}.
15017
15018 @item mhd
15019 Set the max peaks height difference for sync code detection.
15020 Default is @code{0.1}. Allowed range is @code{[0.0 - 0.5]}.
15021
15022 @item mpd
15023 Set max peaks period difference for sync code detection.
15024 Default is @code{0.1}. Allowed range is @code{[0.0 - 0.5]}.
15025
15026 @item msd
15027 Set the first two max start code bits differences.
15028 Default is @code{0.02}. Allowed range is @code{[0.0 - 0.5]}.
15029
15030 @item bhd
15031 Set the minimum ratio of bits height compared to 3rd start code bit.
15032 Default is @code{0.75}. Allowed range is @code{[0.01 - 1]}.
15033
15034 @item th_w
15035 Set the white color threshold. Default is @code{0.35}. Allowed range is @code{[0.1 - 1]}.
15036
15037 @item th_b
15038 Set the black color threshold. Default is @code{0.15}. Allowed range is @code{[0.0 - 0.5]}.
15039
15040 @item chp
15041 Enable checking the parity bit. In the event of a parity error, the filter will output
15042 @code{0x00} for that character. Default is false.
15043
15044 @item lp
15045 Lowpass lines prior to further processing. Default is disabled.
15046 @end table
15047
15048 @subsection Examples
15049
15050 @itemize
15051 @item
15052 Output a csv with presentation time and the first two lines of identified EIA-608 captioning data.
15053 @example
15054 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
15055 @end example
15056 @end itemize
15057
15058 @section readvitc
15059
15060 Read vertical interval timecode (VITC) information from the top lines of a
15061 video frame.
15062
15063 The filter adds frame metadata key @code{lavfi.readvitc.tc_str} with the
15064 timecode value, if a valid timecode has been detected. Further metadata key
15065 @code{lavfi.readvitc.found} is set to 0/1 depending on whether
15066 timecode data has been found or not.
15067
15068 This filter accepts the following options:
15069
15070 @table @option
15071 @item scan_max
15072 Set the maximum number of lines to scan for VITC data. If the value is set to
15073 @code{-1} the full video frame is scanned. Default is @code{45}.
15074
15075 @item thr_b
15076 Set the luma threshold for black. Accepts float numbers in the range [0.0,1.0],
15077 default value is @code{0.2}. The value must be equal or less than @code{thr_w}.
15078
15079 @item thr_w
15080 Set the luma threshold for white. Accepts float numbers in the range [0.0,1.0],
15081 default value is @code{0.6}. The value must be equal or greater than @code{thr_b}.
15082 @end table
15083
15084 @subsection Examples
15085
15086 @itemize
15087 @item
15088 Detect and draw VITC data onto the video frame; if no valid VITC is detected,
15089 draw @code{--:--:--:--} as a placeholder:
15090 @example
15091 ffmpeg -i input.avi -filter:v 'readvitc,drawtext=fontfile=FreeMono.ttf:text=%@{metadata\\:lavfi.readvitc.tc_str\\:--\\\\\\:--\\\\\\:--\\\\\\:--@}:x=(w-tw)/2:y=400-ascent'
15092 @end example
15093 @end itemize
15094
15095 @section remap
15096
15097 Remap pixels using 2nd: Xmap and 3rd: Ymap input video stream.
15098
15099 Destination pixel at position (X, Y) will be picked from source (x, y) position
15100 where x = Xmap(X, Y) and y = Ymap(X, Y). If mapping values are out of range, zero
15101 value for pixel will be used for destination pixel.
15102
15103 Xmap and Ymap input video streams must be of same dimensions. Output video stream
15104 will have Xmap/Ymap video stream dimensions.
15105 Xmap and Ymap input video streams are 16bit depth, single channel.
15106
15107 @table @option
15108 @item format
15109 Specify pixel format of output from this filter. Can be @code{color} or @code{gray}.
15110 Default is @code{color}.
15111 @end table
15112
15113 @section removegrain
15114
15115 The removegrain filter is a spatial denoiser for progressive video.
15116
15117 @table @option
15118 @item m0
15119 Set mode for the first plane.
15120
15121 @item m1
15122 Set mode for the second plane.
15123
15124 @item m2
15125 Set mode for the third plane.
15126
15127 @item m3
15128 Set mode for the fourth plane.
15129 @end table
15130
15131 Range of mode is from 0 to 24. Description of each mode follows:
15132
15133 @table @var
15134 @item 0
15135 Leave input plane unchanged. Default.
15136
15137 @item 1
15138 Clips the pixel with the minimum and maximum of the 8 neighbour pixels.
15139
15140 @item 2
15141 Clips the pixel with the second minimum and maximum of the 8 neighbour pixels.
15142
15143 @item 3
15144 Clips the pixel with the third minimum and maximum of the 8 neighbour pixels.
15145
15146 @item 4
15147 Clips the pixel with the fourth minimum and maximum of the 8 neighbour pixels.
15148 This is equivalent to a median filter.
15149
15150 @item 5
15151 Line-sensitive clipping giving the minimal change.
15152
15153 @item 6
15154 Line-sensitive clipping, intermediate.
15155
15156 @item 7
15157 Line-sensitive clipping, intermediate.
15158
15159 @item 8
15160 Line-sensitive clipping, intermediate.
15161
15162 @item 9
15163 Line-sensitive clipping on a line where the neighbours pixels are the closest.
15164
15165 @item 10
15166 Replaces the target pixel with the closest neighbour.
15167
15168 @item 11
15169 [1 2 1] horizontal and vertical kernel blur.
15170
15171 @item 12
15172 Same as mode 11.
15173
15174 @item 13
15175 Bob mode, interpolates top field from the line where the neighbours
15176 pixels are the closest.
15177
15178 @item 14
15179 Bob mode, interpolates bottom field from the line where the neighbours
15180 pixels are the closest.
15181
15182 @item 15
15183 Bob mode, interpolates top field. Same as 13 but with a more complicated
15184 interpolation formula.
15185
15186 @item 16
15187 Bob mode, interpolates bottom field. Same as 14 but with a more complicated
15188 interpolation formula.
15189
15190 @item 17
15191 Clips the pixel with the minimum and maximum of respectively the maximum and
15192 minimum of each pair of opposite neighbour pixels.
15193
15194 @item 18
15195 Line-sensitive clipping using opposite neighbours whose greatest distance from
15196 the current pixel is minimal.
15197
15198 @item 19
15199 Replaces the pixel with the average of its 8 neighbours.
15200
15201 @item 20
15202 Averages the 9 pixels ([1 1 1] horizontal and vertical blur).
15203
15204 @item 21
15205 Clips pixels using the averages of opposite neighbour.
15206
15207 @item 22
15208 Same as mode 21 but simpler and faster.
15209
15210 @item 23
15211 Small edge and halo removal, but reputed useless.
15212
15213 @item 24
15214 Similar as 23.
15215 @end table
15216
15217 @section removelogo
15218
15219 Suppress a TV station logo, using an image file to determine which
15220 pixels comprise the logo. It works by filling in the pixels that
15221 comprise the logo with neighboring pixels.
15222
15223 The filter accepts the following options:
15224
15225 @table @option
15226 @item filename, f
15227 Set the filter bitmap file, which can be any image format supported by
15228 libavformat. The width and height of the image file must match those of the
15229 video stream being processed.
15230 @end table
15231
15232 Pixels in the provided bitmap image with a value of zero are not
15233 considered part of the logo, non-zero pixels are considered part of
15234 the logo. If you use white (255) for the logo and black (0) for the
15235 rest, you will be safe. For making the filter bitmap, it is
15236 recommended to take a screen capture of a black frame with the logo
15237 visible, and then using a threshold filter followed by the erode
15238 filter once or twice.
15239
15240 If needed, little splotches can be fixed manually. Remember that if
15241 logo pixels are not covered, the filter quality will be much
15242 reduced. Marking too many pixels as part of the logo does not hurt as
15243 much, but it will increase the amount of blurring needed to cover over
15244 the image and will destroy more information than necessary, and extra
15245 pixels will slow things down on a large logo.
15246
15247 @section repeatfields
15248
15249 This filter uses the repeat_field flag from the Video ES headers and hard repeats
15250 fields based on its value.
15251
15252 @section reverse
15253
15254 Reverse a video clip.
15255
15256 Warning: This filter requires memory to buffer the entire clip, so trimming
15257 is suggested.
15258
15259 @subsection Examples
15260
15261 @itemize
15262 @item
15263 Take the first 5 seconds of a clip, and reverse it.
15264 @example
15265 trim=end=5,reverse
15266 @end example
15267 @end itemize
15268
15269 @section rgbashift
15270 Shift R/G/B/A pixels horizontally and/or vertically.
15271
15272 The filter accepts the following options:
15273 @table @option
15274 @item rh
15275 Set amount to shift red horizontally.
15276 @item rv
15277 Set amount to shift red vertically.
15278 @item gh
15279 Set amount to shift green horizontally.
15280 @item gv
15281 Set amount to shift green vertically.
15282 @item bh
15283 Set amount to shift blue horizontally.
15284 @item bv
15285 Set amount to shift blue vertically.
15286 @item ah
15287 Set amount to shift alpha horizontally.
15288 @item av
15289 Set amount to shift alpha vertically.
15290 @item edge
15291 Set edge mode, can be @var{smear}, default, or @var{warp}.
15292 @end table
15293
15294 @section roberts
15295 Apply roberts cross operator to input video stream.
15296
15297 The filter accepts the following option:
15298
15299 @table @option
15300 @item planes
15301 Set which planes will be processed, unprocessed planes will be copied.
15302 By default value 0xf, all planes will be processed.
15303
15304 @item scale
15305 Set value which will be multiplied with filtered result.
15306
15307 @item delta
15308 Set value which will be added to filtered result.
15309 @end table
15310
15311 @section rotate
15312
15313 Rotate video by an arbitrary angle expressed in radians.
15314
15315 The filter accepts the following options:
15316
15317 A description of the optional parameters follows.
15318 @table @option
15319 @item angle, a
15320 Set an expression for the angle by which to rotate the input video
15321 clockwise, expressed as a number of radians. A negative value will
15322 result in a counter-clockwise rotation. By default it is set to "0".
15323
15324 This expression is evaluated for each frame.
15325
15326 @item out_w, ow
15327 Set the output width expression, default value is "iw".
15328 This expression is evaluated just once during configuration.
15329
15330 @item out_h, oh
15331 Set the output height expression, default value is "ih".
15332 This expression is evaluated just once during configuration.
15333
15334 @item bilinear
15335 Enable bilinear interpolation if set to 1, a value of 0 disables
15336 it. Default value is 1.
15337
15338 @item fillcolor, c
15339 Set the color used to fill the output area not covered by the rotated
15340 image. For the general syntax of this option, check the
15341 @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
15342 If the special value "none" is selected then no
15343 background is printed (useful for example if the background is never shown).
15344
15345 Default value is "black".
15346 @end table
15347
15348 The expressions for the angle and the output size can contain the
15349 following constants and functions:
15350
15351 @table @option
15352 @item n
15353 sequential number of the input frame, starting from 0. It is always NAN
15354 before the first frame is filtered.
15355
15356 @item t
15357 time in seconds of the input frame, it is set to 0 when the filter is
15358 configured. It is always NAN before the first frame is filtered.
15359
15360 @item hsub
15361 @item vsub
15362 horizontal and vertical chroma subsample values. For example for the
15363 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
15364
15365 @item in_w, iw
15366 @item in_h, ih
15367 the input video width and height
15368
15369 @item out_w, ow
15370 @item out_h, oh
15371 the output width and height, that is the size of the padded area as
15372 specified by the @var{width} and @var{height} expressions
15373
15374 @item rotw(a)
15375 @item roth(a)
15376 the minimal width/height required for completely containing the input
15377 video rotated by @var{a} radians.
15378
15379 These are only available when computing the @option{out_w} and
15380 @option{out_h} expressions.
15381 @end table
15382
15383 @subsection Examples
15384
15385 @itemize
15386 @item
15387 Rotate the input by PI/6 radians clockwise:
15388 @example
15389 rotate=PI/6
15390 @end example
15391
15392 @item
15393 Rotate the input by PI/6 radians counter-clockwise:
15394 @example
15395 rotate=-PI/6
15396 @end example
15397
15398 @item
15399 Rotate the input by 45 degrees clockwise:
15400 @example
15401 rotate=45*PI/180
15402 @end example
15403
15404 @item
15405 Apply a constant rotation with period T, starting from an angle of PI/3:
15406 @example
15407 rotate=PI/3+2*PI*t/T
15408 @end example
15409
15410 @item
15411 Make the input video rotation oscillating with a period of T
15412 seconds and an amplitude of A radians:
15413 @example
15414 rotate=A*sin(2*PI/T*t)
15415 @end example
15416
15417 @item
15418 Rotate the video, output size is chosen so that the whole rotating
15419 input video is always completely contained in the output:
15420 @example
15421 rotate='2*PI*t:ow=hypot(iw,ih):oh=ow'
15422 @end example
15423
15424 @item
15425 Rotate the video, reduce the output size so that no background is ever
15426 shown:
15427 @example
15428 rotate=2*PI*t:ow='min(iw,ih)/sqrt(2)':oh=ow:c=none
15429 @end example
15430 @end itemize
15431
15432 @subsection Commands
15433
15434 The filter supports the following commands:
15435
15436 @table @option
15437 @item a, angle
15438 Set the angle expression.
15439 The command accepts the same syntax of the corresponding option.
15440
15441 If the specified expression is not valid, it is kept at its current
15442 value.
15443 @end table
15444
15445 @section sab
15446
15447 Apply Shape Adaptive Blur.
15448
15449 The filter accepts the following options:
15450
15451 @table @option
15452 @item luma_radius, lr
15453 Set luma blur filter strength, must be a value in range 0.1-4.0, default
15454 value is 1.0. A greater value will result in a more blurred image, and
15455 in slower processing.
15456
15457 @item luma_pre_filter_radius, lpfr
15458 Set luma pre-filter radius, must be a value in the 0.1-2.0 range, default
15459 value is 1.0.
15460
15461 @item luma_strength, ls
15462 Set luma maximum difference between pixels to still be considered, must
15463 be a value in the 0.1-100.0 range, default value is 1.0.
15464
15465 @item chroma_radius, cr
15466 Set chroma blur filter strength, must be a value in range -0.9-4.0. A
15467 greater value will result in a more blurred image, and in slower
15468 processing.
15469
15470 @item chroma_pre_filter_radius, cpfr
15471 Set chroma pre-filter radius, must be a value in the -0.9-2.0 range.
15472
15473 @item chroma_strength, cs
15474 Set chroma maximum difference between pixels to still be considered,
15475 must be a value in the -0.9-100.0 range.
15476 @end table
15477
15478 Each chroma option value, if not explicitly specified, is set to the
15479 corresponding luma option value.
15480
15481 @anchor{scale}
15482 @section scale
15483
15484 Scale (resize) the input video, using the libswscale library.
15485
15486 The scale filter forces the output display aspect ratio to be the same
15487 of the input, by changing the output sample aspect ratio.
15488
15489 If the input image format is different from the format requested by
15490 the next filter, the scale filter will convert the input to the
15491 requested format.
15492
15493 @subsection Options
15494 The filter accepts the following options, or any of the options
15495 supported by the libswscale scaler.
15496
15497 See @ref{scaler_options,,the ffmpeg-scaler manual,ffmpeg-scaler} for
15498 the complete list of scaler options.
15499
15500 @table @option
15501 @item width, w
15502 @item height, h
15503 Set the output video dimension expression. Default value is the input
15504 dimension.
15505
15506 If the @var{width} or @var{w} value is 0, the input width is used for
15507 the output. If the @var{height} or @var{h} value is 0, the input height
15508 is used for the output.
15509
15510 If one and only one of the values is -n with n >= 1, the scale filter
15511 will use a value that maintains the aspect ratio of the input image,
15512 calculated from the other specified dimension. After that it will,
15513 however, make sure that the calculated dimension is divisible by n and
15514 adjust the value if necessary.
15515
15516 If both values are -n with n >= 1, the behavior will be identical to
15517 both values being set to 0 as previously detailed.
15518
15519 See below for the list of accepted constants for use in the dimension
15520 expression.
15521
15522 @item eval
15523 Specify when to evaluate @var{width} and @var{height} expression. It accepts the following values:
15524
15525 @table @samp
15526 @item init
15527 Only evaluate expressions once during the filter initialization or when a command is processed.
15528
15529 @item frame
15530 Evaluate expressions for each incoming frame.
15531
15532 @end table
15533
15534 Default value is @samp{init}.
15535
15536
15537 @item interl
15538 Set the interlacing mode. It accepts the following values:
15539
15540 @table @samp
15541 @item 1
15542 Force interlaced aware scaling.
15543
15544 @item 0
15545 Do not apply interlaced scaling.
15546
15547 @item -1
15548 Select interlaced aware scaling depending on whether the source frames
15549 are flagged as interlaced or not.
15550 @end table
15551
15552 Default value is @samp{0}.
15553
15554 @item flags
15555 Set libswscale scaling flags. See
15556 @ref{sws_flags,,the ffmpeg-scaler manual,ffmpeg-scaler} for the
15557 complete list of values. If not explicitly specified the filter applies
15558 the default flags.
15559
15560
15561 @item param0, param1
15562 Set libswscale input parameters for scaling algorithms that need them. See
15563 @ref{sws_params,,the ffmpeg-scaler manual,ffmpeg-scaler} for the
15564 complete documentation. If not explicitly specified the filter applies
15565 empty parameters.
15566
15567
15568
15569 @item size, s
15570 Set the video size. For the syntax of this option, check the
15571 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
15572
15573 @item in_color_matrix
15574 @item out_color_matrix
15575 Set in/output YCbCr color space type.
15576
15577 This allows the autodetected value to be overridden as well as allows forcing
15578 a specific value used for the output and encoder.
15579
15580 If not specified, the color space type depends on the pixel format.
15581
15582 Possible values:
15583
15584 @table @samp
15585 @item auto
15586 Choose automatically.
15587
15588 @item bt709
15589 Format conforming to International Telecommunication Union (ITU)
15590 Recommendation BT.709.
15591
15592 @item fcc
15593 Set color space conforming to the United States Federal Communications
15594 Commission (FCC) Code of Federal Regulations (CFR) Title 47 (2003) 73.682 (a).
15595
15596 @item bt601
15597 @item bt470
15598 @item smpte170m
15599 Set color space conforming to:
15600
15601 @itemize
15602 @item
15603 ITU Radiocommunication Sector (ITU-R) Recommendation BT.601
15604
15605 @item
15606 ITU-R Rec. BT.470-6 (1998) Systems B, B1, and G
15607
15608 @item
15609 Society of Motion Picture and Television Engineers (SMPTE) ST 170:2004
15610
15611 @end itemize
15612
15613 @item smpte240m
15614 Set color space conforming to SMPTE ST 240:1999.
15615
15616 @item bt2020
15617 Set color space conforming to ITU-R BT.2020 non-constant luminance system.
15618 @end table
15619
15620 @item in_range
15621 @item out_range
15622 Set in/output YCbCr sample range.
15623
15624 This allows the autodetected value to be overridden as well as allows forcing
15625 a specific value used for the output and encoder. If not specified, the
15626 range depends on the pixel format. Possible values:
15627
15628 @table @samp
15629 @item auto/unknown
15630 Choose automatically.
15631
15632 @item jpeg/full/pc
15633 Set full range (0-255 in case of 8-bit luma).
15634
15635 @item mpeg/limited/tv
15636 Set "MPEG" range (16-235 in case of 8-bit luma).
15637 @end table
15638
15639 @item force_original_aspect_ratio
15640 Enable decreasing or increasing output video width or height if necessary to
15641 keep the original aspect ratio. Possible values:
15642
15643 @table @samp
15644 @item disable
15645 Scale the video as specified and disable this feature.
15646
15647 @item decrease
15648 The output video dimensions will automatically be decreased if needed.
15649
15650 @item increase
15651 The output video dimensions will automatically be increased if needed.
15652
15653 @end table
15654
15655 One useful instance of this option is that when you know a specific device's
15656 maximum allowed resolution, you can use this to limit the output video to
15657 that, while retaining the aspect ratio. For example, device A allows
15658 1280x720 playback, and your video is 1920x800. Using this option (set it to
15659 decrease) and specifying 1280x720 to the command line makes the output
15660 1280x533.
15661
15662 Please note that this is a different thing than specifying -1 for @option{w}
15663 or @option{h}, you still need to specify the output resolution for this option
15664 to work.
15665
15666 @item force_divisible_by
15667 Ensures that both the output dimensions, width and height, are divisible by the
15668 given integer when used together with @option{force_original_aspect_ratio}. This
15669 works similar to using @code{-n} in the @option{w} and @option{h} options.
15670
15671 This option respects the value set for @option{force_original_aspect_ratio},
15672 increasing or decreasing the resolution accordingly. The video's aspect ratio
15673 may be slightly modified.
15674
15675 This option can be handy if you need to have a video fit within or exceed
15676 a defined resolution using @option{force_original_aspect_ratio} but also have
15677 encoder restrictions on width or height divisibility.
15678
15679 @end table
15680
15681 The values of the @option{w} and @option{h} options are expressions
15682 containing the following constants:
15683
15684 @table @var
15685 @item in_w
15686 @item in_h
15687 The input width and height
15688
15689 @item iw
15690 @item ih
15691 These are the same as @var{in_w} and @var{in_h}.
15692
15693 @item out_w
15694 @item out_h
15695 The output (scaled) width and height
15696
15697 @item ow
15698 @item oh
15699 These are the same as @var{out_w} and @var{out_h}
15700
15701 @item a
15702 The same as @var{iw} / @var{ih}
15703
15704 @item sar
15705 input sample aspect ratio
15706
15707 @item dar
15708 The input display aspect ratio. Calculated from @code{(iw / ih) * sar}.
15709
15710 @item hsub
15711 @item vsub
15712 horizontal and vertical input chroma subsample values. For example for the
15713 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
15714
15715 @item ohsub
15716 @item ovsub
15717 horizontal and vertical output chroma subsample values. For example for the
15718 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
15719 @end table
15720
15721 @subsection Examples
15722
15723 @itemize
15724 @item
15725 Scale the input video to a size of 200x100
15726 @example
15727 scale=w=200:h=100
15728 @end example
15729
15730 This is equivalent to:
15731 @example
15732 scale=200:100
15733 @end example
15734
15735 or:
15736 @example
15737 scale=200x100
15738 @end example
15739
15740 @item
15741 Specify a size abbreviation for the output size:
15742 @example
15743 scale=qcif
15744 @end example
15745
15746 which can also be written as:
15747 @example
15748 scale=size=qcif
15749 @end example
15750
15751 @item
15752 Scale the input to 2x:
15753 @example
15754 scale=w=2*iw:h=2*ih
15755 @end example
15756
15757 @item
15758 The above is the same as:
15759 @example
15760 scale=2*in_w:2*in_h
15761 @end example
15762
15763 @item
15764 Scale the input to 2x with forced interlaced scaling:
15765 @example
15766 scale=2*iw:2*ih:interl=1
15767 @end example
15768
15769 @item
15770 Scale the input to half size:
15771 @example
15772 scale=w=iw/2:h=ih/2
15773 @end example
15774
15775 @item
15776 Increase the width, and set the height to the same size:
15777 @example
15778 scale=3/2*iw:ow
15779 @end example
15780
15781 @item
15782 Seek Greek harmony:
15783 @example
15784 scale=iw:1/PHI*iw
15785 scale=ih*PHI:ih
15786 @end example
15787
15788 @item
15789 Increase the height, and set the width to 3/2 of the height:
15790 @example
15791 scale=w=3/2*oh:h=3/5*ih
15792 @end example
15793
15794 @item
15795 Increase the size, making the size a multiple of the chroma
15796 subsample values:
15797 @example
15798 scale="trunc(3/2*iw/hsub)*hsub:trunc(3/2*ih/vsub)*vsub"
15799 @end example
15800
15801 @item
15802 Increase the width to a maximum of 500 pixels,
15803 keeping the same aspect ratio as the input:
15804 @example
15805 scale=w='min(500\, iw*3/2):h=-1'
15806 @end example
15807
15808 @item
15809 Make pixels square by combining scale and setsar:
15810 @example
15811 scale='trunc(ih*dar):ih',setsar=1/1
15812 @end example
15813
15814 @item
15815 Make pixels square by combining scale and setsar,
15816 making sure the resulting resolution is even (required by some codecs):
15817 @example
15818 scale='trunc(ih*dar/2)*2:trunc(ih/2)*2',setsar=1/1
15819 @end example
15820 @end itemize
15821
15822 @subsection Commands
15823
15824 This filter supports the following commands:
15825 @table @option
15826 @item width, w
15827 @item height, h
15828 Set the output video dimension expression.
15829 The command accepts the same syntax of the corresponding option.
15830
15831 If the specified expression is not valid, it is kept at its current
15832 value.
15833 @end table
15834
15835 @section scale_npp
15836
15837 Use the NVIDIA Performance Primitives (libnpp) to perform scaling and/or pixel
15838 format conversion on CUDA video frames. Setting the output width and height
15839 works in the same way as for the @var{scale} filter.
15840
15841 The following additional options are accepted:
15842 @table @option
15843 @item format
15844 The pixel format of the output CUDA frames. If set to the string "same" (the
15845 default), the input format will be kept. Note that automatic format negotiation
15846 and conversion is not yet supported for hardware frames
15847
15848 @item interp_algo
15849 The interpolation algorithm used for resizing. One of the following:
15850 @table @option
15851 @item nn
15852 Nearest neighbour.
15853
15854 @item linear
15855 @item cubic
15856 @item cubic2p_bspline
15857 2-parameter cubic (B=1, C=0)
15858
15859 @item cubic2p_catmullrom
15860 2-parameter cubic (B=0, C=1/2)
15861
15862 @item cubic2p_b05c03
15863 2-parameter cubic (B=1/2, C=3/10)
15864
15865 @item super
15866 Supersampling
15867
15868 @item lanczos
15869 @end table
15870
15871 @end table
15872
15873 @section scale2ref
15874
15875 Scale (resize) the input video, based on a reference video.
15876
15877 See the scale filter for available options, scale2ref supports the same but
15878 uses the reference video instead of the main input as basis. scale2ref also
15879 supports the following additional constants for the @option{w} and
15880 @option{h} options:
15881
15882 @table @var
15883 @item main_w
15884 @item main_h
15885 The main input video's width and height
15886
15887 @item main_a
15888 The same as @var{main_w} / @var{main_h}
15889
15890 @item main_sar
15891 The main input video's sample aspect ratio
15892
15893 @item main_dar, mdar
15894 The main input video's display aspect ratio. Calculated from
15895 @code{(main_w / main_h) * main_sar}.
15896
15897 @item main_hsub
15898 @item main_vsub
15899 The main input video's horizontal and vertical chroma subsample values.
15900 For example for the pixel format "yuv422p" @var{hsub} is 2 and @var{vsub}
15901 is 1.
15902 @end table
15903
15904 @subsection Examples
15905
15906 @itemize
15907 @item
15908 Scale a subtitle stream (b) to match the main video (a) in size before overlaying
15909 @example
15910 'scale2ref[b][a];[a][b]overlay'
15911 @end example
15912
15913 @item
15914 Scale a logo to 1/10th the height of a video, while preserving its display aspect ratio.
15915 @example
15916 [logo-in][video-in]scale2ref=w=oh*mdar:h=ih/10[logo-out][video-out]
15917 @end example
15918 @end itemize
15919
15920 @section scroll
15921 Scroll input video horizontally and/or vertically by constant speed.
15922
15923 The filter accepts the following options:
15924 @table @option
15925 @item horizontal, h
15926 Set the horizontal scrolling speed. Default is 0. Allowed range is from -1 to 1.
15927 Negative values changes scrolling direction.
15928
15929 @item vertical, v
15930 Set the vertical scrolling speed. Default is 0. Allowed range is from -1 to 1.
15931 Negative values changes scrolling direction.
15932
15933 @item hpos
15934 Set the initial horizontal scrolling position. Default is 0. Allowed range is from 0 to 1.
15935
15936 @item vpos
15937 Set the initial vertical scrolling position. Default is 0. Allowed range is from 0 to 1.
15938 @end table
15939
15940 @subsection Commands
15941
15942 This filter supports the following @ref{commands}:
15943 @table @option
15944 @item horizontal, h
15945 Set the horizontal scrolling speed.
15946 @item vertical, v
15947 Set the vertical scrolling speed.
15948 @end table
15949
15950 @anchor{selectivecolor}
15951 @section selectivecolor
15952
15953 Adjust cyan, magenta, yellow and black (CMYK) to certain ranges of colors (such
15954 as "reds", "yellows", "greens", "cyans", ...). The adjustment range is defined
15955 by the "purity" of the color (that is, how saturated it already is).
15956
15957 This filter is similar to the Adobe Photoshop Selective Color tool.
15958
15959 The filter accepts the following options:
15960
15961 @table @option
15962 @item correction_method
15963 Select color correction method.
15964
15965 Available values are:
15966 @table @samp
15967 @item absolute
15968 Specified adjustments are applied "as-is" (added/subtracted to original pixel
15969 component value).
15970 @item relative
15971 Specified adjustments are relative to the original component value.
15972 @end table
15973 Default is @code{absolute}.
15974 @item reds
15975 Adjustments for red pixels (pixels where the red component is the maximum)
15976 @item yellows
15977 Adjustments for yellow pixels (pixels where the blue component is the minimum)
15978 @item greens
15979 Adjustments for green pixels (pixels where the green component is the maximum)
15980 @item cyans
15981 Adjustments for cyan pixels (pixels where the red component is the minimum)
15982 @item blues
15983 Adjustments for blue pixels (pixels where the blue component is the maximum)
15984 @item magentas
15985 Adjustments for magenta pixels (pixels where the green component is the minimum)
15986 @item whites
15987 Adjustments for white pixels (pixels where all components are greater than 128)
15988 @item neutrals
15989 Adjustments for all pixels except pure black and pure white
15990 @item blacks
15991 Adjustments for black pixels (pixels where all components are lesser than 128)
15992 @item psfile
15993 Specify a Photoshop selective color file (@code{.asv}) to import the settings from.
15994 @end table
15995
15996 All the adjustment settings (@option{reds}, @option{yellows}, ...) accept up to
15997 4 space separated floating point adjustment values in the [-1,1] range,
15998 respectively to adjust the amount of cyan, magenta, yellow and black for the
15999 pixels of its range.
16000
16001 @subsection Examples
16002
16003 @itemize
16004 @item
16005 Increase cyan by 50% and reduce yellow by 33% in every green areas, and
16006 increase magenta by 27% in blue areas:
16007 @example
16008 selectivecolor=greens=.5 0 -.33 0:blues=0 .27
16009 @end example
16010
16011 @item
16012 Use a Photoshop selective color preset:
16013 @example
16014 selectivecolor=psfile=MySelectiveColorPresets/Misty.asv
16015 @end example
16016 @end itemize
16017
16018 @anchor{separatefields}
16019 @section separatefields
16020
16021 The @code{separatefields} takes a frame-based video input and splits
16022 each frame into its components fields, producing a new half height clip
16023 with twice the frame rate and twice the frame count.
16024
16025 This filter use field-dominance information in frame to decide which
16026 of each pair of fields to place first in the output.
16027 If it gets it wrong use @ref{setfield} filter before @code{separatefields} filter.
16028
16029 @section setdar, setsar
16030
16031 The @code{setdar} filter sets the Display Aspect Ratio for the filter
16032 output video.
16033
16034 This is done by changing the specified Sample (aka Pixel) Aspect
16035 Ratio, according to the following equation:
16036 @example
16037 @var{DAR} = @var{HORIZONTAL_RESOLUTION} / @var{VERTICAL_RESOLUTION} * @var{SAR}
16038 @end example
16039
16040 Keep in mind that the @code{setdar} filter does not modify the pixel
16041 dimensions of the video frame. Also, the display aspect ratio set by
16042 this filter may be changed by later filters in the filterchain,
16043 e.g. in case of scaling or if another "setdar" or a "setsar" filter is
16044 applied.
16045
16046 The @code{setsar} filter sets the Sample (aka Pixel) Aspect Ratio for
16047 the filter output video.
16048
16049 Note that as a consequence of the application of this filter, the
16050 output display aspect ratio will change according to the equation
16051 above.
16052
16053 Keep in mind that the sample aspect ratio set by the @code{setsar}
16054 filter may be changed by later filters in the filterchain, e.g. if
16055 another "setsar" or a "setdar" filter is applied.
16056
16057 It accepts the following parameters:
16058
16059 @table @option
16060 @item r, ratio, dar (@code{setdar} only), sar (@code{setsar} only)
16061 Set the aspect ratio used by the filter.
16062
16063 The parameter can be a floating point number string, an expression, or
16064 a string of the form @var{num}:@var{den}, where @var{num} and
16065 @var{den} are the numerator and denominator of the aspect ratio. If
16066 the parameter is not specified, it is assumed the value "0".
16067 In case the form "@var{num}:@var{den}" is used, the @code{:} character
16068 should be escaped.
16069
16070 @item max
16071 Set the maximum integer value to use for expressing numerator and
16072 denominator when reducing the expressed aspect ratio to a rational.
16073 Default value is @code{100}.
16074
16075 @end table
16076
16077 The parameter @var{sar} is an expression containing
16078 the following constants:
16079
16080 @table @option
16081 @item E, PI, PHI
16082 These are approximated values for the mathematical constants e
16083 (Euler's number), pi (Greek pi), and phi (the golden ratio).
16084
16085 @item w, h
16086 The input width and height.
16087
16088 @item a
16089 These are the same as @var{w} / @var{h}.
16090
16091 @item sar
16092 The input sample aspect ratio.
16093
16094 @item dar
16095 The input display aspect ratio. It is the same as
16096 (@var{w} / @var{h}) * @var{sar}.
16097
16098 @item hsub, vsub
16099 Horizontal and vertical chroma subsample values. For example, for the
16100 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
16101 @end table
16102
16103 @subsection Examples
16104
16105 @itemize
16106
16107 @item
16108 To change the display aspect ratio to 16:9, specify one of the following:
16109 @example
16110 setdar=dar=1.77777
16111 setdar=dar=16/9
16112 @end example
16113
16114 @item
16115 To change the sample aspect ratio to 10:11, specify:
16116 @example
16117 setsar=sar=10/11
16118 @end example
16119
16120 @item
16121 To set a display aspect ratio of 16:9, and specify a maximum integer value of
16122 1000 in the aspect ratio reduction, use the command:
16123 @example
16124 setdar=ratio=16/9:max=1000
16125 @end example
16126
16127 @end itemize
16128
16129 @anchor{setfield}
16130 @section setfield
16131
16132 Force field for the output video frame.
16133
16134 The @code{setfield} filter marks the interlace type field for the
16135 output frames. It does not change the input frame, but only sets the
16136 corresponding property, which affects how the frame is treated by
16137 following filters (e.g. @code{fieldorder} or @code{yadif}).
16138
16139 The filter accepts the following options:
16140
16141 @table @option
16142
16143 @item mode
16144 Available values are:
16145
16146 @table @samp
16147 @item auto
16148 Keep the same field property.
16149
16150 @item bff
16151 Mark the frame as bottom-field-first.
16152
16153 @item tff
16154 Mark the frame as top-field-first.
16155
16156 @item prog
16157 Mark the frame as progressive.
16158 @end table
16159 @end table
16160
16161 @anchor{setparams}
16162 @section setparams
16163
16164 Force frame parameter for the output video frame.
16165
16166 The @code{setparams} filter marks interlace and color range for the
16167 output frames. It does not change the input frame, but only sets the
16168 corresponding property, which affects how the frame is treated by
16169 filters/encoders.
16170
16171 @table @option
16172 @item field_mode
16173 Available values are:
16174
16175 @table @samp
16176 @item auto
16177 Keep the same field property (default).
16178
16179 @item bff
16180 Mark the frame as bottom-field-first.
16181
16182 @item tff
16183 Mark the frame as top-field-first.
16184
16185 @item prog
16186 Mark the frame as progressive.
16187 @end table
16188
16189 @item range
16190 Available values are:
16191
16192 @table @samp
16193 @item auto
16194 Keep the same color range property (default).
16195
16196 @item unspecified, unknown
16197 Mark the frame as unspecified color range.
16198
16199 @item limited, tv, mpeg
16200 Mark the frame as limited range.
16201
16202 @item full, pc, jpeg
16203 Mark the frame as full range.
16204 @end table
16205
16206 @item color_primaries
16207 Set the color primaries.
16208 Available values are:
16209
16210 @table @samp
16211 @item auto
16212 Keep the same color primaries property (default).
16213
16214 @item bt709
16215 @item unknown
16216 @item bt470m
16217 @item bt470bg
16218 @item smpte170m
16219 @item smpte240m
16220 @item film
16221 @item bt2020
16222 @item smpte428
16223 @item smpte431
16224 @item smpte432
16225 @item jedec-p22
16226 @end table
16227
16228 @item color_trc
16229 Set the color transfer.
16230 Available values are:
16231
16232 @table @samp
16233 @item auto
16234 Keep the same color trc property (default).
16235
16236 @item bt709
16237 @item unknown
16238 @item bt470m
16239 @item bt470bg
16240 @item smpte170m
16241 @item smpte240m
16242 @item linear
16243 @item log100
16244 @item log316
16245 @item iec61966-2-4
16246 @item bt1361e
16247 @item iec61966-2-1
16248 @item bt2020-10
16249 @item bt2020-12
16250 @item smpte2084
16251 @item smpte428
16252 @item arib-std-b67
16253 @end table
16254
16255 @item colorspace
16256 Set the colorspace.
16257 Available values are:
16258
16259 @table @samp
16260 @item auto
16261 Keep the same colorspace property (default).
16262
16263 @item gbr
16264 @item bt709
16265 @item unknown
16266 @item fcc
16267 @item bt470bg
16268 @item smpte170m
16269 @item smpte240m
16270 @item ycgco
16271 @item bt2020nc
16272 @item bt2020c
16273 @item smpte2085
16274 @item chroma-derived-nc
16275 @item chroma-derived-c
16276 @item ictcp
16277 @end table
16278 @end table
16279
16280 @section showinfo
16281
16282 Show a line containing various information for each input video frame.
16283 The input video is not modified.
16284
16285 This filter supports the following options:
16286
16287 @table @option
16288 @item checksum
16289 Calculate checksums of each plane. By default enabled.
16290 @end table
16291
16292 The shown line contains a sequence of key/value pairs of the form
16293 @var{key}:@var{value}.
16294
16295 The following values are shown in the output:
16296
16297 @table @option
16298 @item n
16299 The (sequential) number of the input frame, starting from 0.
16300
16301 @item pts
16302 The Presentation TimeStamp of the input frame, expressed as a number of
16303 time base units. The time base unit depends on the filter input pad.
16304
16305 @item pts_time
16306 The Presentation TimeStamp of the input frame, expressed as a number of
16307 seconds.
16308
16309 @item pos
16310 The position of the frame in the input stream, or -1 if this information is
16311 unavailable and/or meaningless (for example in case of synthetic video).
16312
16313 @item fmt
16314 The pixel format name.
16315
16316 @item sar
16317 The sample aspect ratio of the input frame, expressed in the form
16318 @var{num}/@var{den}.
16319
16320 @item s
16321 The size of the input frame. For the syntax of this option, check the
16322 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
16323
16324 @item i
16325 The type of interlaced mode ("P" for "progressive", "T" for top field first, "B"
16326 for bottom field first).
16327
16328 @item iskey
16329 This is 1 if the frame is a key frame, 0 otherwise.
16330
16331 @item type
16332 The picture type of the input frame ("I" for an I-frame, "P" for a
16333 P-frame, "B" for a B-frame, or "?" for an unknown type).
16334 Also refer to the documentation of the @code{AVPictureType} enum and of
16335 the @code{av_get_picture_type_char} function defined in
16336 @file{libavutil/avutil.h}.
16337
16338 @item checksum
16339 The Adler-32 checksum (printed in hexadecimal) of all the planes of the input frame.
16340
16341 @item plane_checksum
16342 The Adler-32 checksum (printed in hexadecimal) of each plane of the input frame,
16343 expressed in the form "[@var{c0} @var{c1} @var{c2} @var{c3}]".
16344 @end table
16345
16346 @section showpalette
16347
16348 Displays the 256 colors palette of each frame. This filter is only relevant for
16349 @var{pal8} pixel format frames.
16350
16351 It accepts the following option:
16352
16353 @table @option
16354 @item s
16355 Set the size of the box used to represent one palette color entry. Default is
16356 @code{30} (for a @code{30x30} pixel box).
16357 @end table
16358
16359 @section shuffleframes
16360
16361 Reorder and/or duplicate and/or drop video frames.
16362
16363 It accepts the following parameters:
16364
16365 @table @option
16366 @item mapping
16367 Set the destination indexes of input frames.
16368 This is space or '|' separated list of indexes that maps input frames to output
16369 frames. Number of indexes also sets maximal value that each index may have.
16370 '-1' index have special meaning and that is to drop frame.
16371 @end table
16372
16373 The first frame has the index 0. The default is to keep the input unchanged.
16374
16375 @subsection Examples
16376
16377 @itemize
16378 @item
16379 Swap second and third frame of every three frames of the input:
16380 @example
16381 ffmpeg -i INPUT -vf "shuffleframes=0 2 1" OUTPUT
16382 @end example
16383
16384 @item
16385 Swap 10th and 1st frame of every ten frames of the input:
16386 @example
16387 ffmpeg -i INPUT -vf "shuffleframes=9 1 2 3 4 5 6 7 8 0" OUTPUT
16388 @end example
16389 @end itemize
16390
16391 @section shuffleplanes
16392
16393 Reorder and/or duplicate video planes.
16394
16395 It accepts the following parameters:
16396
16397 @table @option
16398
16399 @item map0
16400 The index of the input plane to be used as the first output plane.
16401
16402 @item map1
16403 The index of the input plane to be used as the second output plane.
16404
16405 @item map2
16406 The index of the input plane to be used as the third output plane.
16407
16408 @item map3
16409 The index of the input plane to be used as the fourth output plane.
16410
16411 @end table
16412
16413 The first plane has the index 0. The default is to keep the input unchanged.
16414
16415 @subsection Examples
16416
16417 @itemize
16418 @item
16419 Swap the second and third planes of the input:
16420 @example
16421 ffmpeg -i INPUT -vf shuffleplanes=0:2:1:3 OUTPUT
16422 @end example
16423 @end itemize
16424
16425 @anchor{signalstats}
16426 @section signalstats
16427 Evaluate various visual metrics that assist in determining issues associated
16428 with the digitization of analog video media.
16429
16430 By default the filter will log these metadata values:
16431
16432 @table @option
16433 @item YMIN
16434 Display the minimal Y value contained within the input frame. Expressed in
16435 range of [0-255].
16436
16437 @item YLOW
16438 Display the Y value at the 10% percentile within the input frame. Expressed in
16439 range of [0-255].
16440
16441 @item YAVG
16442 Display the average Y value within the input frame. Expressed in range of
16443 [0-255].
16444
16445 @item YHIGH
16446 Display the Y value at the 90% percentile within the input frame. Expressed in
16447 range of [0-255].
16448
16449 @item YMAX
16450 Display the maximum Y value contained within the input frame. Expressed in
16451 range of [0-255].
16452
16453 @item UMIN
16454 Display the minimal U value contained within the input frame. Expressed in
16455 range of [0-255].
16456
16457 @item ULOW
16458 Display the U value at the 10% percentile within the input frame. Expressed in
16459 range of [0-255].
16460
16461 @item UAVG
16462 Display the average U value within the input frame. Expressed in range of
16463 [0-255].
16464
16465 @item UHIGH
16466 Display the U value at the 90% percentile within the input frame. Expressed in
16467 range of [0-255].
16468
16469 @item UMAX
16470 Display the maximum U value contained within the input frame. Expressed in
16471 range of [0-255].
16472
16473 @item VMIN
16474 Display the minimal V value contained within the input frame. Expressed in
16475 range of [0-255].
16476
16477 @item VLOW
16478 Display the V value at the 10% percentile within the input frame. Expressed in
16479 range of [0-255].
16480
16481 @item VAVG
16482 Display the average V value within the input frame. Expressed in range of
16483 [0-255].
16484
16485 @item VHIGH
16486 Display the V value at the 90% percentile within the input frame. Expressed in
16487 range of [0-255].
16488
16489 @item VMAX
16490 Display the maximum V value contained within the input frame. Expressed in
16491 range of [0-255].
16492
16493 @item SATMIN
16494 Display the minimal saturation value contained within the input frame.
16495 Expressed in range of [0-~181.02].
16496
16497 @item SATLOW
16498 Display the saturation value at the 10% percentile within the input frame.
16499 Expressed in range of [0-~181.02].
16500
16501 @item SATAVG
16502 Display the average saturation value within the input frame. Expressed in range
16503 of [0-~181.02].
16504
16505 @item SATHIGH
16506 Display the saturation value at the 90% percentile within the input frame.
16507 Expressed in range of [0-~181.02].
16508
16509 @item SATMAX
16510 Display the maximum saturation value contained within the input frame.
16511 Expressed in range of [0-~181.02].
16512
16513 @item HUEMED
16514 Display the median value for hue within the input frame. Expressed in range of
16515 [0-360].
16516
16517 @item HUEAVG
16518 Display the average value for hue within the input frame. Expressed in range of
16519 [0-360].
16520
16521 @item YDIF
16522 Display the average of sample value difference between all values of the Y
16523 plane in the current frame and corresponding values of the previous input frame.
16524 Expressed in range of [0-255].
16525
16526 @item UDIF
16527 Display the average of sample value difference between all values of the U
16528 plane in the current frame and corresponding values of the previous input frame.
16529 Expressed in range of [0-255].
16530
16531 @item VDIF
16532 Display the average of sample value difference between all values of the V
16533 plane in the current frame and corresponding values of the previous input frame.
16534 Expressed in range of [0-255].
16535
16536 @item YBITDEPTH
16537 Display bit depth of Y plane in current frame.
16538 Expressed in range of [0-16].
16539
16540 @item UBITDEPTH
16541 Display bit depth of U plane in current frame.
16542 Expressed in range of [0-16].
16543
16544 @item VBITDEPTH
16545 Display bit depth of V plane in current frame.
16546 Expressed in range of [0-16].
16547 @end table
16548
16549 The filter accepts the following options:
16550
16551 @table @option
16552 @item stat
16553 @item out
16554
16555 @option{stat} specify an additional form of image analysis.
16556 @option{out} output video with the specified type of pixel highlighted.
16557
16558 Both options accept the following values:
16559
16560 @table @samp
16561 @item tout
16562 Identify @var{temporal outliers} pixels. A @var{temporal outlier} is a pixel
16563 unlike the neighboring pixels of the same field. Examples of temporal outliers
16564 include the results of video dropouts, head clogs, or tape tracking issues.
16565
16566 @item vrep
16567 Identify @var{vertical line repetition}. Vertical line repetition includes
16568 similar rows of pixels within a frame. In born-digital video vertical line
16569 repetition is common, but this pattern is uncommon in video digitized from an
16570 analog source. When it occurs in video that results from the digitization of an
16571 analog source it can indicate concealment from a dropout compensator.
16572
16573 @item brng
16574 Identify pixels that fall outside of legal broadcast range.
16575 @end table
16576
16577 @item color, c
16578 Set the highlight color for the @option{out} option. The default color is
16579 yellow.
16580 @end table
16581
16582 @subsection Examples
16583
16584 @itemize
16585 @item
16586 Output data of various video metrics:
16587 @example
16588 ffprobe -f lavfi movie=example.mov,signalstats="stat=tout+vrep+brng" -show_frames
16589 @end example
16590
16591 @item
16592 Output specific data about the minimum and maximum values of the Y plane per frame:
16593 @example
16594 ffprobe -f lavfi movie=example.mov,signalstats -show_entries frame_tags=lavfi.signalstats.YMAX,lavfi.signalstats.YMIN
16595 @end example
16596
16597 @item
16598 Playback video while highlighting pixels that are outside of broadcast range in red.
16599 @example
16600 ffplay example.mov -vf signalstats="out=brng:color=red"
16601 @end example
16602
16603 @item
16604 Playback video with signalstats metadata drawn over the frame.
16605 @example
16606 ffplay example.mov -vf signalstats=stat=brng+vrep+tout,drawtext=fontfile=FreeSerif.ttf:textfile=signalstat_drawtext.txt
16607 @end example
16608
16609 The contents of signalstat_drawtext.txt used in the command are:
16610 @example
16611 time %@{pts:hms@}
16612 Y (%@{metadata:lavfi.signalstats.YMIN@}-%@{metadata:lavfi.signalstats.YMAX@})
16613 U (%@{metadata:lavfi.signalstats.UMIN@}-%@{metadata:lavfi.signalstats.UMAX@})
16614 V (%@{metadata:lavfi.signalstats.VMIN@}-%@{metadata:lavfi.signalstats.VMAX@})
16615 saturation maximum: %@{metadata:lavfi.signalstats.SATMAX@}
16616
16617 @end example
16618 @end itemize
16619
16620 @anchor{signature}
16621 @section signature
16622
16623 Calculates the MPEG-7 Video Signature. The filter can handle more than one
16624 input. In this case the matching between the inputs can be calculated additionally.
16625 The filter always passes through the first input. The signature of each stream can
16626 be written into a file.
16627
16628 It accepts the following options:
16629
16630 @table @option
16631 @item detectmode
16632 Enable or disable the matching process.
16633
16634 Available values are:
16635
16636 @table @samp
16637 @item off
16638 Disable the calculation of a matching (default).
16639 @item full
16640 Calculate the matching for the whole video and output whether the whole video
16641 matches or only parts.
16642 @item fast
16643 Calculate only until a matching is found or the video ends. Should be faster in
16644 some cases.
16645 @end table
16646
16647 @item nb_inputs
16648 Set the number of inputs. The option value must be a non negative integer.
16649 Default value is 1.
16650
16651 @item filename
16652 Set the path to which the output is written. If there is more than one input,
16653 the path must be a prototype, i.e. must contain %d or %0nd (where n is a positive
16654 integer), that will be replaced with the input number. If no filename is
16655 specified, no output will be written. This is the default.
16656
16657 @item format
16658 Choose the output format.
16659
16660 Available values are:
16661
16662 @table @samp
16663 @item binary
16664 Use the specified binary representation (default).
16665 @item xml
16666 Use the specified xml representation.
16667 @end table
16668
16669 @item th_d
16670 Set threshold to detect one word as similar. The option value must be an integer
16671 greater than zero. The default value is 9000.
16672
16673 @item th_dc
16674 Set threshold to detect all words as similar. The option value must be an integer
16675 greater than zero. The default value is 60000.
16676
16677 @item th_xh
16678 Set threshold to detect frames as similar. The option value must be an integer
16679 greater than zero. The default value is 116.
16680
16681 @item th_di
16682 Set the minimum length of a sequence in frames to recognize it as matching
16683 sequence. The option value must be a non negative integer value.
16684 The default value is 0.
16685
16686 @item th_it
16687 Set the minimum relation, that matching frames to all frames must have.
16688 The option value must be a double value between 0 and 1. The default value is 0.5.
16689 @end table
16690
16691 @subsection Examples
16692
16693 @itemize
16694 @item
16695 To calculate the signature of an input video and store it in signature.bin:
16696 @example
16697 ffmpeg -i input.mkv -vf signature=filename=signature.bin -map 0:v -f null -
16698 @end example
16699
16700 @item
16701 To detect whether two videos match and store the signatures in XML format in
16702 signature0.xml and signature1.xml:
16703 @example
16704 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 -
16705 @end example
16706
16707 @end itemize
16708
16709 @anchor{smartblur}
16710 @section smartblur
16711
16712 Blur the input video without impacting the outlines.
16713
16714 It accepts the following options:
16715
16716 @table @option
16717 @item luma_radius, lr
16718 Set the luma radius. The option value must be a float number in
16719 the range [0.1,5.0] that specifies the variance of the gaussian filter
16720 used to blur the image (slower if larger). Default value is 1.0.
16721
16722 @item luma_strength, ls
16723 Set the luma strength. The option value must be a float number
16724 in the range [-1.0,1.0] that configures the blurring. A value included
16725 in [0.0,1.0] will blur the image whereas a value included in
16726 [-1.0,0.0] will sharpen the image. Default value is 1.0.
16727
16728 @item luma_threshold, lt
16729 Set the luma threshold used as a coefficient to determine
16730 whether a pixel should be blurred or not. The option value must be an
16731 integer in the range [-30,30]. A value of 0 will filter all the image,
16732 a value included in [0,30] will filter flat areas and a value included
16733 in [-30,0] will filter edges. Default value is 0.
16734
16735 @item chroma_radius, cr
16736 Set the chroma radius. The option value must be a float number in
16737 the range [0.1,5.0] that specifies the variance of the gaussian filter
16738 used to blur the image (slower if larger). Default value is @option{luma_radius}.
16739
16740 @item chroma_strength, cs
16741 Set the chroma strength. The option value must be a float number
16742 in the range [-1.0,1.0] that configures the blurring. A value included
16743 in [0.0,1.0] will blur the image whereas a value included in
16744 [-1.0,0.0] will sharpen the image. Default value is @option{luma_strength}.
16745
16746 @item chroma_threshold, ct
16747 Set the chroma threshold used as a coefficient to determine
16748 whether a pixel should be blurred or not. The option value must be an
16749 integer in the range [-30,30]. A value of 0 will filter all the image,
16750 a value included in [0,30] will filter flat areas and a value included
16751 in [-30,0] will filter edges. Default value is @option{luma_threshold}.
16752 @end table
16753
16754 If a chroma option is not explicitly set, the corresponding luma value
16755 is set.
16756
16757 @section sobel
16758 Apply sobel operator to input video stream.
16759
16760 The filter accepts the following option:
16761
16762 @table @option
16763 @item planes
16764 Set which planes will be processed, unprocessed planes will be copied.
16765 By default value 0xf, all planes will be processed.
16766
16767 @item scale
16768 Set value which will be multiplied with filtered result.
16769
16770 @item delta
16771 Set value which will be added to filtered result.
16772 @end table
16773
16774 @anchor{spp}
16775 @section spp
16776
16777 Apply a simple postprocessing filter that compresses and decompresses the image
16778 at several (or - in the case of @option{quality} level @code{6} - all) shifts
16779 and average the results.
16780
16781 The filter accepts the following options:
16782
16783 @table @option
16784 @item quality
16785 Set quality. This option defines the number of levels for averaging. It accepts
16786 an integer in the range 0-6. If set to @code{0}, the filter will have no
16787 effect. A value of @code{6} means the higher quality. For each increment of
16788 that value the speed drops by a factor of approximately 2.  Default value is
16789 @code{3}.
16790
16791 @item qp
16792 Force a constant quantization parameter. If not set, the filter will use the QP
16793 from the video stream (if available).
16794
16795 @item mode
16796 Set thresholding mode. Available modes are:
16797
16798 @table @samp
16799 @item hard
16800 Set hard thresholding (default).
16801 @item soft
16802 Set soft thresholding (better de-ringing effect, but likely blurrier).
16803 @end table
16804
16805 @item use_bframe_qp
16806 Enable the use of the QP from the B-Frames if set to @code{1}. Using this
16807 option may cause flicker since the B-Frames have often larger QP. Default is
16808 @code{0} (not enabled).
16809 @end table
16810
16811 @section sr
16812
16813 Scale the input by applying one of the super-resolution methods based on
16814 convolutional neural networks. Supported models:
16815
16816 @itemize
16817 @item
16818 Super-Resolution Convolutional Neural Network model (SRCNN).
16819 See @url{https://arxiv.org/abs/1501.00092}.
16820
16821 @item
16822 Efficient Sub-Pixel Convolutional Neural Network model (ESPCN).
16823 See @url{https://arxiv.org/abs/1609.05158}.
16824 @end itemize
16825
16826 Training scripts as well as scripts for model file (.pb) saving can be found at
16827 @url{https://github.com/XueweiMeng/sr/tree/sr_dnn_native}. Original repository
16828 is at @url{https://github.com/HighVoltageRocknRoll/sr.git}.
16829
16830 Native model files (.model) can be generated from TensorFlow model
16831 files (.pb) by using tools/python/convert.py
16832
16833 The filter accepts the following options:
16834
16835 @table @option
16836 @item dnn_backend
16837 Specify which DNN backend to use for model loading and execution. This option accepts
16838 the following values:
16839
16840 @table @samp
16841 @item native
16842 Native implementation of DNN loading and execution.
16843
16844 @item tensorflow
16845 TensorFlow backend. To enable this backend you
16846 need to install the TensorFlow for C library (see
16847 @url{https://www.tensorflow.org/install/install_c}) and configure FFmpeg with
16848 @code{--enable-libtensorflow}
16849 @end table
16850
16851 Default value is @samp{native}.
16852
16853 @item model
16854 Set path to model file specifying network architecture and its parameters.
16855 Note that different backends use different file formats. TensorFlow backend
16856 can load files for both formats, while native backend can load files for only
16857 its format.
16858
16859 @item scale_factor
16860 Set scale factor for SRCNN model. Allowed values are @code{2}, @code{3} and @code{4}.
16861 Default value is @code{2}. Scale factor is necessary for SRCNN model, because it accepts
16862 input upscaled using bicubic upscaling with proper scale factor.
16863 @end table
16864
16865 @section ssim
16866
16867 Obtain the SSIM (Structural SImilarity Metric) between two input videos.
16868
16869 This filter takes in input two input videos, the first input is
16870 considered the "main" source and is passed unchanged to the
16871 output. The second input is used as a "reference" video for computing
16872 the SSIM.
16873
16874 Both video inputs must have the same resolution and pixel format for
16875 this filter to work correctly. Also it assumes that both inputs
16876 have the same number of frames, which are compared one by one.
16877
16878 The filter stores the calculated SSIM of each frame.
16879
16880 The description of the accepted parameters follows.
16881
16882 @table @option
16883 @item stats_file, f
16884 If specified the filter will use the named file to save the SSIM of
16885 each individual frame. When filename equals "-" the data is sent to
16886 standard output.
16887 @end table
16888
16889 The file printed if @var{stats_file} is selected, contains a sequence of
16890 key/value pairs of the form @var{key}:@var{value} for each compared
16891 couple of frames.
16892
16893 A description of each shown parameter follows:
16894
16895 @table @option
16896 @item n
16897 sequential number of the input frame, starting from 1
16898
16899 @item Y, U, V, R, G, B
16900 SSIM of the compared frames for the component specified by the suffix.
16901
16902 @item All
16903 SSIM of the compared frames for the whole frame.
16904
16905 @item dB
16906 Same as above but in dB representation.
16907 @end table
16908
16909 This filter also supports the @ref{framesync} options.
16910
16911 For example:
16912 @example
16913 movie=ref_movie.mpg, setpts=PTS-STARTPTS [main];
16914 [main][ref] ssim="stats_file=stats.log" [out]
16915 @end example
16916
16917 On this example the input file being processed is compared with the
16918 reference file @file{ref_movie.mpg}. The SSIM of each individual frame
16919 is stored in @file{stats.log}.
16920
16921 Another example with both psnr and ssim at same time:
16922 @example
16923 ffmpeg -i main.mpg -i ref.mpg -lavfi  "ssim;[0:v][1:v]psnr" -f null -
16924 @end example
16925
16926 @section stereo3d
16927
16928 Convert between different stereoscopic image formats.
16929
16930 The filters accept the following options:
16931
16932 @table @option
16933 @item in
16934 Set stereoscopic image format of input.
16935
16936 Available values for input image formats are:
16937 @table @samp
16938 @item sbsl
16939 side by side parallel (left eye left, right eye right)
16940
16941 @item sbsr
16942 side by side crosseye (right eye left, left eye right)
16943
16944 @item sbs2l
16945 side by side parallel with half width resolution
16946 (left eye left, right eye right)
16947
16948 @item sbs2r
16949 side by side crosseye with half width resolution
16950 (right eye left, left eye right)
16951
16952 @item abl
16953 @item tbl
16954 above-below (left eye above, right eye below)
16955
16956 @item abr
16957 @item tbr
16958 above-below (right eye above, left eye below)
16959
16960 @item ab2l
16961 @item tb2l
16962 above-below with half height resolution
16963 (left eye above, right eye below)
16964
16965 @item ab2r
16966 @item tb2r
16967 above-below with half height resolution
16968 (right eye above, left eye below)
16969
16970 @item al
16971 alternating frames (left eye first, right eye second)
16972
16973 @item ar
16974 alternating frames (right eye first, left eye second)
16975
16976 @item irl
16977 interleaved rows (left eye has top row, right eye starts on next row)
16978
16979 @item irr
16980 interleaved rows (right eye has top row, left eye starts on next row)
16981
16982 @item icl
16983 interleaved columns, left eye first
16984
16985 @item icr
16986 interleaved columns, right eye first
16987
16988 Default value is @samp{sbsl}.
16989 @end table
16990
16991 @item out
16992 Set stereoscopic image format of output.
16993
16994 @table @samp
16995 @item sbsl
16996 side by side parallel (left eye left, right eye right)
16997
16998 @item sbsr
16999 side by side crosseye (right eye left, left eye right)
17000
17001 @item sbs2l
17002 side by side parallel with half width resolution
17003 (left eye left, right eye right)
17004
17005 @item sbs2r
17006 side by side crosseye with half width resolution
17007 (right eye left, left eye right)
17008
17009 @item abl
17010 @item tbl
17011 above-below (left eye above, right eye below)
17012
17013 @item abr
17014 @item tbr
17015 above-below (right eye above, left eye below)
17016
17017 @item ab2l
17018 @item tb2l
17019 above-below with half height resolution
17020 (left eye above, right eye below)
17021
17022 @item ab2r
17023 @item tb2r
17024 above-below with half height resolution
17025 (right eye above, left eye below)
17026
17027 @item al
17028 alternating frames (left eye first, right eye second)
17029
17030 @item ar
17031 alternating frames (right eye first, left eye second)
17032
17033 @item irl
17034 interleaved rows (left eye has top row, right eye starts on next row)
17035
17036 @item irr
17037 interleaved rows (right eye has top row, left eye starts on next row)
17038
17039 @item arbg
17040 anaglyph red/blue gray
17041 (red filter on left eye, blue filter on right eye)
17042
17043 @item argg
17044 anaglyph red/green gray
17045 (red filter on left eye, green filter on right eye)
17046
17047 @item arcg
17048 anaglyph red/cyan gray
17049 (red filter on left eye, cyan filter on right eye)
17050
17051 @item arch
17052 anaglyph red/cyan half colored
17053 (red filter on left eye, cyan filter on right eye)
17054
17055 @item arcc
17056 anaglyph red/cyan color
17057 (red filter on left eye, cyan filter on right eye)
17058
17059 @item arcd
17060 anaglyph red/cyan color optimized with the least squares projection of dubois
17061 (red filter on left eye, cyan filter on right eye)
17062
17063 @item agmg
17064 anaglyph green/magenta gray
17065 (green filter on left eye, magenta filter on right eye)
17066
17067 @item agmh
17068 anaglyph green/magenta half colored
17069 (green filter on left eye, magenta filter on right eye)
17070
17071 @item agmc
17072 anaglyph green/magenta colored
17073 (green filter on left eye, magenta filter on right eye)
17074
17075 @item agmd
17076 anaglyph green/magenta color optimized with the least squares projection of dubois
17077 (green filter on left eye, magenta filter on right eye)
17078
17079 @item aybg
17080 anaglyph yellow/blue gray
17081 (yellow filter on left eye, blue filter on right eye)
17082
17083 @item aybh
17084 anaglyph yellow/blue half colored
17085 (yellow filter on left eye, blue filter on right eye)
17086
17087 @item aybc
17088 anaglyph yellow/blue colored
17089 (yellow filter on left eye, blue filter on right eye)
17090
17091 @item aybd
17092 anaglyph yellow/blue color optimized with the least squares projection of dubois
17093 (yellow filter on left eye, blue filter on right eye)
17094
17095 @item ml
17096 mono output (left eye only)
17097
17098 @item mr
17099 mono output (right eye only)
17100
17101 @item chl
17102 checkerboard, left eye first
17103
17104 @item chr
17105 checkerboard, right eye first
17106
17107 @item icl
17108 interleaved columns, left eye first
17109
17110 @item icr
17111 interleaved columns, right eye first
17112
17113 @item hdmi
17114 HDMI frame pack
17115 @end table
17116
17117 Default value is @samp{arcd}.
17118 @end table
17119
17120 @subsection Examples
17121
17122 @itemize
17123 @item
17124 Convert input video from side by side parallel to anaglyph yellow/blue dubois:
17125 @example
17126 stereo3d=sbsl:aybd
17127 @end example
17128
17129 @item
17130 Convert input video from above below (left eye above, right eye below) to side by side crosseye.
17131 @example
17132 stereo3d=abl:sbsr
17133 @end example
17134 @end itemize
17135
17136 @section streamselect, astreamselect
17137 Select video or audio streams.
17138
17139 The filter accepts the following options:
17140
17141 @table @option
17142 @item inputs
17143 Set number of inputs. Default is 2.
17144
17145 @item map
17146 Set input indexes to remap to outputs.
17147 @end table
17148
17149 @subsection Commands
17150
17151 The @code{streamselect} and @code{astreamselect} filter supports the following
17152 commands:
17153
17154 @table @option
17155 @item map
17156 Set input indexes to remap to outputs.
17157 @end table
17158
17159 @subsection Examples
17160
17161 @itemize
17162 @item
17163 Select first 5 seconds 1st stream and rest of time 2nd stream:
17164 @example
17165 sendcmd='5.0 streamselect map 1',streamselect=inputs=2:map=0
17166 @end example
17167
17168 @item
17169 Same as above, but for audio:
17170 @example
17171 asendcmd='5.0 astreamselect map 1',astreamselect=inputs=2:map=0
17172 @end example
17173 @end itemize
17174
17175 @anchor{subtitles}
17176 @section subtitles
17177
17178 Draw subtitles on top of input video using the libass library.
17179
17180 To enable compilation of this filter you need to configure FFmpeg with
17181 @code{--enable-libass}. This filter also requires a build with libavcodec and
17182 libavformat to convert the passed subtitles file to ASS (Advanced Substation
17183 Alpha) subtitles format.
17184
17185 The filter accepts the following options:
17186
17187 @table @option
17188 @item filename, f
17189 Set the filename of the subtitle file to read. It must be specified.
17190
17191 @item original_size
17192 Specify the size of the original video, the video for which the ASS file
17193 was composed. For the syntax of this option, check the
17194 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
17195 Due to a misdesign in ASS aspect ratio arithmetic, this is necessary to
17196 correctly scale the fonts if the aspect ratio has been changed.
17197
17198 @item fontsdir
17199 Set a directory path containing fonts that can be used by the filter.
17200 These fonts will be used in addition to whatever the font provider uses.
17201
17202 @item alpha
17203 Process alpha channel, by default alpha channel is untouched.
17204
17205 @item charenc
17206 Set subtitles input character encoding. @code{subtitles} filter only. Only
17207 useful if not UTF-8.
17208
17209 @item stream_index, si
17210 Set subtitles stream index. @code{subtitles} filter only.
17211
17212 @item force_style
17213 Override default style or script info parameters of the subtitles. It accepts a
17214 string containing ASS style format @code{KEY=VALUE} couples separated by ",".
17215 @end table
17216
17217 If the first key is not specified, it is assumed that the first value
17218 specifies the @option{filename}.
17219
17220 For example, to render the file @file{sub.srt} on top of the input
17221 video, use the command:
17222 @example
17223 subtitles=sub.srt
17224 @end example
17225
17226 which is equivalent to:
17227 @example
17228 subtitles=filename=sub.srt
17229 @end example
17230
17231 To render the default subtitles stream from file @file{video.mkv}, use:
17232 @example
17233 subtitles=video.mkv
17234 @end example
17235
17236 To render the second subtitles stream from that file, use:
17237 @example
17238 subtitles=video.mkv:si=1
17239 @end example
17240
17241 To make the subtitles stream from @file{sub.srt} appear in 80% transparent blue
17242 @code{DejaVu Serif}, use:
17243 @example
17244 subtitles=sub.srt:force_style='FontName=DejaVu Serif,PrimaryColour=&HCCFF0000'
17245 @end example
17246
17247 @section super2xsai
17248
17249 Scale the input by 2x and smooth using the Super2xSaI (Scale and
17250 Interpolate) pixel art scaling algorithm.
17251
17252 Useful for enlarging pixel art images without reducing sharpness.
17253
17254 @section swaprect
17255
17256 Swap two rectangular objects in video.
17257
17258 This filter accepts the following options:
17259
17260 @table @option
17261 @item w
17262 Set object width.
17263
17264 @item h
17265 Set object height.
17266
17267 @item x1
17268 Set 1st rect x coordinate.
17269
17270 @item y1
17271 Set 1st rect y coordinate.
17272
17273 @item x2
17274 Set 2nd rect x coordinate.
17275
17276 @item y2
17277 Set 2nd rect y coordinate.
17278
17279 All expressions are evaluated once for each frame.
17280 @end table
17281
17282 The all options are expressions containing the following constants:
17283
17284 @table @option
17285 @item w
17286 @item h
17287 The input width and height.
17288
17289 @item a
17290 same as @var{w} / @var{h}
17291
17292 @item sar
17293 input sample aspect ratio
17294
17295 @item dar
17296 input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}
17297
17298 @item n
17299 The number of the input frame, starting from 0.
17300
17301 @item t
17302 The timestamp expressed in seconds. It's NAN if the input timestamp is unknown.
17303
17304 @item pos
17305 the position in the file of the input frame, NAN if unknown
17306 @end table
17307
17308 @section swapuv
17309 Swap U & V plane.
17310
17311 @section telecine
17312
17313 Apply telecine process to the video.
17314
17315 This filter accepts the following options:
17316
17317 @table @option
17318 @item first_field
17319 @table @samp
17320 @item top, t
17321 top field first
17322 @item bottom, b
17323 bottom field first
17324 The default value is @code{top}.
17325 @end table
17326
17327 @item pattern
17328 A string of numbers representing the pulldown pattern you wish to apply.
17329 The default value is @code{23}.
17330 @end table
17331
17332 @example
17333 Some typical patterns:
17334
17335 NTSC output (30i):
17336 27.5p: 32222
17337 24p: 23 (classic)
17338 24p: 2332 (preferred)
17339 20p: 33
17340 18p: 334
17341 16p: 3444
17342
17343 PAL output (25i):
17344 27.5p: 12222
17345 24p: 222222222223 ("Euro pulldown")
17346 16.67p: 33
17347 16p: 33333334
17348 @end example
17349
17350 @section threshold
17351
17352 Apply threshold effect to video stream.
17353
17354 This filter needs four video streams to perform thresholding.
17355 First stream is stream we are filtering.
17356 Second stream is holding threshold values, third stream is holding min values,
17357 and last, fourth stream is holding max values.
17358
17359 The filter accepts the following option:
17360
17361 @table @option
17362 @item planes
17363 Set which planes will be processed, unprocessed planes will be copied.
17364 By default value 0xf, all planes will be processed.
17365 @end table
17366
17367 For example if first stream pixel's component value is less then threshold value
17368 of pixel component from 2nd threshold stream, third stream value will picked,
17369 otherwise fourth stream pixel component value will be picked.
17370
17371 Using color source filter one can perform various types of thresholding:
17372
17373 @subsection Examples
17374
17375 @itemize
17376 @item
17377 Binary threshold, using gray color as threshold:
17378 @example
17379 ffmpeg -i 320x240.avi -f lavfi -i color=gray -f lavfi -i color=black -f lavfi -i color=white -lavfi threshold output.avi
17380 @end example
17381
17382 @item
17383 Inverted binary threshold, using gray color as threshold:
17384 @example
17385 ffmpeg -i 320x240.avi -f lavfi -i color=gray -f lavfi -i color=white -f lavfi -i color=black -lavfi threshold output.avi
17386 @end example
17387
17388 @item
17389 Truncate binary threshold, using gray color as threshold:
17390 @example
17391 ffmpeg -i 320x240.avi -f lavfi -i color=gray -i 320x240.avi -f lavfi -i color=gray -lavfi threshold output.avi
17392 @end example
17393
17394 @item
17395 Threshold to zero, using gray color as threshold:
17396 @example
17397 ffmpeg -i 320x240.avi -f lavfi -i color=gray -f lavfi -i color=white -i 320x240.avi -lavfi threshold output.avi
17398 @end example
17399
17400 @item
17401 Inverted threshold to zero, using gray color as threshold:
17402 @example
17403 ffmpeg -i 320x240.avi -f lavfi -i color=gray -i 320x240.avi -f lavfi -i color=white -lavfi threshold output.avi
17404 @end example
17405 @end itemize
17406
17407 @section thumbnail
17408 Select the most representative frame in a given sequence of consecutive frames.
17409
17410 The filter accepts the following options:
17411
17412 @table @option
17413 @item n
17414 Set the frames batch size to analyze; in a set of @var{n} frames, the filter
17415 will pick one of them, and then handle the next batch of @var{n} frames until
17416 the end. Default is @code{100}.
17417 @end table
17418
17419 Since the filter keeps track of the whole frames sequence, a bigger @var{n}
17420 value will result in a higher memory usage, so a high value is not recommended.
17421
17422 @subsection Examples
17423
17424 @itemize
17425 @item
17426 Extract one picture each 50 frames:
17427 @example
17428 thumbnail=50
17429 @end example
17430
17431 @item
17432 Complete example of a thumbnail creation with @command{ffmpeg}:
17433 @example
17434 ffmpeg -i in.avi -vf thumbnail,scale=300:200 -frames:v 1 out.png
17435 @end example
17436 @end itemize
17437
17438 @section tile
17439
17440 Tile several successive frames together.
17441
17442 The filter accepts the following options:
17443
17444 @table @option
17445
17446 @item layout
17447 Set the grid size (i.e. the number of lines and columns). For the syntax of
17448 this option, check the
17449 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
17450
17451 @item nb_frames
17452 Set the maximum number of frames to render in the given area. It must be less
17453 than or equal to @var{w}x@var{h}. The default value is @code{0}, meaning all
17454 the area will be used.
17455
17456 @item margin
17457 Set the outer border margin in pixels.
17458
17459 @item padding
17460 Set the inner border thickness (i.e. the number of pixels between frames). For
17461 more advanced padding options (such as having different values for the edges),
17462 refer to the pad video filter.
17463
17464 @item color
17465 Specify the color of the unused area. For the syntax of this option, check the
17466 @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
17467 The default value of @var{color} is "black".
17468
17469 @item overlap
17470 Set the number of frames to overlap when tiling several successive frames together.
17471 The value must be between @code{0} and @var{nb_frames - 1}.
17472
17473 @item init_padding
17474 Set the number of frames to initially be empty before displaying first output frame.
17475 This controls how soon will one get first output frame.
17476 The value must be between @code{0} and @var{nb_frames - 1}.
17477 @end table
17478
17479 @subsection Examples
17480
17481 @itemize
17482 @item
17483 Produce 8x8 PNG tiles of all keyframes (@option{-skip_frame nokey}) in a movie:
17484 @example
17485 ffmpeg -skip_frame nokey -i file.avi -vf 'scale=128:72,tile=8x8' -an -vsync 0 keyframes%03d.png
17486 @end example
17487 The @option{-vsync 0} is necessary to prevent @command{ffmpeg} from
17488 duplicating each output frame to accommodate the originally detected frame
17489 rate.
17490
17491 @item
17492 Display @code{5} pictures in an area of @code{3x2} frames,
17493 with @code{7} pixels between them, and @code{2} pixels of initial margin, using
17494 mixed flat and named options:
17495 @example
17496 tile=3x2:nb_frames=5:padding=7:margin=2
17497 @end example
17498 @end itemize
17499
17500 @section tinterlace
17501
17502 Perform various types of temporal field interlacing.
17503
17504 Frames are counted starting from 1, so the first input frame is
17505 considered odd.
17506
17507 The filter accepts the following options:
17508
17509 @table @option
17510
17511 @item mode
17512 Specify the mode of the interlacing. This option can also be specified
17513 as a value alone. See below for a list of values for this option.
17514
17515 Available values are:
17516
17517 @table @samp
17518 @item merge, 0
17519 Move odd frames into the upper field, even into the lower field,
17520 generating a double height frame at half frame rate.
17521 @example
17522  ------> time
17523 Input:
17524 Frame 1         Frame 2         Frame 3         Frame 4
17525
17526 11111           22222           33333           44444
17527 11111           22222           33333           44444
17528 11111           22222           33333           44444
17529 11111           22222           33333           44444
17530
17531 Output:
17532 11111                           33333
17533 22222                           44444
17534 11111                           33333
17535 22222                           44444
17536 11111                           33333
17537 22222                           44444
17538 11111                           33333
17539 22222                           44444
17540 @end example
17541
17542 @item drop_even, 1
17543 Only output odd frames, even frames are dropped, generating a frame with
17544 unchanged height at half frame rate.
17545
17546 @example
17547  ------> time
17548 Input:
17549 Frame 1         Frame 2         Frame 3         Frame 4
17550
17551 11111           22222           33333           44444
17552 11111           22222           33333           44444
17553 11111           22222           33333           44444
17554 11111           22222           33333           44444
17555
17556 Output:
17557 11111                           33333
17558 11111                           33333
17559 11111                           33333
17560 11111                           33333
17561 @end example
17562
17563 @item drop_odd, 2
17564 Only output even frames, odd frames are dropped, generating a frame with
17565 unchanged height at half frame rate.
17566
17567 @example
17568  ------> time
17569 Input:
17570 Frame 1         Frame 2         Frame 3         Frame 4
17571
17572 11111           22222           33333           44444
17573 11111           22222           33333           44444
17574 11111           22222           33333           44444
17575 11111           22222           33333           44444
17576
17577 Output:
17578                 22222                           44444
17579                 22222                           44444
17580                 22222                           44444
17581                 22222                           44444
17582 @end example
17583
17584 @item pad, 3
17585 Expand each frame to full height, but pad alternate lines with black,
17586 generating a frame with double height at the same input frame rate.
17587
17588 @example
17589  ------> time
17590 Input:
17591 Frame 1         Frame 2         Frame 3         Frame 4
17592
17593 11111           22222           33333           44444
17594 11111           22222           33333           44444
17595 11111           22222           33333           44444
17596 11111           22222           33333           44444
17597
17598 Output:
17599 11111           .....           33333           .....
17600 .....           22222           .....           44444
17601 11111           .....           33333           .....
17602 .....           22222           .....           44444
17603 11111           .....           33333           .....
17604 .....           22222           .....           44444
17605 11111           .....           33333           .....
17606 .....           22222           .....           44444
17607 @end example
17608
17609
17610 @item interleave_top, 4
17611 Interleave the upper field from odd frames with the lower field from
17612 even frames, generating a frame with unchanged height at half frame rate.
17613
17614 @example
17615  ------> time
17616 Input:
17617 Frame 1         Frame 2         Frame 3         Frame 4
17618
17619 11111<-         22222           33333<-         44444
17620 11111           22222<-         33333           44444<-
17621 11111<-         22222           33333<-         44444
17622 11111           22222<-         33333           44444<-
17623
17624 Output:
17625 11111                           33333
17626 22222                           44444
17627 11111                           33333
17628 22222                           44444
17629 @end example
17630
17631
17632 @item interleave_bottom, 5
17633 Interleave the lower field from odd frames with the upper field from
17634 even frames, generating a frame with unchanged height at half frame rate.
17635
17636 @example
17637  ------> time
17638 Input:
17639 Frame 1         Frame 2         Frame 3         Frame 4
17640
17641 11111           22222<-         33333           44444<-
17642 11111<-         22222           33333<-         44444
17643 11111           22222<-         33333           44444<-
17644 11111<-         22222           33333<-         44444
17645
17646 Output:
17647 22222                           44444
17648 11111                           33333
17649 22222                           44444
17650 11111                           33333
17651 @end example
17652
17653
17654 @item interlacex2, 6
17655 Double frame rate with unchanged height. Frames are inserted each
17656 containing the second temporal field from the previous input frame and
17657 the first temporal field from the next input frame. This mode relies on
17658 the top_field_first flag. Useful for interlaced video displays with no
17659 field synchronisation.
17660
17661 @example
17662  ------> time
17663 Input:
17664 Frame 1         Frame 2         Frame 3         Frame 4
17665
17666 11111           22222           33333           44444
17667  11111           22222           33333           44444
17668 11111           22222           33333           44444
17669  11111           22222           33333           44444
17670
17671 Output:
17672 11111   22222   22222   33333   33333   44444   44444
17673  11111   11111   22222   22222   33333   33333   44444
17674 11111   22222   22222   33333   33333   44444   44444
17675  11111   11111   22222   22222   33333   33333   44444
17676 @end example
17677
17678
17679 @item mergex2, 7
17680 Move odd frames into the upper field, even into the lower field,
17681 generating a double height frame at same frame rate.
17682
17683 @example
17684  ------> time
17685 Input:
17686 Frame 1         Frame 2         Frame 3         Frame 4
17687
17688 11111           22222           33333           44444
17689 11111           22222           33333           44444
17690 11111           22222           33333           44444
17691 11111           22222           33333           44444
17692
17693 Output:
17694 11111           33333           33333           55555
17695 22222           22222           44444           44444
17696 11111           33333           33333           55555
17697 22222           22222           44444           44444
17698 11111           33333           33333           55555
17699 22222           22222           44444           44444
17700 11111           33333           33333           55555
17701 22222           22222           44444           44444
17702 @end example
17703
17704 @end table
17705
17706 Numeric values are deprecated but are accepted for backward
17707 compatibility reasons.
17708
17709 Default mode is @code{merge}.
17710
17711 @item flags
17712 Specify flags influencing the filter process.
17713
17714 Available value for @var{flags} is:
17715
17716 @table @option
17717 @item low_pass_filter, vlpf
17718 Enable linear vertical low-pass filtering in the filter.
17719 Vertical low-pass filtering is required when creating an interlaced
17720 destination from a progressive source which contains high-frequency
17721 vertical detail. Filtering will reduce interlace 'twitter' and Moire
17722 patterning.
17723
17724 @item complex_filter, cvlpf
17725 Enable complex vertical low-pass filtering.
17726 This will slightly less reduce interlace 'twitter' and Moire
17727 patterning but better retain detail and subjective sharpness impression.
17728
17729 @end table
17730
17731 Vertical low-pass filtering can only be enabled for @option{mode}
17732 @var{interleave_top} and @var{interleave_bottom}.
17733
17734 @end table
17735
17736 @section tmix
17737
17738 Mix successive video frames.
17739
17740 A description of the accepted options follows.
17741
17742 @table @option
17743 @item frames
17744 The number of successive frames to mix. If unspecified, it defaults to 3.
17745
17746 @item weights
17747 Specify weight of each input video frame.
17748 Each weight is separated by space. If number of weights is smaller than
17749 number of @var{frames} last specified weight will be used for all remaining
17750 unset weights.
17751
17752 @item scale
17753 Specify scale, if it is set it will be multiplied with sum
17754 of each weight multiplied with pixel values to give final destination
17755 pixel value. By default @var{scale} is auto scaled to sum of weights.
17756 @end table
17757
17758 @subsection Examples
17759
17760 @itemize
17761 @item
17762 Average 7 successive frames:
17763 @example
17764 tmix=frames=7:weights="1 1 1 1 1 1 1"
17765 @end example
17766
17767 @item
17768 Apply simple temporal convolution:
17769 @example
17770 tmix=frames=3:weights="-1 3 -1"
17771 @end example
17772
17773 @item
17774 Similar as above but only showing temporal differences:
17775 @example
17776 tmix=frames=3:weights="-1 2 -1":scale=1
17777 @end example
17778 @end itemize
17779
17780 @anchor{tonemap}
17781 @section tonemap
17782 Tone map colors from different dynamic ranges.
17783
17784 This filter expects data in single precision floating point, as it needs to
17785 operate on (and can output) out-of-range values. Another filter, such as
17786 @ref{zscale}, is needed to convert the resulting frame to a usable format.
17787
17788 The tonemapping algorithms implemented only work on linear light, so input
17789 data should be linearized beforehand (and possibly correctly tagged).
17790
17791 @example
17792 ffmpeg -i INPUT -vf zscale=transfer=linear,tonemap=clip,zscale=transfer=bt709,format=yuv420p OUTPUT
17793 @end example
17794
17795 @subsection Options
17796 The filter accepts the following options.
17797
17798 @table @option
17799 @item tonemap
17800 Set the tone map algorithm to use.
17801
17802 Possible values are:
17803 @table @var
17804 @item none
17805 Do not apply any tone map, only desaturate overbright pixels.
17806
17807 @item clip
17808 Hard-clip any out-of-range values. Use it for perfect color accuracy for
17809 in-range values, while distorting out-of-range values.
17810
17811 @item linear
17812 Stretch the entire reference gamut to a linear multiple of the display.
17813
17814 @item gamma
17815 Fit a logarithmic transfer between the tone curves.
17816
17817 @item reinhard
17818 Preserve overall image brightness with a simple curve, using nonlinear
17819 contrast, which results in flattening details and degrading color accuracy.
17820
17821 @item hable
17822 Preserve both dark and bright details better than @var{reinhard}, at the cost
17823 of slightly darkening everything. Use it when detail preservation is more
17824 important than color and brightness accuracy.
17825
17826 @item mobius
17827 Smoothly map out-of-range values, while retaining contrast and colors for
17828 in-range material as much as possible. Use it when color accuracy is more
17829 important than detail preservation.
17830 @end table
17831
17832 Default is none.
17833
17834 @item param
17835 Tune the tone mapping algorithm.
17836
17837 This affects the following algorithms:
17838 @table @var
17839 @item none
17840 Ignored.
17841
17842 @item linear
17843 Specifies the scale factor to use while stretching.
17844 Default to 1.0.
17845
17846 @item gamma
17847 Specifies the exponent of the function.
17848 Default to 1.8.
17849
17850 @item clip
17851 Specify an extra linear coefficient to multiply into the signal before clipping.
17852 Default to 1.0.
17853
17854 @item reinhard
17855 Specify the local contrast coefficient at the display peak.
17856 Default to 0.5, which means that in-gamut values will be about half as bright
17857 as when clipping.
17858
17859 @item hable
17860 Ignored.
17861
17862 @item mobius
17863 Specify the transition point from linear to mobius transform. Every value
17864 below this point is guaranteed to be mapped 1:1. The higher the value, the
17865 more accurate the result will be, at the cost of losing bright details.
17866 Default to 0.3, which due to the steep initial slope still preserves in-range
17867 colors fairly accurately.
17868 @end table
17869
17870 @item desat
17871 Apply desaturation for highlights that exceed this level of brightness. The
17872 higher the parameter, the more color information will be preserved. This
17873 setting helps prevent unnaturally blown-out colors for super-highlights, by
17874 (smoothly) turning into white instead. This makes images feel more natural,
17875 at the cost of reducing information about out-of-range colors.
17876
17877 The default of 2.0 is somewhat conservative and will mostly just apply to
17878 skies or directly sunlit surfaces. A setting of 0.0 disables this option.
17879
17880 This option works only if the input frame has a supported color tag.
17881
17882 @item peak
17883 Override signal/nominal/reference peak with this value. Useful when the
17884 embedded peak information in display metadata is not reliable or when tone
17885 mapping from a lower range to a higher range.
17886 @end table
17887
17888 @section tpad
17889
17890 Temporarily pad video frames.
17891
17892 The filter accepts the following options:
17893
17894 @table @option
17895 @item start
17896 Specify number of delay frames before input video stream.
17897
17898 @item stop
17899 Specify number of padding frames after input video stream.
17900 Set to -1 to pad indefinitely.
17901
17902 @item start_mode
17903 Set kind of frames added to beginning of stream.
17904 Can be either @var{add} or @var{clone}.
17905 With @var{add} frames of solid-color are added.
17906 With @var{clone} frames are clones of first frame.
17907
17908 @item stop_mode
17909 Set kind of frames added to end of stream.
17910 Can be either @var{add} or @var{clone}.
17911 With @var{add} frames of solid-color are added.
17912 With @var{clone} frames are clones of last frame.
17913
17914 @item start_duration, stop_duration
17915 Specify the duration of the start/stop delay. See
17916 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
17917 for the accepted syntax.
17918 These options override @var{start} and @var{stop}.
17919
17920 @item color
17921 Specify the color of the padded area. For the syntax of this option,
17922 check the @ref{color syntax,,"Color" section in the ffmpeg-utils
17923 manual,ffmpeg-utils}.
17924
17925 The default value of @var{color} is "black".
17926 @end table
17927
17928 @anchor{transpose}
17929 @section transpose
17930
17931 Transpose rows with columns in the input video and optionally flip it.
17932
17933 It accepts the following parameters:
17934
17935 @table @option
17936
17937 @item dir
17938 Specify the transposition direction.
17939
17940 Can assume the following values:
17941 @table @samp
17942 @item 0, 4, cclock_flip
17943 Rotate by 90 degrees counterclockwise and vertically flip (default), that is:
17944 @example
17945 L.R     L.l
17946 . . ->  . .
17947 l.r     R.r
17948 @end example
17949
17950 @item 1, 5, clock
17951 Rotate by 90 degrees clockwise, that is:
17952 @example
17953 L.R     l.L
17954 . . ->  . .
17955 l.r     r.R
17956 @end example
17957
17958 @item 2, 6, cclock
17959 Rotate by 90 degrees counterclockwise, that is:
17960 @example
17961 L.R     R.r
17962 . . ->  . .
17963 l.r     L.l
17964 @end example
17965
17966 @item 3, 7, clock_flip
17967 Rotate by 90 degrees clockwise and vertically flip, that is:
17968 @example
17969 L.R     r.R
17970 . . ->  . .
17971 l.r     l.L
17972 @end example
17973 @end table
17974
17975 For values between 4-7, the transposition is only done if the input
17976 video geometry is portrait and not landscape. These values are
17977 deprecated, the @code{passthrough} option should be used instead.
17978
17979 Numerical values are deprecated, and should be dropped in favor of
17980 symbolic constants.
17981
17982 @item passthrough
17983 Do not apply the transposition if the input geometry matches the one
17984 specified by the specified value. It accepts the following values:
17985 @table @samp
17986 @item none
17987 Always apply transposition.
17988 @item portrait
17989 Preserve portrait geometry (when @var{height} >= @var{width}).
17990 @item landscape
17991 Preserve landscape geometry (when @var{width} >= @var{height}).
17992 @end table
17993
17994 Default value is @code{none}.
17995 @end table
17996
17997 For example to rotate by 90 degrees clockwise and preserve portrait
17998 layout:
17999 @example
18000 transpose=dir=1:passthrough=portrait
18001 @end example
18002
18003 The command above can also be specified as:
18004 @example
18005 transpose=1:portrait
18006 @end example
18007
18008 @section transpose_npp
18009
18010 Transpose rows with columns in the input video and optionally flip it.
18011 For more in depth examples see the @ref{transpose} video filter, which shares mostly the same options.
18012
18013 It accepts the following parameters:
18014
18015 @table @option
18016
18017 @item dir
18018 Specify the transposition direction.
18019
18020 Can assume the following values:
18021 @table @samp
18022 @item cclock_flip
18023 Rotate by 90 degrees counterclockwise and vertically flip. (default)
18024
18025 @item clock
18026 Rotate by 90 degrees clockwise.
18027
18028 @item cclock
18029 Rotate by 90 degrees counterclockwise.
18030
18031 @item clock_flip
18032 Rotate by 90 degrees clockwise and vertically flip.
18033 @end table
18034
18035 @item passthrough
18036 Do not apply the transposition if the input geometry matches the one
18037 specified by the specified value. It accepts the following values:
18038 @table @samp
18039 @item none
18040 Always apply transposition. (default)
18041 @item portrait
18042 Preserve portrait geometry (when @var{height} >= @var{width}).
18043 @item landscape
18044 Preserve landscape geometry (when @var{width} >= @var{height}).
18045 @end table
18046
18047 @end table
18048
18049 @section trim
18050 Trim the input so that the output contains one continuous subpart of the input.
18051
18052 It accepts the following parameters:
18053 @table @option
18054 @item start
18055 Specify the time of the start of the kept section, i.e. the frame with the
18056 timestamp @var{start} will be the first frame in the output.
18057
18058 @item end
18059 Specify the time of the first frame that will be dropped, i.e. the frame
18060 immediately preceding the one with the timestamp @var{end} will be the last
18061 frame in the output.
18062
18063 @item start_pts
18064 This is the same as @var{start}, except this option sets the start timestamp
18065 in timebase units instead of seconds.
18066
18067 @item end_pts
18068 This is the same as @var{end}, except this option sets the end timestamp
18069 in timebase units instead of seconds.
18070
18071 @item duration
18072 The maximum duration of the output in seconds.
18073
18074 @item start_frame
18075 The number of the first frame that should be passed to the output.
18076
18077 @item end_frame
18078 The number of the first frame that should be dropped.
18079 @end table
18080
18081 @option{start}, @option{end}, and @option{duration} are expressed as time
18082 duration specifications; see
18083 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
18084 for the accepted syntax.
18085
18086 Note that the first two sets of the start/end options and the @option{duration}
18087 option look at the frame timestamp, while the _frame variants simply count the
18088 frames that pass through the filter. Also note that this filter does not modify
18089 the timestamps. If you wish for the output timestamps to start at zero, insert a
18090 setpts filter after the trim filter.
18091
18092 If multiple start or end options are set, this filter tries to be greedy and
18093 keep all the frames that match at least one of the specified constraints. To keep
18094 only the part that matches all the constraints at once, chain multiple trim
18095 filters.
18096
18097 The defaults are such that all the input is kept. So it is possible to set e.g.
18098 just the end values to keep everything before the specified time.
18099
18100 Examples:
18101 @itemize
18102 @item
18103 Drop everything except the second minute of input:
18104 @example
18105 ffmpeg -i INPUT -vf trim=60:120
18106 @end example
18107
18108 @item
18109 Keep only the first second:
18110 @example
18111 ffmpeg -i INPUT -vf trim=duration=1
18112 @end example
18113
18114 @end itemize
18115
18116 @section unpremultiply
18117 Apply alpha unpremultiply effect to input video stream using first plane
18118 of second stream as alpha.
18119
18120 Both streams must have same dimensions and same pixel format.
18121
18122 The filter accepts the following option:
18123
18124 @table @option
18125 @item planes
18126 Set which planes will be processed, unprocessed planes will be copied.
18127 By default value 0xf, all planes will be processed.
18128
18129 If the format has 1 or 2 components, then luma is bit 0.
18130 If the format has 3 or 4 components:
18131 for RGB formats bit 0 is green, bit 1 is blue and bit 2 is red;
18132 for YUV formats bit 0 is luma, bit 1 is chroma-U and bit 2 is chroma-V.
18133 If present, the alpha channel is always the last bit.
18134
18135 @item inplace
18136 Do not require 2nd input for processing, instead use alpha plane from input stream.
18137 @end table
18138
18139 @anchor{unsharp}
18140 @section unsharp
18141
18142 Sharpen or blur the input video.
18143
18144 It accepts the following parameters:
18145
18146 @table @option
18147 @item luma_msize_x, lx
18148 Set the luma matrix horizontal size. It must be an odd integer between
18149 3 and 23. The default value is 5.
18150
18151 @item luma_msize_y, ly
18152 Set the luma matrix vertical size. It must be an odd integer between 3
18153 and 23. The default value is 5.
18154
18155 @item luma_amount, la
18156 Set the luma effect strength. It must be a floating point number, reasonable
18157 values lay between -1.5 and 1.5.
18158
18159 Negative values will blur the input video, while positive values will
18160 sharpen it, a value of zero will disable the effect.
18161
18162 Default value is 1.0.
18163
18164 @item chroma_msize_x, cx
18165 Set the chroma matrix horizontal size. It must be an odd integer
18166 between 3 and 23. The default value is 5.
18167
18168 @item chroma_msize_y, cy
18169 Set the chroma matrix vertical size. It must be an odd integer
18170 between 3 and 23. The default value is 5.
18171
18172 @item chroma_amount, ca
18173 Set the chroma effect strength. It must be a floating point number, reasonable
18174 values lay between -1.5 and 1.5.
18175
18176 Negative values will blur the input video, while positive values will
18177 sharpen it, a value of zero will disable the effect.
18178
18179 Default value is 0.0.
18180
18181 @end table
18182
18183 All parameters are optional and default to the equivalent of the
18184 string '5:5:1.0:5:5:0.0'.
18185
18186 @subsection Examples
18187
18188 @itemize
18189 @item
18190 Apply strong luma sharpen effect:
18191 @example
18192 unsharp=luma_msize_x=7:luma_msize_y=7:luma_amount=2.5
18193 @end example
18194
18195 @item
18196 Apply a strong blur of both luma and chroma parameters:
18197 @example
18198 unsharp=7:7:-2:7:7:-2
18199 @end example
18200 @end itemize
18201
18202 @section uspp
18203
18204 Apply ultra slow/simple postprocessing filter that compresses and decompresses
18205 the image at several (or - in the case of @option{quality} level @code{8} - all)
18206 shifts and average the results.
18207
18208 The way this differs from the behavior of spp is that uspp actually encodes &
18209 decodes each case with libavcodec Snow, whereas spp uses a simplified intra only 8x8
18210 DCT similar to MJPEG.
18211
18212 The filter accepts the following options:
18213
18214 @table @option
18215 @item quality
18216 Set quality. This option defines the number of levels for averaging. It accepts
18217 an integer in the range 0-8. If set to @code{0}, the filter will have no
18218 effect. A value of @code{8} means the higher quality. For each increment of
18219 that value the speed drops by a factor of approximately 2.  Default value is
18220 @code{3}.
18221
18222 @item qp
18223 Force a constant quantization parameter. If not set, the filter will use the QP
18224 from the video stream (if available).
18225 @end table
18226
18227 @section v360
18228
18229 Convert 360 videos between various formats.
18230
18231 The filter accepts the following options:
18232
18233 @table @option
18234
18235 @item input
18236 @item output
18237 Set format of the input/output video.
18238
18239 Available formats:
18240
18241 @table @samp
18242
18243 @item e
18244 @item equirect
18245 Equirectangular projection.
18246
18247 @item c3x2
18248 @item c6x1
18249 @item c1x6
18250 Cubemap with 3x2/6x1/1x6 layout.
18251
18252 Format specific options:
18253
18254 @table @option
18255 @item in_pad
18256 @item out_pad
18257 Set padding proportion for the input/output cubemap. Values in decimals.
18258
18259 Example values:
18260 @table @samp
18261 @item 0
18262 No padding.
18263 @item 0.01
18264 1% of face is padding. For example, with 1920x1280 resolution face size would be 640x640 and padding would be 3 pixels from each side. (640 * 0.01 = 6 pixels)
18265 @end table
18266
18267 Default value is @b{@samp{0}}.
18268
18269 @item fin_pad
18270 @item fout_pad
18271 Set fixed padding for the input/output cubemap. Values in pixels.
18272
18273 Default value is @b{@samp{0}}. If greater than zero it overrides other padding options.
18274
18275 @item in_forder
18276 @item out_forder
18277 Set order of faces for the input/output cubemap. Choose one direction for each position.
18278
18279 Designation of directions:
18280 @table @samp
18281 @item r
18282 right
18283 @item l
18284 left
18285 @item u
18286 up
18287 @item d
18288 down
18289 @item f
18290 forward
18291 @item b
18292 back
18293 @end table
18294
18295 Default value is @b{@samp{rludfb}}.
18296
18297 @item in_frot
18298 @item out_frot
18299 Set rotation of faces for the input/output cubemap. Choose one angle for each position.
18300
18301 Designation of angles:
18302 @table @samp
18303 @item 0
18304 0 degrees clockwise
18305 @item 1
18306 90 degrees clockwise
18307 @item 2
18308 180 degrees clockwise
18309 @item 3
18310 270 degrees clockwise
18311 @end table
18312
18313 Default value is @b{@samp{000000}}.
18314 @end table
18315
18316 @item eac
18317 Equi-Angular Cubemap.
18318
18319 @item flat
18320 @item gnomonic
18321 @item rectilinear
18322 Regular video. @i{(output only)}
18323
18324 Format specific options:
18325 @table @option
18326 @item h_fov
18327 @item v_fov
18328 @item d_fov
18329 Set horizontal/vertical/diagonal field of view. Values in degrees.
18330
18331 If diagonal field of view is set it overrides horizontal and vertical field of view.
18332 @end table
18333
18334 @item dfisheye
18335 Dual fisheye.
18336
18337 Format specific options:
18338 @table @option
18339 @item in_pad
18340 @item out_pad
18341 Set padding proportion. Values in decimals.
18342
18343 Example values:
18344 @table @samp
18345 @item 0
18346 No padding.
18347 @item 0.01
18348 1% padding.
18349 @end table
18350
18351 Default value is @b{@samp{0}}.
18352 @end table
18353
18354 @item barrel
18355 @item fb
18356 Facebook's 360 format.
18357
18358 @item sg
18359 Stereographic format.
18360
18361 Format specific options:
18362 @table @option
18363 @item h_fov
18364 @item v_fov
18365 @item d_fov
18366 Set horizontal/vertical/diagonal field of view. Values in degrees.
18367
18368 If diagonal field of view is set it overrides horizontal and vertical field of view.
18369 @end table
18370
18371 @item mercator
18372 Mercator format.
18373
18374 @item ball
18375 Ball format, gives significant distortion toward the back.
18376
18377 @item hammer
18378 Hammer-Aitoff map projection format.
18379
18380 @item sinusoidal
18381 Sinusoidal map projection format.
18382
18383 @end table
18384
18385 @item interp
18386 Set interpolation method.@*
18387 @i{Note: more complex interpolation methods require much more memory to run.}
18388
18389 Available methods:
18390
18391 @table @samp
18392 @item near
18393 @item nearest
18394 Nearest neighbour.
18395 @item line
18396 @item linear
18397 Bilinear interpolation.
18398 @item cube
18399 @item cubic
18400 Bicubic interpolation.
18401 @item lanc
18402 @item lanczos
18403 Lanczos interpolation.
18404 @end table
18405
18406 Default value is @b{@samp{line}}.
18407
18408 @item w
18409 @item h
18410 Set the output video resolution.
18411
18412 Default resolution depends on formats.
18413
18414 @item in_stereo
18415 @item out_stereo
18416 Set the input/output stereo format.
18417
18418 @table @samp
18419 @item 2d
18420 2D mono
18421 @item sbs
18422 Side by side
18423 @item tb
18424 Top bottom
18425 @end table
18426
18427 Default value is @b{@samp{2d}} for input and output format.
18428
18429 @item yaw
18430 @item pitch
18431 @item roll
18432 Set rotation for the output video. Values in degrees.
18433
18434 @item rorder
18435 Set rotation order for the output video. Choose one item for each position.
18436
18437 @table @samp
18438 @item y, Y
18439 yaw
18440 @item p, P
18441 pitch
18442 @item r, R
18443 roll
18444 @end table
18445
18446 Default value is @b{@samp{ypr}}.
18447
18448 @item h_flip
18449 @item v_flip
18450 @item d_flip
18451 Flip the output video horizontally(swaps left-right)/vertically(swaps up-down)/in-depth(swaps back-forward). Boolean values.
18452
18453 @item ih_flip
18454 @item iv_flip
18455 Set if input video is flipped horizontally/vertically. Boolean values.
18456
18457 @item in_trans
18458 Set if input video is transposed. Boolean value, by default disabled.
18459
18460 @item out_trans
18461 Set if output video needs to be transposed. Boolean value, by default disabled.
18462
18463 @end table
18464
18465 @subsection Examples
18466
18467 @itemize
18468 @item
18469 Convert equirectangular video to cubemap with 3x2 layout and 1% padding using bicubic interpolation:
18470 @example
18471 ffmpeg -i input.mkv -vf v360=e:c3x2:cubic:out_pad=0.01 output.mkv
18472 @end example
18473 @item
18474 Extract back view of Equi-Angular Cubemap:
18475 @example
18476 ffmpeg -i input.mkv -vf v360=eac:flat:yaw=180 output.mkv
18477 @end example
18478 @item
18479 Convert transposed and horizontally flipped Equi-Angular Cubemap in side-by-side stereo format to equirectangular top-bottom stereo format:
18480 @example
18481 v360=eac:equirect:in_stereo=sbs:in_trans=1:ih_flip=1:out_stereo=tb
18482 @end example
18483 @end itemize
18484
18485 @section vaguedenoiser
18486
18487 Apply a wavelet based denoiser.
18488
18489 It transforms each frame from the video input into the wavelet domain,
18490 using Cohen-Daubechies-Feauveau 9/7. Then it applies some filtering to
18491 the obtained coefficients. It does an inverse wavelet transform after.
18492 Due to wavelet properties, it should give a nice smoothed result, and
18493 reduced noise, without blurring picture features.
18494
18495 This filter accepts the following options:
18496
18497 @table @option
18498 @item threshold
18499 The filtering strength. The higher, the more filtered the video will be.
18500 Hard thresholding can use a higher threshold than soft thresholding
18501 before the video looks overfiltered. Default value is 2.
18502
18503 @item method
18504 The filtering method the filter will use.
18505
18506 It accepts the following values:
18507 @table @samp
18508 @item hard
18509 All values under the threshold will be zeroed.
18510
18511 @item soft
18512 All values under the threshold will be zeroed. All values above will be
18513 reduced by the threshold.
18514
18515 @item garrote
18516 Scales or nullifies coefficients - intermediary between (more) soft and
18517 (less) hard thresholding.
18518 @end table
18519
18520 Default is garrote.
18521
18522 @item nsteps
18523 Number of times, the wavelet will decompose the picture. Picture can't
18524 be decomposed beyond a particular point (typically, 8 for a 640x480
18525 frame - as 2^9 = 512 > 480). Valid values are integers between 1 and 32. Default value is 6.
18526
18527 @item percent
18528 Partial of full denoising (limited coefficients shrinking), from 0 to 100. Default value is 85.
18529
18530 @item planes
18531 A list of the planes to process. By default all planes are processed.
18532 @end table
18533
18534 @section vectorscope
18535
18536 Display 2 color component values in the two dimensional graph (which is called
18537 a vectorscope).
18538
18539 This filter accepts the following options:
18540
18541 @table @option
18542 @item mode, m
18543 Set vectorscope mode.
18544
18545 It accepts the following values:
18546 @table @samp
18547 @item gray
18548 Gray values are displayed on graph, higher brightness means more pixels have
18549 same component color value on location in graph. This is the default mode.
18550
18551 @item color
18552 Gray values are displayed on graph. Surrounding pixels values which are not
18553 present in video frame are drawn in gradient of 2 color components which are
18554 set by option @code{x} and @code{y}. The 3rd color component is static.
18555
18556 @item color2
18557 Actual color components values present in video frame are displayed on graph.
18558
18559 @item color3
18560 Similar as color2 but higher frequency of same values @code{x} and @code{y}
18561 on graph increases value of another color component, which is luminance by
18562 default values of @code{x} and @code{y}.
18563
18564 @item color4
18565 Actual colors present in video frame are displayed on graph. If two different
18566 colors map to same position on graph then color with higher value of component
18567 not present in graph is picked.
18568
18569 @item color5
18570 Gray values are displayed on graph. Similar to @code{color} but with 3rd color
18571 component picked from radial gradient.
18572 @end table
18573
18574 @item x
18575 Set which color component will be represented on X-axis. Default is @code{1}.
18576
18577 @item y
18578 Set which color component will be represented on Y-axis. Default is @code{2}.
18579
18580 @item intensity, i
18581 Set intensity, used by modes: gray, color, color3 and color5 for increasing brightness
18582 of color component which represents frequency of (X, Y) location in graph.
18583
18584 @item envelope, e
18585 @table @samp
18586 @item none
18587 No envelope, this is default.
18588
18589 @item instant
18590 Instant envelope, even darkest single pixel will be clearly highlighted.
18591
18592 @item peak
18593 Hold maximum and minimum values presented in graph over time. This way you
18594 can still spot out of range values without constantly looking at vectorscope.
18595
18596 @item peak+instant
18597 Peak and instant envelope combined together.
18598 @end table
18599
18600 @item graticule, g
18601 Set what kind of graticule to draw.
18602 @table @samp
18603 @item none
18604 @item green
18605 @item color
18606 @end table
18607
18608 @item opacity, o
18609 Set graticule opacity.
18610
18611 @item flags, f
18612 Set graticule flags.
18613
18614 @table @samp
18615 @item white
18616 Draw graticule for white point.
18617
18618 @item black
18619 Draw graticule for black point.
18620
18621 @item name
18622 Draw color points short names.
18623 @end table
18624
18625 @item bgopacity, b
18626 Set background opacity.
18627
18628 @item lthreshold, l
18629 Set low threshold for color component not represented on X or Y axis.
18630 Values lower than this value will be ignored. Default is 0.
18631 Note this value is multiplied with actual max possible value one pixel component
18632 can have. So for 8-bit input and low threshold value of 0.1 actual threshold
18633 is 0.1 * 255 = 25.
18634
18635 @item hthreshold, h
18636 Set high threshold for color component not represented on X or Y axis.
18637 Values higher than this value will be ignored. Default is 1.
18638 Note this value is multiplied with actual max possible value one pixel component
18639 can have. So for 8-bit input and high threshold value of 0.9 actual threshold
18640 is 0.9 * 255 = 230.
18641
18642 @item colorspace, c
18643 Set what kind of colorspace to use when drawing graticule.
18644 @table @samp
18645 @item auto
18646 @item 601
18647 @item 709
18648 @end table
18649 Default is auto.
18650 @end table
18651
18652 @anchor{vidstabdetect}
18653 @section vidstabdetect
18654
18655 Analyze video stabilization/deshaking. Perform pass 1 of 2, see
18656 @ref{vidstabtransform} for pass 2.
18657
18658 This filter generates a file with relative translation and rotation
18659 transform information about subsequent frames, which is then used by
18660 the @ref{vidstabtransform} filter.
18661
18662 To enable compilation of this filter you need to configure FFmpeg with
18663 @code{--enable-libvidstab}.
18664
18665 This filter accepts the following options:
18666
18667 @table @option
18668 @item result
18669 Set the path to the file used to write the transforms information.
18670 Default value is @file{transforms.trf}.
18671
18672 @item shakiness
18673 Set how shaky the video is and how quick the camera is. It accepts an
18674 integer in the range 1-10, a value of 1 means little shakiness, a
18675 value of 10 means strong shakiness. Default value is 5.
18676
18677 @item accuracy
18678 Set the accuracy of the detection process. It must be a value in the
18679 range 1-15. A value of 1 means low accuracy, a value of 15 means high
18680 accuracy. Default value is 15.
18681
18682 @item stepsize
18683 Set stepsize of the search process. The region around minimum is
18684 scanned with 1 pixel resolution. Default value is 6.
18685
18686 @item mincontrast
18687 Set minimum contrast. Below this value a local measurement field is
18688 discarded. Must be a floating point value in the range 0-1. Default
18689 value is 0.3.
18690
18691 @item tripod
18692 Set reference frame number for tripod mode.
18693
18694 If enabled, the motion of the frames is compared to a reference frame
18695 in the filtered stream, identified by the specified number. The idea
18696 is to compensate all movements in a more-or-less static scene and keep
18697 the camera view absolutely still.
18698
18699 If set to 0, it is disabled. The frames are counted starting from 1.
18700
18701 @item show
18702 Show fields and transforms in the resulting frames. It accepts an
18703 integer in the range 0-2. Default value is 0, which disables any
18704 visualization.
18705 @end table
18706
18707 @subsection Examples
18708
18709 @itemize
18710 @item
18711 Use default values:
18712 @example
18713 vidstabdetect
18714 @end example
18715
18716 @item
18717 Analyze strongly shaky movie and put the results in file
18718 @file{mytransforms.trf}:
18719 @example
18720 vidstabdetect=shakiness=10:accuracy=15:result="mytransforms.trf"
18721 @end example
18722
18723 @item
18724 Visualize the result of internal transformations in the resulting
18725 video:
18726 @example
18727 vidstabdetect=show=1
18728 @end example
18729
18730 @item
18731 Analyze a video with medium shakiness using @command{ffmpeg}:
18732 @example
18733 ffmpeg -i input -vf vidstabdetect=shakiness=5:show=1 dummy.avi
18734 @end example
18735 @end itemize
18736
18737 @anchor{vidstabtransform}
18738 @section vidstabtransform
18739
18740 Video stabilization/deshaking: pass 2 of 2,
18741 see @ref{vidstabdetect} for pass 1.
18742
18743 Read a file with transform information for each frame and
18744 apply/compensate them. Together with the @ref{vidstabdetect}
18745 filter this can be used to deshake videos. See also
18746 @url{http://public.hronopik.de/vid.stab}. It is important to also use
18747 the @ref{unsharp} filter, see below.
18748
18749 To enable compilation of this filter you need to configure FFmpeg with
18750 @code{--enable-libvidstab}.
18751
18752 @subsection Options
18753
18754 @table @option
18755 @item input
18756 Set path to the file used to read the transforms. Default value is
18757 @file{transforms.trf}.
18758
18759 @item smoothing
18760 Set the number of frames (value*2 + 1) used for lowpass filtering the
18761 camera movements. Default value is 10.
18762
18763 For example a number of 10 means that 21 frames are used (10 in the
18764 past and 10 in the future) to smoothen the motion in the video. A
18765 larger value leads to a smoother video, but limits the acceleration of
18766 the camera (pan/tilt movements). 0 is a special case where a static
18767 camera is simulated.
18768
18769 @item optalgo
18770 Set the camera path optimization algorithm.
18771
18772 Accepted values are:
18773 @table @samp
18774 @item gauss
18775 gaussian kernel low-pass filter on camera motion (default)
18776 @item avg
18777 averaging on transformations
18778 @end table
18779
18780 @item maxshift
18781 Set maximal number of pixels to translate frames. Default value is -1,
18782 meaning no limit.
18783
18784 @item maxangle
18785 Set maximal angle in radians (degree*PI/180) to rotate frames. Default
18786 value is -1, meaning no limit.
18787
18788 @item crop
18789 Specify how to deal with borders that may be visible due to movement
18790 compensation.
18791
18792 Available values are:
18793 @table @samp
18794 @item keep
18795 keep image information from previous frame (default)
18796 @item black
18797 fill the border black
18798 @end table
18799
18800 @item invert
18801 Invert transforms if set to 1. Default value is 0.
18802
18803 @item relative
18804 Consider transforms as relative to previous frame if set to 1,
18805 absolute if set to 0. Default value is 0.
18806
18807 @item zoom
18808 Set percentage to zoom. A positive value will result in a zoom-in
18809 effect, a negative value in a zoom-out effect. Default value is 0 (no
18810 zoom).
18811
18812 @item optzoom
18813 Set optimal zooming to avoid borders.
18814
18815 Accepted values are:
18816 @table @samp
18817 @item 0
18818 disabled
18819 @item 1
18820 optimal static zoom value is determined (only very strong movements
18821 will lead to visible borders) (default)
18822 @item 2
18823 optimal adaptive zoom value is determined (no borders will be
18824 visible), see @option{zoomspeed}
18825 @end table
18826
18827 Note that the value given at zoom is added to the one calculated here.
18828
18829 @item zoomspeed
18830 Set percent to zoom maximally each frame (enabled when
18831 @option{optzoom} is set to 2). Range is from 0 to 5, default value is
18832 0.25.
18833
18834 @item interpol
18835 Specify type of interpolation.
18836
18837 Available values are:
18838 @table @samp
18839 @item no
18840 no interpolation
18841 @item linear
18842 linear only horizontal
18843 @item bilinear
18844 linear in both directions (default)
18845 @item bicubic
18846 cubic in both directions (slow)
18847 @end table
18848
18849 @item tripod
18850 Enable virtual tripod mode if set to 1, which is equivalent to
18851 @code{relative=0:smoothing=0}. Default value is 0.
18852
18853 Use also @code{tripod} option of @ref{vidstabdetect}.
18854
18855 @item debug
18856 Increase log verbosity if set to 1. Also the detected global motions
18857 are written to the temporary file @file{global_motions.trf}. Default
18858 value is 0.
18859 @end table
18860
18861 @subsection Examples
18862
18863 @itemize
18864 @item
18865 Use @command{ffmpeg} for a typical stabilization with default values:
18866 @example
18867 ffmpeg -i inp.mpeg -vf vidstabtransform,unsharp=5:5:0.8:3:3:0.4 inp_stabilized.mpeg
18868 @end example
18869
18870 Note the use of the @ref{unsharp} filter which is always recommended.
18871
18872 @item
18873 Zoom in a bit more and load transform data from a given file:
18874 @example
18875 vidstabtransform=zoom=5:input="mytransforms.trf"
18876 @end example
18877
18878 @item
18879 Smoothen the video even more:
18880 @example
18881 vidstabtransform=smoothing=30
18882 @end example
18883 @end itemize
18884
18885 @section vflip
18886
18887 Flip the input video vertically.
18888
18889 For example, to vertically flip a video with @command{ffmpeg}:
18890 @example
18891 ffmpeg -i in.avi -vf "vflip" out.avi
18892 @end example
18893
18894 @section vfrdet
18895
18896 Detect variable frame rate video.
18897
18898 This filter tries to detect if the input is variable or constant frame rate.
18899
18900 At end it will output number of frames detected as having variable delta pts,
18901 and ones with constant delta pts.
18902 If there was frames with variable delta, than it will also show min and max delta
18903 encountered.
18904
18905 @section vibrance
18906
18907 Boost or alter saturation.
18908
18909 The filter accepts the following options:
18910 @table @option
18911 @item intensity
18912 Set strength of boost if positive value or strength of alter if negative value.
18913 Default is 0. Allowed range is from -2 to 2.
18914
18915 @item rbal
18916 Set the red balance. Default is 1. Allowed range is from -10 to 10.
18917
18918 @item gbal
18919 Set the green balance. Default is 1. Allowed range is from -10 to 10.
18920
18921 @item bbal
18922 Set the blue balance. Default is 1. Allowed range is from -10 to 10.
18923
18924 @item rlum
18925 Set the red luma coefficient.
18926
18927 @item glum
18928 Set the green luma coefficient.
18929
18930 @item blum
18931 Set the blue luma coefficient.
18932
18933 @item alternate
18934 If @code{intensity} is negative and this is set to 1, colors will change,
18935 otherwise colors will be less saturated, more towards gray.
18936 @end table
18937
18938 @anchor{vignette}
18939 @section vignette
18940
18941 Make or reverse a natural vignetting effect.
18942
18943 The filter accepts the following options:
18944
18945 @table @option
18946 @item angle, a
18947 Set lens angle expression as a number of radians.
18948
18949 The value is clipped in the @code{[0,PI/2]} range.
18950
18951 Default value: @code{"PI/5"}
18952
18953 @item x0
18954 @item y0
18955 Set center coordinates expressions. Respectively @code{"w/2"} and @code{"h/2"}
18956 by default.
18957
18958 @item mode
18959 Set forward/backward mode.
18960
18961 Available modes are:
18962 @table @samp
18963 @item forward
18964 The larger the distance from the central point, the darker the image becomes.
18965
18966 @item backward
18967 The larger the distance from the central point, the brighter the image becomes.
18968 This can be used to reverse a vignette effect, though there is no automatic
18969 detection to extract the lens @option{angle} and other settings (yet). It can
18970 also be used to create a burning effect.
18971 @end table
18972
18973 Default value is @samp{forward}.
18974
18975 @item eval
18976 Set evaluation mode for the expressions (@option{angle}, @option{x0}, @option{y0}).
18977
18978 It accepts the following values:
18979 @table @samp
18980 @item init
18981 Evaluate expressions only once during the filter initialization.
18982
18983 @item frame
18984 Evaluate expressions for each incoming frame. This is way slower than the
18985 @samp{init} mode since it requires all the scalers to be re-computed, but it
18986 allows advanced dynamic expressions.
18987 @end table
18988
18989 Default value is @samp{init}.
18990
18991 @item dither
18992 Set dithering to reduce the circular banding effects. Default is @code{1}
18993 (enabled).
18994
18995 @item aspect
18996 Set vignette aspect. This setting allows one to adjust the shape of the vignette.
18997 Setting this value to the SAR of the input will make a rectangular vignetting
18998 following the dimensions of the video.
18999
19000 Default is @code{1/1}.
19001 @end table
19002
19003 @subsection Expressions
19004
19005 The @option{alpha}, @option{x0} and @option{y0} expressions can contain the
19006 following parameters.
19007
19008 @table @option
19009 @item w
19010 @item h
19011 input width and height
19012
19013 @item n
19014 the number of input frame, starting from 0
19015
19016 @item pts
19017 the PTS (Presentation TimeStamp) time of the filtered video frame, expressed in
19018 @var{TB} units, NAN if undefined
19019
19020 @item r
19021 frame rate of the input video, NAN if the input frame rate is unknown
19022
19023 @item t
19024 the PTS (Presentation TimeStamp) of the filtered video frame,
19025 expressed in seconds, NAN if undefined
19026
19027 @item tb
19028 time base of the input video
19029 @end table
19030
19031
19032 @subsection Examples
19033
19034 @itemize
19035 @item
19036 Apply simple strong vignetting effect:
19037 @example
19038 vignette=PI/4
19039 @end example
19040
19041 @item
19042 Make a flickering vignetting:
19043 @example
19044 vignette='PI/4+random(1)*PI/50':eval=frame
19045 @end example
19046
19047 @end itemize
19048
19049 @section vmafmotion
19050
19051 Obtain the average vmaf motion score of a video.
19052 It is one of the component filters of VMAF.
19053
19054 The obtained average motion score is printed through the logging system.
19055
19056 In the below example the input file @file{ref.mpg} is being processed and score
19057 is computed.
19058
19059 @example
19060 ffmpeg -i ref.mpg -lavfi vmafmotion -f null -
19061 @end example
19062
19063 @section vstack
19064 Stack input videos vertically.
19065
19066 All streams must be of same pixel format and of same width.
19067
19068 Note that this filter is faster than using @ref{overlay} and @ref{pad} filter
19069 to create same output.
19070
19071 The filter accepts the following options:
19072
19073 @table @option
19074 @item inputs
19075 Set number of input streams. Default is 2.
19076
19077 @item shortest
19078 If set to 1, force the output to terminate when the shortest input
19079 terminates. Default value is 0.
19080 @end table
19081
19082 @section w3fdif
19083
19084 Deinterlace the input video ("w3fdif" stands for "Weston 3 Field
19085 Deinterlacing Filter").
19086
19087 Based on the process described by Martin Weston for BBC R&D, and
19088 implemented based on the de-interlace algorithm written by Jim
19089 Easterbrook for BBC R&D, the Weston 3 field deinterlacing filter
19090 uses filter coefficients calculated by BBC R&D.
19091
19092 This filter uses field-dominance information in frame to decide which
19093 of each pair of fields to place first in the output.
19094 If it gets it wrong use @ref{setfield} filter before @code{w3fdif} filter.
19095
19096 There are two sets of filter coefficients, so called "simple"
19097 and "complex". Which set of filter coefficients is used can
19098 be set by passing an optional parameter:
19099
19100 @table @option
19101 @item filter
19102 Set the interlacing filter coefficients. Accepts one of the following values:
19103
19104 @table @samp
19105 @item simple
19106 Simple filter coefficient set.
19107 @item complex
19108 More-complex filter coefficient set.
19109 @end table
19110 Default value is @samp{complex}.
19111
19112 @item deint
19113 Specify which frames to deinterlace. Accepts one of the following values:
19114
19115 @table @samp
19116 @item all
19117 Deinterlace all frames,
19118 @item interlaced
19119 Only deinterlace frames marked as interlaced.
19120 @end table
19121
19122 Default value is @samp{all}.
19123 @end table
19124
19125 @section waveform
19126 Video waveform monitor.
19127
19128 The waveform monitor plots color component intensity. By default luminance
19129 only. Each column of the waveform corresponds to a column of pixels in the
19130 source video.
19131
19132 It accepts the following options:
19133
19134 @table @option
19135 @item mode, m
19136 Can be either @code{row}, or @code{column}. Default is @code{column}.
19137 In row mode, the graph on the left side represents color component value 0 and
19138 the right side represents value = 255. In column mode, the top side represents
19139 color component value = 0 and bottom side represents value = 255.
19140
19141 @item intensity, i
19142 Set intensity. Smaller values are useful to find out how many values of the same
19143 luminance are distributed across input rows/columns.
19144 Default value is @code{0.04}. Allowed range is [0, 1].
19145
19146 @item mirror, r
19147 Set mirroring mode. @code{0} means unmirrored, @code{1} means mirrored.
19148 In mirrored mode, higher values will be represented on the left
19149 side for @code{row} mode and at the top for @code{column} mode. Default is
19150 @code{1} (mirrored).
19151
19152 @item display, d
19153 Set display mode.
19154 It accepts the following values:
19155 @table @samp
19156 @item overlay
19157 Presents information identical to that in the @code{parade}, except
19158 that the graphs representing color components are superimposed directly
19159 over one another.
19160
19161 This display mode makes it easier to spot relative differences or similarities
19162 in overlapping areas of the color components that are supposed to be identical,
19163 such as neutral whites, grays, or blacks.
19164
19165 @item stack
19166 Display separate graph for the color components side by side in
19167 @code{row} mode or one below the other in @code{column} mode.
19168
19169 @item parade
19170 Display separate graph for the color components side by side in
19171 @code{column} mode or one below the other in @code{row} mode.
19172
19173 Using this display mode makes it easy to spot color casts in the highlights
19174 and shadows of an image, by comparing the contours of the top and the bottom
19175 graphs of each waveform. Since whites, grays, and blacks are characterized
19176 by exactly equal amounts of red, green, and blue, neutral areas of the picture
19177 should display three waveforms of roughly equal width/height. If not, the
19178 correction is easy to perform by making level adjustments the three waveforms.
19179 @end table
19180 Default is @code{stack}.
19181
19182 @item components, c
19183 Set which color components to display. Default is 1, which means only luminance
19184 or red color component if input is in RGB colorspace. If is set for example to
19185 7 it will display all 3 (if) available color components.
19186
19187 @item envelope, e
19188 @table @samp
19189 @item none
19190 No envelope, this is default.
19191
19192 @item instant
19193 Instant envelope, minimum and maximum values presented in graph will be easily
19194 visible even with small @code{step} value.
19195
19196 @item peak
19197 Hold minimum and maximum values presented in graph across time. This way you
19198 can still spot out of range values without constantly looking at waveforms.
19199
19200 @item peak+instant
19201 Peak and instant envelope combined together.
19202 @end table
19203
19204 @item filter, f
19205 @table @samp
19206 @item lowpass
19207 No filtering, this is default.
19208
19209 @item flat
19210 Luma and chroma combined together.
19211
19212 @item aflat
19213 Similar as above, but shows difference between blue and red chroma.
19214
19215 @item xflat
19216 Similar as above, but use different colors.
19217
19218 @item yflat
19219 Similar as above, but again with different colors.
19220
19221 @item chroma
19222 Displays only chroma.
19223
19224 @item color
19225 Displays actual color value on waveform.
19226
19227 @item acolor
19228 Similar as above, but with luma showing frequency of chroma values.
19229 @end table
19230
19231 @item graticule, g
19232 Set which graticule to display.
19233
19234 @table @samp
19235 @item none
19236 Do not display graticule.
19237
19238 @item green
19239 Display green graticule showing legal broadcast ranges.
19240
19241 @item orange
19242 Display orange graticule showing legal broadcast ranges.
19243
19244 @item invert
19245 Display invert graticule showing legal broadcast ranges.
19246 @end table
19247
19248 @item opacity, o
19249 Set graticule opacity.
19250
19251 @item flags, fl
19252 Set graticule flags.
19253
19254 @table @samp
19255 @item numbers
19256 Draw numbers above lines. By default enabled.
19257
19258 @item dots
19259 Draw dots instead of lines.
19260 @end table
19261
19262 @item scale, s
19263 Set scale used for displaying graticule.
19264
19265 @table @samp
19266 @item digital
19267 @item millivolts
19268 @item ire
19269 @end table
19270 Default is digital.
19271
19272 @item bgopacity, b
19273 Set background opacity.
19274 @end table
19275
19276 @section weave, doubleweave
19277
19278 The @code{weave} takes a field-based video input and join
19279 each two sequential fields into single frame, producing a new double
19280 height clip with half the frame rate and half the frame count.
19281
19282 The @code{doubleweave} works same as @code{weave} but without
19283 halving frame rate and frame count.
19284
19285 It accepts the following option:
19286
19287 @table @option
19288 @item first_field
19289 Set first field. Available values are:
19290
19291 @table @samp
19292 @item top, t
19293 Set the frame as top-field-first.
19294
19295 @item bottom, b
19296 Set the frame as bottom-field-first.
19297 @end table
19298 @end table
19299
19300 @subsection Examples
19301
19302 @itemize
19303 @item
19304 Interlace video using @ref{select} and @ref{separatefields} filter:
19305 @example
19306 separatefields,select=eq(mod(n,4),0)+eq(mod(n,4),3),weave
19307 @end example
19308 @end itemize
19309
19310 @section xbr
19311 Apply the xBR high-quality magnification filter which is designed for pixel
19312 art. It follows a set of edge-detection rules, see
19313 @url{https://forums.libretro.com/t/xbr-algorithm-tutorial/123}.
19314
19315 It accepts the following option:
19316
19317 @table @option
19318 @item n
19319 Set the scaling dimension: @code{2} for @code{2xBR}, @code{3} for
19320 @code{3xBR} and @code{4} for @code{4xBR}.
19321 Default is @code{3}.
19322 @end table
19323
19324 @section xmedian
19325 Pick median pixels from several input videos.
19326
19327 The filter accepts the following options:
19328
19329 @table @option
19330 @item inputs
19331 Set number of inputs.
19332 Default is 3. Allowed range is from 3 to 255.
19333 If number of inputs is even number, than result will be mean value between two median values.
19334
19335 @item planes
19336 Set which planes to filter. Default value is @code{15}, by which all planes are processed.
19337 @end table
19338
19339 @section xstack
19340 Stack video inputs into custom layout.
19341
19342 All streams must be of same pixel format.
19343
19344 The filter accepts the following options:
19345
19346 @table @option
19347 @item inputs
19348 Set number of input streams. Default is 2.
19349
19350 @item layout
19351 Specify layout of inputs.
19352 This option requires the desired layout configuration to be explicitly set by the user.
19353 This sets position of each video input in output. Each input
19354 is separated by '|'.
19355 The first number represents the column, and the second number represents the row.
19356 Numbers start at 0 and are separated by '_'. Optionally one can use wX and hX,
19357 where X is video input from which to take width or height.
19358 Multiple values can be used when separated by '+'. In such
19359 case values are summed together.
19360
19361 Note that if inputs are of different sizes gaps may appear, as not all of
19362 the output video frame will be filled. Similarly, videos can overlap each
19363 other if their position doesn't leave enough space for the full frame of
19364 adjoining videos.
19365
19366 For 2 inputs, a default layout of @code{0_0|w0_0} is set. In all other cases,
19367 a layout must be set by the user.
19368
19369 @item shortest
19370 If set to 1, force the output to terminate when the shortest input
19371 terminates. Default value is 0.
19372 @end table
19373
19374 @subsection Examples
19375
19376 @itemize
19377 @item
19378 Display 4 inputs into 2x2 grid.
19379
19380 Layout:
19381 @example
19382 input1(0, 0)  | input3(w0, 0)
19383 input2(0, h0) | input4(w0, h0)
19384 @end example
19385
19386 @example
19387 xstack=inputs=4:layout=0_0|0_h0|w0_0|w0_h0
19388 @end example
19389
19390 Note that if inputs are of different sizes, gaps or overlaps may occur.
19391
19392 @item
19393 Display 4 inputs into 1x4 grid.
19394
19395 Layout:
19396 @example
19397 input1(0, 0)
19398 input2(0, h0)
19399 input3(0, h0+h1)
19400 input4(0, h0+h1+h2)
19401 @end example
19402
19403 @example
19404 xstack=inputs=4:layout=0_0|0_h0|0_h0+h1|0_h0+h1+h2
19405 @end example
19406
19407 Note that if inputs are of different widths, unused space will appear.
19408
19409 @item
19410 Display 9 inputs into 3x3 grid.
19411
19412 Layout:
19413 @example
19414 input1(0, 0)       | input4(w0, 0)      | input7(w0+w3, 0)
19415 input2(0, h0)      | input5(w0, h0)     | input8(w0+w3, h0)
19416 input3(0, h0+h1)   | input6(w0, h0+h1)  | input9(w0+w3, h0+h1)
19417 @end example
19418
19419 @example
19420 xstack=inputs=9:layout=0_0|0_h0|0_h0+h1|w0_0|w0_h0|w0_h0+h1|w0+w3_0|w0+w3_h0|w0+w3_h0+h1
19421 @end example
19422
19423 Note that if inputs are of different sizes, gaps or overlaps may occur.
19424
19425 @item
19426 Display 16 inputs into 4x4 grid.
19427
19428 Layout:
19429 @example
19430 input1(0, 0)       | input5(w0, 0)       | input9 (w0+w4, 0)       | input13(w0+w4+w8, 0)
19431 input2(0, h0)      | input6(w0, h0)      | input10(w0+w4, h0)      | input14(w0+w4+w8, h0)
19432 input3(0, h0+h1)   | input7(w0, h0+h1)   | input11(w0+w4, h0+h1)   | input15(w0+w4+w8, h0+h1)
19433 input4(0, h0+h1+h2)| input8(w0, h0+h1+h2)| input12(w0+w4, h0+h1+h2)| input16(w0+w4+w8, h0+h1+h2)
19434 @end example
19435
19436 @example
19437 xstack=inputs=16:layout=0_0|0_h0|0_h0+h1|0_h0+h1+h2|w0_0|w0_h0|w0_h0+h1|w0_h0+h1+h2|w0+w4_0|
19438 w0+w4_h0|w0+w4_h0+h1|w0+w4_h0+h1+h2|w0+w4+w8_0|w0+w4+w8_h0|w0+w4+w8_h0+h1|w0+w4+w8_h0+h1+h2
19439 @end example
19440
19441 Note that if inputs are of different sizes, gaps or overlaps may occur.
19442
19443 @end itemize
19444
19445 @anchor{yadif}
19446 @section yadif
19447
19448 Deinterlace the input video ("yadif" means "yet another deinterlacing
19449 filter").
19450
19451 It accepts the following parameters:
19452
19453
19454 @table @option
19455
19456 @item mode
19457 The interlacing mode to adopt. It accepts one of the following values:
19458
19459 @table @option
19460 @item 0, send_frame
19461 Output one frame for each frame.
19462 @item 1, send_field
19463 Output one frame for each field.
19464 @item 2, send_frame_nospatial
19465 Like @code{send_frame}, but it skips the spatial interlacing check.
19466 @item 3, send_field_nospatial
19467 Like @code{send_field}, but it skips the spatial interlacing check.
19468 @end table
19469
19470 The default value is @code{send_frame}.
19471
19472 @item parity
19473 The picture field parity assumed for the input interlaced video. It accepts one
19474 of the following values:
19475
19476 @table @option
19477 @item 0, tff
19478 Assume the top field is first.
19479 @item 1, bff
19480 Assume the bottom field is first.
19481 @item -1, auto
19482 Enable automatic detection of field parity.
19483 @end table
19484
19485 The default value is @code{auto}.
19486 If the interlacing is unknown or the decoder does not export this information,
19487 top field first will be assumed.
19488
19489 @item deint
19490 Specify which frames to deinterlace. Accepts one of the following
19491 values:
19492
19493 @table @option
19494 @item 0, all
19495 Deinterlace all frames.
19496 @item 1, interlaced
19497 Only deinterlace frames marked as interlaced.
19498 @end table
19499
19500 The default value is @code{all}.
19501 @end table
19502
19503 @section yadif_cuda
19504
19505 Deinterlace the input video using the @ref{yadif} algorithm, but implemented
19506 in CUDA so that it can work as part of a GPU accelerated pipeline with nvdec
19507 and/or nvenc.
19508
19509 It accepts the following parameters:
19510
19511
19512 @table @option
19513
19514 @item mode
19515 The interlacing mode to adopt. It accepts one of the following values:
19516
19517 @table @option
19518 @item 0, send_frame
19519 Output one frame for each frame.
19520 @item 1, send_field
19521 Output one frame for each field.
19522 @item 2, send_frame_nospatial
19523 Like @code{send_frame}, but it skips the spatial interlacing check.
19524 @item 3, send_field_nospatial
19525 Like @code{send_field}, but it skips the spatial interlacing check.
19526 @end table
19527
19528 The default value is @code{send_frame}.
19529
19530 @item parity
19531 The picture field parity assumed for the input interlaced video. It accepts one
19532 of the following values:
19533
19534 @table @option
19535 @item 0, tff
19536 Assume the top field is first.
19537 @item 1, bff
19538 Assume the bottom field is first.
19539 @item -1, auto
19540 Enable automatic detection of field parity.
19541 @end table
19542
19543 The default value is @code{auto}.
19544 If the interlacing is unknown or the decoder does not export this information,
19545 top field first will be assumed.
19546
19547 @item deint
19548 Specify which frames to deinterlace. Accepts one of the following
19549 values:
19550
19551 @table @option
19552 @item 0, all
19553 Deinterlace all frames.
19554 @item 1, interlaced
19555 Only deinterlace frames marked as interlaced.
19556 @end table
19557
19558 The default value is @code{all}.
19559 @end table
19560
19561 @section zoompan
19562
19563 Apply Zoom & Pan effect.
19564
19565 This filter accepts the following options:
19566
19567 @table @option
19568 @item zoom, z
19569 Set the zoom expression. Range is 1-10. Default is 1.
19570
19571 @item x
19572 @item y
19573 Set the x and y expression. Default is 0.
19574
19575 @item d
19576 Set the duration expression in number of frames.
19577 This sets for how many number of frames effect will last for
19578 single input image.
19579
19580 @item s
19581 Set the output image size, default is 'hd720'.
19582
19583 @item fps
19584 Set the output frame rate, default is '25'.
19585 @end table
19586
19587 Each expression can contain the following constants:
19588
19589 @table @option
19590 @item in_w, iw
19591 Input width.
19592
19593 @item in_h, ih
19594 Input height.
19595
19596 @item out_w, ow
19597 Output width.
19598
19599 @item out_h, oh
19600 Output height.
19601
19602 @item in
19603 Input frame count.
19604
19605 @item on
19606 Output frame count.
19607
19608 @item x
19609 @item y
19610 Last calculated 'x' and 'y' position from 'x' and 'y' expression
19611 for current input frame.
19612
19613 @item px
19614 @item py
19615 'x' and 'y' of last output frame of previous input frame or 0 when there was
19616 not yet such frame (first input frame).
19617
19618 @item zoom
19619 Last calculated zoom from 'z' expression for current input frame.
19620
19621 @item pzoom
19622 Last calculated zoom of last output frame of previous input frame.
19623
19624 @item duration
19625 Number of output frames for current input frame. Calculated from 'd' expression
19626 for each input frame.
19627
19628 @item pduration
19629 number of output frames created for previous input frame
19630
19631 @item a
19632 Rational number: input width / input height
19633
19634 @item sar
19635 sample aspect ratio
19636
19637 @item dar
19638 display aspect ratio
19639
19640 @end table
19641
19642 @subsection Examples
19643
19644 @itemize
19645 @item
19646 Zoom-in up to 1.5 and pan at same time to some spot near center of picture:
19647 @example
19648 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
19649 @end example
19650
19651 @item
19652 Zoom-in up to 1.5 and pan always at center of picture:
19653 @example
19654 zoompan=z='min(zoom+0.0015,1.5)':d=700:x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)'
19655 @end example
19656
19657 @item
19658 Same as above but without pausing:
19659 @example
19660 zoompan=z='min(max(zoom,pzoom)+0.0015,1.5)':d=1:x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)'
19661 @end example
19662 @end itemize
19663
19664 @anchor{zscale}
19665 @section zscale
19666 Scale (resize) the input video, using the z.lib library:
19667 @url{https://github.com/sekrit-twc/zimg}. To enable compilation of this
19668 filter, you need to configure FFmpeg with @code{--enable-libzimg}.
19669
19670 The zscale filter forces the output display aspect ratio to be the same
19671 as the input, by changing the output sample aspect ratio.
19672
19673 If the input image format is different from the format requested by
19674 the next filter, the zscale filter will convert the input to the
19675 requested format.
19676
19677 @subsection Options
19678 The filter accepts the following options.
19679
19680 @table @option
19681 @item width, w
19682 @item height, h
19683 Set the output video dimension expression. Default value is the input
19684 dimension.
19685
19686 If the @var{width} or @var{w} value is 0, the input width is used for
19687 the output. If the @var{height} or @var{h} value is 0, the input height
19688 is used for the output.
19689
19690 If one and only one of the values is -n with n >= 1, the zscale filter
19691 will use a value that maintains the aspect ratio of the input image,
19692 calculated from the other specified dimension. After that it will,
19693 however, make sure that the calculated dimension is divisible by n and
19694 adjust the value if necessary.
19695
19696 If both values are -n with n >= 1, the behavior will be identical to
19697 both values being set to 0 as previously detailed.
19698
19699 See below for the list of accepted constants for use in the dimension
19700 expression.
19701
19702 @item size, s
19703 Set the video size. For the syntax of this option, check the
19704 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
19705
19706 @item dither, d
19707 Set the dither type.
19708
19709 Possible values are:
19710 @table @var
19711 @item none
19712 @item ordered
19713 @item random
19714 @item error_diffusion
19715 @end table
19716
19717 Default is none.
19718
19719 @item filter, f
19720 Set the resize filter type.
19721
19722 Possible values are:
19723 @table @var
19724 @item point
19725 @item bilinear
19726 @item bicubic
19727 @item spline16
19728 @item spline36
19729 @item lanczos
19730 @end table
19731
19732 Default is bilinear.
19733
19734 @item range, r
19735 Set the color range.
19736
19737 Possible values are:
19738 @table @var
19739 @item input
19740 @item limited
19741 @item full
19742 @end table
19743
19744 Default is same as input.
19745
19746 @item primaries, p
19747 Set the color primaries.
19748
19749 Possible values are:
19750 @table @var
19751 @item input
19752 @item 709
19753 @item unspecified
19754 @item 170m
19755 @item 240m
19756 @item 2020
19757 @end table
19758
19759 Default is same as input.
19760
19761 @item transfer, t
19762 Set the transfer characteristics.
19763
19764 Possible values are:
19765 @table @var
19766 @item input
19767 @item 709
19768 @item unspecified
19769 @item 601
19770 @item linear
19771 @item 2020_10
19772 @item 2020_12
19773 @item smpte2084
19774 @item iec61966-2-1
19775 @item arib-std-b67
19776 @end table
19777
19778 Default is same as input.
19779
19780 @item matrix, m
19781 Set the colorspace matrix.
19782
19783 Possible value are:
19784 @table @var
19785 @item input
19786 @item 709
19787 @item unspecified
19788 @item 470bg
19789 @item 170m
19790 @item 2020_ncl
19791 @item 2020_cl
19792 @end table
19793
19794 Default is same as input.
19795
19796 @item rangein, rin
19797 Set the input color range.
19798
19799 Possible values are:
19800 @table @var
19801 @item input
19802 @item limited
19803 @item full
19804 @end table
19805
19806 Default is same as input.
19807
19808 @item primariesin, pin
19809 Set the input color primaries.
19810
19811 Possible values are:
19812 @table @var
19813 @item input
19814 @item 709
19815 @item unspecified
19816 @item 170m
19817 @item 240m
19818 @item 2020
19819 @end table
19820
19821 Default is same as input.
19822
19823 @item transferin, tin
19824 Set the input transfer characteristics.
19825
19826 Possible values are:
19827 @table @var
19828 @item input
19829 @item 709
19830 @item unspecified
19831 @item 601
19832 @item linear
19833 @item 2020_10
19834 @item 2020_12
19835 @end table
19836
19837 Default is same as input.
19838
19839 @item matrixin, min
19840 Set the input colorspace matrix.
19841
19842 Possible value are:
19843 @table @var
19844 @item input
19845 @item 709
19846 @item unspecified
19847 @item 470bg
19848 @item 170m
19849 @item 2020_ncl
19850 @item 2020_cl
19851 @end table
19852
19853 @item chromal, c
19854 Set the output chroma location.
19855
19856 Possible values are:
19857 @table @var
19858 @item input
19859 @item left
19860 @item center
19861 @item topleft
19862 @item top
19863 @item bottomleft
19864 @item bottom
19865 @end table
19866
19867 @item chromalin, cin
19868 Set the input chroma location.
19869
19870 Possible values are:
19871 @table @var
19872 @item input
19873 @item left
19874 @item center
19875 @item topleft
19876 @item top
19877 @item bottomleft
19878 @item bottom
19879 @end table
19880
19881 @item npl
19882 Set the nominal peak luminance.
19883 @end table
19884
19885 The values of the @option{w} and @option{h} options are expressions
19886 containing the following constants:
19887
19888 @table @var
19889 @item in_w
19890 @item in_h
19891 The input width and height
19892
19893 @item iw
19894 @item ih
19895 These are the same as @var{in_w} and @var{in_h}.
19896
19897 @item out_w
19898 @item out_h
19899 The output (scaled) width and height
19900
19901 @item ow
19902 @item oh
19903 These are the same as @var{out_w} and @var{out_h}
19904
19905 @item a
19906 The same as @var{iw} / @var{ih}
19907
19908 @item sar
19909 input sample aspect ratio
19910
19911 @item dar
19912 The input display aspect ratio. Calculated from @code{(iw / ih) * sar}.
19913
19914 @item hsub
19915 @item vsub
19916 horizontal and vertical input chroma subsample values. For example for the
19917 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
19918
19919 @item ohsub
19920 @item ovsub
19921 horizontal and vertical output chroma subsample values. For example for the
19922 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
19923 @end table
19924
19925 @table @option
19926 @end table
19927
19928 @c man end VIDEO FILTERS
19929
19930 @chapter OpenCL Video Filters
19931 @c man begin OPENCL VIDEO FILTERS
19932
19933 Below is a description of the currently available OpenCL video filters.
19934
19935 To enable compilation of these filters you need to configure FFmpeg with
19936 @code{--enable-opencl}.
19937
19938 Running OpenCL filters requires you to initialize a hardware device and to pass that device to all filters in any filter graph.
19939 @table @option
19940
19941 @item -init_hw_device opencl[=@var{name}][:@var{device}[,@var{key=value}...]]
19942 Initialise a new hardware device of type @var{opencl} called @var{name}, using the
19943 given device parameters.
19944
19945 @item -filter_hw_device @var{name}
19946 Pass the hardware device called @var{name} to all filters in any filter graph.
19947
19948 @end table
19949
19950 For more detailed information see @url{https://www.ffmpeg.org/ffmpeg.html#Advanced-Video-options}
19951
19952 @itemize
19953 @item
19954 Example of choosing the first device on the second platform and running avgblur_opencl filter with default parameters on it.
19955 @example
19956 -init_hw_device opencl=gpu:1.0 -filter_hw_device gpu -i INPUT -vf "hwupload, avgblur_opencl, hwdownload" OUTPUT
19957 @end example
19958 @end itemize
19959
19960 Since OpenCL filters are not able to access frame data in normal memory, all frame data needs to be uploaded(@ref{hwupload}) to hardware surfaces connected to the appropriate device before being used and then downloaded(@ref{hwdownload}) back to normal memory. Note that @ref{hwupload} will upload to a surface with the same layout as the software frame, so it may be necessary to add a @ref{format} filter immediately before to get the input into the right format and @ref{hwdownload} does not support all formats on the output - it may be necessary to insert an additional @ref{format} filter immediately following in the graph to get the output in a supported format.
19961
19962 @section avgblur_opencl
19963
19964 Apply average blur filter.
19965
19966 The filter accepts the following options:
19967
19968 @table @option
19969 @item sizeX
19970 Set horizontal radius size.
19971 Range is @code{[1, 1024]} and default value is @code{1}.
19972
19973 @item planes
19974 Set which planes to filter. Default value is @code{0xf}, by which all planes are processed.
19975
19976 @item sizeY
19977 Set vertical radius size. Range is @code{[1, 1024]} and default value is @code{0}. If zero, @code{sizeX} value will be used.
19978 @end table
19979
19980 @subsection Example
19981
19982 @itemize
19983 @item
19984 Apply average blur filter with horizontal and vertical size of 3, setting each pixel of the output to the average value of the 7x7 region centered on it in the input. For pixels on the edges of the image, the region does not extend beyond the image boundaries, and so out-of-range coordinates are not used in the calculations.
19985 @example
19986 -i INPUT -vf "hwupload, avgblur_opencl=3, hwdownload" OUTPUT
19987 @end example
19988 @end itemize
19989
19990 @section boxblur_opencl
19991
19992 Apply a boxblur algorithm to the input video.
19993
19994 It accepts the following parameters:
19995
19996 @table @option
19997
19998 @item luma_radius, lr
19999 @item luma_power, lp
20000 @item chroma_radius, cr
20001 @item chroma_power, cp
20002 @item alpha_radius, ar
20003 @item alpha_power, ap
20004
20005 @end table
20006
20007 A description of the accepted options follows.
20008
20009 @table @option
20010 @item luma_radius, lr
20011 @item chroma_radius, cr
20012 @item alpha_radius, ar
20013 Set an expression for the box radius in pixels used for blurring the
20014 corresponding input plane.
20015
20016 The radius value must be a non-negative number, and must not be
20017 greater than the value of the expression @code{min(w,h)/2} for the
20018 luma and alpha planes, and of @code{min(cw,ch)/2} for the chroma
20019 planes.
20020
20021 Default value for @option{luma_radius} is "2". If not specified,
20022 @option{chroma_radius} and @option{alpha_radius} default to the
20023 corresponding value set for @option{luma_radius}.
20024
20025 The expressions can contain the following constants:
20026 @table @option
20027 @item w
20028 @item h
20029 The input width and height in pixels.
20030
20031 @item cw
20032 @item ch
20033 The input chroma image width and height in pixels.
20034
20035 @item hsub
20036 @item vsub
20037 The horizontal and vertical chroma subsample values. For example, for the
20038 pixel format "yuv422p", @var{hsub} is 2 and @var{vsub} is 1.
20039 @end table
20040
20041 @item luma_power, lp
20042 @item chroma_power, cp
20043 @item alpha_power, ap
20044 Specify how many times the boxblur filter is applied to the
20045 corresponding plane.
20046
20047 Default value for @option{luma_power} is 2. If not specified,
20048 @option{chroma_power} and @option{alpha_power} default to the
20049 corresponding value set for @option{luma_power}.
20050
20051 A value of 0 will disable the effect.
20052 @end table
20053
20054 @subsection Examples
20055
20056 Apply boxblur filter, setting each pixel of the output to the average value of box-radiuses @var{luma_radius}, @var{chroma_radius}, @var{alpha_radius} for each plane respectively. The filter will apply @var{luma_power}, @var{chroma_power}, @var{alpha_power} times onto the corresponding plane. For pixels on the edges of the image, the radius does not extend beyond the image boundaries, and so out-of-range coordinates are not used in the calculations.
20057
20058 @itemize
20059 @item
20060 Apply a boxblur filter with the luma, chroma, and alpha radius
20061 set to 2 and luma, chroma, and alpha power set to 3. The filter will run 3 times with box-radius set to 2 for every plane of the image.
20062 @example
20063 -i INPUT -vf "hwupload, boxblur_opencl=luma_radius=2:luma_power=3, hwdownload" OUTPUT
20064 -i INPUT -vf "hwupload, boxblur_opencl=2:3, hwdownload" OUTPUT
20065 @end example
20066
20067 @item
20068 Apply a boxblur filter with luma radius set to 2, luma_power to 1, chroma_radius to 4, chroma_power to 5, alpha_radius to 3 and alpha_power to 7.
20069
20070 For the luma plane, a 2x2 box radius will be run once.
20071
20072 For the chroma plane, a 4x4 box radius will be run 5 times.
20073
20074 For the alpha plane, a 3x3 box radius will be run 7 times.
20075 @example
20076 -i INPUT -vf "hwupload, boxblur_opencl=2:1:4:5:3:7, hwdownload" OUTPUT
20077 @end example
20078 @end itemize
20079
20080 @section convolution_opencl
20081
20082 Apply convolution of 3x3, 5x5, 7x7 matrix.
20083
20084 The filter accepts the following options:
20085
20086 @table @option
20087 @item 0m
20088 @item 1m
20089 @item 2m
20090 @item 3m
20091 Set matrix for each plane.
20092 Matrix is sequence of 9, 25 or 49 signed numbers.
20093 Default value for each plane is @code{0 0 0 0 1 0 0 0 0}.
20094
20095 @item 0rdiv
20096 @item 1rdiv
20097 @item 2rdiv
20098 @item 3rdiv
20099 Set multiplier for calculated value for each plane.
20100 If unset or 0, it will be sum of all matrix elements.
20101 The option value must be a float number greater or equal to @code{0.0}. Default value is @code{1.0}.
20102
20103 @item 0bias
20104 @item 1bias
20105 @item 2bias
20106 @item 3bias
20107 Set bias for each plane. This value is added to the result of the multiplication.
20108 Useful for making the overall image brighter or darker.
20109 The option value must be a float number greater or equal to @code{0.0}. Default value is @code{0.0}.
20110
20111 @end table
20112
20113 @subsection Examples
20114
20115 @itemize
20116 @item
20117 Apply sharpen:
20118 @example
20119 -i INPUT -vf "hwupload, convolution_opencl=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, hwdownload" OUTPUT
20120 @end example
20121
20122 @item
20123 Apply blur:
20124 @example
20125 -i INPUT -vf "hwupload, convolution_opencl=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, hwdownload" OUTPUT
20126 @end example
20127
20128 @item
20129 Apply edge enhance:
20130 @example
20131 -i INPUT -vf "hwupload, convolution_opencl=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, hwdownload" OUTPUT
20132 @end example
20133
20134 @item
20135 Apply edge detect:
20136 @example
20137 -i INPUT -vf "hwupload, convolution_opencl=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, hwdownload" OUTPUT
20138 @end example
20139
20140 @item
20141 Apply laplacian edge detector which includes diagonals:
20142 @example
20143 -i INPUT -vf "hwupload, convolution_opencl=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, hwdownload" OUTPUT
20144 @end example
20145
20146 @item
20147 Apply emboss:
20148 @example
20149 -i INPUT -vf "hwupload, convolution_opencl=-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, hwdownload" OUTPUT
20150 @end example
20151 @end itemize
20152
20153 @section dilation_opencl
20154
20155 Apply dilation effect to the video.
20156
20157 This filter replaces the pixel by the local(3x3) maximum.
20158
20159 It accepts the following options:
20160
20161 @table @option
20162 @item threshold0
20163 @item threshold1
20164 @item threshold2
20165 @item threshold3
20166 Limit the maximum change for each plane. Range is @code{[0, 65535]} and default value is @code{65535}.
20167 If @code{0}, plane will remain unchanged.
20168
20169 @item coordinates
20170 Flag which specifies the pixel to refer to.
20171 Range is @code{[0, 255]} and default value is @code{255}, i.e. all eight pixels are used.
20172
20173 Flags to local 3x3 coordinates region centered on @code{x}:
20174
20175     1 2 3
20176
20177     4 x 5
20178
20179     6 7 8
20180 @end table
20181
20182 @subsection Example
20183
20184 @itemize
20185 @item
20186 Apply dilation filter with threshold0 set to 30, threshold1 set 40, threshold2 set to 50 and coordinates set to 231, setting each pixel of the output to the local maximum between pixels: 1, 2, 3, 6, 7, 8 of the 3x3 region centered on it in the input. If the difference between input pixel and local maximum is more then threshold of the corresponding plane, output pixel will be set to input pixel + threshold of corresponding plane.
20187 @example
20188 -i INPUT -vf "hwupload, dilation_opencl=30:40:50:coordinates=231, hwdownload" OUTPUT
20189 @end example
20190 @end itemize
20191
20192 @section erosion_opencl
20193
20194 Apply erosion effect to the video.
20195
20196 This filter replaces the pixel by the local(3x3) minimum.
20197
20198 It accepts the following options:
20199
20200 @table @option
20201 @item threshold0
20202 @item threshold1
20203 @item threshold2
20204 @item threshold3
20205 Limit the maximum change for each plane. Range is @code{[0, 65535]} and default value is @code{65535}.
20206 If @code{0}, plane will remain unchanged.
20207
20208 @item coordinates
20209 Flag which specifies the pixel to refer to.
20210 Range is @code{[0, 255]} and default value is @code{255}, i.e. all eight pixels are used.
20211
20212 Flags to local 3x3 coordinates region centered on @code{x}:
20213
20214     1 2 3
20215
20216     4 x 5
20217
20218     6 7 8
20219 @end table
20220
20221 @subsection Example
20222
20223 @itemize
20224 @item
20225 Apply erosion filter with threshold0 set to 30, threshold1 set 40, threshold2 set to 50 and coordinates set to 231, setting each pixel of the output to the local minimum between pixels: 1, 2, 3, 6, 7, 8 of the 3x3 region centered on it in the input. If the difference between input pixel and local minimum is more then threshold of the corresponding plane, output pixel will be set to input pixel - threshold of corresponding plane.
20226 @example
20227 -i INPUT -vf "hwupload, erosion_opencl=30:40:50:coordinates=231, hwdownload" OUTPUT
20228 @end example
20229 @end itemize
20230
20231 @section colorkey_opencl
20232 RGB colorspace color keying.
20233
20234 The filter accepts the following options:
20235
20236 @table @option
20237 @item color
20238 The color which will be replaced with transparency.
20239
20240 @item similarity
20241 Similarity percentage with the key color.
20242
20243 0.01 matches only the exact key color, while 1.0 matches everything.
20244
20245 @item blend
20246 Blend percentage.
20247
20248 0.0 makes pixels either fully transparent, or not transparent at all.
20249
20250 Higher values result in semi-transparent pixels, with a higher transparency
20251 the more similar the pixels color is to the key color.
20252 @end table
20253
20254 @subsection Examples
20255
20256 @itemize
20257 @item
20258 Make every semi-green pixel in the input transparent with some slight blending:
20259 @example
20260 -i INPUT -vf "hwupload, colorkey_opencl=green:0.3:0.1, hwdownload" OUTPUT
20261 @end example
20262 @end itemize
20263
20264 @section deshake_opencl
20265 Feature-point based video stabilization filter.
20266
20267 The filter accepts the following options:
20268
20269 @table @option
20270 @item tripod
20271 Simulates a tripod by preventing any camera movement whatsoever from the original frame. Defaults to @code{0}.
20272
20273 @item debug
20274 Whether or not additional debug info should be displayed, both in the processed output and in the console.
20275
20276 Note that in order to see console debug output you will also need to pass @code{-v verbose} to ffmpeg.
20277
20278 Viewing point matches in the output video is only supported for RGB input.
20279
20280 Defaults to @code{0}.
20281
20282 @item adaptive_crop
20283 Whether or not to do a tiny bit of cropping at the borders to cut down on the amount of mirrored pixels.
20284
20285 Defaults to @code{1}.
20286
20287 @item refine_features
20288 Whether or not feature points should be refined at a sub-pixel level.
20289
20290 This can be turned off for a slight performance gain at the cost of precision.
20291
20292 Defaults to @code{1}.
20293
20294 @item smooth_strength
20295 The strength of the smoothing applied to the camera path from @code{0.0} to @code{1.0}.
20296
20297 @code{1.0} is the maximum smoothing strength while values less than that result in less smoothing.
20298
20299 @code{0.0} causes the filter to adaptively choose a smoothing strength on a per-frame basis.
20300
20301 Defaults to @code{0.0}.
20302
20303 @item smooth_window_multiplier
20304 Controls the size of the smoothing window (the number of frames buffered to determine motion information from).
20305
20306 The size of the smoothing window is determined by multiplying the framerate of the video by this number.
20307
20308 Acceptable values range from @code{0.1} to @code{10.0}.
20309
20310 Larger values increase the amount of motion data available for determining how to smooth the camera path,
20311 potentially improving smoothness, but also increase latency and memory usage.
20312
20313 Defaults to @code{2.0}.
20314
20315 @end table
20316
20317 @subsection Examples
20318
20319 @itemize
20320 @item
20321 Stabilize a video with a fixed, medium smoothing strength:
20322 @example
20323 -i INPUT -vf "hwupload, deshake_opencl=smooth_strength=0.5, hwdownload" OUTPUT
20324 @end example
20325
20326 @item
20327 Stabilize a video with debugging (both in console and in rendered video):
20328 @example
20329 -i INPUT -filter_complex "[0:v]format=rgba, hwupload, deshake_opencl=debug=1, hwdownload, format=rgba, format=yuv420p" -v verbose OUTPUT
20330 @end example
20331 @end itemize
20332
20333 @section nlmeans_opencl
20334
20335 Non-local Means denoise filter through OpenCL, this filter accepts same options as @ref{nlmeans}.
20336
20337 @section overlay_opencl
20338
20339 Overlay one video on top of another.
20340
20341 It takes two inputs and has one output. The first input is the "main" video on which the second input is overlaid.
20342 This filter requires same memory layout for all the inputs. So, format conversion may be needed.
20343
20344 The filter accepts the following options:
20345
20346 @table @option
20347
20348 @item x
20349 Set the x coordinate of the overlaid video on the main video.
20350 Default value is @code{0}.
20351
20352 @item y
20353 Set the x coordinate of the overlaid video on the main video.
20354 Default value is @code{0}.
20355
20356 @end table
20357
20358 @subsection Examples
20359
20360 @itemize
20361 @item
20362 Overlay an image LOGO at the top-left corner of the INPUT video. Both inputs are yuv420p format.
20363 @example
20364 -i INPUT -i LOGO -filter_complex "[0:v]hwupload[a], [1:v]format=yuv420p, hwupload[b], [a][b]overlay_opencl, hwdownload" OUTPUT
20365 @end example
20366 @item
20367 The inputs have same memory layout for color channels , the overlay has additional alpha plane, like INPUT is yuv420p, and the LOGO is yuva420p.
20368 @example
20369 -i INPUT -i LOGO -filter_complex "[0:v]hwupload[a], [1:v]format=yuva420p, hwupload[b], [a][b]overlay_opencl, hwdownload" OUTPUT
20370 @end example
20371
20372 @end itemize
20373
20374 @section prewitt_opencl
20375
20376 Apply the Prewitt operator (@url{https://en.wikipedia.org/wiki/Prewitt_operator}) to input video stream.
20377
20378 The filter accepts the following option:
20379
20380 @table @option
20381 @item planes
20382 Set which planes to filter. Default value is @code{0xf}, by which all planes are processed.
20383
20384 @item scale
20385 Set value which will be multiplied with filtered result.
20386 Range is @code{[0.0, 65535]} and default value is @code{1.0}.
20387
20388 @item delta
20389 Set value which will be added to filtered result.
20390 Range is @code{[-65535, 65535]} and default value is @code{0.0}.
20391 @end table
20392
20393 @subsection Example
20394
20395 @itemize
20396 @item
20397 Apply the Prewitt operator with scale set to 2 and delta set to 10.
20398 @example
20399 -i INPUT -vf "hwupload, prewitt_opencl=scale=2:delta=10, hwdownload" OUTPUT
20400 @end example
20401 @end itemize
20402
20403 @section roberts_opencl
20404 Apply the Roberts cross operator (@url{https://en.wikipedia.org/wiki/Roberts_cross}) to input video stream.
20405
20406 The filter accepts the following option:
20407
20408 @table @option
20409 @item planes
20410 Set which planes to filter. Default value is @code{0xf}, by which all planes are processed.
20411
20412 @item scale
20413 Set value which will be multiplied with filtered result.
20414 Range is @code{[0.0, 65535]} and default value is @code{1.0}.
20415
20416 @item delta
20417 Set value which will be added to filtered result.
20418 Range is @code{[-65535, 65535]} and default value is @code{0.0}.
20419 @end table
20420
20421 @subsection Example
20422
20423 @itemize
20424 @item
20425 Apply the Roberts cross operator with scale set to 2 and delta set to 10
20426 @example
20427 -i INPUT -vf "hwupload, roberts_opencl=scale=2:delta=10, hwdownload" OUTPUT
20428 @end example
20429 @end itemize
20430
20431 @section sobel_opencl
20432
20433 Apply the Sobel operator (@url{https://en.wikipedia.org/wiki/Sobel_operator}) to input video stream.
20434
20435 The filter accepts the following option:
20436
20437 @table @option
20438 @item planes
20439 Set which planes to filter. Default value is @code{0xf}, by which all planes are processed.
20440
20441 @item scale
20442 Set value which will be multiplied with filtered result.
20443 Range is @code{[0.0, 65535]} and default value is @code{1.0}.
20444
20445 @item delta
20446 Set value which will be added to filtered result.
20447 Range is @code{[-65535, 65535]} and default value is @code{0.0}.
20448 @end table
20449
20450 @subsection Example
20451
20452 @itemize
20453 @item
20454 Apply sobel operator with scale set to 2 and delta set to 10
20455 @example
20456 -i INPUT -vf "hwupload, sobel_opencl=scale=2:delta=10, hwdownload" OUTPUT
20457 @end example
20458 @end itemize
20459
20460 @section tonemap_opencl
20461
20462 Perform HDR(PQ/HLG) to SDR conversion with tone-mapping.
20463
20464 It accepts the following parameters:
20465
20466 @table @option
20467 @item tonemap
20468 Specify the tone-mapping operator to be used. Same as tonemap option in @ref{tonemap}.
20469
20470 @item param
20471 Tune the tone mapping algorithm. same as param option in @ref{tonemap}.
20472
20473 @item desat
20474 Apply desaturation for highlights that exceed this level of brightness. The
20475 higher the parameter, the more color information will be preserved. This
20476 setting helps prevent unnaturally blown-out colors for super-highlights, by
20477 (smoothly) turning into white instead. This makes images feel more natural,
20478 at the cost of reducing information about out-of-range colors.
20479
20480 The default value is 0.5, and the algorithm here is a little different from
20481 the cpu version tonemap currently. A setting of 0.0 disables this option.
20482
20483 @item threshold
20484 The tonemapping algorithm parameters is fine-tuned per each scene. And a threshold
20485 is used to detect whether the scene has changed or not. If the distance between
20486 the current frame average brightness and the current running average exceeds
20487 a threshold value, we would re-calculate scene average and peak brightness.
20488 The default value is 0.2.
20489
20490 @item format
20491 Specify the output pixel format.
20492
20493 Currently supported formats are:
20494 @table @var
20495 @item p010
20496 @item nv12
20497 @end table
20498
20499 @item range, r
20500 Set the output color range.
20501
20502 Possible values are:
20503 @table @var
20504 @item tv/mpeg
20505 @item pc/jpeg
20506 @end table
20507
20508 Default is same as input.
20509
20510 @item primaries, p
20511 Set the output color primaries.
20512
20513 Possible values are:
20514 @table @var
20515 @item bt709
20516 @item bt2020
20517 @end table
20518
20519 Default is same as input.
20520
20521 @item transfer, t
20522 Set the output transfer characteristics.
20523
20524 Possible values are:
20525 @table @var
20526 @item bt709
20527 @item bt2020
20528 @end table
20529
20530 Default is bt709.
20531
20532 @item matrix, m
20533 Set the output colorspace matrix.
20534
20535 Possible value are:
20536 @table @var
20537 @item bt709
20538 @item bt2020
20539 @end table
20540
20541 Default is same as input.
20542
20543 @end table
20544
20545 @subsection Example
20546
20547 @itemize
20548 @item
20549 Convert HDR(PQ/HLG) video to bt2020-transfer-characteristic p010 format using linear operator.
20550 @example
20551 -i INPUT -vf "format=p010,hwupload,tonemap_opencl=t=bt2020:tonemap=linear:format=p010,hwdownload,format=p010" OUTPUT
20552 @end example
20553 @end itemize
20554
20555 @section unsharp_opencl
20556
20557 Sharpen or blur the input video.
20558
20559 It accepts the following parameters:
20560
20561 @table @option
20562 @item luma_msize_x, lx
20563 Set the luma matrix horizontal size.
20564 Range is @code{[1, 23]} and default value is @code{5}.
20565
20566 @item luma_msize_y, ly
20567 Set the luma matrix vertical size.
20568 Range is @code{[1, 23]} and default value is @code{5}.
20569
20570 @item luma_amount, la
20571 Set the luma effect strength.
20572 Range is @code{[-10, 10]} and default value is @code{1.0}.
20573
20574 Negative values will blur the input video, while positive values will
20575 sharpen it, a value of zero will disable the effect.
20576
20577 @item chroma_msize_x, cx
20578 Set the chroma matrix horizontal size.
20579 Range is @code{[1, 23]} and default value is @code{5}.
20580
20581 @item chroma_msize_y, cy
20582 Set the chroma matrix vertical size.
20583 Range is @code{[1, 23]} and default value is @code{5}.
20584
20585 @item chroma_amount, ca
20586 Set the chroma effect strength.
20587 Range is @code{[-10, 10]} and default value is @code{0.0}.
20588
20589 Negative values will blur the input video, while positive values will
20590 sharpen it, a value of zero will disable the effect.
20591
20592 @end table
20593
20594 All parameters are optional and default to the equivalent of the
20595 string '5:5:1.0:5:5:0.0'.
20596
20597 @subsection Examples
20598
20599 @itemize
20600 @item
20601 Apply strong luma sharpen effect:
20602 @example
20603 -i INPUT -vf "hwupload, unsharp_opencl=luma_msize_x=7:luma_msize_y=7:luma_amount=2.5, hwdownload" OUTPUT
20604 @end example
20605
20606 @item
20607 Apply a strong blur of both luma and chroma parameters:
20608 @example
20609 -i INPUT -vf "hwupload, unsharp_opencl=7:7:-2:7:7:-2, hwdownload" OUTPUT
20610 @end example
20611 @end itemize
20612
20613 @c man end OPENCL VIDEO FILTERS
20614
20615 @chapter Video Sources
20616 @c man begin VIDEO SOURCES
20617
20618 Below is a description of the currently available video sources.
20619
20620 @section buffer
20621
20622 Buffer video frames, and make them available to the filter chain.
20623
20624 This source is mainly intended for a programmatic use, in particular
20625 through the interface defined in @file{libavfilter/vsrc_buffer.h}.
20626
20627 It accepts the following parameters:
20628
20629 @table @option
20630
20631 @item video_size
20632 Specify the size (width and height) of the buffered video frames. For the
20633 syntax of this option, check the
20634 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
20635
20636 @item width
20637 The input video width.
20638
20639 @item height
20640 The input video height.
20641
20642 @item pix_fmt
20643 A string representing the pixel format of the buffered video frames.
20644 It may be a number corresponding to a pixel format, or a pixel format
20645 name.
20646
20647 @item time_base
20648 Specify the timebase assumed by the timestamps of the buffered frames.
20649
20650 @item frame_rate
20651 Specify the frame rate expected for the video stream.
20652
20653 @item pixel_aspect, sar
20654 The sample (pixel) aspect ratio of the input video.
20655
20656 @item sws_param
20657 Specify the optional parameters to be used for the scale filter which
20658 is automatically inserted when an input change is detected in the
20659 input size or format.
20660
20661 @item hw_frames_ctx
20662 When using a hardware pixel format, this should be a reference to an
20663 AVHWFramesContext describing input frames.
20664 @end table
20665
20666 For example:
20667 @example
20668 buffer=width=320:height=240:pix_fmt=yuv410p:time_base=1/24:sar=1
20669 @end example
20670
20671 will instruct the source to accept video frames with size 320x240 and
20672 with format "yuv410p", assuming 1/24 as the timestamps timebase and
20673 square pixels (1:1 sample aspect ratio).
20674 Since the pixel format with name "yuv410p" corresponds to the number 6
20675 (check the enum AVPixelFormat definition in @file{libavutil/pixfmt.h}),
20676 this example corresponds to:
20677 @example
20678 buffer=size=320x240:pixfmt=6:time_base=1/24:pixel_aspect=1/1
20679 @end example
20680
20681 Alternatively, the options can be specified as a flat string, but this
20682 syntax is deprecated:
20683
20684 @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}]
20685
20686 @section cellauto
20687
20688 Create a pattern generated by an elementary cellular automaton.
20689
20690 The initial state of the cellular automaton can be defined through the
20691 @option{filename} and @option{pattern} options. If such options are
20692 not specified an initial state is created randomly.
20693
20694 At each new frame a new row in the video is filled with the result of
20695 the cellular automaton next generation. The behavior when the whole
20696 frame is filled is defined by the @option{scroll} option.
20697
20698 This source accepts the following options:
20699
20700 @table @option
20701 @item filename, f
20702 Read the initial cellular automaton state, i.e. the starting row, from
20703 the specified file.
20704 In the file, each non-whitespace character is considered an alive
20705 cell, a newline will terminate the row, and further characters in the
20706 file will be ignored.
20707
20708 @item pattern, p
20709 Read the initial cellular automaton state, i.e. the starting row, from
20710 the specified string.
20711
20712 Each non-whitespace character in the string is considered an alive
20713 cell, a newline will terminate the row, and further characters in the
20714 string will be ignored.
20715
20716 @item rate, r
20717 Set the video rate, that is the number of frames generated per second.
20718 Default is 25.
20719
20720 @item random_fill_ratio, ratio
20721 Set the random fill ratio for the initial cellular automaton row. It
20722 is a floating point number value ranging from 0 to 1, defaults to
20723 1/PHI.
20724
20725 This option is ignored when a file or a pattern is specified.
20726
20727 @item random_seed, seed
20728 Set the seed for filling randomly the initial row, must be an integer
20729 included between 0 and UINT32_MAX. If not specified, or if explicitly
20730 set to -1, the filter will try to use a good random seed on a best
20731 effort basis.
20732
20733 @item rule
20734 Set the cellular automaton rule, it is a number ranging from 0 to 255.
20735 Default value is 110.
20736
20737 @item size, s
20738 Set the size of the output video. For the syntax of this option, check the
20739 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
20740
20741 If @option{filename} or @option{pattern} is specified, the size is set
20742 by default to the width of the specified initial state row, and the
20743 height is set to @var{width} * PHI.
20744
20745 If @option{size} is set, it must contain the width of the specified
20746 pattern string, and the specified pattern will be centered in the
20747 larger row.
20748
20749 If a filename or a pattern string is not specified, the size value
20750 defaults to "320x518" (used for a randomly generated initial state).
20751
20752 @item scroll
20753 If set to 1, scroll the output upward when all the rows in the output
20754 have been already filled. If set to 0, the new generated row will be
20755 written over the top row just after the bottom row is filled.
20756 Defaults to 1.
20757
20758 @item start_full, full
20759 If set to 1, completely fill the output with generated rows before
20760 outputting the first frame.
20761 This is the default behavior, for disabling set the value to 0.
20762
20763 @item stitch
20764 If set to 1, stitch the left and right row edges together.
20765 This is the default behavior, for disabling set the value to 0.
20766 @end table
20767
20768 @subsection Examples
20769
20770 @itemize
20771 @item
20772 Read the initial state from @file{pattern}, and specify an output of
20773 size 200x400.
20774 @example
20775 cellauto=f=pattern:s=200x400
20776 @end example
20777
20778 @item
20779 Generate a random initial row with a width of 200 cells, with a fill
20780 ratio of 2/3:
20781 @example
20782 cellauto=ratio=2/3:s=200x200
20783 @end example
20784
20785 @item
20786 Create a pattern generated by rule 18 starting by a single alive cell
20787 centered on an initial row with width 100:
20788 @example
20789 cellauto=p=@@:s=100x400:full=0:rule=18
20790 @end example
20791
20792 @item
20793 Specify a more elaborated initial pattern:
20794 @example
20795 cellauto=p='@@@@ @@ @@@@':s=100x400:full=0:rule=18
20796 @end example
20797
20798 @end itemize
20799
20800 @anchor{coreimagesrc}
20801 @section coreimagesrc
20802 Video source generated on GPU using Apple's CoreImage API on OSX.
20803
20804 This video source is a specialized version of the @ref{coreimage} video filter.
20805 Use a core image generator at the beginning of the applied filterchain to
20806 generate the content.
20807
20808 The coreimagesrc video source accepts the following options:
20809 @table @option
20810 @item list_generators
20811 List all available generators along with all their respective options as well as
20812 possible minimum and maximum values along with the default values.
20813 @example
20814 list_generators=true
20815 @end example
20816
20817 @item size, s
20818 Specify the size of the sourced video. For the syntax of this option, check the
20819 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
20820 The default value is @code{320x240}.
20821
20822 @item rate, r
20823 Specify the frame rate of the sourced video, as the number of frames
20824 generated per second. It has to be a string in the format
20825 @var{frame_rate_num}/@var{frame_rate_den}, an integer number, a floating point
20826 number or a valid video frame rate abbreviation. The default value is
20827 "25".
20828
20829 @item sar
20830 Set the sample aspect ratio of the sourced video.
20831
20832 @item duration, d
20833 Set the duration of the sourced video. See
20834 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
20835 for the accepted syntax.
20836
20837 If not specified, or the expressed duration is negative, the video is
20838 supposed to be generated forever.
20839 @end table
20840
20841 Additionally, all options of the @ref{coreimage} video filter are accepted.
20842 A complete filterchain can be used for further processing of the
20843 generated input without CPU-HOST transfer. See @ref{coreimage} documentation
20844 and examples for details.
20845
20846 @subsection Examples
20847
20848 @itemize
20849
20850 @item
20851 Use CIQRCodeGenerator to create a QR code for the FFmpeg homepage,
20852 given as complete and escaped command-line for Apple's standard bash shell:
20853 @example
20854 ffmpeg -f lavfi -i coreimagesrc=s=100x100:filter=CIQRCodeGenerator@@inputMessage=https\\\\\://FFmpeg.org/@@inputCorrectionLevel=H -frames:v 1 QRCode.png
20855 @end example
20856 This example is equivalent to the QRCode example of @ref{coreimage} without the
20857 need for a nullsrc video source.
20858 @end itemize
20859
20860
20861 @section mandelbrot
20862
20863 Generate a Mandelbrot set fractal, and progressively zoom towards the
20864 point specified with @var{start_x} and @var{start_y}.
20865
20866 This source accepts the following options:
20867
20868 @table @option
20869
20870 @item end_pts
20871 Set the terminal pts value. Default value is 400.
20872
20873 @item end_scale
20874 Set the terminal scale value.
20875 Must be a floating point value. Default value is 0.3.
20876
20877 @item inner
20878 Set the inner coloring mode, that is the algorithm used to draw the
20879 Mandelbrot fractal internal region.
20880
20881 It shall assume one of the following values:
20882 @table @option
20883 @item black
20884 Set black mode.
20885 @item convergence
20886 Show time until convergence.
20887 @item mincol
20888 Set color based on point closest to the origin of the iterations.
20889 @item period
20890 Set period mode.
20891 @end table
20892
20893 Default value is @var{mincol}.
20894
20895 @item bailout
20896 Set the bailout value. Default value is 10.0.
20897
20898 @item maxiter
20899 Set the maximum of iterations performed by the rendering
20900 algorithm. Default value is 7189.
20901
20902 @item outer
20903 Set outer coloring mode.
20904 It shall assume one of following values:
20905 @table @option
20906 @item iteration_count
20907 Set iteration count mode.
20908 @item normalized_iteration_count
20909 set normalized iteration count mode.
20910 @end table
20911 Default value is @var{normalized_iteration_count}.
20912
20913 @item rate, r
20914 Set frame rate, expressed as number of frames per second. Default
20915 value is "25".
20916
20917 @item size, s
20918 Set frame size. For the syntax of this option, check the @ref{video size syntax,,"Video
20919 size" section in the ffmpeg-utils manual,ffmpeg-utils}. Default value is "640x480".
20920
20921 @item start_scale
20922 Set the initial scale value. Default value is 3.0.
20923
20924 @item start_x
20925 Set the initial x position. Must be a floating point value between
20926 -100 and 100. Default value is -0.743643887037158704752191506114774.
20927
20928 @item start_y
20929 Set the initial y position. Must be a floating point value between
20930 -100 and 100. Default value is -0.131825904205311970493132056385139.
20931 @end table
20932
20933 @section mptestsrc
20934
20935 Generate various test patterns, as generated by the MPlayer test filter.
20936
20937 The size of the generated video is fixed, and is 256x256.
20938 This source is useful in particular for testing encoding features.
20939
20940 This source accepts the following options:
20941
20942 @table @option
20943
20944 @item rate, r
20945 Specify the frame rate of the sourced video, as the number of frames
20946 generated per second. It has to be a string in the format
20947 @var{frame_rate_num}/@var{frame_rate_den}, an integer number, a floating point
20948 number or a valid video frame rate abbreviation. The default value is
20949 "25".
20950
20951 @item duration, d
20952 Set the duration of the sourced video. See
20953 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
20954 for the accepted syntax.
20955
20956 If not specified, or the expressed duration is negative, the video is
20957 supposed to be generated forever.
20958
20959 @item test, t
20960
20961 Set the number or the name of the test to perform. Supported tests are:
20962 @table @option
20963 @item dc_luma
20964 @item dc_chroma
20965 @item freq_luma
20966 @item freq_chroma
20967 @item amp_luma
20968 @item amp_chroma
20969 @item cbp
20970 @item mv
20971 @item ring1
20972 @item ring2
20973 @item all
20974
20975 @item max_frames, m
20976 Set the maximum number of frames generated for each test, default value is 30.
20977
20978 @end table
20979
20980 Default value is "all", which will cycle through the list of all tests.
20981 @end table
20982
20983 Some examples:
20984 @example
20985 mptestsrc=t=dc_luma
20986 @end example
20987
20988 will generate a "dc_luma" test pattern.
20989
20990 @section frei0r_src
20991
20992 Provide a frei0r source.
20993
20994 To enable compilation of this filter you need to install the frei0r
20995 header and configure FFmpeg with @code{--enable-frei0r}.
20996
20997 This source accepts the following parameters:
20998
20999 @table @option
21000
21001 @item size
21002 The size of the video to generate. For the syntax of this option, check the
21003 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
21004
21005 @item framerate
21006 The framerate of the generated video. It may be a string of the form
21007 @var{num}/@var{den} or a frame rate abbreviation.
21008
21009 @item filter_name
21010 The name to the frei0r source to load. For more information regarding frei0r and
21011 how to set the parameters, read the @ref{frei0r} section in the video filters
21012 documentation.
21013
21014 @item filter_params
21015 A '|'-separated list of parameters to pass to the frei0r source.
21016
21017 @end table
21018
21019 For example, to generate a frei0r partik0l source with size 200x200
21020 and frame rate 10 which is overlaid on the overlay filter main input:
21021 @example
21022 frei0r_src=size=200x200:framerate=10:filter_name=partik0l:filter_params=1234 [overlay]; [in][overlay] overlay
21023 @end example
21024
21025 @section life
21026
21027 Generate a life pattern.
21028
21029 This source is based on a generalization of John Conway's life game.
21030
21031 The sourced input represents a life grid, each pixel represents a cell
21032 which can be in one of two possible states, alive or dead. Every cell
21033 interacts with its eight neighbours, which are the cells that are
21034 horizontally, vertically, or diagonally adjacent.
21035
21036 At each interaction the grid evolves according to the adopted rule,
21037 which specifies the number of neighbor alive cells which will make a
21038 cell stay alive or born. The @option{rule} option allows one to specify
21039 the rule to adopt.
21040
21041 This source accepts the following options:
21042
21043 @table @option
21044 @item filename, f
21045 Set the file from which to read the initial grid state. In the file,
21046 each non-whitespace character is considered an alive cell, and newline
21047 is used to delimit the end of each row.
21048
21049 If this option is not specified, the initial grid is generated
21050 randomly.
21051
21052 @item rate, r
21053 Set the video rate, that is the number of frames generated per second.
21054 Default is 25.
21055
21056 @item random_fill_ratio, ratio
21057 Set the random fill ratio for the initial random grid. It is a
21058 floating point number value ranging from 0 to 1, defaults to 1/PHI.
21059 It is ignored when a file is specified.
21060
21061 @item random_seed, seed
21062 Set the seed for filling the initial random grid, must be an integer
21063 included between 0 and UINT32_MAX. If not specified, or if explicitly
21064 set to -1, the filter will try to use a good random seed on a best
21065 effort basis.
21066
21067 @item rule
21068 Set the life rule.
21069
21070 A rule can be specified with a code of the kind "S@var{NS}/B@var{NB}",
21071 where @var{NS} and @var{NB} are sequences of numbers in the range 0-8,
21072 @var{NS} specifies the number of alive neighbor cells which make a
21073 live cell stay alive, and @var{NB} the number of alive neighbor cells
21074 which make a dead cell to become alive (i.e. to "born").
21075 "s" and "b" can be used in place of "S" and "B", respectively.
21076
21077 Alternatively a rule can be specified by an 18-bits integer. The 9
21078 high order bits are used to encode the next cell state if it is alive
21079 for each number of neighbor alive cells, the low order bits specify
21080 the rule for "borning" new cells. Higher order bits encode for an
21081 higher number of neighbor cells.
21082 For example the number 6153 = @code{(12<<9)+9} specifies a stay alive
21083 rule of 12 and a born rule of 9, which corresponds to "S23/B03".
21084
21085 Default value is "S23/B3", which is the original Conway's game of life
21086 rule, and will keep a cell alive if it has 2 or 3 neighbor alive
21087 cells, and will born a new cell if there are three alive cells around
21088 a dead cell.
21089
21090 @item size, s
21091 Set the size of the output video. For the syntax of this option, check the
21092 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
21093
21094 If @option{filename} is specified, the size is set by default to the
21095 same size of the input file. If @option{size} is set, it must contain
21096 the size specified in the input file, and the initial grid defined in
21097 that file is centered in the larger resulting area.
21098
21099 If a filename is not specified, the size value defaults to "320x240"
21100 (used for a randomly generated initial grid).
21101
21102 @item stitch
21103 If set to 1, stitch the left and right grid edges together, and the
21104 top and bottom edges also. Defaults to 1.
21105
21106 @item mold
21107 Set cell mold speed. If set, a dead cell will go from @option{death_color} to
21108 @option{mold_color} with a step of @option{mold}. @option{mold} can have a
21109 value from 0 to 255.
21110
21111 @item life_color
21112 Set the color of living (or new born) cells.
21113
21114 @item death_color
21115 Set the color of dead cells. If @option{mold} is set, this is the first color
21116 used to represent a dead cell.
21117
21118 @item mold_color
21119 Set mold color, for definitely dead and moldy cells.
21120
21121 For the syntax of these 3 color options, check the @ref{color syntax,,"Color" section in the
21122 ffmpeg-utils manual,ffmpeg-utils}.
21123 @end table
21124
21125 @subsection Examples
21126
21127 @itemize
21128 @item
21129 Read a grid from @file{pattern}, and center it on a grid of size
21130 300x300 pixels:
21131 @example
21132 life=f=pattern:s=300x300
21133 @end example
21134
21135 @item
21136 Generate a random grid of size 200x200, with a fill ratio of 2/3:
21137 @example
21138 life=ratio=2/3:s=200x200
21139 @end example
21140
21141 @item
21142 Specify a custom rule for evolving a randomly generated grid:
21143 @example
21144 life=rule=S14/B34
21145 @end example
21146
21147 @item
21148 Full example with slow death effect (mold) using @command{ffplay}:
21149 @example
21150 ffplay -f lavfi life=s=300x200:mold=10:r=60:ratio=0.1:death_color=#C83232:life_color=#00ff00,scale=1200:800:flags=16
21151 @end example
21152 @end itemize
21153
21154 @anchor{allrgb}
21155 @anchor{allyuv}
21156 @anchor{color}
21157 @anchor{haldclutsrc}
21158 @anchor{nullsrc}
21159 @anchor{pal75bars}
21160 @anchor{pal100bars}
21161 @anchor{rgbtestsrc}
21162 @anchor{smptebars}
21163 @anchor{smptehdbars}
21164 @anchor{testsrc}
21165 @anchor{testsrc2}
21166 @anchor{yuvtestsrc}
21167 @section allrgb, allyuv, color, haldclutsrc, nullsrc, pal75bars, pal100bars, rgbtestsrc, smptebars, smptehdbars, testsrc, testsrc2, yuvtestsrc
21168
21169 The @code{allrgb} source returns frames of size 4096x4096 of all rgb colors.
21170
21171 The @code{allyuv} source returns frames of size 4096x4096 of all yuv colors.
21172
21173 The @code{color} source provides an uniformly colored input.
21174
21175 The @code{haldclutsrc} source provides an identity Hald CLUT. See also
21176 @ref{haldclut} filter.
21177
21178 The @code{nullsrc} source returns unprocessed video frames. It is
21179 mainly useful to be employed in analysis / debugging tools, or as the
21180 source for filters which ignore the input data.
21181
21182 The @code{pal75bars} source generates a color bars pattern, based on
21183 EBU PAL recommendations with 75% color levels.
21184
21185 The @code{pal100bars} source generates a color bars pattern, based on
21186 EBU PAL recommendations with 100% color levels.
21187
21188 The @code{rgbtestsrc} source generates an RGB test pattern useful for
21189 detecting RGB vs BGR issues. You should see a red, green and blue
21190 stripe from top to bottom.
21191
21192 The @code{smptebars} source generates a color bars pattern, based on
21193 the SMPTE Engineering Guideline EG 1-1990.
21194
21195 The @code{smptehdbars} source generates a color bars pattern, based on
21196 the SMPTE RP 219-2002.
21197
21198 The @code{testsrc} source generates a test video pattern, showing a
21199 color pattern, a scrolling gradient and a timestamp. This is mainly
21200 intended for testing purposes.
21201
21202 The @code{testsrc2} source is similar to testsrc, but supports more
21203 pixel formats instead of just @code{rgb24}. This allows using it as an
21204 input for other tests without requiring a format conversion.
21205
21206 The @code{yuvtestsrc} source generates an YUV test pattern. You should
21207 see a y, cb and cr stripe from top to bottom.
21208
21209 The sources accept the following parameters:
21210
21211 @table @option
21212
21213 @item level
21214 Specify the level of the Hald CLUT, only available in the @code{haldclutsrc}
21215 source. A level of @code{N} generates a picture of @code{N*N*N} by @code{N*N*N}
21216 pixels to be used as identity matrix for 3D lookup tables. Each component is
21217 coded on a @code{1/(N*N)} scale.
21218
21219 @item color, c
21220 Specify the color of the source, only available in the @code{color}
21221 source. For the syntax of this option, check the
21222 @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
21223
21224 @item size, s
21225 Specify the size of the sourced video. For the syntax of this option, check the
21226 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
21227 The default value is @code{320x240}.
21228
21229 This option is not available with the @code{allrgb}, @code{allyuv}, and
21230 @code{haldclutsrc} filters.
21231
21232 @item rate, r
21233 Specify the frame rate of the sourced video, as the number of frames
21234 generated per second. It has to be a string in the format
21235 @var{frame_rate_num}/@var{frame_rate_den}, an integer number, a floating point
21236 number or a valid video frame rate abbreviation. The default value is
21237 "25".
21238
21239 @item duration, d
21240 Set the duration of the sourced video. See
21241 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
21242 for the accepted syntax.
21243
21244 If not specified, or the expressed duration is negative, the video is
21245 supposed to be generated forever.
21246
21247 @item sar
21248 Set the sample aspect ratio of the sourced video.
21249
21250 @item alpha
21251 Specify the alpha (opacity) of the background, only available in the
21252 @code{testsrc2} source. The value must be between 0 (fully transparent) and
21253 255 (fully opaque, the default).
21254
21255 @item decimals, n
21256 Set the number of decimals to show in the timestamp, only available in the
21257 @code{testsrc} source.
21258
21259 The displayed timestamp value will correspond to the original
21260 timestamp value multiplied by the power of 10 of the specified
21261 value. Default value is 0.
21262 @end table
21263
21264 @subsection Examples
21265
21266 @itemize
21267 @item
21268 Generate a video with a duration of 5.3 seconds, with size
21269 176x144 and a frame rate of 10 frames per second:
21270 @example
21271 testsrc=duration=5.3:size=qcif:rate=10
21272 @end example
21273
21274 @item
21275 The following graph description will generate a red source
21276 with an opacity of 0.2, with size "qcif" and a frame rate of 10
21277 frames per second:
21278 @example
21279 color=c=red@@0.2:s=qcif:r=10
21280 @end example
21281
21282 @item
21283 If the input content is to be ignored, @code{nullsrc} can be used. The
21284 following command generates noise in the luminance plane by employing
21285 the @code{geq} filter:
21286 @example
21287 nullsrc=s=256x256, geq=random(1)*255:128:128
21288 @end example
21289 @end itemize
21290
21291 @subsection Commands
21292
21293 The @code{color} source supports the following commands:
21294
21295 @table @option
21296 @item c, color
21297 Set the color of the created image. Accepts the same syntax of the
21298 corresponding @option{color} option.
21299 @end table
21300
21301 @section openclsrc
21302
21303 Generate video using an OpenCL program.
21304
21305 @table @option
21306
21307 @item source
21308 OpenCL program source file.
21309
21310 @item kernel
21311 Kernel name in program.
21312
21313 @item size, s
21314 Size of frames to generate.  This must be set.
21315
21316 @item format
21317 Pixel format to use for the generated frames.  This must be set.
21318
21319 @item rate, r
21320 Number of frames generated every second.  Default value is '25'.
21321
21322 @end table
21323
21324 For details of how the program loading works, see the @ref{program_opencl}
21325 filter.
21326
21327 Example programs:
21328
21329 @itemize
21330 @item
21331 Generate a colour ramp by setting pixel values from the position of the pixel
21332 in the output image.  (Note that this will work with all pixel formats, but
21333 the generated output will not be the same.)
21334 @verbatim
21335 __kernel void ramp(__write_only image2d_t dst,
21336                    unsigned int index)
21337 {
21338     int2 loc = (int2)(get_global_id(0), get_global_id(1));
21339
21340     float4 val;
21341     val.xy = val.zw = convert_float2(loc) / convert_float2(get_image_dim(dst));
21342
21343     write_imagef(dst, loc, val);
21344 }
21345 @end verbatim
21346
21347 @item
21348 Generate a Sierpinski carpet pattern, panning by a single pixel each frame.
21349 @verbatim
21350 __kernel void sierpinski_carpet(__write_only image2d_t dst,
21351                                 unsigned int index)
21352 {
21353     int2 loc = (int2)(get_global_id(0), get_global_id(1));
21354
21355     float4 value = 0.0f;
21356     int x = loc.x + index;
21357     int y = loc.y + index;
21358     while (x > 0 || y > 0) {
21359         if (x % 3 == 1 && y % 3 == 1) {
21360             value = 1.0f;
21361             break;
21362         }
21363         x /= 3;
21364         y /= 3;
21365     }
21366
21367     write_imagef(dst, loc, value);
21368 }
21369 @end verbatim
21370
21371 @end itemize
21372
21373 @section sierpinski
21374
21375 Generate a Sierpinski carpet/triangle fractal, and randomly pan around.
21376
21377 This source accepts the following options:
21378
21379 @table @option
21380 @item size, s
21381 Set frame size. For the syntax of this option, check the @ref{video size syntax,,"Video
21382 size" section in the ffmpeg-utils manual,ffmpeg-utils}. Default value is "640x480".
21383
21384 @item rate, r
21385 Set frame rate, expressed as number of frames per second. Default
21386 value is "25".
21387
21388 @item seed
21389 Set seed which is used for random panning.
21390
21391 @item jump
21392 Set max jump for single pan destination. Allowed range is from 1 to 10000.
21393
21394 @item type
21395 Set fractal type, can be default @code{carpet} or @code{triangle}.
21396 @end table
21397
21398 @c man end VIDEO SOURCES
21399
21400 @chapter Video Sinks
21401 @c man begin VIDEO SINKS
21402
21403 Below is a description of the currently available video sinks.
21404
21405 @section buffersink
21406
21407 Buffer video frames, and make them available to the end of the filter
21408 graph.
21409
21410 This sink is mainly intended for programmatic use, in particular
21411 through the interface defined in @file{libavfilter/buffersink.h}
21412 or the options system.
21413
21414 It accepts a pointer to an AVBufferSinkContext structure, which
21415 defines the incoming buffers' formats, to be passed as the opaque
21416 parameter to @code{avfilter_init_filter} for initialization.
21417
21418 @section nullsink
21419
21420 Null video sink: do absolutely nothing with the input video. It is
21421 mainly useful as a template and for use in analysis / debugging
21422 tools.
21423
21424 @c man end VIDEO SINKS
21425
21426 @chapter Multimedia Filters
21427 @c man begin MULTIMEDIA FILTERS
21428
21429 Below is a description of the currently available multimedia filters.
21430
21431 @section abitscope
21432
21433 Convert input audio to a video output, displaying the audio bit scope.
21434
21435 The filter accepts the following options:
21436
21437 @table @option
21438 @item rate, r
21439 Set frame rate, expressed as number of frames per second. Default
21440 value is "25".
21441
21442 @item size, s
21443 Specify the video size for the output. For the syntax of this option, check the
21444 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
21445 Default value is @code{1024x256}.
21446
21447 @item colors
21448 Specify list of colors separated by space or by '|' which will be used to
21449 draw channels. Unrecognized or missing colors will be replaced
21450 by white color.
21451 @end table
21452
21453 @section ahistogram
21454
21455 Convert input audio to a video output, displaying the volume histogram.
21456
21457 The filter accepts the following options:
21458
21459 @table @option
21460 @item dmode
21461 Specify how histogram is calculated.
21462
21463 It accepts the following values:
21464 @table @samp
21465 @item single
21466 Use single histogram for all channels.
21467 @item separate
21468 Use separate histogram for each channel.
21469 @end table
21470 Default is @code{single}.
21471
21472 @item rate, r
21473 Set frame rate, expressed as number of frames per second. Default
21474 value is "25".
21475
21476 @item size, s
21477 Specify the video size for the output. For the syntax of this option, check the
21478 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
21479 Default value is @code{hd720}.
21480
21481 @item scale
21482 Set display scale.
21483
21484 It accepts the following values:
21485 @table @samp
21486 @item log
21487 logarithmic
21488 @item sqrt
21489 square root
21490 @item cbrt
21491 cubic root
21492 @item lin
21493 linear
21494 @item rlog
21495 reverse logarithmic
21496 @end table
21497 Default is @code{log}.
21498
21499 @item ascale
21500 Set amplitude scale.
21501
21502 It accepts the following values:
21503 @table @samp
21504 @item log
21505 logarithmic
21506 @item lin
21507 linear
21508 @end table
21509 Default is @code{log}.
21510
21511 @item acount
21512 Set how much frames to accumulate in histogram.
21513 Default is 1. Setting this to -1 accumulates all frames.
21514
21515 @item rheight
21516 Set histogram ratio of window height.
21517
21518 @item slide
21519 Set sonogram sliding.
21520
21521 It accepts the following values:
21522 @table @samp
21523 @item replace
21524 replace old rows with new ones.
21525 @item scroll
21526 scroll from top to bottom.
21527 @end table
21528 Default is @code{replace}.
21529 @end table
21530
21531 @section aphasemeter
21532
21533 Measures phase of input audio, which is exported as metadata @code{lavfi.aphasemeter.phase},
21534 representing mean phase of current audio frame. A video output can also be produced and is
21535 enabled by default. The audio is passed through as first output.
21536
21537 Audio will be rematrixed to stereo if it has a different channel layout. Phase value is in
21538 range @code{[-1, 1]} where @code{-1} means left and right channels are completely out of phase
21539 and @code{1} means channels are in phase.
21540
21541 The filter accepts the following options, all related to its video output:
21542
21543 @table @option
21544 @item rate, r
21545 Set the output frame rate. Default value is @code{25}.
21546
21547 @item size, s
21548 Set the video size for the output. For the syntax of this option, check the
21549 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
21550 Default value is @code{800x400}.
21551
21552 @item rc
21553 @item gc
21554 @item bc
21555 Specify the red, green, blue contrast. Default values are @code{2},
21556 @code{7} and @code{1}.
21557 Allowed range is @code{[0, 255]}.
21558
21559 @item mpc
21560 Set color which will be used for drawing median phase. If color is
21561 @code{none} which is default, no median phase value will be drawn.
21562
21563 @item video
21564 Enable video output. Default is enabled.
21565 @end table
21566
21567 @section avectorscope
21568
21569 Convert input audio to a video output, representing the audio vector
21570 scope.
21571
21572 The filter is used to measure the difference between channels of stereo
21573 audio stream. A monaural signal, consisting of identical left and right
21574 signal, results in straight vertical line. Any stereo separation is visible
21575 as a deviation from this line, creating a Lissajous figure.
21576 If the straight (or deviation from it) but horizontal line appears this
21577 indicates that the left and right channels are out of phase.
21578
21579 The filter accepts the following options:
21580
21581 @table @option
21582 @item mode, m
21583 Set the vectorscope mode.
21584
21585 Available values are:
21586 @table @samp
21587 @item lissajous
21588 Lissajous rotated by 45 degrees.
21589
21590 @item lissajous_xy
21591 Same as above but not rotated.
21592
21593 @item polar
21594 Shape resembling half of circle.
21595 @end table
21596
21597 Default value is @samp{lissajous}.
21598
21599 @item size, s
21600 Set the video size for the output. For the syntax of this option, check the
21601 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
21602 Default value is @code{400x400}.
21603
21604 @item rate, r
21605 Set the output frame rate. Default value is @code{25}.
21606
21607 @item rc
21608 @item gc
21609 @item bc
21610 @item ac
21611 Specify the red, green, blue and alpha contrast. Default values are @code{40},
21612 @code{160}, @code{80} and @code{255}.
21613 Allowed range is @code{[0, 255]}.
21614
21615 @item rf
21616 @item gf
21617 @item bf
21618 @item af
21619 Specify the red, green, blue and alpha fade. Default values are @code{15},
21620 @code{10}, @code{5} and @code{5}.
21621 Allowed range is @code{[0, 255]}.
21622
21623 @item zoom
21624 Set the zoom factor. Default value is @code{1}. Allowed range is @code{[0, 10]}.
21625 Values lower than @var{1} will auto adjust zoom factor to maximal possible value.
21626
21627 @item draw
21628 Set the vectorscope drawing mode.
21629
21630 Available values are:
21631 @table @samp
21632 @item dot
21633 Draw dot for each sample.
21634
21635 @item line
21636 Draw line between previous and current sample.
21637 @end table
21638
21639 Default value is @samp{dot}.
21640
21641 @item scale
21642 Specify amplitude scale of audio samples.
21643
21644 Available values are:
21645 @table @samp
21646 @item lin
21647 Linear.
21648
21649 @item sqrt
21650 Square root.
21651
21652 @item cbrt
21653 Cubic root.
21654
21655 @item log
21656 Logarithmic.
21657 @end table
21658
21659 @item swap
21660 Swap left channel axis with right channel axis.
21661
21662 @item mirror
21663 Mirror axis.
21664
21665 @table @samp
21666 @item none
21667 No mirror.
21668
21669 @item x
21670 Mirror only x axis.
21671
21672 @item y
21673 Mirror only y axis.
21674
21675 @item xy
21676 Mirror both axis.
21677 @end table
21678
21679 @end table
21680
21681 @subsection Examples
21682
21683 @itemize
21684 @item
21685 Complete example using @command{ffplay}:
21686 @example
21687 ffplay -f lavfi 'amovie=input.mp3, asplit [a][out1];
21688              [a] avectorscope=zoom=1.3:rc=2:gc=200:bc=10:rf=1:gf=8:bf=7 [out0]'
21689 @end example
21690 @end itemize
21691
21692 @section bench, abench
21693
21694 Benchmark part of a filtergraph.
21695
21696 The filter accepts the following options:
21697
21698 @table @option
21699 @item action
21700 Start or stop a timer.
21701
21702 Available values are:
21703 @table @samp
21704 @item start
21705 Get the current time, set it as frame metadata (using the key
21706 @code{lavfi.bench.start_time}), and forward the frame to the next filter.
21707
21708 @item stop
21709 Get the current time and fetch the @code{lavfi.bench.start_time} metadata from
21710 the input frame metadata to get the time difference. Time difference, average,
21711 maximum and minimum time (respectively @code{t}, @code{avg}, @code{max} and
21712 @code{min}) are then printed. The timestamps are expressed in seconds.
21713 @end table
21714 @end table
21715
21716 @subsection Examples
21717
21718 @itemize
21719 @item
21720 Benchmark @ref{selectivecolor} filter:
21721 @example
21722 bench=start,selectivecolor=reds=-.2 .12 -.49,bench=stop
21723 @end example
21724 @end itemize
21725
21726 @section concat
21727
21728 Concatenate audio and video streams, joining them together one after the
21729 other.
21730
21731 The filter works on segments of synchronized video and audio streams. All
21732 segments must have the same number of streams of each type, and that will
21733 also be the number of streams at output.
21734
21735 The filter accepts the following options:
21736
21737 @table @option
21738
21739 @item n
21740 Set the number of segments. Default is 2.
21741
21742 @item v
21743 Set the number of output video streams, that is also the number of video
21744 streams in each segment. Default is 1.
21745
21746 @item a
21747 Set the number of output audio streams, that is also the number of audio
21748 streams in each segment. Default is 0.
21749
21750 @item unsafe
21751 Activate unsafe mode: do not fail if segments have a different format.
21752
21753 @end table
21754
21755 The filter has @var{v}+@var{a} outputs: first @var{v} video outputs, then
21756 @var{a} audio outputs.
21757
21758 There are @var{n}x(@var{v}+@var{a}) inputs: first the inputs for the first
21759 segment, in the same order as the outputs, then the inputs for the second
21760 segment, etc.
21761
21762 Related streams do not always have exactly the same duration, for various
21763 reasons including codec frame size or sloppy authoring. For that reason,
21764 related synchronized streams (e.g. a video and its audio track) should be
21765 concatenated at once. The concat filter will use the duration of the longest
21766 stream in each segment (except the last one), and if necessary pad shorter
21767 audio streams with silence.
21768
21769 For this filter to work correctly, all segments must start at timestamp 0.
21770
21771 All corresponding streams must have the same parameters in all segments; the
21772 filtering system will automatically select a common pixel format for video
21773 streams, and a common sample format, sample rate and channel layout for
21774 audio streams, but other settings, such as resolution, must be converted
21775 explicitly by the user.
21776
21777 Different frame rates are acceptable but will result in variable frame rate
21778 at output; be sure to configure the output file to handle it.
21779
21780 @subsection Examples
21781
21782 @itemize
21783 @item
21784 Concatenate an opening, an episode and an ending, all in bilingual version
21785 (video in stream 0, audio in streams 1 and 2):
21786 @example
21787 ffmpeg -i opening.mkv -i episode.mkv -i ending.mkv -filter_complex \
21788   '[0:0] [0:1] [0:2] [1:0] [1:1] [1:2] [2:0] [2:1] [2:2]
21789    concat=n=3:v=1:a=2 [v] [a1] [a2]' \
21790   -map '[v]' -map '[a1]' -map '[a2]' output.mkv
21791 @end example
21792
21793 @item
21794 Concatenate two parts, handling audio and video separately, using the
21795 (a)movie sources, and adjusting the resolution:
21796 @example
21797 movie=part1.mp4, scale=512:288 [v1] ; amovie=part1.mp4 [a1] ;
21798 movie=part2.mp4, scale=512:288 [v2] ; amovie=part2.mp4 [a2] ;
21799 [v1] [v2] concat [outv] ; [a1] [a2] concat=v=0:a=1 [outa]
21800 @end example
21801 Note that a desync will happen at the stitch if the audio and video streams
21802 do not have exactly the same duration in the first file.
21803
21804 @end itemize
21805
21806 @subsection Commands
21807
21808 This filter supports the following commands:
21809 @table @option
21810 @item next
21811 Close the current segment and step to the next one
21812 @end table
21813
21814 @section drawgraph, adrawgraph
21815
21816 Draw a graph using input video or audio metadata.
21817
21818 It accepts the following parameters:
21819
21820 @table @option
21821 @item m1
21822 Set 1st frame metadata key from which metadata values will be used to draw a graph.
21823
21824 @item fg1
21825 Set 1st foreground color expression.
21826
21827 @item m2
21828 Set 2nd frame metadata key from which metadata values will be used to draw a graph.
21829
21830 @item fg2
21831 Set 2nd foreground color expression.
21832
21833 @item m3
21834 Set 3rd frame metadata key from which metadata values will be used to draw a graph.
21835
21836 @item fg3
21837 Set 3rd foreground color expression.
21838
21839 @item m4
21840 Set 4th frame metadata key from which metadata values will be used to draw a graph.
21841
21842 @item fg4
21843 Set 4th foreground color expression.
21844
21845 @item min
21846 Set minimal value of metadata value.
21847
21848 @item max
21849 Set maximal value of metadata value.
21850
21851 @item bg
21852 Set graph background color. Default is white.
21853
21854 @item mode
21855 Set graph mode.
21856
21857 Available values for mode is:
21858 @table @samp
21859 @item bar
21860 @item dot
21861 @item line
21862 @end table
21863
21864 Default is @code{line}.
21865
21866 @item slide
21867 Set slide mode.
21868
21869 Available values for slide is:
21870 @table @samp
21871 @item frame
21872 Draw new frame when right border is reached.
21873
21874 @item replace
21875 Replace old columns with new ones.
21876
21877 @item scroll
21878 Scroll from right to left.
21879
21880 @item rscroll
21881 Scroll from left to right.
21882
21883 @item picture
21884 Draw single picture.
21885 @end table
21886
21887 Default is @code{frame}.
21888
21889 @item size
21890 Set size of graph video. For the syntax of this option, check the
21891 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
21892 The default value is @code{900x256}.
21893
21894 The foreground color expressions can use the following variables:
21895 @table @option
21896 @item MIN
21897 Minimal value of metadata value.
21898
21899 @item MAX
21900 Maximal value of metadata value.
21901
21902 @item VAL
21903 Current metadata key value.
21904 @end table
21905
21906 The color is defined as 0xAABBGGRR.
21907 @end table
21908
21909 Example using metadata from @ref{signalstats} filter:
21910 @example
21911 signalstats,drawgraph=lavfi.signalstats.YAVG:min=0:max=255
21912 @end example
21913
21914 Example using metadata from @ref{ebur128} filter:
21915 @example
21916 ebur128=metadata=1,adrawgraph=lavfi.r128.M:min=-120:max=5
21917 @end example
21918
21919 @anchor{ebur128}
21920 @section ebur128
21921
21922 EBU R128 scanner filter. This filter takes an audio stream and analyzes its loudness
21923 level. By default, it logs a message at a frequency of 10Hz with the
21924 Momentary loudness (identified by @code{M}), Short-term loudness (@code{S}),
21925 Integrated loudness (@code{I}) and Loudness Range (@code{LRA}).
21926
21927 The filter can only analyze streams which have a sampling rate of 48000 Hz and whose
21928 sample format is double-precision floating point. The input stream will be converted to
21929 this specification, if needed. Users may need to insert aformat and/or aresample filters
21930 after this filter to obtain the original parameters.
21931
21932 The filter also has a video output (see the @var{video} option) with a real
21933 time graph to observe the loudness evolution. The graphic contains the logged
21934 message mentioned above, so it is not printed anymore when this option is set,
21935 unless the verbose logging is set. The main graphing area contains the
21936 short-term loudness (3 seconds of analysis), and the gauge on the right is for
21937 the momentary loudness (400 milliseconds), but can optionally be configured
21938 to instead display short-term loudness (see @var{gauge}).
21939
21940 The green area marks a  +/- 1LU target range around the target loudness
21941 (-23LUFS by default, unless modified through @var{target}).
21942
21943 More information about the Loudness Recommendation EBU R128 on
21944 @url{http://tech.ebu.ch/loudness}.
21945
21946 The filter accepts the following options:
21947
21948 @table @option
21949
21950 @item video
21951 Activate the video output. The audio stream is passed unchanged whether this
21952 option is set or no. The video stream will be the first output stream if
21953 activated. Default is @code{0}.
21954
21955 @item size
21956 Set the video size. This option is for video only. For the syntax of this
21957 option, check the
21958 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
21959 Default and minimum resolution is @code{640x480}.
21960
21961 @item meter
21962 Set the EBU scale meter. Default is @code{9}. Common values are @code{9} and
21963 @code{18}, respectively for EBU scale meter +9 and EBU scale meter +18. Any
21964 other integer value between this range is allowed.
21965
21966 @item metadata
21967 Set metadata injection. If set to @code{1}, the audio input will be segmented
21968 into 100ms output frames, each of them containing various loudness information
21969 in metadata.  All the metadata keys are prefixed with @code{lavfi.r128.}.
21970
21971 Default is @code{0}.
21972
21973 @item framelog
21974 Force the frame logging level.
21975
21976 Available values are:
21977 @table @samp
21978 @item info
21979 information logging level
21980 @item verbose
21981 verbose logging level
21982 @end table
21983
21984 By default, the logging level is set to @var{info}. If the @option{video} or
21985 the @option{metadata} options are set, it switches to @var{verbose}.
21986
21987 @item peak
21988 Set peak mode(s).
21989
21990 Available modes can be cumulated (the option is a @code{flag} type). Possible
21991 values are:
21992 @table @samp
21993 @item none
21994 Disable any peak mode (default).
21995 @item sample
21996 Enable sample-peak mode.
21997
21998 Simple peak mode looking for the higher sample value. It logs a message
21999 for sample-peak (identified by @code{SPK}).
22000 @item true
22001 Enable true-peak mode.
22002
22003 If enabled, the peak lookup is done on an over-sampled version of the input
22004 stream for better peak accuracy. It logs a message for true-peak.
22005 (identified by @code{TPK}) and true-peak per frame (identified by @code{FTPK}).
22006 This mode requires a build with @code{libswresample}.
22007 @end table
22008
22009 @item dualmono
22010 Treat mono input files as "dual mono". If a mono file is intended for playback
22011 on a stereo system, its EBU R128 measurement will be perceptually incorrect.
22012 If set to @code{true}, this option will compensate for this effect.
22013 Multi-channel input files are not affected by this option.
22014
22015 @item panlaw
22016 Set a specific pan law to be used for the measurement of dual mono files.
22017 This parameter is optional, and has a default value of -3.01dB.
22018
22019 @item target
22020 Set a specific target level (in LUFS) used as relative zero in the visualization.
22021 This parameter is optional and has a default value of -23LUFS as specified
22022 by EBU R128. However, material published online may prefer a level of -16LUFS
22023 (e.g. for use with podcasts or video platforms).
22024
22025 @item gauge
22026 Set the value displayed by the gauge. Valid values are @code{momentary} and s
22027 @code{shortterm}. By default the momentary value will be used, but in certain
22028 scenarios it may be more useful to observe the short term value instead (e.g.
22029 live mixing).
22030
22031 @item scale
22032 Sets the display scale for the loudness. Valid parameters are @code{absolute}
22033 (in LUFS) or @code{relative} (LU) relative to the target. This only affects the
22034 video output, not the summary or continuous log output.
22035 @end table
22036
22037 @subsection Examples
22038
22039 @itemize
22040 @item
22041 Real-time graph using @command{ffplay}, with a EBU scale meter +18:
22042 @example
22043 ffplay -f lavfi -i "amovie=input.mp3,ebur128=video=1:meter=18 [out0][out1]"
22044 @end example
22045
22046 @item
22047 Run an analysis with @command{ffmpeg}:
22048 @example
22049 ffmpeg -nostats -i input.mp3 -filter_complex ebur128 -f null -
22050 @end example
22051 @end itemize
22052
22053 @section interleave, ainterleave
22054
22055 Temporally interleave frames from several inputs.
22056
22057 @code{interleave} works with video inputs, @code{ainterleave} with audio.
22058
22059 These filters read frames from several inputs and send the oldest
22060 queued frame to the output.
22061
22062 Input streams must have well defined, monotonically increasing frame
22063 timestamp values.
22064
22065 In order to submit one frame to output, these filters need to enqueue
22066 at least one frame for each input, so they cannot work in case one
22067 input is not yet terminated and will not receive incoming frames.
22068
22069 For example consider the case when one input is a @code{select} filter
22070 which always drops input frames. The @code{interleave} filter will keep
22071 reading from that input, but it will never be able to send new frames
22072 to output until the input sends an end-of-stream signal.
22073
22074 Also, depending on inputs synchronization, the filters will drop
22075 frames in case one input receives more frames than the other ones, and
22076 the queue is already filled.
22077
22078 These filters accept the following options:
22079
22080 @table @option
22081 @item nb_inputs, n
22082 Set the number of different inputs, it is 2 by default.
22083 @end table
22084
22085 @subsection Examples
22086
22087 @itemize
22088 @item
22089 Interleave frames belonging to different streams using @command{ffmpeg}:
22090 @example
22091 ffmpeg -i bambi.avi -i pr0n.mkv -filter_complex "[0:v][1:v] interleave" out.avi
22092 @end example
22093
22094 @item
22095 Add flickering blur effect:
22096 @example
22097 select='if(gt(random(0), 0.2), 1, 2)':n=2 [tmp], boxblur=2:2, [tmp] interleave
22098 @end example
22099 @end itemize
22100
22101 @section metadata, ametadata
22102
22103 Manipulate frame metadata.
22104
22105 This filter accepts the following options:
22106
22107 @table @option
22108 @item mode
22109 Set mode of operation of the filter.
22110
22111 Can be one of the following:
22112
22113 @table @samp
22114 @item select
22115 If both @code{value} and @code{key} is set, select frames
22116 which have such metadata. If only @code{key} is set, select
22117 every frame that has such key in metadata.
22118
22119 @item add
22120 Add new metadata @code{key} and @code{value}. If key is already available
22121 do nothing.
22122
22123 @item modify
22124 Modify value of already present key.
22125
22126 @item delete
22127 If @code{value} is set, delete only keys that have such value.
22128 Otherwise, delete key. If @code{key} is not set, delete all metadata values in
22129 the frame.
22130
22131 @item print
22132 Print key and its value if metadata was found. If @code{key} is not set print all
22133 metadata values available in frame.
22134 @end table
22135
22136 @item key
22137 Set key used with all modes. Must be set for all modes except @code{print} and @code{delete}.
22138
22139 @item value
22140 Set metadata value which will be used. This option is mandatory for
22141 @code{modify} and @code{add} mode.
22142
22143 @item function
22144 Which function to use when comparing metadata value and @code{value}.
22145
22146 Can be one of following:
22147
22148 @table @samp
22149 @item same_str
22150 Values are interpreted as strings, returns true if metadata value is same as @code{value}.
22151
22152 @item starts_with
22153 Values are interpreted as strings, returns true if metadata value starts with
22154 the @code{value} option string.
22155
22156 @item less
22157 Values are interpreted as floats, returns true if metadata value is less than @code{value}.
22158
22159 @item equal
22160 Values are interpreted as floats, returns true if @code{value} is equal with metadata value.
22161
22162 @item greater
22163 Values are interpreted as floats, returns true if metadata value is greater than @code{value}.
22164
22165 @item expr
22166 Values are interpreted as floats, returns true if expression from option @code{expr}
22167 evaluates to true.
22168
22169 @item ends_with
22170 Values are interpreted as strings, returns true if metadata value ends with
22171 the @code{value} option string.
22172 @end table
22173
22174 @item expr
22175 Set expression which is used when @code{function} is set to @code{expr}.
22176 The expression is evaluated through the eval API and can contain the following
22177 constants:
22178
22179 @table @option
22180 @item VALUE1
22181 Float representation of @code{value} from metadata key.
22182
22183 @item VALUE2
22184 Float representation of @code{value} as supplied by user in @code{value} option.
22185 @end table
22186
22187 @item file
22188 If specified in @code{print} mode, output is written to the named file. Instead of
22189 plain filename any writable url can be specified. Filename ``-'' is a shorthand
22190 for standard output. If @code{file} option is not set, output is written to the log
22191 with AV_LOG_INFO loglevel.
22192
22193 @end table
22194
22195 @subsection Examples
22196
22197 @itemize
22198 @item
22199 Print all metadata values for frames with key @code{lavfi.signalstats.YDIF} with values
22200 between 0 and 1.
22201 @example
22202 signalstats,metadata=print:key=lavfi.signalstats.YDIF:value=0:function=expr:expr='between(VALUE1,0,1)'
22203 @end example
22204 @item
22205 Print silencedetect output to file @file{metadata.txt}.
22206 @example
22207 silencedetect,ametadata=mode=print:file=metadata.txt
22208 @end example
22209 @item
22210 Direct all metadata to a pipe with file descriptor 4.
22211 @example
22212 metadata=mode=print:file='pipe\:4'
22213 @end example
22214 @end itemize
22215
22216 @section perms, aperms
22217
22218 Set read/write permissions for the output frames.
22219
22220 These filters are mainly aimed at developers to test direct path in the
22221 following filter in the filtergraph.
22222
22223 The filters accept the following options:
22224
22225 @table @option
22226 @item mode
22227 Select the permissions mode.
22228
22229 It accepts the following values:
22230 @table @samp
22231 @item none
22232 Do nothing. This is the default.
22233 @item ro
22234 Set all the output frames read-only.
22235 @item rw
22236 Set all the output frames directly writable.
22237 @item toggle
22238 Make the frame read-only if writable, and writable if read-only.
22239 @item random
22240 Set each output frame read-only or writable randomly.
22241 @end table
22242
22243 @item seed
22244 Set the seed for the @var{random} mode, must be an integer included between
22245 @code{0} and @code{UINT32_MAX}. If not specified, or if explicitly set to
22246 @code{-1}, the filter will try to use a good random seed on a best effort
22247 basis.
22248 @end table
22249
22250 Note: in case of auto-inserted filter between the permission filter and the
22251 following one, the permission might not be received as expected in that
22252 following filter. Inserting a @ref{format} or @ref{aformat} filter before the
22253 perms/aperms filter can avoid this problem.
22254
22255 @section realtime, arealtime
22256
22257 Slow down filtering to match real time approximately.
22258
22259 These filters will pause the filtering for a variable amount of time to
22260 match the output rate with the input timestamps.
22261 They are similar to the @option{re} option to @code{ffmpeg}.
22262
22263 They accept the following options:
22264
22265 @table @option
22266 @item limit
22267 Time limit for the pauses. Any pause longer than that will be considered
22268 a timestamp discontinuity and reset the timer. Default is 2 seconds.
22269 @item speed
22270 Speed factor for processing. The value must be a float larger than zero.
22271 Values larger than 1.0 will result in faster than realtime processing,
22272 smaller will slow processing down. The @var{limit} is automatically adapted
22273 accordingly. Default is 1.0.
22274
22275 A processing speed faster than what is possible without these filters cannot
22276 be achieved.
22277 @end table
22278
22279 @anchor{select}
22280 @section select, aselect
22281
22282 Select frames to pass in output.
22283
22284 This filter accepts the following options:
22285
22286 @table @option
22287
22288 @item expr, e
22289 Set expression, which is evaluated for each input frame.
22290
22291 If the expression is evaluated to zero, the frame is discarded.
22292
22293 If the evaluation result is negative or NaN, the frame is sent to the
22294 first output; otherwise it is sent to the output with index
22295 @code{ceil(val)-1}, assuming that the input index starts from 0.
22296
22297 For example a value of @code{1.2} corresponds to the output with index
22298 @code{ceil(1.2)-1 = 2-1 = 1}, that is the second output.
22299
22300 @item outputs, n
22301 Set the number of outputs. The output to which to send the selected
22302 frame is based on the result of the evaluation. Default value is 1.
22303 @end table
22304
22305 The expression can contain the following constants:
22306
22307 @table @option
22308 @item n
22309 The (sequential) number of the filtered frame, starting from 0.
22310
22311 @item selected_n
22312 The (sequential) number of the selected frame, starting from 0.
22313
22314 @item prev_selected_n
22315 The sequential number of the last selected frame. It's NAN if undefined.
22316
22317 @item TB
22318 The timebase of the input timestamps.
22319
22320 @item pts
22321 The PTS (Presentation TimeStamp) of the filtered video frame,
22322 expressed in @var{TB} units. It's NAN if undefined.
22323
22324 @item t
22325 The PTS of the filtered video frame,
22326 expressed in seconds. It's NAN if undefined.
22327
22328 @item prev_pts
22329 The PTS of the previously filtered video frame. It's NAN if undefined.
22330
22331 @item prev_selected_pts
22332 The PTS of the last previously filtered video frame. It's NAN if undefined.
22333
22334 @item prev_selected_t
22335 The PTS of the last previously selected video frame, expressed in seconds. It's NAN if undefined.
22336
22337 @item start_pts
22338 The PTS of the first video frame in the video. It's NAN if undefined.
22339
22340 @item start_t
22341 The time of the first video frame in the video. It's NAN if undefined.
22342
22343 @item pict_type @emph{(video only)}
22344 The type of the filtered frame. It can assume one of the following
22345 values:
22346 @table @option
22347 @item I
22348 @item P
22349 @item B
22350 @item S
22351 @item SI
22352 @item SP
22353 @item BI
22354 @end table
22355
22356 @item interlace_type @emph{(video only)}
22357 The frame interlace type. It can assume one of the following values:
22358 @table @option
22359 @item PROGRESSIVE
22360 The frame is progressive (not interlaced).
22361 @item TOPFIRST
22362 The frame is top-field-first.
22363 @item BOTTOMFIRST
22364 The frame is bottom-field-first.
22365 @end table
22366
22367 @item consumed_sample_n @emph{(audio only)}
22368 the number of selected samples before the current frame
22369
22370 @item samples_n @emph{(audio only)}
22371 the number of samples in the current frame
22372
22373 @item sample_rate @emph{(audio only)}
22374 the input sample rate
22375
22376 @item key
22377 This is 1 if the filtered frame is a key-frame, 0 otherwise.
22378
22379 @item pos
22380 the position in the file of the filtered frame, -1 if the information
22381 is not available (e.g. for synthetic video)
22382
22383 @item scene @emph{(video only)}
22384 value between 0 and 1 to indicate a new scene; a low value reflects a low
22385 probability for the current frame to introduce a new scene, while a higher
22386 value means the current frame is more likely to be one (see the example below)
22387
22388 @item concatdec_select
22389 The concat demuxer can select only part of a concat input file by setting an
22390 inpoint and an outpoint, but the output packets may not be entirely contained
22391 in the selected interval. By using this variable, it is possible to skip frames
22392 generated by the concat demuxer which are not exactly contained in the selected
22393 interval.
22394
22395 This works by comparing the frame pts against the @var{lavf.concat.start_time}
22396 and the @var{lavf.concat.duration} packet metadata values which are also
22397 present in the decoded frames.
22398
22399 The @var{concatdec_select} variable is -1 if the frame pts is at least
22400 start_time and either the duration metadata is missing or the frame pts is less
22401 than start_time + duration, 0 otherwise, and NaN if the start_time metadata is
22402 missing.
22403
22404 That basically means that an input frame is selected if its pts is within the
22405 interval set by the concat demuxer.
22406
22407 @end table
22408
22409 The default value of the select expression is "1".
22410
22411 @subsection Examples
22412
22413 @itemize
22414 @item
22415 Select all frames in input:
22416 @example
22417 select
22418 @end example
22419
22420 The example above is the same as:
22421 @example
22422 select=1
22423 @end example
22424
22425 @item
22426 Skip all frames:
22427 @example
22428 select=0
22429 @end example
22430
22431 @item
22432 Select only I-frames:
22433 @example
22434 select='eq(pict_type\,I)'
22435 @end example
22436
22437 @item
22438 Select one frame every 100:
22439 @example
22440 select='not(mod(n\,100))'
22441 @end example
22442
22443 @item
22444 Select only frames contained in the 10-20 time interval:
22445 @example
22446 select=between(t\,10\,20)
22447 @end example
22448
22449 @item
22450 Select only I-frames contained in the 10-20 time interval:
22451 @example
22452 select=between(t\,10\,20)*eq(pict_type\,I)
22453 @end example
22454
22455 @item
22456 Select frames with a minimum distance of 10 seconds:
22457 @example
22458 select='isnan(prev_selected_t)+gte(t-prev_selected_t\,10)'
22459 @end example
22460
22461 @item
22462 Use aselect to select only audio frames with samples number > 100:
22463 @example
22464 aselect='gt(samples_n\,100)'
22465 @end example
22466
22467 @item
22468 Create a mosaic of the first scenes:
22469 @example
22470 ffmpeg -i video.avi -vf select='gt(scene\,0.4)',scale=160:120,tile -frames:v 1 preview.png
22471 @end example
22472
22473 Comparing @var{scene} against a value between 0.3 and 0.5 is generally a sane
22474 choice.
22475
22476 @item
22477 Send even and odd frames to separate outputs, and compose them:
22478 @example
22479 select=n=2:e='mod(n, 2)+1' [odd][even]; [odd] pad=h=2*ih [tmp]; [tmp][even] overlay=y=h
22480 @end example
22481
22482 @item
22483 Select useful frames from an ffconcat file which is using inpoints and
22484 outpoints but where the source files are not intra frame only.
22485 @example
22486 ffmpeg -copyts -vsync 0 -segment_time_metadata 1 -i input.ffconcat -vf select=concatdec_select -af aselect=concatdec_select output.avi
22487 @end example
22488 @end itemize
22489
22490 @section sendcmd, asendcmd
22491
22492 Send commands to filters in the filtergraph.
22493
22494 These filters read commands to be sent to other filters in the
22495 filtergraph.
22496
22497 @code{sendcmd} must be inserted between two video filters,
22498 @code{asendcmd} must be inserted between two audio filters, but apart
22499 from that they act the same way.
22500
22501 The specification of commands can be provided in the filter arguments
22502 with the @var{commands} option, or in a file specified by the
22503 @var{filename} option.
22504
22505 These filters accept the following options:
22506 @table @option
22507 @item commands, c
22508 Set the commands to be read and sent to the other filters.
22509 @item filename, f
22510 Set the filename of the commands to be read and sent to the other
22511 filters.
22512 @end table
22513
22514 @subsection Commands syntax
22515
22516 A commands description consists of a sequence of interval
22517 specifications, comprising a list of commands to be executed when a
22518 particular event related to that interval occurs. The occurring event
22519 is typically the current frame time entering or leaving a given time
22520 interval.
22521
22522 An interval is specified by the following syntax:
22523 @example
22524 @var{START}[-@var{END}] @var{COMMANDS};
22525 @end example
22526
22527 The time interval is specified by the @var{START} and @var{END} times.
22528 @var{END} is optional and defaults to the maximum time.
22529
22530 The current frame time is considered within the specified interval if
22531 it is included in the interval [@var{START}, @var{END}), that is when
22532 the time is greater or equal to @var{START} and is lesser than
22533 @var{END}.
22534
22535 @var{COMMANDS} consists of a sequence of one or more command
22536 specifications, separated by ",", relating to that interval.  The
22537 syntax of a command specification is given by:
22538 @example
22539 [@var{FLAGS}] @var{TARGET} @var{COMMAND} @var{ARG}
22540 @end example
22541
22542 @var{FLAGS} is optional and specifies the type of events relating to
22543 the time interval which enable sending the specified command, and must
22544 be a non-null sequence of identifier flags separated by "+" or "|" and
22545 enclosed between "[" and "]".
22546
22547 The following flags are recognized:
22548 @table @option
22549 @item enter
22550 The command is sent when the current frame timestamp enters the
22551 specified interval. In other words, the command is sent when the
22552 previous frame timestamp was not in the given interval, and the
22553 current is.
22554
22555 @item leave
22556 The command is sent when the current frame timestamp leaves the
22557 specified interval. In other words, the command is sent when the
22558 previous frame timestamp was in the given interval, and the
22559 current is not.
22560 @end table
22561
22562 If @var{FLAGS} is not specified, a default value of @code{[enter]} is
22563 assumed.
22564
22565 @var{TARGET} specifies the target of the command, usually the name of
22566 the filter class or a specific filter instance name.
22567
22568 @var{COMMAND} specifies the name of the command for the target filter.
22569
22570 @var{ARG} is optional and specifies the optional list of argument for
22571 the given @var{COMMAND}.
22572
22573 Between one interval specification and another, whitespaces, or
22574 sequences of characters starting with @code{#} until the end of line,
22575 are ignored and can be used to annotate comments.
22576
22577 A simplified BNF description of the commands specification syntax
22578 follows:
22579 @example
22580 @var{COMMAND_FLAG}  ::= "enter" | "leave"
22581 @var{COMMAND_FLAGS} ::= @var{COMMAND_FLAG} [(+|"|")@var{COMMAND_FLAG}]
22582 @var{COMMAND}       ::= ["[" @var{COMMAND_FLAGS} "]"] @var{TARGET} @var{COMMAND} [@var{ARG}]
22583 @var{COMMANDS}      ::= @var{COMMAND} [,@var{COMMANDS}]
22584 @var{INTERVAL}      ::= @var{START}[-@var{END}] @var{COMMANDS}
22585 @var{INTERVALS}     ::= @var{INTERVAL}[;@var{INTERVALS}]
22586 @end example
22587
22588 @subsection Examples
22589
22590 @itemize
22591 @item
22592 Specify audio tempo change at second 4:
22593 @example
22594 asendcmd=c='4.0 atempo tempo 1.5',atempo
22595 @end example
22596
22597 @item
22598 Target a specific filter instance:
22599 @example
22600 asendcmd=c='4.0 atempo@@my tempo 1.5',atempo@@my
22601 @end example
22602
22603 @item
22604 Specify a list of drawtext and hue commands in a file.
22605 @example
22606 # show text in the interval 5-10
22607 5.0-10.0 [enter] drawtext reinit 'fontfile=FreeSerif.ttf:text=hello world',
22608          [leave] drawtext reinit 'fontfile=FreeSerif.ttf:text=';
22609
22610 # desaturate the image in the interval 15-20
22611 15.0-20.0 [enter] hue s 0,
22612           [enter] drawtext reinit 'fontfile=FreeSerif.ttf:text=nocolor',
22613           [leave] hue s 1,
22614           [leave] drawtext reinit 'fontfile=FreeSerif.ttf:text=color';
22615
22616 # apply an exponential saturation fade-out effect, starting from time 25
22617 25 [enter] hue s exp(25-t)
22618 @end example
22619
22620 A filtergraph allowing to read and process the above command list
22621 stored in a file @file{test.cmd}, can be specified with:
22622 @example
22623 sendcmd=f=test.cmd,drawtext=fontfile=FreeSerif.ttf:text='',hue
22624 @end example
22625 @end itemize
22626
22627 @anchor{setpts}
22628 @section setpts, asetpts
22629
22630 Change the PTS (presentation timestamp) of the input frames.
22631
22632 @code{setpts} works on video frames, @code{asetpts} on audio frames.
22633
22634 This filter accepts the following options:
22635
22636 @table @option
22637
22638 @item expr
22639 The expression which is evaluated for each frame to construct its timestamp.
22640
22641 @end table
22642
22643 The expression is evaluated through the eval API and can contain the following
22644 constants:
22645
22646 @table @option
22647 @item FRAME_RATE, FR
22648 frame rate, only defined for constant frame-rate video
22649
22650 @item PTS
22651 The presentation timestamp in input
22652
22653 @item N
22654 The count of the input frame for video or the number of consumed samples,
22655 not including the current frame for audio, starting from 0.
22656
22657 @item NB_CONSUMED_SAMPLES
22658 The number of consumed samples, not including the current frame (only
22659 audio)
22660
22661 @item NB_SAMPLES, S
22662 The number of samples in the current frame (only audio)
22663
22664 @item SAMPLE_RATE, SR
22665 The audio sample rate.
22666
22667 @item STARTPTS
22668 The PTS of the first frame.
22669
22670 @item STARTT
22671 the time in seconds of the first frame
22672
22673 @item INTERLACED
22674 State whether the current frame is interlaced.
22675
22676 @item T
22677 the time in seconds of the current frame
22678
22679 @item POS
22680 original position in the file of the frame, or undefined if undefined
22681 for the current frame
22682
22683 @item PREV_INPTS
22684 The previous input PTS.
22685
22686 @item PREV_INT
22687 previous input time in seconds
22688
22689 @item PREV_OUTPTS
22690 The previous output PTS.
22691
22692 @item PREV_OUTT
22693 previous output time in seconds
22694
22695 @item RTCTIME
22696 The wallclock (RTC) time in microseconds. This is deprecated, use time(0)
22697 instead.
22698
22699 @item RTCSTART
22700 The wallclock (RTC) time at the start of the movie in microseconds.
22701
22702 @item TB
22703 The timebase of the input timestamps.
22704
22705 @end table
22706
22707 @subsection Examples
22708
22709 @itemize
22710 @item
22711 Start counting PTS from zero
22712 @example
22713 setpts=PTS-STARTPTS
22714 @end example
22715
22716 @item
22717 Apply fast motion effect:
22718 @example
22719 setpts=0.5*PTS
22720 @end example
22721
22722 @item
22723 Apply slow motion effect:
22724 @example
22725 setpts=2.0*PTS
22726 @end example
22727
22728 @item
22729 Set fixed rate of 25 frames per second:
22730 @example
22731 setpts=N/(25*TB)
22732 @end example
22733
22734 @item
22735 Set fixed rate 25 fps with some jitter:
22736 @example
22737 setpts='1/(25*TB) * (N + 0.05 * sin(N*2*PI/25))'
22738 @end example
22739
22740 @item
22741 Apply an offset of 10 seconds to the input PTS:
22742 @example
22743 setpts=PTS+10/TB
22744 @end example
22745
22746 @item
22747 Generate timestamps from a "live source" and rebase onto the current timebase:
22748 @example
22749 setpts='(RTCTIME - RTCSTART) / (TB * 1000000)'
22750 @end example
22751
22752 @item
22753 Generate timestamps by counting samples:
22754 @example
22755 asetpts=N/SR/TB
22756 @end example
22757
22758 @end itemize
22759
22760 @section setrange
22761
22762 Force color range for the output video frame.
22763
22764 The @code{setrange} filter marks the color range property for the
22765 output frames. It does not change the input frame, but only sets the
22766 corresponding property, which affects how the frame is treated by
22767 following filters.
22768
22769 The filter accepts the following options:
22770
22771 @table @option
22772
22773 @item range
22774 Available values are:
22775
22776 @table @samp
22777 @item auto
22778 Keep the same color range property.
22779
22780 @item unspecified, unknown
22781 Set the color range as unspecified.
22782
22783 @item limited, tv, mpeg
22784 Set the color range as limited.
22785
22786 @item full, pc, jpeg
22787 Set the color range as full.
22788 @end table
22789 @end table
22790
22791 @section settb, asettb
22792
22793 Set the timebase to use for the output frames timestamps.
22794 It is mainly useful for testing timebase configuration.
22795
22796 It accepts the following parameters:
22797
22798 @table @option
22799
22800 @item expr, tb
22801 The expression which is evaluated into the output timebase.
22802
22803 @end table
22804
22805 The value for @option{tb} is an arithmetic expression representing a
22806 rational. The expression can contain the constants "AVTB" (the default
22807 timebase), "intb" (the input timebase) and "sr" (the sample rate,
22808 audio only). Default value is "intb".
22809
22810 @subsection Examples
22811
22812 @itemize
22813 @item
22814 Set the timebase to 1/25:
22815 @example
22816 settb=expr=1/25
22817 @end example
22818
22819 @item
22820 Set the timebase to 1/10:
22821 @example
22822 settb=expr=0.1
22823 @end example
22824
22825 @item
22826 Set the timebase to 1001/1000:
22827 @example
22828 settb=1+0.001
22829 @end example
22830
22831 @item
22832 Set the timebase to 2*intb:
22833 @example
22834 settb=2*intb
22835 @end example
22836
22837 @item
22838 Set the default timebase value:
22839 @example
22840 settb=AVTB
22841 @end example
22842 @end itemize
22843
22844 @section showcqt
22845 Convert input audio to a video output representing frequency spectrum
22846 logarithmically using Brown-Puckette constant Q transform algorithm with
22847 direct frequency domain coefficient calculation (but the transform itself
22848 is not really constant Q, instead the Q factor is actually variable/clamped),
22849 with musical tone scale, from E0 to D#10.
22850
22851 The filter accepts the following options:
22852
22853 @table @option
22854 @item size, s
22855 Specify the video size for the output. It must be even. For the syntax of this option,
22856 check the @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
22857 Default value is @code{1920x1080}.
22858
22859 @item fps, rate, r
22860 Set the output frame rate. Default value is @code{25}.
22861
22862 @item bar_h
22863 Set the bargraph height. It must be even. Default value is @code{-1} which
22864 computes the bargraph height automatically.
22865
22866 @item axis_h
22867 Set the axis height. It must be even. Default value is @code{-1} which computes
22868 the axis height automatically.
22869
22870 @item sono_h
22871 Set the sonogram height. It must be even. Default value is @code{-1} which
22872 computes the sonogram height automatically.
22873
22874 @item fullhd
22875 Set the fullhd resolution. This option is deprecated, use @var{size}, @var{s}
22876 instead. Default value is @code{1}.
22877
22878 @item sono_v, volume
22879 Specify the sonogram volume expression. It can contain variables:
22880 @table @option
22881 @item bar_v
22882 the @var{bar_v} evaluated expression
22883 @item frequency, freq, f
22884 the frequency where it is evaluated
22885 @item timeclamp, tc
22886 the value of @var{timeclamp} option
22887 @end table
22888 and functions:
22889 @table @option
22890 @item a_weighting(f)
22891 A-weighting of equal loudness
22892 @item b_weighting(f)
22893 B-weighting of equal loudness
22894 @item c_weighting(f)
22895 C-weighting of equal loudness.
22896 @end table
22897 Default value is @code{16}.
22898
22899 @item bar_v, volume2
22900 Specify the bargraph volume expression. It can contain variables:
22901 @table @option
22902 @item sono_v
22903 the @var{sono_v} evaluated expression
22904 @item frequency, freq, f
22905 the frequency where it is evaluated
22906 @item timeclamp, tc
22907 the value of @var{timeclamp} option
22908 @end table
22909 and functions:
22910 @table @option
22911 @item a_weighting(f)
22912 A-weighting of equal loudness
22913 @item b_weighting(f)
22914 B-weighting of equal loudness
22915 @item c_weighting(f)
22916 C-weighting of equal loudness.
22917 @end table
22918 Default value is @code{sono_v}.
22919
22920 @item sono_g, gamma
22921 Specify the sonogram gamma. Lower gamma makes the spectrum more contrast,
22922 higher gamma makes the spectrum having more range. Default value is @code{3}.
22923 Acceptable range is @code{[1, 7]}.
22924
22925 @item bar_g, gamma2
22926 Specify the bargraph gamma. Default value is @code{1}. Acceptable range is
22927 @code{[1, 7]}.
22928
22929 @item bar_t
22930 Specify the bargraph transparency level. Lower value makes the bargraph sharper.
22931 Default value is @code{1}. Acceptable range is @code{[0, 1]}.
22932
22933 @item timeclamp, tc
22934 Specify the transform timeclamp. At low frequency, there is trade-off between
22935 accuracy in time domain and frequency domain. If timeclamp is lower,
22936 event in time domain is represented more accurately (such as fast bass drum),
22937 otherwise event in frequency domain is represented more accurately
22938 (such as bass guitar). Acceptable range is @code{[0.002, 1]}. Default value is @code{0.17}.
22939
22940 @item attack
22941 Set attack time in seconds. The default is @code{0} (disabled). Otherwise, it
22942 limits future samples by applying asymmetric windowing in time domain, useful
22943 when low latency is required. Accepted range is @code{[0, 1]}.
22944
22945 @item basefreq
22946 Specify the transform base frequency. Default value is @code{20.01523126408007475},
22947 which is frequency 50 cents below E0. Acceptable range is @code{[10, 100000]}.
22948
22949 @item endfreq
22950 Specify the transform end frequency. Default value is @code{20495.59681441799654},
22951 which is frequency 50 cents above D#10. Acceptable range is @code{[10, 100000]}.
22952
22953 @item coeffclamp
22954 This option is deprecated and ignored.
22955
22956 @item tlength
22957 Specify the transform length in time domain. Use this option to control accuracy
22958 trade-off between time domain and frequency domain at every frequency sample.
22959 It can contain variables:
22960 @table @option
22961 @item frequency, freq, f
22962 the frequency where it is evaluated
22963 @item timeclamp, tc
22964 the value of @var{timeclamp} option.
22965 @end table
22966 Default value is @code{384*tc/(384+tc*f)}.
22967
22968 @item count
22969 Specify the transform count for every video frame. Default value is @code{6}.
22970 Acceptable range is @code{[1, 30]}.
22971
22972 @item fcount
22973 Specify the transform count for every single pixel. Default value is @code{0},
22974 which makes it computed automatically. Acceptable range is @code{[0, 10]}.
22975
22976 @item fontfile
22977 Specify font file for use with freetype to draw the axis. If not specified,
22978 use embedded font. Note that drawing with font file or embedded font is not
22979 implemented with custom @var{basefreq} and @var{endfreq}, use @var{axisfile}
22980 option instead.
22981
22982 @item font
22983 Specify fontconfig pattern. This has lower priority than @var{fontfile}. The
22984 @code{:} in the pattern may be replaced by @code{|} to avoid unnecessary
22985 escaping.
22986
22987 @item fontcolor
22988 Specify font color expression. This is arithmetic expression that should return
22989 integer value 0xRRGGBB. It can contain variables:
22990 @table @option
22991 @item frequency, freq, f
22992 the frequency where it is evaluated
22993 @item timeclamp, tc
22994 the value of @var{timeclamp} option
22995 @end table
22996 and functions:
22997 @table @option
22998 @item midi(f)
22999 midi number of frequency f, some midi numbers: E0(16), C1(24), C2(36), A4(69)
23000 @item r(x), g(x), b(x)
23001 red, green, and blue value of intensity x.
23002 @end table
23003 Default value is @code{st(0, (midi(f)-59.5)/12);
23004 st(1, if(between(ld(0),0,1), 0.5-0.5*cos(2*PI*ld(0)), 0));
23005 r(1-ld(1)) + b(ld(1))}.
23006
23007 @item axisfile
23008 Specify image file to draw the axis. This option override @var{fontfile} and
23009 @var{fontcolor} option.
23010
23011 @item axis, text
23012 Enable/disable drawing text to the axis. If it is set to @code{0}, drawing to
23013 the axis is disabled, ignoring @var{fontfile} and @var{axisfile} option.
23014 Default value is @code{1}.
23015
23016 @item csp
23017 Set colorspace. The accepted values are:
23018 @table @samp
23019 @item unspecified
23020 Unspecified (default)
23021
23022 @item bt709
23023 BT.709
23024
23025 @item fcc
23026 FCC
23027
23028 @item bt470bg
23029 BT.470BG or BT.601-6 625
23030
23031 @item smpte170m
23032 SMPTE-170M or BT.601-6 525
23033
23034 @item smpte240m
23035 SMPTE-240M
23036
23037 @item bt2020ncl
23038 BT.2020 with non-constant luminance
23039
23040 @end table
23041
23042 @item cscheme
23043 Set spectrogram color scheme. This is list of floating point values with format
23044 @code{left_r|left_g|left_b|right_r|right_g|right_b}.
23045 The default is @code{1|0.5|0|0|0.5|1}.
23046
23047 @end table
23048
23049 @subsection Examples
23050
23051 @itemize
23052 @item
23053 Playing audio while showing the spectrum:
23054 @example
23055 ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt [out0]'
23056 @end example
23057
23058 @item
23059 Same as above, but with frame rate 30 fps:
23060 @example
23061 ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt=fps=30:count=5 [out0]'
23062 @end example
23063
23064 @item
23065 Playing at 1280x720:
23066 @example
23067 ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt=s=1280x720:count=4 [out0]'
23068 @end example
23069
23070 @item
23071 Disable sonogram display:
23072 @example
23073 sono_h=0
23074 @end example
23075
23076 @item
23077 A1 and its harmonics: A1, A2, (near)E3, A3:
23078 @example
23079 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),
23080                  asplit[a][out1]; [a] showcqt [out0]'
23081 @end example
23082
23083 @item
23084 Same as above, but with more accuracy in frequency domain:
23085 @example
23086 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),
23087                  asplit[a][out1]; [a] showcqt=timeclamp=0.5 [out0]'
23088 @end example
23089
23090 @item
23091 Custom volume:
23092 @example
23093 bar_v=10:sono_v=bar_v*a_weighting(f)
23094 @end example
23095
23096 @item
23097 Custom gamma, now spectrum is linear to the amplitude.
23098 @example
23099 bar_g=2:sono_g=2
23100 @end example
23101
23102 @item
23103 Custom tlength equation:
23104 @example
23105 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)))'
23106 @end example
23107
23108 @item
23109 Custom fontcolor and fontfile, C-note is colored green, others are colored blue:
23110 @example
23111 fontcolor='if(mod(floor(midi(f)+0.5),12), 0x0000FF, g(1))':fontfile=myfont.ttf
23112 @end example
23113
23114 @item
23115 Custom font using fontconfig:
23116 @example
23117 font='Courier New,Monospace,mono|bold'
23118 @end example
23119
23120 @item
23121 Custom frequency range with custom axis using image file:
23122 @example
23123 axisfile=myaxis.png:basefreq=40:endfreq=10000
23124 @end example
23125 @end itemize
23126
23127 @section showfreqs
23128
23129 Convert input audio to video output representing the audio power spectrum.
23130 Audio amplitude is on Y-axis while frequency is on X-axis.
23131
23132 The filter accepts the following options:
23133
23134 @table @option
23135 @item size, s
23136 Specify size of video. For the syntax of this option, check the
23137 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
23138 Default is @code{1024x512}.
23139
23140 @item mode
23141 Set display mode.
23142 This set how each frequency bin will be represented.
23143
23144 It accepts the following values:
23145 @table @samp
23146 @item line
23147 @item bar
23148 @item dot
23149 @end table
23150 Default is @code{bar}.
23151
23152 @item ascale
23153 Set amplitude scale.
23154
23155 It accepts the following values:
23156 @table @samp
23157 @item lin
23158 Linear scale.
23159
23160 @item sqrt
23161 Square root scale.
23162
23163 @item cbrt
23164 Cubic root scale.
23165
23166 @item log
23167 Logarithmic scale.
23168 @end table
23169 Default is @code{log}.
23170
23171 @item fscale
23172 Set frequency scale.
23173
23174 It accepts the following values:
23175 @table @samp
23176 @item lin
23177 Linear scale.
23178
23179 @item log
23180 Logarithmic scale.
23181
23182 @item rlog
23183 Reverse logarithmic scale.
23184 @end table
23185 Default is @code{lin}.
23186
23187 @item win_size
23188 Set window size. Allowed range is from 16 to 65536.
23189
23190 Default is @code{2048}
23191
23192 @item win_func
23193 Set windowing function.
23194
23195 It accepts the following values:
23196 @table @samp
23197 @item rect
23198 @item bartlett
23199 @item hanning
23200 @item hamming
23201 @item blackman
23202 @item welch
23203 @item flattop
23204 @item bharris
23205 @item bnuttall
23206 @item bhann
23207 @item sine
23208 @item nuttall
23209 @item lanczos
23210 @item gauss
23211 @item tukey
23212 @item dolph
23213 @item cauchy
23214 @item parzen
23215 @item poisson
23216 @item bohman
23217 @end table
23218 Default is @code{hanning}.
23219
23220 @item overlap
23221 Set window overlap. In range @code{[0, 1]}. Default is @code{1},
23222 which means optimal overlap for selected window function will be picked.
23223
23224 @item averaging
23225 Set time averaging. Setting this to 0 will display current maximal peaks.
23226 Default is @code{1}, which means time averaging is disabled.
23227
23228 @item colors
23229 Specify list of colors separated by space or by '|' which will be used to
23230 draw channel frequencies. Unrecognized or missing colors will be replaced
23231 by white color.
23232
23233 @item cmode
23234 Set channel display mode.
23235
23236 It accepts the following values:
23237 @table @samp
23238 @item combined
23239 @item separate
23240 @end table
23241 Default is @code{combined}.
23242
23243 @item minamp
23244 Set minimum amplitude used in @code{log} amplitude scaler.
23245
23246 @end table
23247
23248 @section showspatial
23249
23250 Convert stereo input audio to a video output, representing the spatial relationship
23251 between two channels.
23252
23253 The filter accepts the following options:
23254
23255 @table @option
23256 @item size, s
23257 Specify the video size for the output. For the syntax of this option, check the
23258 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
23259 Default value is @code{512x512}.
23260
23261 @item win_size
23262 Set window size. Allowed range is from @var{1024} to @var{65536}. Default size is @var{4096}.
23263
23264 @item win_func
23265 Set window function.
23266
23267 It accepts the following values:
23268 @table @samp
23269 @item rect
23270 @item bartlett
23271 @item hann
23272 @item hanning
23273 @item hamming
23274 @item blackman
23275 @item welch
23276 @item flattop
23277 @item bharris
23278 @item bnuttall
23279 @item bhann
23280 @item sine
23281 @item nuttall
23282 @item lanczos
23283 @item gauss
23284 @item tukey
23285 @item dolph
23286 @item cauchy
23287 @item parzen
23288 @item poisson
23289 @item bohman
23290 @end table
23291
23292 Default value is @code{hann}.
23293
23294 @item overlap
23295 Set ratio of overlap window. Default value is @code{0.5}.
23296 When value is @code{1} overlap is set to recommended size for specific
23297 window function currently used.
23298 @end table
23299
23300 @anchor{showspectrum}
23301 @section showspectrum
23302
23303 Convert input audio to a video output, representing the audio frequency
23304 spectrum.
23305
23306 The filter accepts the following options:
23307
23308 @table @option
23309 @item size, s
23310 Specify the video size for the output. For the syntax of this option, check the
23311 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
23312 Default value is @code{640x512}.
23313
23314 @item slide
23315 Specify how the spectrum should slide along the window.
23316
23317 It accepts the following values:
23318 @table @samp
23319 @item replace
23320 the samples start again on the left when they reach the right
23321 @item scroll
23322 the samples scroll from right to left
23323 @item fullframe
23324 frames are only produced when the samples reach the right
23325 @item rscroll
23326 the samples scroll from left to right
23327 @end table
23328
23329 Default value is @code{replace}.
23330
23331 @item mode
23332 Specify display mode.
23333
23334 It accepts the following values:
23335 @table @samp
23336 @item combined
23337 all channels are displayed in the same row
23338 @item separate
23339 all channels are displayed in separate rows
23340 @end table
23341
23342 Default value is @samp{combined}.
23343
23344 @item color
23345 Specify display color mode.
23346
23347 It accepts the following values:
23348 @table @samp
23349 @item channel
23350 each channel is displayed in a separate color
23351 @item intensity
23352 each channel is displayed using the same color scheme
23353 @item rainbow
23354 each channel is displayed using the rainbow color scheme
23355 @item moreland
23356 each channel is displayed using the moreland color scheme
23357 @item nebulae
23358 each channel is displayed using the nebulae color scheme
23359 @item fire
23360 each channel is displayed using the fire color scheme
23361 @item fiery
23362 each channel is displayed using the fiery color scheme
23363 @item fruit
23364 each channel is displayed using the fruit color scheme
23365 @item cool
23366 each channel is displayed using the cool color scheme
23367 @item magma
23368 each channel is displayed using the magma color scheme
23369 @item green
23370 each channel is displayed using the green color scheme
23371 @item viridis
23372 each channel is displayed using the viridis color scheme
23373 @item plasma
23374 each channel is displayed using the plasma color scheme
23375 @item cividis
23376 each channel is displayed using the cividis color scheme
23377 @item terrain
23378 each channel is displayed using the terrain color scheme
23379 @end table
23380
23381 Default value is @samp{channel}.
23382
23383 @item scale
23384 Specify scale used for calculating intensity color values.
23385
23386 It accepts the following values:
23387 @table @samp
23388 @item lin
23389 linear
23390 @item sqrt
23391 square root, default
23392 @item cbrt
23393 cubic root
23394 @item log
23395 logarithmic
23396 @item 4thrt
23397 4th root
23398 @item 5thrt
23399 5th root
23400 @end table
23401
23402 Default value is @samp{sqrt}.
23403
23404 @item fscale
23405 Specify frequency scale.
23406
23407 It accepts the following values:
23408 @table @samp
23409 @item lin
23410 linear
23411 @item log
23412 logarithmic
23413 @end table
23414
23415 Default value is @samp{lin}.
23416
23417 @item saturation
23418 Set saturation modifier for displayed colors. Negative values provide
23419 alternative color scheme. @code{0} is no saturation at all.
23420 Saturation must be in [-10.0, 10.0] range.
23421 Default value is @code{1}.
23422
23423 @item win_func
23424 Set window function.
23425
23426 It accepts the following values:
23427 @table @samp
23428 @item rect
23429 @item bartlett
23430 @item hann
23431 @item hanning
23432 @item hamming
23433 @item blackman
23434 @item welch
23435 @item flattop
23436 @item bharris
23437 @item bnuttall
23438 @item bhann
23439 @item sine
23440 @item nuttall
23441 @item lanczos
23442 @item gauss
23443 @item tukey
23444 @item dolph
23445 @item cauchy
23446 @item parzen
23447 @item poisson
23448 @item bohman
23449 @end table
23450
23451 Default value is @code{hann}.
23452
23453 @item orientation
23454 Set orientation of time vs frequency axis. Can be @code{vertical} or
23455 @code{horizontal}. Default is @code{vertical}.
23456
23457 @item overlap
23458 Set ratio of overlap window. Default value is @code{0}.
23459 When value is @code{1} overlap is set to recommended size for specific
23460 window function currently used.
23461
23462 @item gain
23463 Set scale gain for calculating intensity color values.
23464 Default value is @code{1}.
23465
23466 @item data
23467 Set which data to display. Can be @code{magnitude}, default or @code{phase}.
23468
23469 @item rotation
23470 Set color rotation, must be in [-1.0, 1.0] range.
23471 Default value is @code{0}.
23472
23473 @item start
23474 Set start frequency from which to display spectrogram. Default is @code{0}.
23475
23476 @item stop
23477 Set stop frequency to which to display spectrogram. Default is @code{0}.
23478
23479 @item fps
23480 Set upper frame rate limit. Default is @code{auto}, unlimited.
23481
23482 @item legend
23483 Draw time and frequency axes and legends. Default is disabled.
23484 @end table
23485
23486 The usage is very similar to the showwaves filter; see the examples in that
23487 section.
23488
23489 @subsection Examples
23490
23491 @itemize
23492 @item
23493 Large window with logarithmic color scaling:
23494 @example
23495 showspectrum=s=1280x480:scale=log
23496 @end example
23497
23498 @item
23499 Complete example for a colored and sliding spectrum per channel using @command{ffplay}:
23500 @example
23501 ffplay -f lavfi 'amovie=input.mp3, asplit [a][out1];
23502              [a] showspectrum=mode=separate:color=intensity:slide=1:scale=cbrt [out0]'
23503 @end example
23504 @end itemize
23505
23506 @section showspectrumpic
23507
23508 Convert input audio to a single video frame, representing the audio frequency
23509 spectrum.
23510
23511 The filter accepts the following options:
23512
23513 @table @option
23514 @item size, s
23515 Specify the video size for the output. For the syntax of this option, check the
23516 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
23517 Default value is @code{4096x2048}.
23518
23519 @item mode
23520 Specify display mode.
23521
23522 It accepts the following values:
23523 @table @samp
23524 @item combined
23525 all channels are displayed in the same row
23526 @item separate
23527 all channels are displayed in separate rows
23528 @end table
23529 Default value is @samp{combined}.
23530
23531 @item color
23532 Specify display color mode.
23533
23534 It accepts the following values:
23535 @table @samp
23536 @item channel
23537 each channel is displayed in a separate color
23538 @item intensity
23539 each channel is displayed using the same color scheme
23540 @item rainbow
23541 each channel is displayed using the rainbow color scheme
23542 @item moreland
23543 each channel is displayed using the moreland color scheme
23544 @item nebulae
23545 each channel is displayed using the nebulae color scheme
23546 @item fire
23547 each channel is displayed using the fire color scheme
23548 @item fiery
23549 each channel is displayed using the fiery color scheme
23550 @item fruit
23551 each channel is displayed using the fruit color scheme
23552 @item cool
23553 each channel is displayed using the cool color scheme
23554 @item magma
23555 each channel is displayed using the magma color scheme
23556 @item green
23557 each channel is displayed using the green color scheme
23558 @item viridis
23559 each channel is displayed using the viridis color scheme
23560 @item plasma
23561 each channel is displayed using the plasma color scheme
23562 @item cividis
23563 each channel is displayed using the cividis color scheme
23564 @item terrain
23565 each channel is displayed using the terrain color scheme
23566 @end table
23567 Default value is @samp{intensity}.
23568
23569 @item scale
23570 Specify scale used for calculating intensity color values.
23571
23572 It accepts the following values:
23573 @table @samp
23574 @item lin
23575 linear
23576 @item sqrt
23577 square root, default
23578 @item cbrt
23579 cubic root
23580 @item log
23581 logarithmic
23582 @item 4thrt
23583 4th root
23584 @item 5thrt
23585 5th root
23586 @end table
23587 Default value is @samp{log}.
23588
23589 @item fscale
23590 Specify frequency scale.
23591
23592 It accepts the following values:
23593 @table @samp
23594 @item lin
23595 linear
23596 @item log
23597 logarithmic
23598 @end table
23599
23600 Default value is @samp{lin}.
23601
23602 @item saturation
23603 Set saturation modifier for displayed colors. Negative values provide
23604 alternative color scheme. @code{0} is no saturation at all.
23605 Saturation must be in [-10.0, 10.0] range.
23606 Default value is @code{1}.
23607
23608 @item win_func
23609 Set window function.
23610
23611 It accepts the following values:
23612 @table @samp
23613 @item rect
23614 @item bartlett
23615 @item hann
23616 @item hanning
23617 @item hamming
23618 @item blackman
23619 @item welch
23620 @item flattop
23621 @item bharris
23622 @item bnuttall
23623 @item bhann
23624 @item sine
23625 @item nuttall
23626 @item lanczos
23627 @item gauss
23628 @item tukey
23629 @item dolph
23630 @item cauchy
23631 @item parzen
23632 @item poisson
23633 @item bohman
23634 @end table
23635 Default value is @code{hann}.
23636
23637 @item orientation
23638 Set orientation of time vs frequency axis. Can be @code{vertical} or
23639 @code{horizontal}. Default is @code{vertical}.
23640
23641 @item gain
23642 Set scale gain for calculating intensity color values.
23643 Default value is @code{1}.
23644
23645 @item legend
23646 Draw time and frequency axes and legends. Default is enabled.
23647
23648 @item rotation
23649 Set color rotation, must be in [-1.0, 1.0] range.
23650 Default value is @code{0}.
23651
23652 @item start
23653 Set start frequency from which to display spectrogram. Default is @code{0}.
23654
23655 @item stop
23656 Set stop frequency to which to display spectrogram. Default is @code{0}.
23657 @end table
23658
23659 @subsection Examples
23660
23661 @itemize
23662 @item
23663 Extract an audio spectrogram of a whole audio track
23664 in a 1024x1024 picture using @command{ffmpeg}:
23665 @example
23666 ffmpeg -i audio.flac -lavfi showspectrumpic=s=1024x1024 spectrogram.png
23667 @end example
23668 @end itemize
23669
23670 @section showvolume
23671
23672 Convert input audio volume to a video output.
23673
23674 The filter accepts the following options:
23675
23676 @table @option
23677 @item rate, r
23678 Set video rate.
23679
23680 @item b
23681 Set border width, allowed range is [0, 5]. Default is 1.
23682
23683 @item w
23684 Set channel width, allowed range is [80, 8192]. Default is 400.
23685
23686 @item h
23687 Set channel height, allowed range is [1, 900]. Default is 20.
23688
23689 @item f
23690 Set fade, allowed range is [0, 1]. Default is 0.95.
23691
23692 @item c
23693 Set volume color expression.
23694
23695 The expression can use the following variables:
23696
23697 @table @option
23698 @item VOLUME
23699 Current max volume of channel in dB.
23700
23701 @item PEAK
23702 Current peak.
23703
23704 @item CHANNEL
23705 Current channel number, starting from 0.
23706 @end table
23707
23708 @item t
23709 If set, displays channel names. Default is enabled.
23710
23711 @item v
23712 If set, displays volume values. Default is enabled.
23713
23714 @item o
23715 Set orientation, can be horizontal: @code{h} or vertical: @code{v},
23716 default is @code{h}.
23717
23718 @item s
23719 Set step size, allowed range is [0, 5]. Default is 0, which means
23720 step is disabled.
23721
23722 @item p
23723 Set background opacity, allowed range is [0, 1]. Default is 0.
23724
23725 @item m
23726 Set metering mode, can be peak: @code{p} or rms: @code{r},
23727 default is @code{p}.
23728
23729 @item ds
23730 Set display scale, can be linear: @code{lin} or log: @code{log},
23731 default is @code{lin}.
23732
23733 @item dm
23734 In second.
23735 If set to > 0., display a line for the max level
23736 in the previous seconds.
23737 default is disabled: @code{0.}
23738
23739 @item dmc
23740 The color of the max line. Use when @code{dm} option is set to > 0.
23741 default is: @code{orange}
23742 @end table
23743
23744 @section showwaves
23745
23746 Convert input audio to a video output, representing the samples waves.
23747
23748 The filter accepts the following options:
23749
23750 @table @option
23751 @item size, s
23752 Specify the video size for the output. For the syntax of this option, check the
23753 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
23754 Default value is @code{600x240}.
23755
23756 @item mode
23757 Set display mode.
23758
23759 Available values are:
23760 @table @samp
23761 @item point
23762 Draw a point for each sample.
23763
23764 @item line
23765 Draw a vertical line for each sample.
23766
23767 @item p2p
23768 Draw a point for each sample and a line between them.
23769
23770 @item cline
23771 Draw a centered vertical line for each sample.
23772 @end table
23773
23774 Default value is @code{point}.
23775
23776 @item n
23777 Set the number of samples which are printed on the same column. A
23778 larger value will decrease the frame rate. Must be a positive
23779 integer. This option can be set only if the value for @var{rate}
23780 is not explicitly specified.
23781
23782 @item rate, r
23783 Set the (approximate) output frame rate. This is done by setting the
23784 option @var{n}. Default value is "25".
23785
23786 @item split_channels
23787 Set if channels should be drawn separately or overlap. Default value is 0.
23788
23789 @item colors
23790 Set colors separated by '|' which are going to be used for drawing of each channel.
23791
23792 @item scale
23793 Set amplitude scale.
23794
23795 Available values are:
23796 @table @samp
23797 @item lin
23798 Linear.
23799
23800 @item log
23801 Logarithmic.
23802
23803 @item sqrt
23804 Square root.
23805
23806 @item cbrt
23807 Cubic root.
23808 @end table
23809
23810 Default is linear.
23811
23812 @item draw
23813 Set the draw mode. This is mostly useful to set for high @var{n}.
23814
23815 Available values are:
23816 @table @samp
23817 @item scale
23818 Scale pixel values for each drawn sample.
23819
23820 @item full
23821 Draw every sample directly.
23822 @end table
23823
23824 Default value is @code{scale}.
23825 @end table
23826
23827 @subsection Examples
23828
23829 @itemize
23830 @item
23831 Output the input file audio and the corresponding video representation
23832 at the same time:
23833 @example
23834 amovie=a.mp3,asplit[out0],showwaves[out1]
23835 @end example
23836
23837 @item
23838 Create a synthetic signal and show it with showwaves, forcing a
23839 frame rate of 30 frames per second:
23840 @example
23841 aevalsrc=sin(1*2*PI*t)*sin(880*2*PI*t):cos(2*PI*200*t),asplit[out0],showwaves=r=30[out1]
23842 @end example
23843 @end itemize
23844
23845 @section showwavespic
23846
23847 Convert input audio to a single video frame, representing the samples waves.
23848
23849 The filter accepts the following options:
23850
23851 @table @option
23852 @item size, s
23853 Specify the video size for the output. For the syntax of this option, check the
23854 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
23855 Default value is @code{600x240}.
23856
23857 @item split_channels
23858 Set if channels should be drawn separately or overlap. Default value is 0.
23859
23860 @item colors
23861 Set colors separated by '|' which are going to be used for drawing of each channel.
23862
23863 @item scale
23864 Set amplitude scale.
23865
23866 Available values are:
23867 @table @samp
23868 @item lin
23869 Linear.
23870
23871 @item log
23872 Logarithmic.
23873
23874 @item sqrt
23875 Square root.
23876
23877 @item cbrt
23878 Cubic root.
23879 @end table
23880
23881 Default is linear.
23882
23883 @item draw
23884 Set the draw mode.
23885
23886 Available values are:
23887 @table @samp
23888 @item scale
23889 Scale pixel values for each drawn sample.
23890
23891 @item full
23892 Draw every sample directly.
23893 @end table
23894
23895 Default value is @code{scale}.
23896 @end table
23897
23898 @subsection Examples
23899
23900 @itemize
23901 @item
23902 Extract a channel split representation of the wave form of a whole audio track
23903 in a 1024x800 picture using @command{ffmpeg}:
23904 @example
23905 ffmpeg -i audio.flac -lavfi showwavespic=split_channels=1:s=1024x800 waveform.png
23906 @end example
23907 @end itemize
23908
23909 @section sidedata, asidedata
23910
23911 Delete frame side data, or select frames based on it.
23912
23913 This filter accepts the following options:
23914
23915 @table @option
23916 @item mode
23917 Set mode of operation of the filter.
23918
23919 Can be one of the following:
23920
23921 @table @samp
23922 @item select
23923 Select every frame with side data of @code{type}.
23924
23925 @item delete
23926 Delete side data of @code{type}. If @code{type} is not set, delete all side
23927 data in the frame.
23928
23929 @end table
23930
23931 @item type
23932 Set side data type used with all modes. Must be set for @code{select} mode. For
23933 the list of frame side data types, refer to the @code{AVFrameSideDataType} enum
23934 in @file{libavutil/frame.h}. For example, to choose
23935 @code{AV_FRAME_DATA_PANSCAN} side data, you must specify @code{PANSCAN}.
23936
23937 @end table
23938
23939 @section spectrumsynth
23940
23941 Synthesize audio from 2 input video spectrums, first input stream represents
23942 magnitude across time and second represents phase across time.
23943 The filter will transform from frequency domain as displayed in videos back
23944 to time domain as presented in audio output.
23945
23946 This filter is primarily created for reversing processed @ref{showspectrum}
23947 filter outputs, but can synthesize sound from other spectrograms too.
23948 But in such case results are going to be poor if the phase data is not
23949 available, because in such cases phase data need to be recreated, usually
23950 it's just recreated from random noise.
23951 For best results use gray only output (@code{channel} color mode in
23952 @ref{showspectrum} filter) and @code{log} scale for magnitude video and
23953 @code{lin} scale for phase video. To produce phase, for 2nd video, use
23954 @code{data} option. Inputs videos should generally use @code{fullframe}
23955 slide mode as that saves resources needed for decoding video.
23956
23957 The filter accepts the following options:
23958
23959 @table @option
23960 @item sample_rate
23961 Specify sample rate of output audio, the sample rate of audio from which
23962 spectrum was generated may differ.
23963
23964 @item channels
23965 Set number of channels represented in input video spectrums.
23966
23967 @item scale
23968 Set scale which was used when generating magnitude input spectrum.
23969 Can be @code{lin} or @code{log}. Default is @code{log}.
23970
23971 @item slide
23972 Set slide which was used when generating inputs spectrums.
23973 Can be @code{replace}, @code{scroll}, @code{fullframe} or @code{rscroll}.
23974 Default is @code{fullframe}.
23975
23976 @item win_func
23977 Set window function used for resynthesis.
23978
23979 @item overlap
23980 Set window overlap. In range @code{[0, 1]}. Default is @code{1},
23981 which means optimal overlap for selected window function will be picked.
23982
23983 @item orientation
23984 Set orientation of input videos. Can be @code{vertical} or @code{horizontal}.
23985 Default is @code{vertical}.
23986 @end table
23987
23988 @subsection Examples
23989
23990 @itemize
23991 @item
23992 First create magnitude and phase videos from audio, assuming audio is stereo with 44100 sample rate,
23993 then resynthesize videos back to audio with spectrumsynth:
23994 @example
23995 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
23996 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
23997 ffmpeg -i magnitude.nut -i phase.nut -lavfi spectrumsynth=channels=2:sample_rate=44100:win_func=hann:overlap=0.875:slide=fullframe output.flac
23998 @end example
23999 @end itemize
24000
24001 @section split, asplit
24002
24003 Split input into several identical outputs.
24004
24005 @code{asplit} works with audio input, @code{split} with video.
24006
24007 The filter accepts a single parameter which specifies the number of outputs. If
24008 unspecified, it defaults to 2.
24009
24010 @subsection Examples
24011
24012 @itemize
24013 @item
24014 Create two separate outputs from the same input:
24015 @example
24016 [in] split [out0][out1]
24017 @end example
24018
24019 @item
24020 To create 3 or more outputs, you need to specify the number of
24021 outputs, like in:
24022 @example
24023 [in] asplit=3 [out0][out1][out2]
24024 @end example
24025
24026 @item
24027 Create two separate outputs from the same input, one cropped and
24028 one padded:
24029 @example
24030 [in] split [splitout1][splitout2];
24031 [splitout1] crop=100:100:0:0    [cropout];
24032 [splitout2] pad=200:200:100:100 [padout];
24033 @end example
24034
24035 @item
24036 Create 5 copies of the input audio with @command{ffmpeg}:
24037 @example
24038 ffmpeg -i INPUT -filter_complex asplit=5 OUTPUT
24039 @end example
24040 @end itemize
24041
24042 @section zmq, azmq
24043
24044 Receive commands sent through a libzmq client, and forward them to
24045 filters in the filtergraph.
24046
24047 @code{zmq} and @code{azmq} work as a pass-through filters. @code{zmq}
24048 must be inserted between two video filters, @code{azmq} between two
24049 audio filters. Both are capable to send messages to any filter type.
24050
24051 To enable these filters you need to install the libzmq library and
24052 headers and configure FFmpeg with @code{--enable-libzmq}.
24053
24054 For more information about libzmq see:
24055 @url{http://www.zeromq.org/}
24056
24057 The @code{zmq} and @code{azmq} filters work as a libzmq server, which
24058 receives messages sent through a network interface defined by the
24059 @option{bind_address} (or the abbreviation "@option{b}") option.
24060 Default value of this option is @file{tcp://localhost:5555}. You may
24061 want to alter this value to your needs, but do not forget to escape any
24062 ':' signs (see @ref{filtergraph escaping}).
24063
24064 The received message must be in the form:
24065 @example
24066 @var{TARGET} @var{COMMAND} [@var{ARG}]
24067 @end example
24068
24069 @var{TARGET} specifies the target of the command, usually the name of
24070 the filter class or a specific filter instance name. The default
24071 filter instance name uses the pattern @samp{Parsed_<filter_name>_<index>},
24072 but you can override this by using the @samp{filter_name@@id} syntax
24073 (see @ref{Filtergraph syntax}).
24074
24075 @var{COMMAND} specifies the name of the command for the target filter.
24076
24077 @var{ARG} is optional and specifies the optional argument list for the
24078 given @var{COMMAND}.
24079
24080 Upon reception, the message is processed and the corresponding command
24081 is injected into the filtergraph. Depending on the result, the filter
24082 will send a reply to the client, adopting the format:
24083 @example
24084 @var{ERROR_CODE} @var{ERROR_REASON}
24085 @var{MESSAGE}
24086 @end example
24087
24088 @var{MESSAGE} is optional.
24089
24090 @subsection Examples
24091
24092 Look at @file{tools/zmqsend} for an example of a zmq client which can
24093 be used to send commands processed by these filters.
24094
24095 Consider the following filtergraph generated by @command{ffplay}.
24096 In this example the last overlay filter has an instance name. All other
24097 filters will have default instance names.
24098
24099 @example
24100 ffplay -dumpgraph 1 -f lavfi "
24101 color=s=100x100:c=red  [l];
24102 color=s=100x100:c=blue [r];
24103 nullsrc=s=200x100, zmq [bg];
24104 [bg][l]   overlay     [bg+l];
24105 [bg+l][r] overlay@@my=x=100 "
24106 @end example
24107
24108 To change the color of the left side of the video, the following
24109 command can be used:
24110 @example
24111 echo Parsed_color_0 c yellow | tools/zmqsend
24112 @end example
24113
24114 To change the right side:
24115 @example
24116 echo Parsed_color_1 c pink | tools/zmqsend
24117 @end example
24118
24119 To change the position of the right side:
24120 @example
24121 echo overlay@@my x 150 | tools/zmqsend
24122 @end example
24123
24124
24125 @c man end MULTIMEDIA FILTERS
24126
24127 @chapter Multimedia Sources
24128 @c man begin MULTIMEDIA SOURCES
24129
24130 Below is a description of the currently available multimedia sources.
24131
24132 @section amovie
24133
24134 This is the same as @ref{movie} source, except it selects an audio
24135 stream by default.
24136
24137 @anchor{movie}
24138 @section movie
24139
24140 Read audio and/or video stream(s) from a movie container.
24141
24142 It accepts the following parameters:
24143
24144 @table @option
24145 @item filename
24146 The name of the resource to read (not necessarily a file; it can also be a
24147 device or a stream accessed through some protocol).
24148
24149 @item format_name, f
24150 Specifies the format assumed for the movie to read, and can be either
24151 the name of a container or an input device. If not specified, the
24152 format is guessed from @var{movie_name} or by probing.
24153
24154 @item seek_point, sp
24155 Specifies the seek point in seconds. The frames will be output
24156 starting from this seek point. The parameter is evaluated with
24157 @code{av_strtod}, so the numerical value may be suffixed by an IS
24158 postfix. The default value is "0".
24159
24160 @item streams, s
24161 Specifies the streams to read. Several streams can be specified,
24162 separated by "+". The source will then have as many outputs, in the
24163 same order. The syntax is explained in the @ref{Stream specifiers,,"Stream specifiers"
24164 section in the ffmpeg manual,ffmpeg}. Two special names, "dv" and "da" specify
24165 respectively the default (best suited) video and audio stream. Default
24166 is "dv", or "da" if the filter is called as "amovie".
24167
24168 @item stream_index, si
24169 Specifies the index of the video stream to read. If the value is -1,
24170 the most suitable video stream will be automatically selected. The default
24171 value is "-1". Deprecated. If the filter is called "amovie", it will select
24172 audio instead of video.
24173
24174 @item loop
24175 Specifies how many times to read the stream in sequence.
24176 If the value is 0, the stream will be looped infinitely.
24177 Default value is "1".
24178
24179 Note that when the movie is looped the source timestamps are not
24180 changed, so it will generate non monotonically increasing timestamps.
24181
24182 @item discontinuity
24183 Specifies the time difference between frames above which the point is
24184 considered a timestamp discontinuity which is removed by adjusting the later
24185 timestamps.
24186 @end table
24187
24188 It allows overlaying a second video on top of the main input of
24189 a filtergraph, as shown in this graph:
24190 @example
24191 input -----------> deltapts0 --> overlay --> output
24192                                     ^
24193                                     |
24194 movie --> scale--> deltapts1 -------+
24195 @end example
24196 @subsection Examples
24197
24198 @itemize
24199 @item
24200 Skip 3.2 seconds from the start of the AVI file in.avi, and overlay it
24201 on top of the input labelled "in":
24202 @example
24203 movie=in.avi:seek_point=3.2, scale=180:-1, setpts=PTS-STARTPTS [over];
24204 [in] setpts=PTS-STARTPTS [main];
24205 [main][over] overlay=16:16 [out]
24206 @end example
24207
24208 @item
24209 Read from a video4linux2 device, and overlay it on top of the input
24210 labelled "in":
24211 @example
24212 movie=/dev/video0:f=video4linux2, scale=180:-1, setpts=PTS-STARTPTS [over];
24213 [in] setpts=PTS-STARTPTS [main];
24214 [main][over] overlay=16:16 [out]
24215 @end example
24216
24217 @item
24218 Read the first video stream and the audio stream with id 0x81 from
24219 dvd.vob; the video is connected to the pad named "video" and the audio is
24220 connected to the pad named "audio":
24221 @example
24222 movie=dvd.vob:s=v:0+#0x81 [video] [audio]
24223 @end example
24224 @end itemize
24225
24226 @subsection Commands
24227
24228 Both movie and amovie support the following commands:
24229 @table @option
24230 @item seek
24231 Perform seek using "av_seek_frame".
24232 The syntax is: seek @var{stream_index}|@var{timestamp}|@var{flags}
24233 @itemize
24234 @item
24235 @var{stream_index}: If stream_index is -1, a default
24236 stream is selected, and @var{timestamp} is automatically converted
24237 from AV_TIME_BASE units to the stream specific time_base.
24238 @item
24239 @var{timestamp}: Timestamp in AVStream.time_base units
24240 or, if no stream is specified, in AV_TIME_BASE units.
24241 @item
24242 @var{flags}: Flags which select direction and seeking mode.
24243 @end itemize
24244
24245 @item get_duration
24246 Get movie duration in AV_TIME_BASE units.
24247
24248 @end table
24249
24250 @c man end MULTIMEDIA SOURCES