]> git.sesse.net Git - ffmpeg/blob - doc/filters.texi
avfilter/vf_fieldhint: add support for duplicating fields
[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.
4687
4688 The filter accepts the following options:
4689
4690 @table @option
4691 @item noise, n
4692 Set noise tolerance. Can be specified in dB (in case "dB" is appended to the
4693 specified value) or amplitude ratio. Default is -60dB, or 0.001.
4694
4695 @item duration, d
4696 Set silence duration until notification (default is 2 seconds).
4697
4698 @item mono, m
4699 Process each channel separately, instead of combined. By default is disabled.
4700 @end table
4701
4702 @subsection Examples
4703
4704 @itemize
4705 @item
4706 Detect 5 seconds of silence with -50dB noise tolerance:
4707 @example
4708 silencedetect=n=-50dB:d=5
4709 @end example
4710
4711 @item
4712 Complete example with @command{ffmpeg} to detect silence with 0.0001 noise
4713 tolerance in @file{silence.mp3}:
4714 @example
4715 ffmpeg -i silence.mp3 -af silencedetect=noise=0.0001 -f null -
4716 @end example
4717 @end itemize
4718
4719 @section silenceremove
4720
4721 Remove silence from the beginning, middle or end of the audio.
4722
4723 The filter accepts the following options:
4724
4725 @table @option
4726 @item start_periods
4727 This value is used to indicate if audio should be trimmed at beginning of
4728 the audio. A value of zero indicates no silence should be trimmed from the
4729 beginning. When specifying a non-zero value, it trims audio up until it
4730 finds non-silence. Normally, when trimming silence from beginning of audio
4731 the @var{start_periods} will be @code{1} but it can be increased to higher
4732 values to trim all audio up to specific count of non-silence periods.
4733 Default value is @code{0}.
4734
4735 @item start_duration
4736 Specify the amount of time that non-silence must be detected before it stops
4737 trimming audio. By increasing the duration, bursts of noises can be treated
4738 as silence and trimmed off. Default value is @code{0}.
4739
4740 @item start_threshold
4741 This indicates what sample value should be treated as silence. For digital
4742 audio, a value of @code{0} may be fine but for audio recorded from analog,
4743 you may wish to increase the value to account for background noise.
4744 Can be specified in dB (in case "dB" is appended to the specified value)
4745 or amplitude ratio. Default value is @code{0}.
4746
4747 @item start_silence
4748 Specify max duration of silence at beginning that will be kept after
4749 trimming. Default is 0, which is equal to trimming all samples detected
4750 as silence.
4751
4752 @item start_mode
4753 Specify mode of detection of silence end in start of multi-channel audio.
4754 Can be @var{any} or @var{all}. Default is @var{any}.
4755 With @var{any}, any sample that is detected as non-silence will cause
4756 stopped trimming of silence.
4757 With @var{all}, only if all channels are detected as non-silence will cause
4758 stopped trimming of silence.
4759
4760 @item stop_periods
4761 Set the count for trimming silence from the end of audio.
4762 To remove silence from the middle of a file, specify a @var{stop_periods}
4763 that is negative. This value is then treated as a positive value and is
4764 used to indicate the effect should restart processing as specified by
4765 @var{start_periods}, making it suitable for removing periods of silence
4766 in the middle of the audio.
4767 Default value is @code{0}.
4768
4769 @item stop_duration
4770 Specify a duration of silence that must exist before audio is not copied any
4771 more. By specifying a higher duration, silence that is wanted can be left in
4772 the audio.
4773 Default value is @code{0}.
4774
4775 @item stop_threshold
4776 This is the same as @option{start_threshold} but for trimming silence from
4777 the end of audio.
4778 Can be specified in dB (in case "dB" is appended to the specified value)
4779 or amplitude ratio. Default value is @code{0}.
4780
4781 @item stop_silence
4782 Specify max duration of silence at end that will be kept after
4783 trimming. Default is 0, which is equal to trimming all samples detected
4784 as silence.
4785
4786 @item stop_mode
4787 Specify mode of detection of silence start in end of multi-channel audio.
4788 Can be @var{any} or @var{all}. Default is @var{any}.
4789 With @var{any}, any sample that is detected as non-silence will cause
4790 stopped trimming of silence.
4791 With @var{all}, only if all channels are detected as non-silence will cause
4792 stopped trimming of silence.
4793
4794 @item detection
4795 Set how is silence detected. Can be @code{rms} or @code{peak}. Second is faster
4796 and works better with digital silence which is exactly 0.
4797 Default value is @code{rms}.
4798
4799 @item window
4800 Set duration in number of seconds used to calculate size of window in number
4801 of samples for detecting silence.
4802 Default value is @code{0.02}. Allowed range is from @code{0} to @code{10}.
4803 @end table
4804
4805 @subsection Examples
4806
4807 @itemize
4808 @item
4809 The following example shows how this filter can be used to start a recording
4810 that does not contain the delay at the start which usually occurs between
4811 pressing the record button and the start of the performance:
4812 @example
4813 silenceremove=start_periods=1:start_duration=5:start_threshold=0.02
4814 @end example
4815
4816 @item
4817 Trim all silence encountered from beginning to end where there is more than 1
4818 second of silence in audio:
4819 @example
4820 silenceremove=stop_periods=-1:stop_duration=1:stop_threshold=-90dB
4821 @end example
4822
4823 @item
4824 Trim all digital silence samples, using peak detection, from beginning to end
4825 where there is more than 0 samples of digital silence in audio and digital
4826 silence is detected in all channels at same positions in stream:
4827 @example
4828 silenceremove=window=0:detection=peak:stop_mode=all:start_mode=all:stop_periods=-1:stop_threshold=0
4829 @end example
4830 @end itemize
4831
4832 @section sofalizer
4833
4834 SOFAlizer uses head-related transfer functions (HRTFs) to create virtual
4835 loudspeakers around the user for binaural listening via headphones (audio
4836 formats up to 9 channels supported).
4837 The HRTFs are stored in SOFA files (see @url{http://www.sofacoustics.org/} for a database).
4838 SOFAlizer is developed at the Acoustics Research Institute (ARI) of the
4839 Austrian Academy of Sciences.
4840
4841 To enable compilation of this filter you need to configure FFmpeg with
4842 @code{--enable-libmysofa}.
4843
4844 The filter accepts the following options:
4845
4846 @table @option
4847 @item sofa
4848 Set the SOFA file used for rendering.
4849
4850 @item gain
4851 Set gain applied to audio. Value is in dB. Default is 0.
4852
4853 @item rotation
4854 Set rotation of virtual loudspeakers in deg. Default is 0.
4855
4856 @item elevation
4857 Set elevation of virtual speakers in deg. Default is 0.
4858
4859 @item radius
4860 Set distance in meters between loudspeakers and the listener with near-field
4861 HRTFs. Default is 1.
4862
4863 @item type
4864 Set processing type. Can be @var{time} or @var{freq}. @var{time} is
4865 processing audio in time domain which is slow.
4866 @var{freq} is processing audio in frequency domain which is fast.
4867 Default is @var{freq}.
4868
4869 @item speakers
4870 Set custom positions of virtual loudspeakers. Syntax for this option is:
4871 <CH> <AZIM> <ELEV>[|<CH> <AZIM> <ELEV>|...].
4872 Each virtual loudspeaker is described with short channel name following with
4873 azimuth and elevation in degrees.
4874 Each virtual loudspeaker description is separated by '|'.
4875 For example to override front left and front right channel positions use:
4876 'speakers=FL 45 15|FR 345 15'.
4877 Descriptions with unrecognised channel names are ignored.
4878
4879 @item lfegain
4880 Set custom gain for LFE channels. Value is in dB. Default is 0.
4881
4882 @item framesize
4883 Set custom frame size in number of samples. Default is 1024.
4884 Allowed range is from 1024 to 96000. Only used if option @samp{type}
4885 is set to @var{freq}.
4886
4887 @item normalize
4888 Should all IRs be normalized upon importing SOFA file.
4889 By default is enabled.
4890
4891 @item interpolate
4892 Should nearest IRs be interpolated with neighbor IRs if exact position
4893 does not match. By default is disabled.
4894
4895 @item minphase
4896 Minphase all IRs upon loading of SOFA file. By default is disabled.
4897
4898 @item anglestep
4899 Set neighbor search angle step. Only used if option @var{interpolate} is enabled.
4900
4901 @item radstep
4902 Set neighbor search radius step. Only used if option @var{interpolate} is enabled.
4903 @end table
4904
4905 @subsection Examples
4906
4907 @itemize
4908 @item
4909 Using ClubFritz6 sofa file:
4910 @example
4911 sofalizer=sofa=/path/to/ClubFritz6.sofa:type=freq:radius=1
4912 @end example
4913
4914 @item
4915 Using ClubFritz12 sofa file and bigger radius with small rotation:
4916 @example
4917 sofalizer=sofa=/path/to/ClubFritz12.sofa:type=freq:radius=2:rotation=5
4918 @end example
4919
4920 @item
4921 Similar as above but with custom speaker positions for front left, front right, back left and back right
4922 and also with custom gain:
4923 @example
4924 "sofalizer=sofa=/path/to/ClubFritz6.sofa:type=freq:radius=2:speakers=FL 45|FR 315|BL 135|BR 225:gain=28"
4925 @end example
4926 @end itemize
4927
4928 @section stereotools
4929
4930 This filter has some handy utilities to manage stereo signals, for converting
4931 M/S stereo recordings to L/R signal while having control over the parameters
4932 or spreading the stereo image of master track.
4933
4934 The filter accepts the following options:
4935
4936 @table @option
4937 @item level_in
4938 Set input level before filtering for both channels. Defaults is 1.
4939 Allowed range is from 0.015625 to 64.
4940
4941 @item level_out
4942 Set output level after filtering for both channels. Defaults is 1.
4943 Allowed range is from 0.015625 to 64.
4944
4945 @item balance_in
4946 Set input balance between both channels. Default is 0.
4947 Allowed range is from -1 to 1.
4948
4949 @item balance_out
4950 Set output balance between both channels. Default is 0.
4951 Allowed range is from -1 to 1.
4952
4953 @item softclip
4954 Enable softclipping. Results in analog distortion instead of harsh digital 0dB
4955 clipping. Disabled by default.
4956
4957 @item mutel
4958 Mute the left channel. Disabled by default.
4959
4960 @item muter
4961 Mute the right channel. Disabled by default.
4962
4963 @item phasel
4964 Change the phase of the left channel. Disabled by default.
4965
4966 @item phaser
4967 Change the phase of the right channel. Disabled by default.
4968
4969 @item mode
4970 Set stereo mode. Available values are:
4971
4972 @table @samp
4973 @item lr>lr
4974 Left/Right to Left/Right, this is default.
4975
4976 @item lr>ms
4977 Left/Right to Mid/Side.
4978
4979 @item ms>lr
4980 Mid/Side to Left/Right.
4981
4982 @item lr>ll
4983 Left/Right to Left/Left.
4984
4985 @item lr>rr
4986 Left/Right to Right/Right.
4987
4988 @item lr>l+r
4989 Left/Right to Left + Right.
4990
4991 @item lr>rl
4992 Left/Right to Right/Left.
4993
4994 @item ms>ll
4995 Mid/Side to Left/Left.
4996
4997 @item ms>rr
4998 Mid/Side to Right/Right.
4999 @end table
5000
5001 @item slev
5002 Set level of side signal. Default is 1.
5003 Allowed range is from 0.015625 to 64.
5004
5005 @item sbal
5006 Set balance of side signal. Default is 0.
5007 Allowed range is from -1 to 1.
5008
5009 @item mlev
5010 Set level of the middle signal. Default is 1.
5011 Allowed range is from 0.015625 to 64.
5012
5013 @item mpan
5014 Set middle signal pan. Default is 0. Allowed range is from -1 to 1.
5015
5016 @item base
5017 Set stereo base between mono and inversed channels. Default is 0.
5018 Allowed range is from -1 to 1.
5019
5020 @item delay
5021 Set delay in milliseconds how much to delay left from right channel and
5022 vice versa. Default is 0. Allowed range is from -20 to 20.
5023
5024 @item sclevel
5025 Set S/C level. Default is 1. Allowed range is from 1 to 100.
5026
5027 @item phase
5028 Set the stereo phase in degrees. Default is 0. Allowed range is from 0 to 360.
5029
5030 @item bmode_in, bmode_out
5031 Set balance mode for balance_in/balance_out option.
5032
5033 Can be one of the following:
5034
5035 @table @samp
5036 @item balance
5037 Classic balance mode. Attenuate one channel at time.
5038 Gain is raised up to 1.
5039
5040 @item amplitude
5041 Similar as classic mode above but gain is raised up to 2.
5042
5043 @item power
5044 Equal power distribution, from -6dB to +6dB range.
5045 @end table
5046 @end table
5047
5048 @subsection Examples
5049
5050 @itemize
5051 @item
5052 Apply karaoke like effect:
5053 @example
5054 stereotools=mlev=0.015625
5055 @end example
5056
5057 @item
5058 Convert M/S signal to L/R:
5059 @example
5060 "stereotools=mode=ms>lr"
5061 @end example
5062 @end itemize
5063
5064 @section stereowiden
5065
5066 This filter enhance the stereo effect by suppressing signal common to both
5067 channels and by delaying the signal of left into right and vice versa,
5068 thereby widening the stereo effect.
5069
5070 The filter accepts the following options:
5071
5072 @table @option
5073 @item delay
5074 Time in milliseconds of the delay of left signal into right and vice versa.
5075 Default is 20 milliseconds.
5076
5077 @item feedback
5078 Amount of gain in delayed signal into right and vice versa. Gives a delay
5079 effect of left signal in right output and vice versa which gives widening
5080 effect. Default is 0.3.
5081
5082 @item crossfeed
5083 Cross feed of left into right with inverted phase. This helps in suppressing
5084 the mono. If the value is 1 it will cancel all the signal common to both
5085 channels. Default is 0.3.
5086
5087 @item drymix
5088 Set level of input signal of original channel. Default is 0.8.
5089 @end table
5090
5091 @section superequalizer
5092 Apply 18 band equalizer.
5093
5094 The filter accepts the following options:
5095 @table @option
5096 @item 1b
5097 Set 65Hz band gain.
5098 @item 2b
5099 Set 92Hz band gain.
5100 @item 3b
5101 Set 131Hz band gain.
5102 @item 4b
5103 Set 185Hz band gain.
5104 @item 5b
5105 Set 262Hz band gain.
5106 @item 6b
5107 Set 370Hz band gain.
5108 @item 7b
5109 Set 523Hz band gain.
5110 @item 8b
5111 Set 740Hz band gain.
5112 @item 9b
5113 Set 1047Hz band gain.
5114 @item 10b
5115 Set 1480Hz band gain.
5116 @item 11b
5117 Set 2093Hz band gain.
5118 @item 12b
5119 Set 2960Hz band gain.
5120 @item 13b
5121 Set 4186Hz band gain.
5122 @item 14b
5123 Set 5920Hz band gain.
5124 @item 15b
5125 Set 8372Hz band gain.
5126 @item 16b
5127 Set 11840Hz band gain.
5128 @item 17b
5129 Set 16744Hz band gain.
5130 @item 18b
5131 Set 20000Hz band gain.
5132 @end table
5133
5134 @section surround
5135 Apply audio surround upmix filter.
5136
5137 This filter allows to produce multichannel output from audio stream.
5138
5139 The filter accepts the following options:
5140
5141 @table @option
5142 @item chl_out
5143 Set output channel layout. By default, this is @var{5.1}.
5144
5145 See @ref{channel layout syntax,,the Channel Layout section in the ffmpeg-utils(1) manual,ffmpeg-utils}
5146 for the required syntax.
5147
5148 @item chl_in
5149 Set input channel layout. By default, this is @var{stereo}.
5150
5151 See @ref{channel layout syntax,,the Channel Layout section in the ffmpeg-utils(1) manual,ffmpeg-utils}
5152 for the required syntax.
5153
5154 @item level_in
5155 Set input volume level. By default, this is @var{1}.
5156
5157 @item level_out
5158 Set output volume level. By default, this is @var{1}.
5159
5160 @item lfe
5161 Enable LFE channel output if output channel layout has it. By default, this is enabled.
5162
5163 @item lfe_low
5164 Set LFE low cut off frequency. By default, this is @var{128} Hz.
5165
5166 @item lfe_high
5167 Set LFE high cut off frequency. By default, this is @var{256} Hz.
5168
5169 @item lfe_mode
5170 Set LFE mode, can be @var{add} or @var{sub}. Default is @var{add}.
5171 In @var{add} mode, LFE channel is created from input audio and added to output.
5172 In @var{sub} mode, LFE channel is created from input audio and added to output but
5173 also all non-LFE output channels are subtracted with output LFE channel.
5174
5175 @item angle
5176 Set angle of stereo surround transform, Allowed range is from @var{0} to @var{360}.
5177 Default is @var{90}.
5178
5179 @item fc_in
5180 Set front center input volume. By default, this is @var{1}.
5181
5182 @item fc_out
5183 Set front center output volume. By default, this is @var{1}.
5184
5185 @item fl_in
5186 Set front left input volume. By default, this is @var{1}.
5187
5188 @item fl_out
5189 Set front left output volume. By default, this is @var{1}.
5190
5191 @item fr_in
5192 Set front right input volume. By default, this is @var{1}.
5193
5194 @item fr_out
5195 Set front right output volume. By default, this is @var{1}.
5196
5197 @item sl_in
5198 Set side left input volume. By default, this is @var{1}.
5199
5200 @item sl_out
5201 Set side left output volume. By default, this is @var{1}.
5202
5203 @item sr_in
5204 Set side right input volume. By default, this is @var{1}.
5205
5206 @item sr_out
5207 Set side right output volume. By default, this is @var{1}.
5208
5209 @item bl_in
5210 Set back left input volume. By default, this is @var{1}.
5211
5212 @item bl_out
5213 Set back left output volume. By default, this is @var{1}.
5214
5215 @item br_in
5216 Set back right input volume. By default, this is @var{1}.
5217
5218 @item br_out
5219 Set back right output volume. By default, this is @var{1}.
5220
5221 @item bc_in
5222 Set back center input volume. By default, this is @var{1}.
5223
5224 @item bc_out
5225 Set back center output volume. By default, this is @var{1}.
5226
5227 @item lfe_in
5228 Set LFE input volume. By default, this is @var{1}.
5229
5230 @item lfe_out
5231 Set LFE output volume. By default, this is @var{1}.
5232
5233 @item allx
5234 Set spread usage of stereo image across X axis for all channels.
5235
5236 @item ally
5237 Set spread usage of stereo image across Y axis for all channels.
5238
5239 @item fcx, flx, frx, blx, brx, slx, srx, bcx
5240 Set spread usage of stereo image across X axis for each channel.
5241
5242 @item fcy, fly, fry, bly, bry, sly, sry, bcy
5243 Set spread usage of stereo image across Y axis for each channel.
5244
5245 @item win_size
5246 Set window size. Allowed range is from @var{1024} to @var{65536}. Default size is @var{4096}.
5247
5248 @item win_func
5249 Set window function.
5250
5251 It accepts the following values:
5252 @table @samp
5253 @item rect
5254 @item bartlett
5255 @item hann, hanning
5256 @item hamming
5257 @item blackman
5258 @item welch
5259 @item flattop
5260 @item bharris
5261 @item bnuttall
5262 @item bhann
5263 @item sine
5264 @item nuttall
5265 @item lanczos
5266 @item gauss
5267 @item tukey
5268 @item dolph
5269 @item cauchy
5270 @item parzen
5271 @item poisson
5272 @item bohman
5273 @end table
5274 Default is @code{hann}.
5275
5276 @item overlap
5277 Set window overlap. If set to 1, the recommended overlap for selected
5278 window function will be picked. Default is @code{0.5}.
5279 @end table
5280
5281 @section treble, highshelf
5282
5283 Boost or cut treble (upper) frequencies of the audio using a two-pole
5284 shelving filter with a response similar to that of a standard
5285 hi-fi's tone-controls. This is also known as shelving equalisation (EQ).
5286
5287 The filter accepts the following options:
5288
5289 @table @option
5290 @item gain, g
5291 Give the gain at whichever is the lower of ~22 kHz and the
5292 Nyquist frequency. Its useful range is about -20 (for a large cut)
5293 to +20 (for a large boost). Beware of clipping when using a positive gain.
5294
5295 @item frequency, f
5296 Set the filter's central frequency and so can be used
5297 to extend or reduce the frequency range to be boosted or cut.
5298 The default value is @code{3000} Hz.
5299
5300 @item width_type, t
5301 Set method to specify band-width of filter.
5302 @table @option
5303 @item h
5304 Hz
5305 @item q
5306 Q-Factor
5307 @item o
5308 octave
5309 @item s
5310 slope
5311 @item k
5312 kHz
5313 @end table
5314
5315 @item width, w
5316 Determine how steep is the filter's shelf transition.
5317
5318 @item mix, m
5319 How much to use filtered signal in output. Default is 1.
5320 Range is between 0 and 1.
5321
5322 @item channels, c
5323 Specify which channels to filter, by default all available are filtered.
5324 @end table
5325
5326 @subsection Commands
5327
5328 This filter supports the following commands:
5329 @table @option
5330 @item frequency, f
5331 Change treble frequency.
5332 Syntax for the command is : "@var{frequency}"
5333
5334 @item width_type, t
5335 Change treble width_type.
5336 Syntax for the command is : "@var{width_type}"
5337
5338 @item width, w
5339 Change treble width.
5340 Syntax for the command is : "@var{width}"
5341
5342 @item gain, g
5343 Change treble gain.
5344 Syntax for the command is : "@var{gain}"
5345
5346 @item mix, m
5347 Change treble mix.
5348 Syntax for the command is : "@var{mix}"
5349 @end table
5350
5351 @section tremolo
5352
5353 Sinusoidal amplitude modulation.
5354
5355 The filter accepts the following options:
5356
5357 @table @option
5358 @item f
5359 Modulation frequency in Hertz. Modulation frequencies in the subharmonic range
5360 (20 Hz or lower) will result in a tremolo effect.
5361 This filter may also be used as a ring modulator by specifying
5362 a modulation frequency higher than 20 Hz.
5363 Range is 0.1 - 20000.0. Default value is 5.0 Hz.
5364
5365 @item d
5366 Depth of modulation as a percentage. Range is 0.0 - 1.0.
5367 Default value is 0.5.
5368 @end table
5369
5370 @section vibrato
5371
5372 Sinusoidal phase modulation.
5373
5374 The filter accepts the following options:
5375
5376 @table @option
5377 @item f
5378 Modulation frequency in Hertz.
5379 Range is 0.1 - 20000.0. Default value is 5.0 Hz.
5380
5381 @item d
5382 Depth of modulation as a percentage. Range is 0.0 - 1.0.
5383 Default value is 0.5.
5384 @end table
5385
5386 @section volume
5387
5388 Adjust the input audio volume.
5389
5390 It accepts the following parameters:
5391 @table @option
5392
5393 @item volume
5394 Set audio volume expression.
5395
5396 Output values are clipped to the maximum value.
5397
5398 The output audio volume is given by the relation:
5399 @example
5400 @var{output_volume} = @var{volume} * @var{input_volume}
5401 @end example
5402
5403 The default value for @var{volume} is "1.0".
5404
5405 @item precision
5406 This parameter represents the mathematical precision.
5407
5408 It determines which input sample formats will be allowed, which affects the
5409 precision of the volume scaling.
5410
5411 @table @option
5412 @item fixed
5413 8-bit fixed-point; this limits input sample format to U8, S16, and S32.
5414 @item float
5415 32-bit floating-point; this limits input sample format to FLT. (default)
5416 @item double
5417 64-bit floating-point; this limits input sample format to DBL.
5418 @end table
5419
5420 @item replaygain
5421 Choose the behaviour on encountering ReplayGain side data in input frames.
5422
5423 @table @option
5424 @item drop
5425 Remove ReplayGain side data, ignoring its contents (the default).
5426
5427 @item ignore
5428 Ignore ReplayGain side data, but leave it in the frame.
5429
5430 @item track
5431 Prefer the track gain, if present.
5432
5433 @item album
5434 Prefer the album gain, if present.
5435 @end table
5436
5437 @item replaygain_preamp
5438 Pre-amplification gain in dB to apply to the selected replaygain gain.
5439
5440 Default value for @var{replaygain_preamp} is 0.0.
5441
5442 @item eval
5443 Set when the volume expression is evaluated.
5444
5445 It accepts the following values:
5446 @table @samp
5447 @item once
5448 only evaluate expression once during the filter initialization, or
5449 when the @samp{volume} command is sent
5450
5451 @item frame
5452 evaluate expression for each incoming frame
5453 @end table
5454
5455 Default value is @samp{once}.
5456 @end table
5457
5458 The volume expression can contain the following parameters.
5459
5460 @table @option
5461 @item n
5462 frame number (starting at zero)
5463 @item nb_channels
5464 number of channels
5465 @item nb_consumed_samples
5466 number of samples consumed by the filter
5467 @item nb_samples
5468 number of samples in the current frame
5469 @item pos
5470 original frame position in the file
5471 @item pts
5472 frame PTS
5473 @item sample_rate
5474 sample rate
5475 @item startpts
5476 PTS at start of stream
5477 @item startt
5478 time at start of stream
5479 @item t
5480 frame time
5481 @item tb
5482 timestamp timebase
5483 @item volume
5484 last set volume value
5485 @end table
5486
5487 Note that when @option{eval} is set to @samp{once} only the
5488 @var{sample_rate} and @var{tb} variables are available, all other
5489 variables will evaluate to NAN.
5490
5491 @subsection Commands
5492
5493 This filter supports the following commands:
5494 @table @option
5495 @item volume
5496 Modify the volume expression.
5497 The command accepts the same syntax of the corresponding option.
5498
5499 If the specified expression is not valid, it is kept at its current
5500 value.
5501 @item replaygain_noclip
5502 Prevent clipping by limiting the gain applied.
5503
5504 Default value for @var{replaygain_noclip} is 1.
5505
5506 @end table
5507
5508 @subsection Examples
5509
5510 @itemize
5511 @item
5512 Halve the input audio volume:
5513 @example
5514 volume=volume=0.5
5515 volume=volume=1/2
5516 volume=volume=-6.0206dB
5517 @end example
5518
5519 In all the above example the named key for @option{volume} can be
5520 omitted, for example like in:
5521 @example
5522 volume=0.5
5523 @end example
5524
5525 @item
5526 Increase input audio power by 6 decibels using fixed-point precision:
5527 @example
5528 volume=volume=6dB:precision=fixed
5529 @end example
5530
5531 @item
5532 Fade volume after time 10 with an annihilation period of 5 seconds:
5533 @example
5534 volume='if(lt(t,10),1,max(1-(t-10)/5,0))':eval=frame
5535 @end example
5536 @end itemize
5537
5538 @section volumedetect
5539
5540 Detect the volume of the input video.
5541
5542 The filter has no parameters. The input is not modified. Statistics about
5543 the volume will be printed in the log when the input stream end is reached.
5544
5545 In particular it will show the mean volume (root mean square), maximum
5546 volume (on a per-sample basis), and the beginning of a histogram of the
5547 registered volume values (from the maximum value to a cumulated 1/1000 of
5548 the samples).
5549
5550 All volumes are in decibels relative to the maximum PCM value.
5551
5552 @subsection Examples
5553
5554 Here is an excerpt of the output:
5555 @example
5556 [Parsed_volumedetect_0 @ 0xa23120] mean_volume: -27 dB
5557 [Parsed_volumedetect_0 @ 0xa23120] max_volume: -4 dB
5558 [Parsed_volumedetect_0 @ 0xa23120] histogram_4db: 6
5559 [Parsed_volumedetect_0 @ 0xa23120] histogram_5db: 62
5560 [Parsed_volumedetect_0 @ 0xa23120] histogram_6db: 286
5561 [Parsed_volumedetect_0 @ 0xa23120] histogram_7db: 1042
5562 [Parsed_volumedetect_0 @ 0xa23120] histogram_8db: 2551
5563 [Parsed_volumedetect_0 @ 0xa23120] histogram_9db: 4609
5564 [Parsed_volumedetect_0 @ 0xa23120] histogram_10db: 8409
5565 @end example
5566
5567 It means that:
5568 @itemize
5569 @item
5570 The mean square energy is approximately -27 dB, or 10^-2.7.
5571 @item
5572 The largest sample is at -4 dB, or more precisely between -4 dB and -5 dB.
5573 @item
5574 There are 6 samples at -4 dB, 62 at -5 dB, 286 at -6 dB, etc.
5575 @end itemize
5576
5577 In other words, raising the volume by +4 dB does not cause any clipping,
5578 raising it by +5 dB causes clipping for 6 samples, etc.
5579
5580 @c man end AUDIO FILTERS
5581
5582 @chapter Audio Sources
5583 @c man begin AUDIO SOURCES
5584
5585 Below is a description of the currently available audio sources.
5586
5587 @section abuffer
5588
5589 Buffer audio frames, and make them available to the filter chain.
5590
5591 This source is mainly intended for a programmatic use, in particular
5592 through the interface defined in @file{libavfilter/asrc_abuffer.h}.
5593
5594 It accepts the following parameters:
5595 @table @option
5596
5597 @item time_base
5598 The timebase which will be used for timestamps of submitted frames. It must be
5599 either a floating-point number or in @var{numerator}/@var{denominator} form.
5600
5601 @item sample_rate
5602 The sample rate of the incoming audio buffers.
5603
5604 @item sample_fmt
5605 The sample format of the incoming audio buffers.
5606 Either a sample format name or its corresponding integer representation from
5607 the enum AVSampleFormat in @file{libavutil/samplefmt.h}
5608
5609 @item channel_layout
5610 The channel layout of the incoming audio buffers.
5611 Either a channel layout name from channel_layout_map in
5612 @file{libavutil/channel_layout.c} or its corresponding integer representation
5613 from the AV_CH_LAYOUT_* macros in @file{libavutil/channel_layout.h}
5614
5615 @item channels
5616 The number of channels of the incoming audio buffers.
5617 If both @var{channels} and @var{channel_layout} are specified, then they
5618 must be consistent.
5619
5620 @end table
5621
5622 @subsection Examples
5623
5624 @example
5625 abuffer=sample_rate=44100:sample_fmt=s16p:channel_layout=stereo
5626 @end example
5627
5628 will instruct the source to accept planar 16bit signed stereo at 44100Hz.
5629 Since the sample format with name "s16p" corresponds to the number
5630 6 and the "stereo" channel layout corresponds to the value 0x3, this is
5631 equivalent to:
5632 @example
5633 abuffer=sample_rate=44100:sample_fmt=6:channel_layout=0x3
5634 @end example
5635
5636 @section aevalsrc
5637
5638 Generate an audio signal specified by an expression.
5639
5640 This source accepts in input one or more expressions (one for each
5641 channel), which are evaluated and used to generate a corresponding
5642 audio signal.
5643
5644 This source accepts the following options:
5645
5646 @table @option
5647 @item exprs
5648 Set the '|'-separated expressions list for each separate channel. In case the
5649 @option{channel_layout} option is not specified, the selected channel layout
5650 depends on the number of provided expressions. Otherwise the last
5651 specified expression is applied to the remaining output channels.
5652
5653 @item channel_layout, c
5654 Set the channel layout. The number of channels in the specified layout
5655 must be equal to the number of specified expressions.
5656
5657 @item duration, d
5658 Set the minimum duration of the sourced audio. See
5659 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
5660 for the accepted syntax.
5661 Note that the resulting duration may be greater than the specified
5662 duration, as the generated audio is always cut at the end of a
5663 complete frame.
5664
5665 If not specified, or the expressed duration is negative, the audio is
5666 supposed to be generated forever.
5667
5668 @item nb_samples, n
5669 Set the number of samples per channel per each output frame,
5670 default to 1024.
5671
5672 @item sample_rate, s
5673 Specify the sample rate, default to 44100.
5674 @end table
5675
5676 Each expression in @var{exprs} can contain the following constants:
5677
5678 @table @option
5679 @item n
5680 number of the evaluated sample, starting from 0
5681
5682 @item t
5683 time of the evaluated sample expressed in seconds, starting from 0
5684
5685 @item s
5686 sample rate
5687
5688 @end table
5689
5690 @subsection Examples
5691
5692 @itemize
5693 @item
5694 Generate silence:
5695 @example
5696 aevalsrc=0
5697 @end example
5698
5699 @item
5700 Generate a sin signal with frequency of 440 Hz, set sample rate to
5701 8000 Hz:
5702 @example
5703 aevalsrc="sin(440*2*PI*t):s=8000"
5704 @end example
5705
5706 @item
5707 Generate a two channels signal, specify the channel layout (Front
5708 Center + Back Center) explicitly:
5709 @example
5710 aevalsrc="sin(420*2*PI*t)|cos(430*2*PI*t):c=FC|BC"
5711 @end example
5712
5713 @item
5714 Generate white noise:
5715 @example
5716 aevalsrc="-2+random(0)"
5717 @end example
5718
5719 @item
5720 Generate an amplitude modulated signal:
5721 @example
5722 aevalsrc="sin(10*2*PI*t)*sin(880*2*PI*t)"
5723 @end example
5724
5725 @item
5726 Generate 2.5 Hz binaural beats on a 360 Hz carrier:
5727 @example
5728 aevalsrc="0.1*sin(2*PI*(360-2.5/2)*t) | 0.1*sin(2*PI*(360+2.5/2)*t)"
5729 @end example
5730
5731 @end itemize
5732
5733 @section anullsrc
5734
5735 The null audio source, return unprocessed audio frames. It is mainly useful
5736 as a template and to be employed in analysis / debugging tools, or as
5737 the source for filters which ignore the input data (for example the sox
5738 synth filter).
5739
5740 This source accepts the following options:
5741
5742 @table @option
5743
5744 @item channel_layout, cl
5745
5746 Specifies the channel layout, and can be either an integer or a string
5747 representing a channel layout. The default value of @var{channel_layout}
5748 is "stereo".
5749
5750 Check the channel_layout_map definition in
5751 @file{libavutil/channel_layout.c} for the mapping between strings and
5752 channel layout values.
5753
5754 @item sample_rate, r
5755 Specifies the sample rate, and defaults to 44100.
5756
5757 @item nb_samples, n
5758 Set the number of samples per requested frames.
5759
5760 @end table
5761
5762 @subsection Examples
5763
5764 @itemize
5765 @item
5766 Set the sample rate to 48000 Hz and the channel layout to AV_CH_LAYOUT_MONO.
5767 @example
5768 anullsrc=r=48000:cl=4
5769 @end example
5770
5771 @item
5772 Do the same operation with a more obvious syntax:
5773 @example
5774 anullsrc=r=48000:cl=mono
5775 @end example
5776 @end itemize
5777
5778 All the parameters need to be explicitly defined.
5779
5780 @section flite
5781
5782 Synthesize a voice utterance using the libflite library.
5783
5784 To enable compilation of this filter you need to configure FFmpeg with
5785 @code{--enable-libflite}.
5786
5787 Note that versions of the flite library prior to 2.0 are not thread-safe.
5788
5789 The filter accepts the following options:
5790
5791 @table @option
5792
5793 @item list_voices
5794 If set to 1, list the names of the available voices and exit
5795 immediately. Default value is 0.
5796
5797 @item nb_samples, n
5798 Set the maximum number of samples per frame. Default value is 512.
5799
5800 @item textfile
5801 Set the filename containing the text to speak.
5802
5803 @item text
5804 Set the text to speak.
5805
5806 @item voice, v
5807 Set the voice to use for the speech synthesis. Default value is
5808 @code{kal}. See also the @var{list_voices} option.
5809 @end table
5810
5811 @subsection Examples
5812
5813 @itemize
5814 @item
5815 Read from file @file{speech.txt}, and synthesize the text using the
5816 standard flite voice:
5817 @example
5818 flite=textfile=speech.txt
5819 @end example
5820
5821 @item
5822 Read the specified text selecting the @code{slt} voice:
5823 @example
5824 flite=text='So fare thee well, poor devil of a Sub-Sub, whose commentator I am':voice=slt
5825 @end example
5826
5827 @item
5828 Input text to ffmpeg:
5829 @example
5830 ffmpeg -f lavfi -i flite=text='So fare thee well, poor devil of a Sub-Sub, whose commentator I am':voice=slt
5831 @end example
5832
5833 @item
5834 Make @file{ffplay} speak the specified text, using @code{flite} and
5835 the @code{lavfi} device:
5836 @example
5837 ffplay -f lavfi flite=text='No more be grieved for which that thou hast done.'
5838 @end example
5839 @end itemize
5840
5841 For more information about libflite, check:
5842 @url{http://www.festvox.org/flite/}
5843
5844 @section anoisesrc
5845
5846 Generate a noise audio signal.
5847
5848 The filter accepts the following options:
5849
5850 @table @option
5851 @item sample_rate, r
5852 Specify the sample rate. Default value is 48000 Hz.
5853
5854 @item amplitude, a
5855 Specify the amplitude (0.0 - 1.0) of the generated audio stream. Default value
5856 is 1.0.
5857
5858 @item duration, d
5859 Specify the duration of the generated audio stream. Not specifying this option
5860 results in noise with an infinite length.
5861
5862 @item color, colour, c
5863 Specify the color of noise. Available noise colors are white, pink, brown,
5864 blue and violet. Default color is white.
5865
5866 @item seed, s
5867 Specify a value used to seed the PRNG.
5868
5869 @item nb_samples, n
5870 Set the number of samples per each output frame, default is 1024.
5871 @end table
5872
5873 @subsection Examples
5874
5875 @itemize
5876
5877 @item
5878 Generate 60 seconds of pink noise, with a 44.1 kHz sampling rate and an amplitude of 0.5:
5879 @example
5880 anoisesrc=d=60:c=pink:r=44100:a=0.5
5881 @end example
5882 @end itemize
5883
5884 @section hilbert
5885
5886 Generate odd-tap Hilbert transform FIR coefficients.
5887
5888 The resulting stream can be used with @ref{afir} filter for phase-shifting
5889 the signal by 90 degrees.
5890
5891 This is used in many matrix coding schemes and for analytic signal generation.
5892 The process is often written as a multiplication by i (or j), the imaginary unit.
5893
5894 The filter accepts the following options:
5895
5896 @table @option
5897
5898 @item sample_rate, s
5899 Set sample rate, default is 44100.
5900
5901 @item taps, t
5902 Set length of FIR filter, default is 22051.
5903
5904 @item nb_samples, n
5905 Set number of samples per each frame.
5906
5907 @item win_func, w
5908 Set window function to be used when generating FIR coefficients.
5909 @end table
5910
5911 @section sinc
5912
5913 Generate a sinc kaiser-windowed low-pass, high-pass, band-pass, or band-reject FIR coefficients.
5914
5915 The resulting stream can be used with @ref{afir} filter for filtering the audio signal.
5916
5917 The filter accepts the following options:
5918
5919 @table @option
5920 @item sample_rate, r
5921 Set sample rate, default is 44100.
5922
5923 @item nb_samples, n
5924 Set number of samples per each frame. Default is 1024.
5925
5926 @item hp
5927 Set high-pass frequency. Default is 0.
5928
5929 @item lp
5930 Set low-pass frequency. Default is 0.
5931 If high-pass frequency is lower than low-pass frequency and low-pass frequency
5932 is higher than 0 then filter will create band-pass filter coefficients,
5933 otherwise band-reject filter coefficients.
5934
5935 @item phase
5936 Set filter phase response. Default is 50. Allowed range is from 0 to 100.
5937
5938 @item beta
5939 Set Kaiser window beta.
5940
5941 @item att
5942 Set stop-band attenuation. Default is 120dB, allowed range is from 40 to 180 dB.
5943
5944 @item round
5945 Enable rounding, by default is disabled.
5946
5947 @item hptaps
5948 Set number of taps for high-pass filter.
5949
5950 @item lptaps
5951 Set number of taps for low-pass filter.
5952 @end table
5953
5954 @section sine
5955
5956 Generate an audio signal made of a sine wave with amplitude 1/8.
5957
5958 The audio signal is bit-exact.
5959
5960 The filter accepts the following options:
5961
5962 @table @option
5963
5964 @item frequency, f
5965 Set the carrier frequency. Default is 440 Hz.
5966
5967 @item beep_factor, b
5968 Enable a periodic beep every second with frequency @var{beep_factor} times
5969 the carrier frequency. Default is 0, meaning the beep is disabled.
5970
5971 @item sample_rate, r
5972 Specify the sample rate, default is 44100.
5973
5974 @item duration, d
5975 Specify the duration of the generated audio stream.
5976
5977 @item samples_per_frame
5978 Set the number of samples per output frame.
5979
5980 The expression can contain the following constants:
5981
5982 @table @option
5983 @item n
5984 The (sequential) number of the output audio frame, starting from 0.
5985
5986 @item pts
5987 The PTS (Presentation TimeStamp) of the output audio frame,
5988 expressed in @var{TB} units.
5989
5990 @item t
5991 The PTS of the output audio frame, expressed in seconds.
5992
5993 @item TB
5994 The timebase of the output audio frames.
5995 @end table
5996
5997 Default is @code{1024}.
5998 @end table
5999
6000 @subsection Examples
6001
6002 @itemize
6003
6004 @item
6005 Generate a simple 440 Hz sine wave:
6006 @example
6007 sine
6008 @end example
6009
6010 @item
6011 Generate a 220 Hz sine wave with a 880 Hz beep each second, for 5 seconds:
6012 @example
6013 sine=220:4:d=5
6014 sine=f=220:b=4:d=5
6015 sine=frequency=220:beep_factor=4:duration=5
6016 @end example
6017
6018 @item
6019 Generate a 1 kHz sine wave following @code{1602,1601,1602,1601,1602} NTSC
6020 pattern:
6021 @example
6022 sine=1000:samples_per_frame='st(0,mod(n,5)); 1602-not(not(eq(ld(0),1)+eq(ld(0),3)))'
6023 @end example
6024 @end itemize
6025
6026 @c man end AUDIO SOURCES
6027
6028 @chapter Audio Sinks
6029 @c man begin AUDIO SINKS
6030
6031 Below is a description of the currently available audio sinks.
6032
6033 @section abuffersink
6034
6035 Buffer audio frames, and make them available to the end of filter chain.
6036
6037 This sink is mainly intended for programmatic use, in particular
6038 through the interface defined in @file{libavfilter/buffersink.h}
6039 or the options system.
6040
6041 It accepts a pointer to an AVABufferSinkContext structure, which
6042 defines the incoming buffers' formats, to be passed as the opaque
6043 parameter to @code{avfilter_init_filter} for initialization.
6044 @section anullsink
6045
6046 Null audio sink; do absolutely nothing with the input audio. It is
6047 mainly useful as a template and for use in analysis / debugging
6048 tools.
6049
6050 @c man end AUDIO SINKS
6051
6052 @chapter Video Filters
6053 @c man begin VIDEO FILTERS
6054
6055 When you configure your FFmpeg build, you can disable any of the
6056 existing filters using @code{--disable-filters}.
6057 The configure output will show the video filters included in your
6058 build.
6059
6060 Below is a description of the currently available video filters.
6061
6062 @section addroi
6063
6064 Mark a region of interest in a video frame.
6065
6066 The frame data is passed through unchanged, but metadata is attached
6067 to the frame indicating regions of interest which can affect the
6068 behaviour of later encoding.  Multiple regions can be marked by
6069 applying the filter multiple times.
6070
6071 @table @option
6072 @item x
6073 Region distance in pixels from the left edge of the frame.
6074 @item y
6075 Region distance in pixels from the top edge of the frame.
6076 @item w
6077 Region width in pixels.
6078 @item h
6079 Region height in pixels.
6080
6081 The parameters @var{x}, @var{y}, @var{w} and @var{h} are expressions,
6082 and may contain the following variables:
6083 @table @option
6084 @item iw
6085 Width of the input frame.
6086 @item ih
6087 Height of the input frame.
6088 @end table
6089
6090 @item qoffset
6091 Quantisation offset to apply within the region.
6092
6093 This must be a real value in the range -1 to +1.  A value of zero
6094 indicates no quality change.  A negative value asks for better quality
6095 (less quantisation), while a positive value asks for worse quality
6096 (greater quantisation).
6097
6098 The range is calibrated so that the extreme values indicate the
6099 largest possible offset - if the rest of the frame is encoded with the
6100 worst possible quality, an offset of -1 indicates that this region
6101 should be encoded with the best possible quality anyway.  Intermediate
6102 values are then interpolated in some codec-dependent way.
6103
6104 For example, in 10-bit H.264 the quantisation parameter varies between
6105 -12 and 51.  A typical qoffset value of -1/10 therefore indicates that
6106 this region should be encoded with a QP around one-tenth of the full
6107 range better than the rest of the frame.  So, if most of the frame
6108 were to be encoded with a QP of around 30, this region would get a QP
6109 of around 24 (an offset of approximately -1/10 * (51 - -12) = -6.3).
6110 An extreme value of -1 would indicate that this region should be
6111 encoded with the best possible quality regardless of the treatment of
6112 the rest of the frame - that is, should be encoded at a QP of -12.
6113 @item clear
6114 If set to true, remove any existing regions of interest marked on the
6115 frame before adding the new one.
6116 @end table
6117
6118 @subsection Examples
6119
6120 @itemize
6121 @item
6122 Mark the centre quarter of the frame as interesting.
6123 @example
6124 addroi=iw/4:ih/4:iw/2:ih/2:-1/10
6125 @end example
6126 @item
6127 Mark the 100-pixel-wide region on the left edge of the frame as very
6128 uninteresting (to be encoded at much lower quality than the rest of
6129 the frame).
6130 @example
6131 addroi=0:0:100:ih:+1/5
6132 @end example
6133 @end itemize
6134
6135 @section alphaextract
6136
6137 Extract the alpha component from the input as a grayscale video. This
6138 is especially useful with the @var{alphamerge} filter.
6139
6140 @section alphamerge
6141
6142 Add or replace the alpha component of the primary input with the
6143 grayscale value of a second input. This is intended for use with
6144 @var{alphaextract} to allow the transmission or storage of frame
6145 sequences that have alpha in a format that doesn't support an alpha
6146 channel.
6147
6148 For example, to reconstruct full frames from a normal YUV-encoded video
6149 and a separate video created with @var{alphaextract}, you might use:
6150 @example
6151 movie=in_alpha.mkv [alpha]; [in][alpha] alphamerge [out]
6152 @end example
6153
6154 Since this filter is designed for reconstruction, it operates on frame
6155 sequences without considering timestamps, and terminates when either
6156 input reaches end of stream. This will cause problems if your encoding
6157 pipeline drops frames. If you're trying to apply an image as an
6158 overlay to a video stream, consider the @var{overlay} filter instead.
6159
6160 @section amplify
6161
6162 Amplify differences between current pixel and pixels of adjacent frames in
6163 same pixel location.
6164
6165 This filter accepts the following options:
6166
6167 @table @option
6168 @item radius
6169 Set frame radius. Default is 2. Allowed range is from 1 to 63.
6170 For example radius of 3 will instruct filter to calculate average of 7 frames.
6171
6172 @item factor
6173 Set factor to amplify difference. Default is 2. Allowed range is from 0 to 65535.
6174
6175 @item threshold
6176 Set threshold for difference amplification. Any difference greater or equal to
6177 this value will not alter source pixel. Default is 10.
6178 Allowed range is from 0 to 65535.
6179
6180 @item tolerance
6181 Set tolerance for difference amplification. Any difference lower to
6182 this value will not alter source pixel. Default is 0.
6183 Allowed range is from 0 to 65535.
6184
6185 @item low
6186 Set lower limit for changing source pixel. Default is 65535. Allowed range is from 0 to 65535.
6187 This option controls maximum possible value that will decrease source pixel value.
6188
6189 @item high
6190 Set high limit for changing source pixel. Default is 65535. Allowed range is from 0 to 65535.
6191 This option controls maximum possible value that will increase source pixel value.
6192
6193 @item planes
6194 Set which planes to filter. Default is all. Allowed range is from 0 to 15.
6195 @end table
6196
6197 @subsection Commands
6198
6199 This filter supports the following @ref{commands} that corresponds to option of same name:
6200 @table @option
6201 @item factor
6202 @item threshold
6203 @item tolerance
6204 @item low
6205 @item high
6206 @item planes
6207 @end table
6208
6209 @section ass
6210
6211 Same as the @ref{subtitles} filter, except that it doesn't require libavcodec
6212 and libavformat to work. On the other hand, it is limited to ASS (Advanced
6213 Substation Alpha) subtitles files.
6214
6215 This filter accepts the following option in addition to the common options from
6216 the @ref{subtitles} filter:
6217
6218 @table @option
6219 @item shaping
6220 Set the shaping engine
6221
6222 Available values are:
6223 @table @samp
6224 @item auto
6225 The default libass shaping engine, which is the best available.
6226 @item simple
6227 Fast, font-agnostic shaper that can do only substitutions
6228 @item complex
6229 Slower shaper using OpenType for substitutions and positioning
6230 @end table
6231
6232 The default is @code{auto}.
6233 @end table
6234
6235 @section atadenoise
6236 Apply an Adaptive Temporal Averaging Denoiser to the video input.
6237
6238 The filter accepts the following options:
6239
6240 @table @option
6241 @item 0a
6242 Set threshold A for 1st plane. Default is 0.02.
6243 Valid range is 0 to 0.3.
6244
6245 @item 0b
6246 Set threshold B for 1st plane. Default is 0.04.
6247 Valid range is 0 to 5.
6248
6249 @item 1a
6250 Set threshold A for 2nd plane. Default is 0.02.
6251 Valid range is 0 to 0.3.
6252
6253 @item 1b
6254 Set threshold B for 2nd plane. Default is 0.04.
6255 Valid range is 0 to 5.
6256
6257 @item 2a
6258 Set threshold A for 3rd plane. Default is 0.02.
6259 Valid range is 0 to 0.3.
6260
6261 @item 2b
6262 Set threshold B for 3rd plane. Default is 0.04.
6263 Valid range is 0 to 5.
6264
6265 Threshold A is designed to react on abrupt changes in the input signal and
6266 threshold B is designed to react on continuous changes in the input signal.
6267
6268 @item s
6269 Set number of frames filter will use for averaging. Default is 9. Must be odd
6270 number in range [5, 129].
6271
6272 @item p
6273 Set what planes of frame filter will use for averaging. Default is all.
6274
6275 @item a
6276 Set what variant of algorithm filter will use for averaging. Default is @code{p} parallel.
6277 Alternatively can be set to @code{s} serial.
6278
6279 Parallel can be faster then serial, while other way around is never true.
6280 Parallel will abort early on first change being greater then thresholds, while serial
6281 will continue processing other side of frames if they are equal or bellow thresholds.
6282 @end table
6283
6284 @section avgblur
6285
6286 Apply average blur filter.
6287
6288 The filter accepts the following options:
6289
6290 @table @option
6291 @item sizeX
6292 Set horizontal radius size.
6293
6294 @item planes
6295 Set which planes to filter. By default all planes are filtered.
6296
6297 @item sizeY
6298 Set vertical radius size, if zero it will be same as @code{sizeX}.
6299 Default is @code{0}.
6300 @end table
6301
6302 @subsection Commands
6303 This filter supports same commands as options.
6304 The command accepts the same syntax of the corresponding option.
6305
6306 If the specified expression is not valid, it is kept at its current
6307 value.
6308
6309 @section bbox
6310
6311 Compute the bounding box for the non-black pixels in the input frame
6312 luminance plane.
6313
6314 This filter computes the bounding box containing all the pixels with a
6315 luminance value greater than the minimum allowed value.
6316 The parameters describing the bounding box are printed on the filter
6317 log.
6318
6319 The filter accepts the following option:
6320
6321 @table @option
6322 @item min_val
6323 Set the minimal luminance value. Default is @code{16}.
6324 @end table
6325
6326 @section bitplanenoise
6327
6328 Show and measure bit plane noise.
6329
6330 The filter accepts the following options:
6331
6332 @table @option
6333 @item bitplane
6334 Set which plane to analyze. Default is @code{1}.
6335
6336 @item filter
6337 Filter out noisy pixels from @code{bitplane} set above.
6338 Default is disabled.
6339 @end table
6340
6341 @section blackdetect
6342
6343 Detect video intervals that are (almost) completely black. Can be
6344 useful to detect chapter transitions, commercials, or invalid
6345 recordings. Output lines contains the time for the start, end and
6346 duration of the detected black interval expressed in seconds.
6347
6348 In order to display the output lines, you need to set the loglevel at
6349 least to the AV_LOG_INFO value.
6350
6351 The filter accepts the following options:
6352
6353 @table @option
6354 @item black_min_duration, d
6355 Set the minimum detected black duration expressed in seconds. It must
6356 be a non-negative floating point number.
6357
6358 Default value is 2.0.
6359
6360 @item picture_black_ratio_th, pic_th
6361 Set the threshold for considering a picture "black".
6362 Express the minimum value for the ratio:
6363 @example
6364 @var{nb_black_pixels} / @var{nb_pixels}
6365 @end example
6366
6367 for which a picture is considered black.
6368 Default value is 0.98.
6369
6370 @item pixel_black_th, pix_th
6371 Set the threshold for considering a pixel "black".
6372
6373 The threshold expresses the maximum pixel luminance value for which a
6374 pixel is considered "black". The provided value is scaled according to
6375 the following equation:
6376 @example
6377 @var{absolute_threshold} = @var{luminance_minimum_value} + @var{pixel_black_th} * @var{luminance_range_size}
6378 @end example
6379
6380 @var{luminance_range_size} and @var{luminance_minimum_value} depend on
6381 the input video format, the range is [0-255] for YUV full-range
6382 formats and [16-235] for YUV non full-range formats.
6383
6384 Default value is 0.10.
6385 @end table
6386
6387 The following example sets the maximum pixel threshold to the minimum
6388 value, and detects only black intervals of 2 or more seconds:
6389 @example
6390 blackdetect=d=2:pix_th=0.00
6391 @end example
6392
6393 @section blackframe
6394
6395 Detect frames that are (almost) completely black. Can be useful to
6396 detect chapter transitions or commercials. Output lines consist of
6397 the frame number of the detected frame, the percentage of blackness,
6398 the position in the file if known or -1 and the timestamp in seconds.
6399
6400 In order to display the output lines, you need to set the loglevel at
6401 least to the AV_LOG_INFO value.
6402
6403 This filter exports frame metadata @code{lavfi.blackframe.pblack}.
6404 The value represents the percentage of pixels in the picture that
6405 are below the threshold value.
6406
6407 It accepts the following parameters:
6408
6409 @table @option
6410
6411 @item amount
6412 The percentage of the pixels that have to be below the threshold; it defaults to
6413 @code{98}.
6414
6415 @item threshold, thresh
6416 The threshold below which a pixel value is considered black; it defaults to
6417 @code{32}.
6418
6419 @end table
6420
6421 @section blend, tblend
6422
6423 Blend two video frames into each other.
6424
6425 The @code{blend} filter takes two input streams and outputs one
6426 stream, the first input is the "top" layer and second input is
6427 "bottom" layer.  By default, the output terminates when the longest input terminates.
6428
6429 The @code{tblend} (time blend) filter takes two consecutive frames
6430 from one single stream, and outputs the result obtained by blending
6431 the new frame on top of the old frame.
6432
6433 A description of the accepted options follows.
6434
6435 @table @option
6436 @item c0_mode
6437 @item c1_mode
6438 @item c2_mode
6439 @item c3_mode
6440 @item all_mode
6441 Set blend mode for specific pixel component or all pixel components in case
6442 of @var{all_mode}. Default value is @code{normal}.
6443
6444 Available values for component modes are:
6445 @table @samp
6446 @item addition
6447 @item grainmerge
6448 @item and
6449 @item average
6450 @item burn
6451 @item darken
6452 @item difference
6453 @item grainextract
6454 @item divide
6455 @item dodge
6456 @item freeze
6457 @item exclusion
6458 @item extremity
6459 @item glow
6460 @item hardlight
6461 @item hardmix
6462 @item heat
6463 @item lighten
6464 @item linearlight
6465 @item multiply
6466 @item multiply128
6467 @item negation
6468 @item normal
6469 @item or
6470 @item overlay
6471 @item phoenix
6472 @item pinlight
6473 @item reflect
6474 @item screen
6475 @item softlight
6476 @item subtract
6477 @item vividlight
6478 @item xor
6479 @end table
6480
6481 @item c0_opacity
6482 @item c1_opacity
6483 @item c2_opacity
6484 @item c3_opacity
6485 @item all_opacity
6486 Set blend opacity for specific pixel component or all pixel components in case
6487 of @var{all_opacity}. Only used in combination with pixel component blend modes.
6488
6489 @item c0_expr
6490 @item c1_expr
6491 @item c2_expr
6492 @item c3_expr
6493 @item all_expr
6494 Set blend expression for specific pixel component or all pixel components in case
6495 of @var{all_expr}. Note that related mode options will be ignored if those are set.
6496
6497 The expressions can use the following variables:
6498
6499 @table @option
6500 @item N
6501 The sequential number of the filtered frame, starting from @code{0}.
6502
6503 @item X
6504 @item Y
6505 the coordinates of the current sample
6506
6507 @item W
6508 @item H
6509 the width and height of currently filtered plane
6510
6511 @item SW
6512 @item SH
6513 Width and height scale for the plane being filtered. It is the
6514 ratio between the dimensions of the current plane to the luma plane,
6515 e.g. for a @code{yuv420p} frame, the values are @code{1,1} for
6516 the luma plane and @code{0.5,0.5} for the chroma planes.
6517
6518 @item T
6519 Time of the current frame, expressed in seconds.
6520
6521 @item TOP, A
6522 Value of pixel component at current location for first video frame (top layer).
6523
6524 @item BOTTOM, B
6525 Value of pixel component at current location for second video frame (bottom layer).
6526 @end table
6527 @end table
6528
6529 The @code{blend} filter also supports the @ref{framesync} options.
6530
6531 @subsection Examples
6532
6533 @itemize
6534 @item
6535 Apply transition from bottom layer to top layer in first 10 seconds:
6536 @example
6537 blend=all_expr='A*(if(gte(T,10),1,T/10))+B*(1-(if(gte(T,10),1,T/10)))'
6538 @end example
6539
6540 @item
6541 Apply linear horizontal transition from top layer to bottom layer:
6542 @example
6543 blend=all_expr='A*(X/W)+B*(1-X/W)'
6544 @end example
6545
6546 @item
6547 Apply 1x1 checkerboard effect:
6548 @example
6549 blend=all_expr='if(eq(mod(X,2),mod(Y,2)),A,B)'
6550 @end example
6551
6552 @item
6553 Apply uncover left effect:
6554 @example
6555 blend=all_expr='if(gte(N*SW+X,W),A,B)'
6556 @end example
6557
6558 @item
6559 Apply uncover down effect:
6560 @example
6561 blend=all_expr='if(gte(Y-N*SH,0),A,B)'
6562 @end example
6563
6564 @item
6565 Apply uncover up-left effect:
6566 @example
6567 blend=all_expr='if(gte(T*SH*40+Y,H)*gte((T*40*SW+X)*W/H,W),A,B)'
6568 @end example
6569
6570 @item
6571 Split diagonally video and shows top and bottom layer on each side:
6572 @example
6573 blend=all_expr='if(gt(X,Y*(W/H)),A,B)'
6574 @end example
6575
6576 @item
6577 Display differences between the current and the previous frame:
6578 @example
6579 tblend=all_mode=grainextract
6580 @end example
6581 @end itemize
6582
6583 @section bm3d
6584
6585 Denoise frames using Block-Matching 3D algorithm.
6586
6587 The filter accepts the following options.
6588
6589 @table @option
6590 @item sigma
6591 Set denoising strength. Default value is 1.
6592 Allowed range is from 0 to 999.9.
6593 The denoising algorithm is very sensitive to sigma, so adjust it
6594 according to the source.
6595
6596 @item block
6597 Set local patch size. This sets dimensions in 2D.
6598
6599 @item bstep
6600 Set sliding step for processing blocks. Default value is 4.
6601 Allowed range is from 1 to 64.
6602 Smaller values allows processing more reference blocks and is slower.
6603
6604 @item group
6605 Set maximal number of similar blocks for 3rd dimension. Default value is 1.
6606 When set to 1, no block matching is done. Larger values allows more blocks
6607 in single group.
6608 Allowed range is from 1 to 256.
6609
6610 @item range
6611 Set radius for search block matching. Default is 9.
6612 Allowed range is from 1 to INT32_MAX.
6613
6614 @item mstep
6615 Set step between two search locations for block matching. Default is 1.
6616 Allowed range is from 1 to 64. Smaller is slower.
6617
6618 @item thmse
6619 Set threshold of mean square error for block matching. Valid range is 0 to
6620 INT32_MAX.
6621
6622 @item hdthr
6623 Set thresholding parameter for hard thresholding in 3D transformed domain.
6624 Larger values results in stronger hard-thresholding filtering in frequency
6625 domain.
6626
6627 @item estim
6628 Set filtering estimation mode. Can be @code{basic} or @code{final}.
6629 Default is @code{basic}.
6630
6631 @item ref
6632 If enabled, filter will use 2nd stream for block matching.
6633 Default is disabled for @code{basic} value of @var{estim} option,
6634 and always enabled if value of @var{estim} is @code{final}.
6635
6636 @item planes
6637 Set planes to filter. Default is all available except alpha.
6638 @end table
6639
6640 @subsection Examples
6641
6642 @itemize
6643 @item
6644 Basic filtering with bm3d:
6645 @example
6646 bm3d=sigma=3:block=4:bstep=2:group=1:estim=basic
6647 @end example
6648
6649 @item
6650 Same as above, but filtering only luma:
6651 @example
6652 bm3d=sigma=3:block=4:bstep=2:group=1:estim=basic:planes=1
6653 @end example
6654
6655 @item
6656 Same as above, but with both estimation modes:
6657 @example
6658 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
6659 @end example
6660
6661 @item
6662 Same as above, but prefilter with @ref{nlmeans} filter instead:
6663 @example
6664 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
6665 @end example
6666 @end itemize
6667
6668 @section boxblur
6669
6670 Apply a boxblur algorithm to the input video.
6671
6672 It accepts the following parameters:
6673
6674 @table @option
6675
6676 @item luma_radius, lr
6677 @item luma_power, lp
6678 @item chroma_radius, cr
6679 @item chroma_power, cp
6680 @item alpha_radius, ar
6681 @item alpha_power, ap
6682
6683 @end table
6684
6685 A description of the accepted options follows.
6686
6687 @table @option
6688 @item luma_radius, lr
6689 @item chroma_radius, cr
6690 @item alpha_radius, ar
6691 Set an expression for the box radius in pixels used for blurring the
6692 corresponding input plane.
6693
6694 The radius value must be a non-negative number, and must not be
6695 greater than the value of the expression @code{min(w,h)/2} for the
6696 luma and alpha planes, and of @code{min(cw,ch)/2} for the chroma
6697 planes.
6698
6699 Default value for @option{luma_radius} is "2". If not specified,
6700 @option{chroma_radius} and @option{alpha_radius} default to the
6701 corresponding value set for @option{luma_radius}.
6702
6703 The expressions can contain the following constants:
6704 @table @option
6705 @item w
6706 @item h
6707 The input width and height in pixels.
6708
6709 @item cw
6710 @item ch
6711 The input chroma image width and height in pixels.
6712
6713 @item hsub
6714 @item vsub
6715 The horizontal and vertical chroma subsample values. For example, for the
6716 pixel format "yuv422p", @var{hsub} is 2 and @var{vsub} is 1.
6717 @end table
6718
6719 @item luma_power, lp
6720 @item chroma_power, cp
6721 @item alpha_power, ap
6722 Specify how many times the boxblur filter is applied to the
6723 corresponding plane.
6724
6725 Default value for @option{luma_power} is 2. If not specified,
6726 @option{chroma_power} and @option{alpha_power} default to the
6727 corresponding value set for @option{luma_power}.
6728
6729 A value of 0 will disable the effect.
6730 @end table
6731
6732 @subsection Examples
6733
6734 @itemize
6735 @item
6736 Apply a boxblur filter with the luma, chroma, and alpha radii
6737 set to 2:
6738 @example
6739 boxblur=luma_radius=2:luma_power=1
6740 boxblur=2:1
6741 @end example
6742
6743 @item
6744 Set the luma radius to 2, and alpha and chroma radius to 0:
6745 @example
6746 boxblur=2:1:cr=0:ar=0
6747 @end example
6748
6749 @item
6750 Set the luma and chroma radii to a fraction of the video dimension:
6751 @example
6752 boxblur=luma_radius=min(h\,w)/10:luma_power=1:chroma_radius=min(cw\,ch)/10:chroma_power=1
6753 @end example
6754 @end itemize
6755
6756 @section bwdif
6757
6758 Deinterlace the input video ("bwdif" stands for "Bob Weaver
6759 Deinterlacing Filter").
6760
6761 Motion adaptive deinterlacing based on yadif with the use of w3fdif and cubic
6762 interpolation algorithms.
6763 It accepts the following parameters:
6764
6765 @table @option
6766 @item mode
6767 The interlacing mode to adopt. It accepts one of the following values:
6768
6769 @table @option
6770 @item 0, send_frame
6771 Output one frame for each frame.
6772 @item 1, send_field
6773 Output one frame for each field.
6774 @end table
6775
6776 The default value is @code{send_field}.
6777
6778 @item parity
6779 The picture field parity assumed for the input interlaced video. It accepts one
6780 of the following values:
6781
6782 @table @option
6783 @item 0, tff
6784 Assume the top field is first.
6785 @item 1, bff
6786 Assume the bottom field is first.
6787 @item -1, auto
6788 Enable automatic detection of field parity.
6789 @end table
6790
6791 The default value is @code{auto}.
6792 If the interlacing is unknown or the decoder does not export this information,
6793 top field first will be assumed.
6794
6795 @item deint
6796 Specify which frames to deinterlace. Accepts one of the following
6797 values:
6798
6799 @table @option
6800 @item 0, all
6801 Deinterlace all frames.
6802 @item 1, interlaced
6803 Only deinterlace frames marked as interlaced.
6804 @end table
6805
6806 The default value is @code{all}.
6807 @end table
6808
6809 @section chromahold
6810 Remove all color information for all colors except for certain one.
6811
6812 The filter accepts the following options:
6813
6814 @table @option
6815 @item color
6816 The color which will not be replaced with neutral chroma.
6817
6818 @item similarity
6819 Similarity percentage with the above color.
6820 0.01 matches only the exact key color, while 1.0 matches everything.
6821
6822 @item blend
6823 Blend percentage.
6824 0.0 makes pixels either fully gray, or not gray at all.
6825 Higher values result in more preserved color.
6826
6827 @item yuv
6828 Signals that the color passed is already in YUV instead of RGB.
6829
6830 Literal colors like "green" or "red" don't make sense with this enabled anymore.
6831 This can be used to pass exact YUV values as hexadecimal numbers.
6832 @end table
6833
6834 @section chromakey
6835 YUV colorspace color/chroma keying.
6836
6837 The filter accepts the following options:
6838
6839 @table @option
6840 @item color
6841 The color which will be replaced with transparency.
6842
6843 @item similarity
6844 Similarity percentage with the key color.
6845
6846 0.01 matches only the exact key color, while 1.0 matches everything.
6847
6848 @item blend
6849 Blend percentage.
6850
6851 0.0 makes pixels either fully transparent, or not transparent at all.
6852
6853 Higher values result in semi-transparent pixels, with a higher transparency
6854 the more similar the pixels color is to the key color.
6855
6856 @item yuv
6857 Signals that the color passed is already in YUV instead of RGB.
6858
6859 Literal colors like "green" or "red" don't make sense with this enabled anymore.
6860 This can be used to pass exact YUV values as hexadecimal numbers.
6861 @end table
6862
6863 @subsection Examples
6864
6865 @itemize
6866 @item
6867 Make every green pixel in the input image transparent:
6868 @example
6869 ffmpeg -i input.png -vf chromakey=green out.png
6870 @end example
6871
6872 @item
6873 Overlay a greenscreen-video on top of a static black background.
6874 @example
6875 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
6876 @end example
6877 @end itemize
6878
6879 @section chromashift
6880 Shift chroma pixels horizontally and/or vertically.
6881
6882 The filter accepts the following options:
6883 @table @option
6884 @item cbh
6885 Set amount to shift chroma-blue horizontally.
6886 @item cbv
6887 Set amount to shift chroma-blue vertically.
6888 @item crh
6889 Set amount to shift chroma-red horizontally.
6890 @item crv
6891 Set amount to shift chroma-red vertically.
6892 @item edge
6893 Set edge mode, can be @var{smear}, default, or @var{warp}.
6894 @end table
6895
6896 @section ciescope
6897
6898 Display CIE color diagram with pixels overlaid onto it.
6899
6900 The filter accepts the following options:
6901
6902 @table @option
6903 @item system
6904 Set color system.
6905
6906 @table @samp
6907 @item ntsc, 470m
6908 @item ebu, 470bg
6909 @item smpte
6910 @item 240m
6911 @item apple
6912 @item widergb
6913 @item cie1931
6914 @item rec709, hdtv
6915 @item uhdtv, rec2020
6916 @item dcip3
6917 @end table
6918
6919 @item cie
6920 Set CIE system.
6921
6922 @table @samp
6923 @item xyy
6924 @item ucs
6925 @item luv
6926 @end table
6927
6928 @item gamuts
6929 Set what gamuts to draw.
6930
6931 See @code{system} option for available values.
6932
6933 @item size, s
6934 Set ciescope size, by default set to 512.
6935
6936 @item intensity, i
6937 Set intensity used to map input pixel values to CIE diagram.
6938
6939 @item contrast
6940 Set contrast used to draw tongue colors that are out of active color system gamut.
6941
6942 @item corrgamma
6943 Correct gamma displayed on scope, by default enabled.
6944
6945 @item showwhite
6946 Show white point on CIE diagram, by default disabled.
6947
6948 @item gamma
6949 Set input gamma. Used only with XYZ input color space.
6950 @end table
6951
6952 @section codecview
6953
6954 Visualize information exported by some codecs.
6955
6956 Some codecs can export information through frames using side-data or other
6957 means. For example, some MPEG based codecs export motion vectors through the
6958 @var{export_mvs} flag in the codec @option{flags2} option.
6959
6960 The filter accepts the following option:
6961
6962 @table @option
6963 @item mv
6964 Set motion vectors to visualize.
6965
6966 Available flags for @var{mv} are:
6967
6968 @table @samp
6969 @item pf
6970 forward predicted MVs of P-frames
6971 @item bf
6972 forward predicted MVs of B-frames
6973 @item bb
6974 backward predicted MVs of B-frames
6975 @end table
6976
6977 @item qp
6978 Display quantization parameters using the chroma planes.
6979
6980 @item mv_type, mvt
6981 Set motion vectors type to visualize. Includes MVs from all frames unless specified by @var{frame_type} option.
6982
6983 Available flags for @var{mv_type} are:
6984
6985 @table @samp
6986 @item fp
6987 forward predicted MVs
6988 @item bp
6989 backward predicted MVs
6990 @end table
6991
6992 @item frame_type, ft
6993 Set frame type to visualize motion vectors of.
6994
6995 Available flags for @var{frame_type} are:
6996
6997 @table @samp
6998 @item if
6999 intra-coded frames (I-frames)
7000 @item pf
7001 predicted frames (P-frames)
7002 @item bf
7003 bi-directionally predicted frames (B-frames)
7004 @end table
7005 @end table
7006
7007 @subsection Examples
7008
7009 @itemize
7010 @item
7011 Visualize forward predicted MVs of all frames using @command{ffplay}:
7012 @example
7013 ffplay -flags2 +export_mvs input.mp4 -vf codecview=mv_type=fp
7014 @end example
7015
7016 @item
7017 Visualize multi-directionals MVs of P and B-Frames using @command{ffplay}:
7018 @example
7019 ffplay -flags2 +export_mvs input.mp4 -vf codecview=mv=pf+bf+bb
7020 @end example
7021 @end itemize
7022
7023 @section colorbalance
7024 Modify intensity of primary colors (red, green and blue) of input frames.
7025
7026 The filter allows an input frame to be adjusted in the shadows, midtones or highlights
7027 regions for the red-cyan, green-magenta or blue-yellow balance.
7028
7029 A positive adjustment value shifts the balance towards the primary color, a negative
7030 value towards the complementary color.
7031
7032 The filter accepts the following options:
7033
7034 @table @option
7035 @item rs
7036 @item gs
7037 @item bs
7038 Adjust red, green and blue shadows (darkest pixels).
7039
7040 @item rm
7041 @item gm
7042 @item bm
7043 Adjust red, green and blue midtones (medium pixels).
7044
7045 @item rh
7046 @item gh
7047 @item bh
7048 Adjust red, green and blue highlights (brightest pixels).
7049
7050 Allowed ranges for options are @code{[-1.0, 1.0]}. Defaults are @code{0}.
7051 @end table
7052
7053 @subsection Examples
7054
7055 @itemize
7056 @item
7057 Add red color cast to shadows:
7058 @example
7059 colorbalance=rs=.3
7060 @end example
7061 @end itemize
7062
7063 @section colorchannelmixer
7064
7065 Adjust video input frames by re-mixing color channels.
7066
7067 This filter modifies a color channel by adding the values associated to
7068 the other channels of the same pixels. For example if the value to
7069 modify is red, the output value will be:
7070 @example
7071 @var{red}=@var{red}*@var{rr} + @var{blue}*@var{rb} + @var{green}*@var{rg} + @var{alpha}*@var{ra}
7072 @end example
7073
7074 The filter accepts the following options:
7075
7076 @table @option
7077 @item rr
7078 @item rg
7079 @item rb
7080 @item ra
7081 Adjust contribution of input red, green, blue and alpha channels for output red channel.
7082 Default is @code{1} for @var{rr}, and @code{0} for @var{rg}, @var{rb} and @var{ra}.
7083
7084 @item gr
7085 @item gg
7086 @item gb
7087 @item ga
7088 Adjust contribution of input red, green, blue and alpha channels for output green channel.
7089 Default is @code{1} for @var{gg}, and @code{0} for @var{gr}, @var{gb} and @var{ga}.
7090
7091 @item br
7092 @item bg
7093 @item bb
7094 @item ba
7095 Adjust contribution of input red, green, blue and alpha channels for output blue channel.
7096 Default is @code{1} for @var{bb}, and @code{0} for @var{br}, @var{bg} and @var{ba}.
7097
7098 @item ar
7099 @item ag
7100 @item ab
7101 @item aa
7102 Adjust contribution of input red, green, blue and alpha channels for output alpha channel.
7103 Default is @code{1} for @var{aa}, and @code{0} for @var{ar}, @var{ag} and @var{ab}.
7104
7105 Allowed ranges for options are @code{[-2.0, 2.0]}.
7106 @end table
7107
7108 @subsection Examples
7109
7110 @itemize
7111 @item
7112 Convert source to grayscale:
7113 @example
7114 colorchannelmixer=.3:.4:.3:0:.3:.4:.3:0:.3:.4:.3
7115 @end example
7116 @item
7117 Simulate sepia tones:
7118 @example
7119 colorchannelmixer=.393:.769:.189:0:.349:.686:.168:0:.272:.534:.131
7120 @end example
7121 @end itemize
7122
7123 @subsection Commands
7124
7125 This filter supports the all above options as @ref{commands}.
7126
7127 @section colorkey
7128 RGB colorspace color keying.
7129
7130 The filter accepts the following options:
7131
7132 @table @option
7133 @item color
7134 The color which will be replaced with transparency.
7135
7136 @item similarity
7137 Similarity percentage with the key color.
7138
7139 0.01 matches only the exact key color, while 1.0 matches everything.
7140
7141 @item blend
7142 Blend percentage.
7143
7144 0.0 makes pixels either fully transparent, or not transparent at all.
7145
7146 Higher values result in semi-transparent pixels, with a higher transparency
7147 the more similar the pixels color is to the key color.
7148 @end table
7149
7150 @subsection Examples
7151
7152 @itemize
7153 @item
7154 Make every green pixel in the input image transparent:
7155 @example
7156 ffmpeg -i input.png -vf colorkey=green out.png
7157 @end example
7158
7159 @item
7160 Overlay a greenscreen-video on top of a static background image.
7161 @example
7162 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
7163 @end example
7164 @end itemize
7165
7166 @section colorhold
7167 Remove all color information for all RGB colors except for certain one.
7168
7169 The filter accepts the following options:
7170
7171 @table @option
7172 @item color
7173 The color which will not be replaced with neutral gray.
7174
7175 @item similarity
7176 Similarity percentage with the above color.
7177 0.01 matches only the exact key color, while 1.0 matches everything.
7178
7179 @item blend
7180 Blend percentage. 0.0 makes pixels fully gray.
7181 Higher values result in more preserved color.
7182 @end table
7183
7184 @section colorlevels
7185
7186 Adjust video input frames using levels.
7187
7188 The filter accepts the following options:
7189
7190 @table @option
7191 @item rimin
7192 @item gimin
7193 @item bimin
7194 @item aimin
7195 Adjust red, green, blue and alpha input black point.
7196 Allowed ranges for options are @code{[-1.0, 1.0]}. Defaults are @code{0}.
7197
7198 @item rimax
7199 @item gimax
7200 @item bimax
7201 @item aimax
7202 Adjust red, green, blue and alpha input white point.
7203 Allowed ranges for options are @code{[-1.0, 1.0]}. Defaults are @code{1}.
7204
7205 Input levels are used to lighten highlights (bright tones), darken shadows
7206 (dark tones), change the balance of bright and dark tones.
7207
7208 @item romin
7209 @item gomin
7210 @item bomin
7211 @item aomin
7212 Adjust red, green, blue and alpha output black point.
7213 Allowed ranges for options are @code{[0, 1.0]}. Defaults are @code{0}.
7214
7215 @item romax
7216 @item gomax
7217 @item bomax
7218 @item aomax
7219 Adjust red, green, blue and alpha output white point.
7220 Allowed ranges for options are @code{[0, 1.0]}. Defaults are @code{1}.
7221
7222 Output levels allows manual selection of a constrained output level range.
7223 @end table
7224
7225 @subsection Examples
7226
7227 @itemize
7228 @item
7229 Make video output darker:
7230 @example
7231 colorlevels=rimin=0.058:gimin=0.058:bimin=0.058
7232 @end example
7233
7234 @item
7235 Increase contrast:
7236 @example
7237 colorlevels=rimin=0.039:gimin=0.039:bimin=0.039:rimax=0.96:gimax=0.96:bimax=0.96
7238 @end example
7239
7240 @item
7241 Make video output lighter:
7242 @example
7243 colorlevels=rimax=0.902:gimax=0.902:bimax=0.902
7244 @end example
7245
7246 @item
7247 Increase brightness:
7248 @example
7249 colorlevels=romin=0.5:gomin=0.5:bomin=0.5
7250 @end example
7251 @end itemize
7252
7253 @section colormatrix
7254
7255 Convert color matrix.
7256
7257 The filter accepts the following options:
7258
7259 @table @option
7260 @item src
7261 @item dst
7262 Specify the source and destination color matrix. Both values must be
7263 specified.
7264
7265 The accepted values are:
7266 @table @samp
7267 @item bt709
7268 BT.709
7269
7270 @item fcc
7271 FCC
7272
7273 @item bt601
7274 BT.601
7275
7276 @item bt470
7277 BT.470
7278
7279 @item bt470bg
7280 BT.470BG
7281
7282 @item smpte170m
7283 SMPTE-170M
7284
7285 @item smpte240m
7286 SMPTE-240M
7287
7288 @item bt2020
7289 BT.2020
7290 @end table
7291 @end table
7292
7293 For example to convert from BT.601 to SMPTE-240M, use the command:
7294 @example
7295 colormatrix=bt601:smpte240m
7296 @end example
7297
7298 @section colorspace
7299
7300 Convert colorspace, transfer characteristics or color primaries.
7301 Input video needs to have an even size.
7302
7303 The filter accepts the following options:
7304
7305 @table @option
7306 @anchor{all}
7307 @item all
7308 Specify all color properties at once.
7309
7310 The accepted values are:
7311 @table @samp
7312 @item bt470m
7313 BT.470M
7314
7315 @item bt470bg
7316 BT.470BG
7317
7318 @item bt601-6-525
7319 BT.601-6 525
7320
7321 @item bt601-6-625
7322 BT.601-6 625
7323
7324 @item bt709
7325 BT.709
7326
7327 @item smpte170m
7328 SMPTE-170M
7329
7330 @item smpte240m
7331 SMPTE-240M
7332
7333 @item bt2020
7334 BT.2020
7335
7336 @end table
7337
7338 @anchor{space}
7339 @item space
7340 Specify output colorspace.
7341
7342 The accepted values are:
7343 @table @samp
7344 @item bt709
7345 BT.709
7346
7347 @item fcc
7348 FCC
7349
7350 @item bt470bg
7351 BT.470BG or BT.601-6 625
7352
7353 @item smpte170m
7354 SMPTE-170M or BT.601-6 525
7355
7356 @item smpte240m
7357 SMPTE-240M
7358
7359 @item ycgco
7360 YCgCo
7361
7362 @item bt2020ncl
7363 BT.2020 with non-constant luminance
7364
7365 @end table
7366
7367 @anchor{trc}
7368 @item trc
7369 Specify output transfer characteristics.
7370
7371 The accepted values are:
7372 @table @samp
7373 @item bt709
7374 BT.709
7375
7376 @item bt470m
7377 BT.470M
7378
7379 @item bt470bg
7380 BT.470BG
7381
7382 @item gamma22
7383 Constant gamma of 2.2
7384
7385 @item gamma28
7386 Constant gamma of 2.8
7387
7388 @item smpte170m
7389 SMPTE-170M, BT.601-6 625 or BT.601-6 525
7390
7391 @item smpte240m
7392 SMPTE-240M
7393
7394 @item srgb
7395 SRGB
7396
7397 @item iec61966-2-1
7398 iec61966-2-1
7399
7400 @item iec61966-2-4
7401 iec61966-2-4
7402
7403 @item xvycc
7404 xvycc
7405
7406 @item bt2020-10
7407 BT.2020 for 10-bits content
7408
7409 @item bt2020-12
7410 BT.2020 for 12-bits content
7411
7412 @end table
7413
7414 @anchor{primaries}
7415 @item primaries
7416 Specify output color primaries.
7417
7418 The accepted values are:
7419 @table @samp
7420 @item bt709
7421 BT.709
7422
7423 @item bt470m
7424 BT.470M
7425
7426 @item bt470bg
7427 BT.470BG or BT.601-6 625
7428
7429 @item smpte170m
7430 SMPTE-170M or BT.601-6 525
7431
7432 @item smpte240m
7433 SMPTE-240M
7434
7435 @item film
7436 film
7437
7438 @item smpte431
7439 SMPTE-431
7440
7441 @item smpte432
7442 SMPTE-432
7443
7444 @item bt2020
7445 BT.2020
7446
7447 @item jedec-p22
7448 JEDEC P22 phosphors
7449
7450 @end table
7451
7452 @anchor{range}
7453 @item range
7454 Specify output color range.
7455
7456 The accepted values are:
7457 @table @samp
7458 @item tv
7459 TV (restricted) range
7460
7461 @item mpeg
7462 MPEG (restricted) range
7463
7464 @item pc
7465 PC (full) range
7466
7467 @item jpeg
7468 JPEG (full) range
7469
7470 @end table
7471
7472 @item format
7473 Specify output color format.
7474
7475 The accepted values are:
7476 @table @samp
7477 @item yuv420p
7478 YUV 4:2:0 planar 8-bits
7479
7480 @item yuv420p10
7481 YUV 4:2:0 planar 10-bits
7482
7483 @item yuv420p12
7484 YUV 4:2:0 planar 12-bits
7485
7486 @item yuv422p
7487 YUV 4:2:2 planar 8-bits
7488
7489 @item yuv422p10
7490 YUV 4:2:2 planar 10-bits
7491
7492 @item yuv422p12
7493 YUV 4:2:2 planar 12-bits
7494
7495 @item yuv444p
7496 YUV 4:4:4 planar 8-bits
7497
7498 @item yuv444p10
7499 YUV 4:4:4 planar 10-bits
7500
7501 @item yuv444p12
7502 YUV 4:4:4 planar 12-bits
7503
7504 @end table
7505
7506 @item fast
7507 Do a fast conversion, which skips gamma/primary correction. This will take
7508 significantly less CPU, but will be mathematically incorrect. To get output
7509 compatible with that produced by the colormatrix filter, use fast=1.
7510
7511 @item dither
7512 Specify dithering mode.
7513
7514 The accepted values are:
7515 @table @samp
7516 @item none
7517 No dithering
7518
7519 @item fsb
7520 Floyd-Steinberg dithering
7521 @end table
7522
7523 @item wpadapt
7524 Whitepoint adaptation mode.
7525
7526 The accepted values are:
7527 @table @samp
7528 @item bradford
7529 Bradford whitepoint adaptation
7530
7531 @item vonkries
7532 von Kries whitepoint adaptation
7533
7534 @item identity
7535 identity whitepoint adaptation (i.e. no whitepoint adaptation)
7536 @end table
7537
7538 @item iall
7539 Override all input properties at once. Same accepted values as @ref{all}.
7540
7541 @item ispace
7542 Override input colorspace. Same accepted values as @ref{space}.
7543
7544 @item iprimaries
7545 Override input color primaries. Same accepted values as @ref{primaries}.
7546
7547 @item itrc
7548 Override input transfer characteristics. Same accepted values as @ref{trc}.
7549
7550 @item irange
7551 Override input color range. Same accepted values as @ref{range}.
7552
7553 @end table
7554
7555 The filter converts the transfer characteristics, color space and color
7556 primaries to the specified user values. The output value, if not specified,
7557 is set to a default value based on the "all" property. If that property is
7558 also not specified, the filter will log an error. The output color range and
7559 format default to the same value as the input color range and format. The
7560 input transfer characteristics, color space, color primaries and color range
7561 should be set on the input data. If any of these are missing, the filter will
7562 log an error and no conversion will take place.
7563
7564 For example to convert the input to SMPTE-240M, use the command:
7565 @example
7566 colorspace=smpte240m
7567 @end example
7568
7569 @section convolution
7570
7571 Apply convolution of 3x3, 5x5, 7x7 or horizontal/vertical up to 49 elements.
7572
7573 The filter accepts the following options:
7574
7575 @table @option
7576 @item 0m
7577 @item 1m
7578 @item 2m
7579 @item 3m
7580 Set matrix for each plane.
7581 Matrix is sequence of 9, 25 or 49 signed integers in @var{square} mode,
7582 and from 1 to 49 odd number of signed integers in @var{row} mode.
7583
7584 @item 0rdiv
7585 @item 1rdiv
7586 @item 2rdiv
7587 @item 3rdiv
7588 Set multiplier for calculated value for each plane.
7589 If unset or 0, it will be sum of all matrix elements.
7590
7591 @item 0bias
7592 @item 1bias
7593 @item 2bias
7594 @item 3bias
7595 Set bias for each plane. This value is added to the result of the multiplication.
7596 Useful for making the overall image brighter or darker. Default is 0.0.
7597
7598 @item 0mode
7599 @item 1mode
7600 @item 2mode
7601 @item 3mode
7602 Set matrix mode for each plane. Can be @var{square}, @var{row} or @var{column}.
7603 Default is @var{square}.
7604 @end table
7605
7606 @subsection Examples
7607
7608 @itemize
7609 @item
7610 Apply sharpen:
7611 @example
7612 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"
7613 @end example
7614
7615 @item
7616 Apply blur:
7617 @example
7618 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"
7619 @end example
7620
7621 @item
7622 Apply edge enhance:
7623 @example
7624 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"
7625 @end example
7626
7627 @item
7628 Apply edge detect:
7629 @example
7630 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"
7631 @end example
7632
7633 @item
7634 Apply laplacian edge detector which includes diagonals:
7635 @example
7636 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"
7637 @end example
7638
7639 @item
7640 Apply emboss:
7641 @example
7642 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"
7643 @end example
7644 @end itemize
7645
7646 @section convolve
7647
7648 Apply 2D convolution of video stream in frequency domain using second stream
7649 as impulse.
7650
7651 The filter accepts the following options:
7652
7653 @table @option
7654 @item planes
7655 Set which planes to process.
7656
7657 @item impulse
7658 Set which impulse video frames will be processed, can be @var{first}
7659 or @var{all}. Default is @var{all}.
7660 @end table
7661
7662 The @code{convolve} filter also supports the @ref{framesync} options.
7663
7664 @section copy
7665
7666 Copy the input video source unchanged to the output. This is mainly useful for
7667 testing purposes.
7668
7669 @anchor{coreimage}
7670 @section coreimage
7671 Video filtering on GPU using Apple's CoreImage API on OSX.
7672
7673 Hardware acceleration is based on an OpenGL context. Usually, this means it is
7674 processed by video hardware. However, software-based OpenGL implementations
7675 exist which means there is no guarantee for hardware processing. It depends on
7676 the respective OSX.
7677
7678 There are many filters and image generators provided by Apple that come with a
7679 large variety of options. The filter has to be referenced by its name along
7680 with its options.
7681
7682 The coreimage filter accepts the following options:
7683 @table @option
7684 @item list_filters
7685 List all available filters and generators along with all their respective
7686 options as well as possible minimum and maximum values along with the default
7687 values.
7688 @example
7689 list_filters=true
7690 @end example
7691
7692 @item filter
7693 Specify all filters by their respective name and options.
7694 Use @var{list_filters} to determine all valid filter names and options.
7695 Numerical options are specified by a float value and are automatically clamped
7696 to their respective value range.  Vector and color options have to be specified
7697 by a list of space separated float values. Character escaping has to be done.
7698 A special option name @code{default} is available to use default options for a
7699 filter.
7700
7701 It is required to specify either @code{default} or at least one of the filter options.
7702 All omitted options are used with their default values.
7703 The syntax of the filter string is as follows:
7704 @example
7705 filter=<NAME>@@<OPTION>=<VALUE>[@@<OPTION>=<VALUE>][@@...][#<NAME>@@<OPTION>=<VALUE>[@@<OPTION>=<VALUE>][@@...]][#...]
7706 @end example
7707
7708 @item output_rect
7709 Specify a rectangle where the output of the filter chain is copied into the
7710 input image. It is given by a list of space separated float values:
7711 @example
7712 output_rect=x\ y\ width\ height
7713 @end example
7714 If not given, the output rectangle equals the dimensions of the input image.
7715 The output rectangle is automatically cropped at the borders of the input
7716 image. Negative values are valid for each component.
7717 @example
7718 output_rect=25\ 25\ 100\ 100
7719 @end example
7720 @end table
7721
7722 Several filters can be chained for successive processing without GPU-HOST
7723 transfers allowing for fast processing of complex filter chains.
7724 Currently, only filters with zero (generators) or exactly one (filters) input
7725 image and one output image are supported. Also, transition filters are not yet
7726 usable as intended.
7727
7728 Some filters generate output images with additional padding depending on the
7729 respective filter kernel. The padding is automatically removed to ensure the
7730 filter output has the same size as the input image.
7731
7732 For image generators, the size of the output image is determined by the
7733 previous output image of the filter chain or the input image of the whole
7734 filterchain, respectively. The generators do not use the pixel information of
7735 this image to generate their output. However, the generated output is
7736 blended onto this image, resulting in partial or complete coverage of the
7737 output image.
7738
7739 The @ref{coreimagesrc} video source can be used for generating input images
7740 which are directly fed into the filter chain. By using it, providing input
7741 images by another video source or an input video is not required.
7742
7743 @subsection Examples
7744
7745 @itemize
7746
7747 @item
7748 List all filters available:
7749 @example
7750 coreimage=list_filters=true
7751 @end example
7752
7753 @item
7754 Use the CIBoxBlur filter with default options to blur an image:
7755 @example
7756 coreimage=filter=CIBoxBlur@@default
7757 @end example
7758
7759 @item
7760 Use a filter chain with CISepiaTone at default values and CIVignetteEffect with
7761 its center at 100x100 and a radius of 50 pixels:
7762 @example
7763 coreimage=filter=CIBoxBlur@@default#CIVignetteEffect@@inputCenter=100\ 100@@inputRadius=50
7764 @end example
7765
7766 @item
7767 Use nullsrc and CIQRCodeGenerator to create a QR code for the FFmpeg homepage,
7768 given as complete and escaped command-line for Apple's standard bash shell:
7769 @example
7770 ffmpeg -f lavfi -i nullsrc=s=100x100,coreimage=filter=CIQRCodeGenerator@@inputMessage=https\\\\\://FFmpeg.org/@@inputCorrectionLevel=H -frames:v 1 QRCode.png
7771 @end example
7772 @end itemize
7773
7774 @section cover_rect
7775
7776 Cover a rectangular object
7777
7778 It accepts the following options:
7779
7780 @table @option
7781 @item cover
7782 Filepath of the optional cover image, needs to be in yuv420.
7783
7784 @item mode
7785 Set covering mode.
7786
7787 It accepts the following values:
7788 @table @samp
7789 @item cover
7790 cover it by the supplied image
7791 @item blur
7792 cover it by interpolating the surrounding pixels
7793 @end table
7794
7795 Default value is @var{blur}.
7796 @end table
7797
7798 @subsection Examples
7799
7800 @itemize
7801 @item
7802 Cover a rectangular object by the supplied image of a given video using @command{ffmpeg}:
7803 @example
7804 ffmpeg -i file.ts -vf find_rect=newref.pgm,cover_rect=cover.jpg:mode=cover new.mkv
7805 @end example
7806 @end itemize
7807
7808 @section crop
7809
7810 Crop the input video to given dimensions.
7811
7812 It accepts the following parameters:
7813
7814 @table @option
7815 @item w, out_w
7816 The width of the output video. It defaults to @code{iw}.
7817 This expression is evaluated only once during the filter
7818 configuration, or when the @samp{w} or @samp{out_w} command is sent.
7819
7820 @item h, out_h
7821 The height of the output video. It defaults to @code{ih}.
7822 This expression is evaluated only once during the filter
7823 configuration, or when the @samp{h} or @samp{out_h} command is sent.
7824
7825 @item x
7826 The horizontal position, in the input video, of the left edge of the output
7827 video. It defaults to @code{(in_w-out_w)/2}.
7828 This expression is evaluated per-frame.
7829
7830 @item y
7831 The vertical position, in the input video, of the top edge of the output video.
7832 It defaults to @code{(in_h-out_h)/2}.
7833 This expression is evaluated per-frame.
7834
7835 @item keep_aspect
7836 If set to 1 will force the output display aspect ratio
7837 to be the same of the input, by changing the output sample aspect
7838 ratio. It defaults to 0.
7839
7840 @item exact
7841 Enable exact cropping. If enabled, subsampled videos will be cropped at exact
7842 width/height/x/y as specified and will not be rounded to nearest smaller value.
7843 It defaults to 0.
7844 @end table
7845
7846 The @var{out_w}, @var{out_h}, @var{x}, @var{y} parameters are
7847 expressions containing the following constants:
7848
7849 @table @option
7850 @item x
7851 @item y
7852 The computed values for @var{x} and @var{y}. They are evaluated for
7853 each new frame.
7854
7855 @item in_w
7856 @item in_h
7857 The input width and height.
7858
7859 @item iw
7860 @item ih
7861 These are the same as @var{in_w} and @var{in_h}.
7862
7863 @item out_w
7864 @item out_h
7865 The output (cropped) width and height.
7866
7867 @item ow
7868 @item oh
7869 These are the same as @var{out_w} and @var{out_h}.
7870
7871 @item a
7872 same as @var{iw} / @var{ih}
7873
7874 @item sar
7875 input sample aspect ratio
7876
7877 @item dar
7878 input display aspect ratio, it is the same as (@var{iw} / @var{ih}) * @var{sar}
7879
7880 @item hsub
7881 @item vsub
7882 horizontal and vertical chroma subsample values. For example for the
7883 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
7884
7885 @item n
7886 The number of the input frame, starting from 0.
7887
7888 @item pos
7889 the position in the file of the input frame, NAN if unknown
7890
7891 @item t
7892 The timestamp expressed in seconds. It's NAN if the input timestamp is unknown.
7893
7894 @end table
7895
7896 The expression for @var{out_w} may depend on the value of @var{out_h},
7897 and the expression for @var{out_h} may depend on @var{out_w}, but they
7898 cannot depend on @var{x} and @var{y}, as @var{x} and @var{y} are
7899 evaluated after @var{out_w} and @var{out_h}.
7900
7901 The @var{x} and @var{y} parameters specify the expressions for the
7902 position of the top-left corner of the output (non-cropped) area. They
7903 are evaluated for each frame. If the evaluated value is not valid, it
7904 is approximated to the nearest valid value.
7905
7906 The expression for @var{x} may depend on @var{y}, and the expression
7907 for @var{y} may depend on @var{x}.
7908
7909 @subsection Examples
7910
7911 @itemize
7912 @item
7913 Crop area with size 100x100 at position (12,34).
7914 @example
7915 crop=100:100:12:34
7916 @end example
7917
7918 Using named options, the example above becomes:
7919 @example
7920 crop=w=100:h=100:x=12:y=34
7921 @end example
7922
7923 @item
7924 Crop the central input area with size 100x100:
7925 @example
7926 crop=100:100
7927 @end example
7928
7929 @item
7930 Crop the central input area with size 2/3 of the input video:
7931 @example
7932 crop=2/3*in_w:2/3*in_h
7933 @end example
7934
7935 @item
7936 Crop the input video central square:
7937 @example
7938 crop=out_w=in_h
7939 crop=in_h
7940 @end example
7941
7942 @item
7943 Delimit the rectangle with the top-left corner placed at position
7944 100:100 and the right-bottom corner corresponding to the right-bottom
7945 corner of the input image.
7946 @example
7947 crop=in_w-100:in_h-100:100:100
7948 @end example
7949
7950 @item
7951 Crop 10 pixels from the left and right borders, and 20 pixels from
7952 the top and bottom borders
7953 @example
7954 crop=in_w-2*10:in_h-2*20
7955 @end example
7956
7957 @item
7958 Keep only the bottom right quarter of the input image:
7959 @example
7960 crop=in_w/2:in_h/2:in_w/2:in_h/2
7961 @end example
7962
7963 @item
7964 Crop height for getting Greek harmony:
7965 @example
7966 crop=in_w:1/PHI*in_w
7967 @end example
7968
7969 @item
7970 Apply trembling effect:
7971 @example
7972 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)
7973 @end example
7974
7975 @item
7976 Apply erratic camera effect depending on timestamp:
7977 @example
7978 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)"
7979 @end example
7980
7981 @item
7982 Set x depending on the value of y:
7983 @example
7984 crop=in_w/2:in_h/2:y:10+10*sin(n/10)
7985 @end example
7986 @end itemize
7987
7988 @subsection Commands
7989
7990 This filter supports the following commands:
7991 @table @option
7992 @item w, out_w
7993 @item h, out_h
7994 @item x
7995 @item y
7996 Set width/height of the output video and the horizontal/vertical position
7997 in the input video.
7998 The command accepts the same syntax of the corresponding option.
7999
8000 If the specified expression is not valid, it is kept at its current
8001 value.
8002 @end table
8003
8004 @section cropdetect
8005
8006 Auto-detect the crop size.
8007
8008 It calculates the necessary cropping parameters and prints the
8009 recommended parameters via the logging system. The detected dimensions
8010 correspond to the non-black area of the input video.
8011
8012 It accepts the following parameters:
8013
8014 @table @option
8015
8016 @item limit
8017 Set higher black value threshold, which can be optionally specified
8018 from nothing (0) to everything (255 for 8-bit based formats). An intensity
8019 value greater to the set value is considered non-black. It defaults to 24.
8020 You can also specify a value between 0.0 and 1.0 which will be scaled depending
8021 on the bitdepth of the pixel format.
8022
8023 @item round
8024 The value which the width/height should be divisible by. It defaults to
8025 16. The offset is automatically adjusted to center the video. Use 2 to
8026 get only even dimensions (needed for 4:2:2 video). 16 is best when
8027 encoding to most video codecs.
8028
8029 @item reset_count, reset
8030 Set the counter that determines after how many frames cropdetect will
8031 reset the previously detected largest video area and start over to
8032 detect the current optimal crop area. Default value is 0.
8033
8034 This can be useful when channel logos distort the video area. 0
8035 indicates 'never reset', and returns the largest area encountered during
8036 playback.
8037 @end table
8038
8039 @anchor{cue}
8040 @section cue
8041
8042 Delay video filtering until a given wallclock timestamp. The filter first
8043 passes on @option{preroll} amount of frames, then it buffers at most
8044 @option{buffer} amount of frames and waits for the cue. After reaching the cue
8045 it forwards the buffered frames and also any subsequent frames coming in its
8046 input.
8047
8048 The filter can be used synchronize the output of multiple ffmpeg processes for
8049 realtime output devices like decklink. By putting the delay in the filtering
8050 chain and pre-buffering frames the process can pass on data to output almost
8051 immediately after the target wallclock timestamp is reached.
8052
8053 Perfect frame accuracy cannot be guaranteed, but the result is good enough for
8054 some use cases.
8055
8056 @table @option
8057
8058 @item cue
8059 The cue timestamp expressed in a UNIX timestamp in microseconds. Default is 0.
8060
8061 @item preroll
8062 The duration of content to pass on as preroll expressed in seconds. Default is 0.
8063
8064 @item buffer
8065 The maximum duration of content to buffer before waiting for the cue expressed
8066 in seconds. Default is 0.
8067
8068 @end table
8069
8070 @anchor{curves}
8071 @section curves
8072
8073 Apply color adjustments using curves.
8074
8075 This filter is similar to the Adobe Photoshop and GIMP curves tools. Each
8076 component (red, green and blue) has its values defined by @var{N} key points
8077 tied from each other using a smooth curve. The x-axis represents the pixel
8078 values from the input frame, and the y-axis the new pixel values to be set for
8079 the output frame.
8080
8081 By default, a component curve is defined by the two points @var{(0;0)} and
8082 @var{(1;1)}. This creates a straight line where each original pixel value is
8083 "adjusted" to its own value, which means no change to the image.
8084
8085 The filter allows you to redefine these two points and add some more. A new
8086 curve (using a natural cubic spline interpolation) will be define to pass
8087 smoothly through all these new coordinates. The new defined points needs to be
8088 strictly increasing over the x-axis, and their @var{x} and @var{y} values must
8089 be in the @var{[0;1]} interval.  If the computed curves happened to go outside
8090 the vector spaces, the values will be clipped accordingly.
8091
8092 The filter accepts the following options:
8093
8094 @table @option
8095 @item preset
8096 Select one of the available color presets. This option can be used in addition
8097 to the @option{r}, @option{g}, @option{b} parameters; in this case, the later
8098 options takes priority on the preset values.
8099 Available presets are:
8100 @table @samp
8101 @item none
8102 @item color_negative
8103 @item cross_process
8104 @item darker
8105 @item increase_contrast
8106 @item lighter
8107 @item linear_contrast
8108 @item medium_contrast
8109 @item negative
8110 @item strong_contrast
8111 @item vintage
8112 @end table
8113 Default is @code{none}.
8114 @item master, m
8115 Set the master key points. These points will define a second pass mapping. It
8116 is sometimes called a "luminance" or "value" mapping. It can be used with
8117 @option{r}, @option{g}, @option{b} or @option{all} since it acts like a
8118 post-processing LUT.
8119 @item red, r
8120 Set the key points for the red component.
8121 @item green, g
8122 Set the key points for the green component.
8123 @item blue, b
8124 Set the key points for the blue component.
8125 @item all
8126 Set the key points for all components (not including master).
8127 Can be used in addition to the other key points component
8128 options. In this case, the unset component(s) will fallback on this
8129 @option{all} setting.
8130 @item psfile
8131 Specify a Photoshop curves file (@code{.acv}) to import the settings from.
8132 @item plot
8133 Save Gnuplot script of the curves in specified file.
8134 @end table
8135
8136 To avoid some filtergraph syntax conflicts, each key points list need to be
8137 defined using the following syntax: @code{x0/y0 x1/y1 x2/y2 ...}.
8138
8139 @subsection Examples
8140
8141 @itemize
8142 @item
8143 Increase slightly the middle level of blue:
8144 @example
8145 curves=blue='0/0 0.5/0.58 1/1'
8146 @end example
8147
8148 @item
8149 Vintage effect:
8150 @example
8151 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'
8152 @end example
8153 Here we obtain the following coordinates for each components:
8154 @table @var
8155 @item red
8156 @code{(0;0.11) (0.42;0.51) (1;0.95)}
8157 @item green
8158 @code{(0;0) (0.50;0.48) (1;1)}
8159 @item blue
8160 @code{(0;0.22) (0.49;0.44) (1;0.80)}
8161 @end table
8162
8163 @item
8164 The previous example can also be achieved with the associated built-in preset:
8165 @example
8166 curves=preset=vintage
8167 @end example
8168
8169 @item
8170 Or simply:
8171 @example
8172 curves=vintage
8173 @end example
8174
8175 @item
8176 Use a Photoshop preset and redefine the points of the green component:
8177 @example
8178 curves=psfile='MyCurvesPresets/purple.acv':green='0/0 0.45/0.53 1/1'
8179 @end example
8180
8181 @item
8182 Check out the curves of the @code{cross_process} profile using @command{ffmpeg}
8183 and @command{gnuplot}:
8184 @example
8185 ffmpeg -f lavfi -i color -vf curves=cross_process:plot=/tmp/curves.plt -frames:v 1 -f null -
8186 gnuplot -p /tmp/curves.plt
8187 @end example
8188 @end itemize
8189
8190 @section datascope
8191
8192 Video data analysis filter.
8193
8194 This filter shows hexadecimal pixel values of part of video.
8195
8196 The filter accepts the following options:
8197
8198 @table @option
8199 @item size, s
8200 Set output video size.
8201
8202 @item x
8203 Set x offset from where to pick pixels.
8204
8205 @item y
8206 Set y offset from where to pick pixels.
8207
8208 @item mode
8209 Set scope mode, can be one of the following:
8210 @table @samp
8211 @item mono
8212 Draw hexadecimal pixel values with white color on black background.
8213
8214 @item color
8215 Draw hexadecimal pixel values with input video pixel color on black
8216 background.
8217
8218 @item color2
8219 Draw hexadecimal pixel values on color background picked from input video,
8220 the text color is picked in such way so its always visible.
8221 @end table
8222
8223 @item axis
8224 Draw rows and columns numbers on left and top of video.
8225
8226 @item opacity
8227 Set background opacity.
8228 @end table
8229
8230 @section dctdnoiz
8231
8232 Denoise frames using 2D DCT (frequency domain filtering).
8233
8234 This filter is not designed for real time.
8235
8236 The filter accepts the following options:
8237
8238 @table @option
8239 @item sigma, s
8240 Set the noise sigma constant.
8241
8242 This @var{sigma} defines a hard threshold of @code{3 * sigma}; every DCT
8243 coefficient (absolute value) below this threshold with be dropped.
8244
8245 If you need a more advanced filtering, see @option{expr}.
8246
8247 Default is @code{0}.
8248
8249 @item overlap
8250 Set number overlapping pixels for each block. Since the filter can be slow, you
8251 may want to reduce this value, at the cost of a less effective filter and the
8252 risk of various artefacts.
8253
8254 If the overlapping value doesn't permit processing the whole input width or
8255 height, a warning will be displayed and according borders won't be denoised.
8256
8257 Default value is @var{blocksize}-1, which is the best possible setting.
8258
8259 @item expr, e
8260 Set the coefficient factor expression.
8261
8262 For each coefficient of a DCT block, this expression will be evaluated as a
8263 multiplier value for the coefficient.
8264
8265 If this is option is set, the @option{sigma} option will be ignored.
8266
8267 The absolute value of the coefficient can be accessed through the @var{c}
8268 variable.
8269
8270 @item n
8271 Set the @var{blocksize} using the number of bits. @code{1<<@var{n}} defines the
8272 @var{blocksize}, which is the width and height of the processed blocks.
8273
8274 The default value is @var{3} (8x8) and can be raised to @var{4} for a
8275 @var{blocksize} of 16x16. Note that changing this setting has huge consequences
8276 on the speed processing. Also, a larger block size does not necessarily means a
8277 better de-noising.
8278 @end table
8279
8280 @subsection Examples
8281
8282 Apply a denoise with a @option{sigma} of @code{4.5}:
8283 @example
8284 dctdnoiz=4.5
8285 @end example
8286
8287 The same operation can be achieved using the expression system:
8288 @example
8289 dctdnoiz=e='gte(c, 4.5*3)'
8290 @end example
8291
8292 Violent denoise using a block size of @code{16x16}:
8293 @example
8294 dctdnoiz=15:n=4
8295 @end example
8296
8297 @section deband
8298
8299 Remove banding artifacts from input video.
8300 It works by replacing banded pixels with average value of referenced pixels.
8301
8302 The filter accepts the following options:
8303
8304 @table @option
8305 @item 1thr
8306 @item 2thr
8307 @item 3thr
8308 @item 4thr
8309 Set banding detection threshold for each plane. Default is 0.02.
8310 Valid range is 0.00003 to 0.5.
8311 If difference between current pixel and reference pixel is less than threshold,
8312 it will be considered as banded.
8313
8314 @item range, r
8315 Banding detection range in pixels. Default is 16. If positive, random number
8316 in range 0 to set value will be used. If negative, exact absolute value
8317 will be used.
8318 The range defines square of four pixels around current pixel.
8319
8320 @item direction, d
8321 Set direction in radians from which four pixel will be compared. If positive,
8322 random direction from 0 to set direction will be picked. If negative, exact of
8323 absolute value will be picked. For example direction 0, -PI or -2*PI radians
8324 will pick only pixels on same row and -PI/2 will pick only pixels on same
8325 column.
8326
8327 @item blur, b
8328 If enabled, current pixel is compared with average value of all four
8329 surrounding pixels. The default is enabled. If disabled current pixel is
8330 compared with all four surrounding pixels. The pixel is considered banded
8331 if only all four differences with surrounding pixels are less than threshold.
8332
8333 @item coupling, c
8334 If enabled, current pixel is changed if and only if all pixel components are banded,
8335 e.g. banding detection threshold is triggered for all color components.
8336 The default is disabled.
8337 @end table
8338
8339 @section deblock
8340
8341 Remove blocking artifacts from input video.
8342
8343 The filter accepts the following options:
8344
8345 @table @option
8346 @item filter
8347 Set filter type, can be @var{weak} or @var{strong}. Default is @var{strong}.
8348 This controls what kind of deblocking is applied.
8349
8350 @item block
8351 Set size of block, allowed range is from 4 to 512. Default is @var{8}.
8352
8353 @item alpha
8354 @item beta
8355 @item gamma
8356 @item delta
8357 Set blocking detection thresholds. Allowed range is 0 to 1.
8358 Defaults are: @var{0.098} for @var{alpha} and @var{0.05} for the rest.
8359 Using higher threshold gives more deblocking strength.
8360 Setting @var{alpha} controls threshold detection at exact edge of block.
8361 Remaining options controls threshold detection near the edge. Each one for
8362 below/above or left/right. Setting any of those to @var{0} disables
8363 deblocking.
8364
8365 @item planes
8366 Set planes to filter. Default is to filter all available planes.
8367 @end table
8368
8369 @subsection Examples
8370
8371 @itemize
8372 @item
8373 Deblock using weak filter and block size of 4 pixels.
8374 @example
8375 deblock=filter=weak:block=4
8376 @end example
8377
8378 @item
8379 Deblock using strong filter, block size of 4 pixels and custom thresholds for
8380 deblocking more edges.
8381 @example
8382 deblock=filter=strong:block=4:alpha=0.12:beta=0.07:gamma=0.06:delta=0.05
8383 @end example
8384
8385 @item
8386 Similar as above, but filter only first plane.
8387 @example
8388 deblock=filter=strong:block=4:alpha=0.12:beta=0.07:gamma=0.06:delta=0.05:planes=1
8389 @end example
8390
8391 @item
8392 Similar as above, but filter only second and third plane.
8393 @example
8394 deblock=filter=strong:block=4:alpha=0.12:beta=0.07:gamma=0.06:delta=0.05:planes=6
8395 @end example
8396 @end itemize
8397
8398 @anchor{decimate}
8399 @section decimate
8400
8401 Drop duplicated frames at regular intervals.
8402
8403 The filter accepts the following options:
8404
8405 @table @option
8406 @item cycle
8407 Set the number of frames from which one will be dropped. Setting this to
8408 @var{N} means one frame in every batch of @var{N} frames will be dropped.
8409 Default is @code{5}.
8410
8411 @item dupthresh
8412 Set the threshold for duplicate detection. If the difference metric for a frame
8413 is less than or equal to this value, then it is declared as duplicate. Default
8414 is @code{1.1}
8415
8416 @item scthresh
8417 Set scene change threshold. Default is @code{15}.
8418
8419 @item blockx
8420 @item blocky
8421 Set the size of the x and y-axis blocks used during metric calculations.
8422 Larger blocks give better noise suppression, but also give worse detection of
8423 small movements. Must be a power of two. Default is @code{32}.
8424
8425 @item ppsrc
8426 Mark main input as a pre-processed input and activate clean source input
8427 stream. This allows the input to be pre-processed with various filters to help
8428 the metrics calculation while keeping the frame selection lossless. When set to
8429 @code{1}, the first stream is for the pre-processed input, and the second
8430 stream is the clean source from where the kept frames are chosen. Default is
8431 @code{0}.
8432
8433 @item chroma
8434 Set whether or not chroma is considered in the metric calculations. Default is
8435 @code{1}.
8436 @end table
8437
8438 @section deconvolve
8439
8440 Apply 2D deconvolution of video stream in frequency domain using second stream
8441 as impulse.
8442
8443 The filter accepts the following options:
8444
8445 @table @option
8446 @item planes
8447 Set which planes to process.
8448
8449 @item impulse
8450 Set which impulse video frames will be processed, can be @var{first}
8451 or @var{all}. Default is @var{all}.
8452
8453 @item noise
8454 Set noise when doing divisions. Default is @var{0.0000001}. Useful when width
8455 and height are not same and not power of 2 or if stream prior to convolving
8456 had noise.
8457 @end table
8458
8459 The @code{deconvolve} filter also supports the @ref{framesync} options.
8460
8461 @section dedot
8462
8463 Reduce cross-luminance (dot-crawl) and cross-color (rainbows) from video.
8464
8465 It accepts the following options:
8466
8467 @table @option
8468 @item m
8469 Set mode of operation. Can be combination of @var{dotcrawl} for cross-luminance reduction and/or
8470 @var{rainbows} for cross-color reduction.
8471
8472 @item lt
8473 Set spatial luma threshold. Lower values increases reduction of cross-luminance.
8474
8475 @item tl
8476 Set tolerance for temporal luma. Higher values increases reduction of cross-luminance.
8477
8478 @item tc
8479 Set tolerance for chroma temporal variation. Higher values increases reduction of cross-color.
8480
8481 @item ct
8482 Set temporal chroma threshold. Lower values increases reduction of cross-color.
8483 @end table
8484
8485 @section deflate
8486
8487 Apply deflate effect to the video.
8488
8489 This filter replaces the pixel by the local(3x3) average by taking into account
8490 only values lower than the pixel.
8491
8492 It accepts the following options:
8493
8494 @table @option
8495 @item threshold0
8496 @item threshold1
8497 @item threshold2
8498 @item threshold3
8499 Limit the maximum change for each plane, default is 65535.
8500 If 0, plane will remain unchanged.
8501 @end table
8502
8503 @section deflicker
8504
8505 Remove temporal frame luminance variations.
8506
8507 It accepts the following options:
8508
8509 @table @option
8510 @item size, s
8511 Set moving-average filter size in frames. Default is 5. Allowed range is 2 - 129.
8512
8513 @item mode, m
8514 Set averaging mode to smooth temporal luminance variations.
8515
8516 Available values are:
8517 @table @samp
8518 @item am
8519 Arithmetic mean
8520
8521 @item gm
8522 Geometric mean
8523
8524 @item hm
8525 Harmonic mean
8526
8527 @item qm
8528 Quadratic mean
8529
8530 @item cm
8531 Cubic mean
8532
8533 @item pm
8534 Power mean
8535
8536 @item median
8537 Median
8538 @end table
8539
8540 @item bypass
8541 Do not actually modify frame. Useful when one only wants metadata.
8542 @end table
8543
8544 @section dejudder
8545
8546 Remove judder produced by partially interlaced telecined content.
8547
8548 Judder can be introduced, for instance, by @ref{pullup} filter. If the original
8549 source was partially telecined content then the output of @code{pullup,dejudder}
8550 will have a variable frame rate. May change the recorded frame rate of the
8551 container. Aside from that change, this filter will not affect constant frame
8552 rate video.
8553
8554 The option available in this filter is:
8555 @table @option
8556
8557 @item cycle
8558 Specify the length of the window over which the judder repeats.
8559
8560 Accepts any integer greater than 1. Useful values are:
8561 @table @samp
8562
8563 @item 4
8564 If the original was telecined from 24 to 30 fps (Film to NTSC).
8565
8566 @item 5
8567 If the original was telecined from 25 to 30 fps (PAL to NTSC).
8568
8569 @item 20
8570 If a mixture of the two.
8571 @end table
8572
8573 The default is @samp{4}.
8574 @end table
8575
8576 @section delogo
8577
8578 Suppress a TV station logo by a simple interpolation of the surrounding
8579 pixels. Just set a rectangle covering the logo and watch it disappear
8580 (and sometimes something even uglier appear - your mileage may vary).
8581
8582 It accepts the following parameters:
8583 @table @option
8584
8585 @item x
8586 @item y
8587 Specify the top left corner coordinates of the logo. They must be
8588 specified.
8589
8590 @item w
8591 @item h
8592 Specify the width and height of the logo to clear. They must be
8593 specified.
8594
8595 @item band, t
8596 Specify the thickness of the fuzzy edge of the rectangle (added to
8597 @var{w} and @var{h}). The default value is 1. This option is
8598 deprecated, setting higher values should no longer be necessary and
8599 is not recommended.
8600
8601 @item show
8602 When set to 1, a green rectangle is drawn on the screen to simplify
8603 finding the right @var{x}, @var{y}, @var{w}, and @var{h} parameters.
8604 The default value is 0.
8605
8606 The rectangle is drawn on the outermost pixels which will be (partly)
8607 replaced with interpolated values. The values of the next pixels
8608 immediately outside this rectangle in each direction will be used to
8609 compute the interpolated pixel values inside the rectangle.
8610
8611 @end table
8612
8613 @subsection Examples
8614
8615 @itemize
8616 @item
8617 Set a rectangle covering the area with top left corner coordinates 0,0
8618 and size 100x77, and a band of size 10:
8619 @example
8620 delogo=x=0:y=0:w=100:h=77:band=10
8621 @end example
8622
8623 @end itemize
8624
8625 @section derain
8626
8627 Remove the rain in the input image/video by applying the derain methods based on
8628 convolutional neural networks. Supported models:
8629
8630 @itemize
8631 @item
8632 Recurrent Squeeze-and-Excitation Context Aggregation Net (RESCAN).
8633 See @url{http://openaccess.thecvf.com/content_ECCV_2018/papers/Xia_Li_Recurrent_Squeeze-and-Excitation_Context_ECCV_2018_paper.pdf}.
8634 @end itemize
8635
8636 Training as well as model generation scripts are provided in
8637 the repository at @url{https://github.com/XueweiMeng/derain_filter.git}.
8638
8639 Native model files (.model) can be generated from TensorFlow model
8640 files (.pb) by using tools/python/convert.py
8641
8642 The filter accepts the following options:
8643
8644 @table @option
8645 @item filter_type
8646 Specify which filter to use. This option accepts the following values:
8647
8648 @table @samp
8649 @item derain
8650 Derain filter. To conduct derain filter, you need to use a derain model.
8651
8652 @item dehaze
8653 Dehaze filter. To conduct dehaze filter, you need to use a dehaze model.
8654 @end table
8655 Default value is @samp{derain}.
8656
8657 @item dnn_backend
8658 Specify which DNN backend to use for model loading and execution. This option accepts
8659 the following values:
8660
8661 @table @samp
8662 @item native
8663 Native implementation of DNN loading and execution.
8664
8665 @item tensorflow
8666 TensorFlow backend. To enable this backend you
8667 need to install the TensorFlow for C library (see
8668 @url{https://www.tensorflow.org/install/install_c}) and configure FFmpeg with
8669 @code{--enable-libtensorflow}
8670 @end table
8671 Default value is @samp{native}.
8672
8673 @item model
8674 Set path to model file specifying network architecture and its parameters.
8675 Note that different backends use different file formats. TensorFlow and native
8676 backend can load files for only its format.
8677 @end table
8678
8679 @section deshake
8680
8681 Attempt to fix small changes in horizontal and/or vertical shift. This
8682 filter helps remove camera shake from hand-holding a camera, bumping a
8683 tripod, moving on a vehicle, etc.
8684
8685 The filter accepts the following options:
8686
8687 @table @option
8688
8689 @item x
8690 @item y
8691 @item w
8692 @item h
8693 Specify a rectangular area where to limit the search for motion
8694 vectors.
8695 If desired the search for motion vectors can be limited to a
8696 rectangular area of the frame defined by its top left corner, width
8697 and height. These parameters have the same meaning as the drawbox
8698 filter which can be used to visualise the position of the bounding
8699 box.
8700
8701 This is useful when simultaneous movement of subjects within the frame
8702 might be confused for camera motion by the motion vector search.
8703
8704 If any or all of @var{x}, @var{y}, @var{w} and @var{h} are set to -1
8705 then the full frame is used. This allows later options to be set
8706 without specifying the bounding box for the motion vector search.
8707
8708 Default - search the whole frame.
8709
8710 @item rx
8711 @item ry
8712 Specify the maximum extent of movement in x and y directions in the
8713 range 0-64 pixels. Default 16.
8714
8715 @item edge
8716 Specify how to generate pixels to fill blanks at the edge of the
8717 frame. Available values are:
8718 @table @samp
8719 @item blank, 0
8720 Fill zeroes at blank locations
8721 @item original, 1
8722 Original image at blank locations
8723 @item clamp, 2
8724 Extruded edge value at blank locations
8725 @item mirror, 3
8726 Mirrored edge at blank locations
8727 @end table
8728 Default value is @samp{mirror}.
8729
8730 @item blocksize
8731 Specify the blocksize to use for motion search. Range 4-128 pixels,
8732 default 8.
8733
8734 @item contrast
8735 Specify the contrast threshold for blocks. Only blocks with more than
8736 the specified contrast (difference between darkest and lightest
8737 pixels) will be considered. Range 1-255, default 125.
8738
8739 @item search
8740 Specify the search strategy. Available values are:
8741 @table @samp
8742 @item exhaustive, 0
8743 Set exhaustive search
8744 @item less, 1
8745 Set less exhaustive search.
8746 @end table
8747 Default value is @samp{exhaustive}.
8748
8749 @item filename
8750 If set then a detailed log of the motion search is written to the
8751 specified file.
8752
8753 @end table
8754
8755 @section despill
8756
8757 Remove unwanted contamination of foreground colors, caused by reflected color of
8758 greenscreen or bluescreen.
8759
8760 This filter accepts the following options:
8761
8762 @table @option
8763 @item type
8764 Set what type of despill to use.
8765
8766 @item mix
8767 Set how spillmap will be generated.
8768
8769 @item expand
8770 Set how much to get rid of still remaining spill.
8771
8772 @item red
8773 Controls amount of red in spill area.
8774
8775 @item green
8776 Controls amount of green in spill area.
8777 Should be -1 for greenscreen.
8778
8779 @item blue
8780 Controls amount of blue in spill area.
8781 Should be -1 for bluescreen.
8782
8783 @item brightness
8784 Controls brightness of spill area, preserving colors.
8785
8786 @item alpha
8787 Modify alpha from generated spillmap.
8788 @end table
8789
8790 @section detelecine
8791
8792 Apply an exact inverse of the telecine operation. It requires a predefined
8793 pattern specified using the pattern option which must be the same as that passed
8794 to the telecine filter.
8795
8796 This filter accepts the following options:
8797
8798 @table @option
8799 @item first_field
8800 @table @samp
8801 @item top, t
8802 top field first
8803 @item bottom, b
8804 bottom field first
8805 The default value is @code{top}.
8806 @end table
8807
8808 @item pattern
8809 A string of numbers representing the pulldown pattern you wish to apply.
8810 The default value is @code{23}.
8811
8812 @item start_frame
8813 A number representing position of the first frame with respect to the telecine
8814 pattern. This is to be used if the stream is cut. The default value is @code{0}.
8815 @end table
8816
8817 @section dilation
8818
8819 Apply dilation effect to the video.
8820
8821 This filter replaces the pixel by the local(3x3) maximum.
8822
8823 It accepts the following options:
8824
8825 @table @option
8826 @item threshold0
8827 @item threshold1
8828 @item threshold2
8829 @item threshold3
8830 Limit the maximum change for each plane, default is 65535.
8831 If 0, plane will remain unchanged.
8832
8833 @item coordinates
8834 Flag which specifies the pixel to refer to. Default is 255 i.e. all eight
8835 pixels are used.
8836
8837 Flags to local 3x3 coordinates maps like this:
8838
8839     1 2 3
8840     4   5
8841     6 7 8
8842 @end table
8843
8844 @section displace
8845
8846 Displace pixels as indicated by second and third input stream.
8847
8848 It takes three input streams and outputs one stream, the first input is the
8849 source, and second and third input are displacement maps.
8850
8851 The second input specifies how much to displace pixels along the
8852 x-axis, while the third input specifies how much to displace pixels
8853 along the y-axis.
8854 If one of displacement map streams terminates, last frame from that
8855 displacement map will be used.
8856
8857 Note that once generated, displacements maps can be reused over and over again.
8858
8859 A description of the accepted options follows.
8860
8861 @table @option
8862 @item edge
8863 Set displace behavior for pixels that are out of range.
8864
8865 Available values are:
8866 @table @samp
8867 @item blank
8868 Missing pixels are replaced by black pixels.
8869
8870 @item smear
8871 Adjacent pixels will spread out to replace missing pixels.
8872
8873 @item wrap
8874 Out of range pixels are wrapped so they point to pixels of other side.
8875
8876 @item mirror
8877 Out of range pixels will be replaced with mirrored pixels.
8878 @end table
8879 Default is @samp{smear}.
8880
8881 @end table
8882
8883 @subsection Examples
8884
8885 @itemize
8886 @item
8887 Add ripple effect to rgb input of video size hd720:
8888 @example
8889 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
8890 @end example
8891
8892 @item
8893 Add wave effect to rgb input of video size hd720:
8894 @example
8895 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
8896 @end example
8897 @end itemize
8898
8899 @section drawbox
8900
8901 Draw a colored box on the input image.
8902
8903 It accepts the following parameters:
8904
8905 @table @option
8906 @item x
8907 @item y
8908 The expressions which specify the top left corner coordinates of the box. It defaults to 0.
8909
8910 @item width, w
8911 @item height, h
8912 The expressions which specify the width and height of the box; if 0 they are interpreted as
8913 the input width and height. It defaults to 0.
8914
8915 @item color, c
8916 Specify the color of the box to write. For the general syntax of this option,
8917 check the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}. If the special
8918 value @code{invert} is used, the box edge color is the same as the
8919 video with inverted luma.
8920
8921 @item thickness, t
8922 The expression which sets the thickness of the box edge.
8923 A value of @code{fill} will create a filled box. Default value is @code{3}.
8924
8925 See below for the list of accepted constants.
8926
8927 @item replace
8928 Applicable if the input has alpha. With value @code{1}, the pixels of the painted box
8929 will overwrite the video's color and alpha pixels.
8930 Default is @code{0}, which composites the box onto the input, leaving the video's alpha intact.
8931 @end table
8932
8933 The parameters for @var{x}, @var{y}, @var{w} and @var{h} and @var{t} are expressions containing the
8934 following constants:
8935
8936 @table @option
8937 @item dar
8938 The input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}.
8939
8940 @item hsub
8941 @item vsub
8942 horizontal and vertical chroma subsample values. For example for the
8943 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
8944
8945 @item in_h, ih
8946 @item in_w, iw
8947 The input width and height.
8948
8949 @item sar
8950 The input sample aspect ratio.
8951
8952 @item x
8953 @item y
8954 The x and y offset coordinates where the box is drawn.
8955
8956 @item w
8957 @item h
8958 The width and height of the drawn box.
8959
8960 @item t
8961 The thickness of the drawn box.
8962
8963 These constants allow the @var{x}, @var{y}, @var{w}, @var{h} and @var{t} expressions to refer to
8964 each other, so you may for example specify @code{y=x/dar} or @code{h=w/dar}.
8965
8966 @end table
8967
8968 @subsection Examples
8969
8970 @itemize
8971 @item
8972 Draw a black box around the edge of the input image:
8973 @example
8974 drawbox
8975 @end example
8976
8977 @item
8978 Draw a box with color red and an opacity of 50%:
8979 @example
8980 drawbox=10:20:200:60:red@@0.5
8981 @end example
8982
8983 The previous example can be specified as:
8984 @example
8985 drawbox=x=10:y=20:w=200:h=60:color=red@@0.5
8986 @end example
8987
8988 @item
8989 Fill the box with pink color:
8990 @example
8991 drawbox=x=10:y=10:w=100:h=100:color=pink@@0.5:t=fill
8992 @end example
8993
8994 @item
8995 Draw a 2-pixel red 2.40:1 mask:
8996 @example
8997 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
8998 @end example
8999 @end itemize
9000
9001 @subsection Commands
9002 This filter supports same commands as options.
9003 The command accepts the same syntax of the corresponding option.
9004
9005 If the specified expression is not valid, it is kept at its current
9006 value.
9007
9008 @section drawgrid
9009
9010 Draw a grid on the input image.
9011
9012 It accepts the following parameters:
9013
9014 @table @option
9015 @item x
9016 @item y
9017 The expressions which specify the coordinates of some point of grid intersection (meant to configure offset). Both default to 0.
9018
9019 @item width, w
9020 @item height, h
9021 The expressions which specify the width and height of the grid cell, if 0 they are interpreted as the
9022 input width and height, respectively, minus @code{thickness}, so image gets
9023 framed. Default to 0.
9024
9025 @item color, c
9026 Specify the color of the grid. For the general syntax of this option,
9027 check the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}. If the special
9028 value @code{invert} is used, the grid color is the same as the
9029 video with inverted luma.
9030
9031 @item thickness, t
9032 The expression which sets the thickness of the grid line. Default value is @code{1}.
9033
9034 See below for the list of accepted constants.
9035
9036 @item replace
9037 Applicable if the input has alpha. With @code{1} the pixels of the painted grid
9038 will overwrite the video's color and alpha pixels.
9039 Default is @code{0}, which composites the grid onto the input, leaving the video's alpha intact.
9040 @end table
9041
9042 The parameters for @var{x}, @var{y}, @var{w} and @var{h} and @var{t} are expressions containing the
9043 following constants:
9044
9045 @table @option
9046 @item dar
9047 The input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}.
9048
9049 @item hsub
9050 @item vsub
9051 horizontal and vertical chroma subsample values. For example for the
9052 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
9053
9054 @item in_h, ih
9055 @item in_w, iw
9056 The input grid cell width and height.
9057
9058 @item sar
9059 The input sample aspect ratio.
9060
9061 @item x
9062 @item y
9063 The x and y coordinates of some point of grid intersection (meant to configure offset).
9064
9065 @item w
9066 @item h
9067 The width and height of the drawn cell.
9068
9069 @item t
9070 The thickness of the drawn cell.
9071
9072 These constants allow the @var{x}, @var{y}, @var{w}, @var{h} and @var{t} expressions to refer to
9073 each other, so you may for example specify @code{y=x/dar} or @code{h=w/dar}.
9074
9075 @end table
9076
9077 @subsection Examples
9078
9079 @itemize
9080 @item
9081 Draw a grid with cell 100x100 pixels, thickness 2 pixels, with color red and an opacity of 50%:
9082 @example
9083 drawgrid=width=100:height=100:thickness=2:color=red@@0.5
9084 @end example
9085
9086 @item
9087 Draw a white 3x3 grid with an opacity of 50%:
9088 @example
9089 drawgrid=w=iw/3:h=ih/3:t=2:c=white@@0.5
9090 @end example
9091 @end itemize
9092
9093 @subsection Commands
9094 This filter supports same commands as options.
9095 The command accepts the same syntax of the corresponding option.
9096
9097 If the specified expression is not valid, it is kept at its current
9098 value.
9099
9100 @anchor{drawtext}
9101 @section drawtext
9102
9103 Draw a text string or text from a specified file on top of a video, using the
9104 libfreetype library.
9105
9106 To enable compilation of this filter, you need to configure FFmpeg with
9107 @code{--enable-libfreetype}.
9108 To enable default font fallback and the @var{font} option you need to
9109 configure FFmpeg with @code{--enable-libfontconfig}.
9110 To enable the @var{text_shaping} option, you need to configure FFmpeg with
9111 @code{--enable-libfribidi}.
9112
9113 @subsection Syntax
9114
9115 It accepts the following parameters:
9116
9117 @table @option
9118
9119 @item box
9120 Used to draw a box around text using the background color.
9121 The value must be either 1 (enable) or 0 (disable).
9122 The default value of @var{box} is 0.
9123
9124 @item boxborderw
9125 Set the width of the border to be drawn around the box using @var{boxcolor}.
9126 The default value of @var{boxborderw} is 0.
9127
9128 @item boxcolor
9129 The color to be used for drawing box around text. For the syntax of this
9130 option, check the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
9131
9132 The default value of @var{boxcolor} is "white".
9133
9134 @item line_spacing
9135 Set the line spacing in pixels of the border to be drawn around the box using @var{box}.
9136 The default value of @var{line_spacing} is 0.
9137
9138 @item borderw
9139 Set the width of the border to be drawn around the text using @var{bordercolor}.
9140 The default value of @var{borderw} is 0.
9141
9142 @item bordercolor
9143 Set the color to be used for drawing border around text. For the syntax of this
9144 option, check the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
9145
9146 The default value of @var{bordercolor} is "black".
9147
9148 @item expansion
9149 Select how the @var{text} is expanded. Can be either @code{none},
9150 @code{strftime} (deprecated) or
9151 @code{normal} (default). See the @ref{drawtext_expansion, Text expansion} section
9152 below for details.
9153
9154 @item basetime
9155 Set a start time for the count. Value is in microseconds. Only applied
9156 in the deprecated strftime expansion mode. To emulate in normal expansion
9157 mode use the @code{pts} function, supplying the start time (in seconds)
9158 as the second argument.
9159
9160 @item fix_bounds
9161 If true, check and fix text coords to avoid clipping.
9162
9163 @item fontcolor
9164 The color to be used for drawing fonts. For the syntax of this option, check
9165 the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
9166
9167 The default value of @var{fontcolor} is "black".
9168
9169 @item fontcolor_expr
9170 String which is expanded the same way as @var{text} to obtain dynamic
9171 @var{fontcolor} value. By default this option has empty value and is not
9172 processed. When this option is set, it overrides @var{fontcolor} option.
9173
9174 @item font
9175 The font family to be used for drawing text. By default Sans.
9176
9177 @item fontfile
9178 The font file to be used for drawing text. The path must be included.
9179 This parameter is mandatory if the fontconfig support is disabled.
9180
9181 @item alpha
9182 Draw the text applying alpha blending. The value can
9183 be a number between 0.0 and 1.0.
9184 The expression accepts the same variables @var{x, y} as well.
9185 The default value is 1.
9186 Please see @var{fontcolor_expr}.
9187
9188 @item fontsize
9189 The font size to be used for drawing text.
9190 The default value of @var{fontsize} is 16.
9191
9192 @item text_shaping
9193 If set to 1, attempt to shape the text (for example, reverse the order of
9194 right-to-left text and join Arabic characters) before drawing it.
9195 Otherwise, just draw the text exactly as given.
9196 By default 1 (if supported).
9197
9198 @item ft_load_flags
9199 The flags to be used for loading the fonts.
9200
9201 The flags map the corresponding flags supported by libfreetype, and are
9202 a combination of the following values:
9203 @table @var
9204 @item default
9205 @item no_scale
9206 @item no_hinting
9207 @item render
9208 @item no_bitmap
9209 @item vertical_layout
9210 @item force_autohint
9211 @item crop_bitmap
9212 @item pedantic
9213 @item ignore_global_advance_width
9214 @item no_recurse
9215 @item ignore_transform
9216 @item monochrome
9217 @item linear_design
9218 @item no_autohint
9219 @end table
9220
9221 Default value is "default".
9222
9223 For more information consult the documentation for the FT_LOAD_*
9224 libfreetype flags.
9225
9226 @item shadowcolor
9227 The color to be used for drawing a shadow behind the drawn text. For the
9228 syntax of this option, check the @ref{color syntax,,"Color" section in the
9229 ffmpeg-utils manual,ffmpeg-utils}.
9230
9231 The default value of @var{shadowcolor} is "black".
9232
9233 @item shadowx
9234 @item shadowy
9235 The x and y offsets for the text shadow position with respect to the
9236 position of the text. They can be either positive or negative
9237 values. The default value for both is "0".
9238
9239 @item start_number
9240 The starting frame number for the n/frame_num variable. The default value
9241 is "0".
9242
9243 @item tabsize
9244 The size in number of spaces to use for rendering the tab.
9245 Default value is 4.
9246
9247 @item timecode
9248 Set the initial timecode representation in "hh:mm:ss[:;.]ff"
9249 format. It can be used with or without text parameter. @var{timecode_rate}
9250 option must be specified.
9251
9252 @item timecode_rate, rate, r
9253 Set the timecode frame rate (timecode only). Value will be rounded to nearest
9254 integer. Minimum value is "1".
9255 Drop-frame timecode is supported for frame rates 30 & 60.
9256
9257 @item tc24hmax
9258 If set to 1, the output of the timecode option will wrap around at 24 hours.
9259 Default is 0 (disabled).
9260
9261 @item text
9262 The text string to be drawn. The text must be a sequence of UTF-8
9263 encoded characters.
9264 This parameter is mandatory if no file is specified with the parameter
9265 @var{textfile}.
9266
9267 @item textfile
9268 A text file containing text to be drawn. The text must be a sequence
9269 of UTF-8 encoded characters.
9270
9271 This parameter is mandatory if no text string is specified with the
9272 parameter @var{text}.
9273
9274 If both @var{text} and @var{textfile} are specified, an error is thrown.
9275
9276 @item reload
9277 If set to 1, the @var{textfile} will be reloaded before each frame.
9278 Be sure to update it atomically, or it may be read partially, or even fail.
9279
9280 @item x
9281 @item y
9282 The expressions which specify the offsets where text will be drawn
9283 within the video frame. They are relative to the top/left border of the
9284 output image.
9285
9286 The default value of @var{x} and @var{y} is "0".
9287
9288 See below for the list of accepted constants and functions.
9289 @end table
9290
9291 The parameters for @var{x} and @var{y} are expressions containing the
9292 following constants and functions:
9293
9294 @table @option
9295 @item dar
9296 input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}
9297
9298 @item hsub
9299 @item vsub
9300 horizontal and vertical chroma subsample values. For example for the
9301 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
9302
9303 @item line_h, lh
9304 the height of each text line
9305
9306 @item main_h, h, H
9307 the input height
9308
9309 @item main_w, w, W
9310 the input width
9311
9312 @item max_glyph_a, ascent
9313 the maximum distance from the baseline to the highest/upper grid
9314 coordinate used to place a glyph outline point, for all the rendered
9315 glyphs.
9316 It is a positive value, due to the grid's orientation with the Y axis
9317 upwards.
9318
9319 @item max_glyph_d, descent
9320 the maximum distance from the baseline to the lowest grid coordinate
9321 used to place a glyph outline point, for all the rendered glyphs.
9322 This is a negative value, due to the grid's orientation, with the Y axis
9323 upwards.
9324
9325 @item max_glyph_h
9326 maximum glyph height, that is the maximum height for all the glyphs
9327 contained in the rendered text, it is equivalent to @var{ascent} -
9328 @var{descent}.
9329
9330 @item max_glyph_w
9331 maximum glyph width, that is the maximum width for all the glyphs
9332 contained in the rendered text
9333
9334 @item n
9335 the number of input frame, starting from 0
9336
9337 @item rand(min, max)
9338 return a random number included between @var{min} and @var{max}
9339
9340 @item sar
9341 The input sample aspect ratio.
9342
9343 @item t
9344 timestamp expressed in seconds, NAN if the input timestamp is unknown
9345
9346 @item text_h, th
9347 the height of the rendered text
9348
9349 @item text_w, tw
9350 the width of the rendered text
9351
9352 @item x
9353 @item y
9354 the x and y offset coordinates where the text is drawn.
9355
9356 These parameters allow the @var{x} and @var{y} expressions to refer
9357 to each other, so you can for example specify @code{y=x/dar}.
9358
9359 @item pict_type
9360 A one character description of the current frame's picture type.
9361
9362 @item pkt_pos
9363 The current packet's position in the input file or stream
9364 (in bytes, from the start of the input). A value of -1 indicates
9365 this info is not available.
9366
9367 @item pkt_duration
9368 The current packet's duration, in seconds.
9369
9370 @item pkt_size
9371 The current packet's size (in bytes).
9372 @end table
9373
9374 @anchor{drawtext_expansion}
9375 @subsection Text expansion
9376
9377 If @option{expansion} is set to @code{strftime},
9378 the filter recognizes strftime() sequences in the provided text and
9379 expands them accordingly. Check the documentation of strftime(). This
9380 feature is deprecated.
9381
9382 If @option{expansion} is set to @code{none}, the text is printed verbatim.
9383
9384 If @option{expansion} is set to @code{normal} (which is the default),
9385 the following expansion mechanism is used.
9386
9387 The backslash character @samp{\}, followed by any character, always expands to
9388 the second character.
9389
9390 Sequences of the form @code{%@{...@}} are expanded. The text between the
9391 braces is a function name, possibly followed by arguments separated by ':'.
9392 If the arguments contain special characters or delimiters (':' or '@}'),
9393 they should be escaped.
9394
9395 Note that they probably must also be escaped as the value for the
9396 @option{text} option in the filter argument string and as the filter
9397 argument in the filtergraph description, and possibly also for the shell,
9398 that makes up to four levels of escaping; using a text file avoids these
9399 problems.
9400
9401 The following functions are available:
9402
9403 @table @command
9404
9405 @item expr, e
9406 The expression evaluation result.
9407
9408 It must take one argument specifying the expression to be evaluated,
9409 which accepts the same constants and functions as the @var{x} and
9410 @var{y} values. Note that not all constants should be used, for
9411 example the text size is not known when evaluating the expression, so
9412 the constants @var{text_w} and @var{text_h} will have an undefined
9413 value.
9414
9415 @item expr_int_format, eif
9416 Evaluate the expression's value and output as formatted integer.
9417
9418 The first argument is the expression to be evaluated, just as for the @var{expr} function.
9419 The second argument specifies the output format. Allowed values are @samp{x},
9420 @samp{X}, @samp{d} and @samp{u}. They are treated exactly as in the
9421 @code{printf} function.
9422 The third parameter is optional and sets the number of positions taken by the output.
9423 It can be used to add padding with zeros from the left.
9424
9425 @item gmtime
9426 The time at which the filter is running, expressed in UTC.
9427 It can accept an argument: a strftime() format string.
9428
9429 @item localtime
9430 The time at which the filter is running, expressed in the local time zone.
9431 It can accept an argument: a strftime() format string.
9432
9433 @item metadata
9434 Frame metadata. Takes one or two arguments.
9435
9436 The first argument is mandatory and specifies the metadata key.
9437
9438 The second argument is optional and specifies a default value, used when the
9439 metadata key is not found or empty.
9440
9441 Available metadata can be identified by inspecting entries
9442 starting with TAG included within each frame section
9443 printed by running @code{ffprobe -show_frames}.
9444
9445 String metadata generated in filters leading to
9446 the drawtext filter are also available.
9447
9448 @item n, frame_num
9449 The frame number, starting from 0.
9450
9451 @item pict_type
9452 A one character description of the current picture type.
9453
9454 @item pts
9455 The timestamp of the current frame.
9456 It can take up to three arguments.
9457
9458 The first argument is the format of the timestamp; it defaults to @code{flt}
9459 for seconds as a decimal number with microsecond accuracy; @code{hms} stands
9460 for a formatted @var{[-]HH:MM:SS.mmm} timestamp with millisecond accuracy.
9461 @code{gmtime} stands for the timestamp of the frame formatted as UTC time;
9462 @code{localtime} stands for the timestamp of the frame formatted as
9463 local time zone time.
9464
9465 The second argument is an offset added to the timestamp.
9466
9467 If the format is set to @code{hms}, a third argument @code{24HH} may be
9468 supplied to present the hour part of the formatted timestamp in 24h format
9469 (00-23).
9470
9471 If the format is set to @code{localtime} or @code{gmtime},
9472 a third argument may be supplied: a strftime() format string.
9473 By default, @var{YYYY-MM-DD HH:MM:SS} format will be used.
9474 @end table
9475
9476 @subsection Commands
9477
9478 This filter supports altering parameters via commands:
9479 @table @option
9480 @item reinit
9481 Alter existing filter parameters.
9482
9483 Syntax for the argument is the same as for filter invocation, e.g.
9484
9485 @example
9486 fontsize=56:fontcolor=green:text='Hello World'
9487 @end example
9488
9489 Full filter invocation with sendcmd would look like this:
9490
9491 @example
9492 sendcmd=c='56.0 drawtext reinit fontsize=56\:fontcolor=green\:text=Hello\\ World'
9493 @end example
9494 @end table
9495
9496 If the entire argument can't be parsed or applied as valid values then the filter will
9497 continue with its existing parameters.
9498
9499 @subsection Examples
9500
9501 @itemize
9502 @item
9503 Draw "Test Text" with font FreeSerif, using the default values for the
9504 optional parameters.
9505
9506 @example
9507 drawtext="fontfile=/usr/share/fonts/truetype/freefont/FreeSerif.ttf: text='Test Text'"
9508 @end example
9509
9510 @item
9511 Draw 'Test Text' with font FreeSerif of size 24 at position x=100
9512 and y=50 (counting from the top-left corner of the screen), text is
9513 yellow with a red box around it. Both the text and the box have an
9514 opacity of 20%.
9515
9516 @example
9517 drawtext="fontfile=/usr/share/fonts/truetype/freefont/FreeSerif.ttf: text='Test Text':\
9518           x=100: y=50: fontsize=24: fontcolor=yellow@@0.2: box=1: boxcolor=red@@0.2"
9519 @end example
9520
9521 Note that the double quotes are not necessary if spaces are not used
9522 within the parameter list.
9523
9524 @item
9525 Show the text at the center of the video frame:
9526 @example
9527 drawtext="fontsize=30:fontfile=FreeSerif.ttf:text='hello world':x=(w-text_w)/2:y=(h-text_h)/2"
9528 @end example
9529
9530 @item
9531 Show the text at a random position, switching to a new position every 30 seconds:
9532 @example
9533 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)"
9534 @end example
9535
9536 @item
9537 Show a text line sliding from right to left in the last row of the video
9538 frame. The file @file{LONG_LINE} is assumed to contain a single line
9539 with no newlines.
9540 @example
9541 drawtext="fontsize=15:fontfile=FreeSerif.ttf:text=LONG_LINE:y=h-line_h:x=-50*t"
9542 @end example
9543
9544 @item
9545 Show the content of file @file{CREDITS} off the bottom of the frame and scroll up.
9546 @example
9547 drawtext="fontsize=20:fontfile=FreeSerif.ttf:textfile=CREDITS:y=h-20*t"
9548 @end example
9549
9550 @item
9551 Draw a single green letter "g", at the center of the input video.
9552 The glyph baseline is placed at half screen height.
9553 @example
9554 drawtext="fontsize=60:fontfile=FreeSerif.ttf:fontcolor=green:text=g:x=(w-max_glyph_w)/2:y=h/2-ascent"
9555 @end example
9556
9557 @item
9558 Show text for 1 second every 3 seconds:
9559 @example
9560 drawtext="fontfile=FreeSerif.ttf:fontcolor=white:x=100:y=x/dar:enable=lt(mod(t\,3)\,1):text='blink'"
9561 @end example
9562
9563 @item
9564 Use fontconfig to set the font. Note that the colons need to be escaped.
9565 @example
9566 drawtext='fontfile=Linux Libertine O-40\:style=Semibold:text=FFmpeg'
9567 @end example
9568
9569 @item
9570 Print the date of a real-time encoding (see strftime(3)):
9571 @example
9572 drawtext='fontfile=FreeSans.ttf:text=%@{localtime\:%a %b %d %Y@}'
9573 @end example
9574
9575 @item
9576 Show text fading in and out (appearing/disappearing):
9577 @example
9578 #!/bin/sh
9579 DS=1.0 # display start
9580 DE=10.0 # display end
9581 FID=1.5 # fade in duration
9582 FOD=5 # fade out duration
9583 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 @}"
9584 @end example
9585
9586 @item
9587 Horizontally align multiple separate texts. Note that @option{max_glyph_a}
9588 and the @option{fontsize} value are included in the @option{y} offset.
9589 @example
9590 drawtext=fontfile=FreeSans.ttf:text=DOG:fontsize=24:x=10:y=20+24-max_glyph_a,
9591 drawtext=fontfile=FreeSans.ttf:text=cow:fontsize=24:x=80:y=20+24-max_glyph_a
9592 @end example
9593
9594 @end itemize
9595
9596 For more information about libfreetype, check:
9597 @url{http://www.freetype.org/}.
9598
9599 For more information about fontconfig, check:
9600 @url{http://freedesktop.org/software/fontconfig/fontconfig-user.html}.
9601
9602 For more information about libfribidi, check:
9603 @url{http://fribidi.org/}.
9604
9605 @section edgedetect
9606
9607 Detect and draw edges. The filter uses the Canny Edge Detection algorithm.
9608
9609 The filter accepts the following options:
9610
9611 @table @option
9612 @item low
9613 @item high
9614 Set low and high threshold values used by the Canny thresholding
9615 algorithm.
9616
9617 The high threshold selects the "strong" edge pixels, which are then
9618 connected through 8-connectivity with the "weak" edge pixels selected
9619 by the low threshold.
9620
9621 @var{low} and @var{high} threshold values must be chosen in the range
9622 [0,1], and @var{low} should be lesser or equal to @var{high}.
9623
9624 Default value for @var{low} is @code{20/255}, and default value for @var{high}
9625 is @code{50/255}.
9626
9627 @item mode
9628 Define the drawing mode.
9629
9630 @table @samp
9631 @item wires
9632 Draw white/gray wires on black background.
9633
9634 @item colormix
9635 Mix the colors to create a paint/cartoon effect.
9636
9637 @item canny
9638 Apply Canny edge detector on all selected planes.
9639 @end table
9640 Default value is @var{wires}.
9641
9642 @item planes
9643 Select planes for filtering. By default all available planes are filtered.
9644 @end table
9645
9646 @subsection Examples
9647
9648 @itemize
9649 @item
9650 Standard edge detection with custom values for the hysteresis thresholding:
9651 @example
9652 edgedetect=low=0.1:high=0.4
9653 @end example
9654
9655 @item
9656 Painting effect without thresholding:
9657 @example
9658 edgedetect=mode=colormix:high=0
9659 @end example
9660 @end itemize
9661
9662 @section elbg
9663
9664 Apply a posterize effect using the ELBG (Enhanced LBG) algorithm.
9665
9666 For each input image, the filter will compute the optimal mapping from
9667 the input to the output given the codebook length, that is the number
9668 of distinct output colors.
9669
9670 This filter accepts the following options.
9671
9672 @table @option
9673 @item codebook_length, l
9674 Set codebook length. The value must be a positive integer, and
9675 represents the number of distinct output colors. Default value is 256.
9676
9677 @item nb_steps, n
9678 Set the maximum number of iterations to apply for computing the optimal
9679 mapping. The higher the value the better the result and the higher the
9680 computation time. Default value is 1.
9681
9682 @item seed, s
9683 Set a random seed, must be an integer included between 0 and
9684 UINT32_MAX. If not specified, or if explicitly set to -1, the filter
9685 will try to use a good random seed on a best effort basis.
9686
9687 @item pal8
9688 Set pal8 output pixel format. This option does not work with codebook
9689 length greater than 256.
9690 @end table
9691
9692 @section entropy
9693
9694 Measure graylevel entropy in histogram of color channels of video frames.
9695
9696 It accepts the following parameters:
9697
9698 @table @option
9699 @item mode
9700 Can be either @var{normal} or @var{diff}. Default is @var{normal}.
9701
9702 @var{diff} mode measures entropy of histogram delta values, absolute differences
9703 between neighbour histogram values.
9704 @end table
9705
9706 @section eq
9707 Set brightness, contrast, saturation and approximate gamma adjustment.
9708
9709 The filter accepts the following options:
9710
9711 @table @option
9712 @item contrast
9713 Set the contrast expression. The value must be a float value in range
9714 @code{-1000.0} to @code{1000.0}. The default value is "1".
9715
9716 @item brightness
9717 Set the brightness expression. The value must be a float value in
9718 range @code{-1.0} to @code{1.0}. The default value is "0".
9719
9720 @item saturation
9721 Set the saturation expression. The value must be a float in
9722 range @code{0.0} to @code{3.0}. The default value is "1".
9723
9724 @item gamma
9725 Set the gamma expression. The value must be a float in range
9726 @code{0.1} to @code{10.0}.  The default value is "1".
9727
9728 @item gamma_r
9729 Set the gamma expression for red. The value must be a float in
9730 range @code{0.1} to @code{10.0}. The default value is "1".
9731
9732 @item gamma_g
9733 Set the gamma expression for green. The value must be a float in range
9734 @code{0.1} to @code{10.0}. The default value is "1".
9735
9736 @item gamma_b
9737 Set the gamma expression for blue. The value must be a float in range
9738 @code{0.1} to @code{10.0}. The default value is "1".
9739
9740 @item gamma_weight
9741 Set the gamma weight expression. It can be used to reduce the effect
9742 of a high gamma value on bright image areas, e.g. keep them from
9743 getting overamplified and just plain white. The value must be a float
9744 in range @code{0.0} to @code{1.0}. A value of @code{0.0} turns the
9745 gamma correction all the way down while @code{1.0} leaves it at its
9746 full strength. Default is "1".
9747
9748 @item eval
9749 Set when the expressions for brightness, contrast, saturation and
9750 gamma expressions are evaluated.
9751
9752 It accepts the following values:
9753 @table @samp
9754 @item init
9755 only evaluate expressions once during the filter initialization or
9756 when a command is processed
9757
9758 @item frame
9759 evaluate expressions for each incoming frame
9760 @end table
9761
9762 Default value is @samp{init}.
9763 @end table
9764
9765 The expressions accept the following parameters:
9766 @table @option
9767 @item n
9768 frame count of the input frame starting from 0
9769
9770 @item pos
9771 byte position of the corresponding packet in the input file, NAN if
9772 unspecified
9773
9774 @item r
9775 frame rate of the input video, NAN if the input frame rate is unknown
9776
9777 @item t
9778 timestamp expressed in seconds, NAN if the input timestamp is unknown
9779 @end table
9780
9781 @subsection Commands
9782 The filter supports the following commands:
9783
9784 @table @option
9785 @item contrast
9786 Set the contrast expression.
9787
9788 @item brightness
9789 Set the brightness expression.
9790
9791 @item saturation
9792 Set the saturation expression.
9793
9794 @item gamma
9795 Set the gamma expression.
9796
9797 @item gamma_r
9798 Set the gamma_r expression.
9799
9800 @item gamma_g
9801 Set gamma_g expression.
9802
9803 @item gamma_b
9804 Set gamma_b expression.
9805
9806 @item gamma_weight
9807 Set gamma_weight expression.
9808
9809 The command accepts the same syntax of the corresponding option.
9810
9811 If the specified expression is not valid, it is kept at its current
9812 value.
9813
9814 @end table
9815
9816 @section erosion
9817
9818 Apply erosion effect to the video.
9819
9820 This filter replaces the pixel by the local(3x3) minimum.
9821
9822 It accepts the following options:
9823
9824 @table @option
9825 @item threshold0
9826 @item threshold1
9827 @item threshold2
9828 @item threshold3
9829 Limit the maximum change for each plane, default is 65535.
9830 If 0, plane will remain unchanged.
9831
9832 @item coordinates
9833 Flag which specifies the pixel to refer to. Default is 255 i.e. all eight
9834 pixels are used.
9835
9836 Flags to local 3x3 coordinates maps like this:
9837
9838     1 2 3
9839     4   5
9840     6 7 8
9841 @end table
9842
9843 @section extractplanes
9844
9845 Extract color channel components from input video stream into
9846 separate grayscale video streams.
9847
9848 The filter accepts the following option:
9849
9850 @table @option
9851 @item planes
9852 Set plane(s) to extract.
9853
9854 Available values for planes are:
9855 @table @samp
9856 @item y
9857 @item u
9858 @item v
9859 @item a
9860 @item r
9861 @item g
9862 @item b
9863 @end table
9864
9865 Choosing planes not available in the input will result in an error.
9866 That means you cannot select @code{r}, @code{g}, @code{b} planes
9867 with @code{y}, @code{u}, @code{v} planes at same time.
9868 @end table
9869
9870 @subsection Examples
9871
9872 @itemize
9873 @item
9874 Extract luma, u and v color channel component from input video frame
9875 into 3 grayscale outputs:
9876 @example
9877 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
9878 @end example
9879 @end itemize
9880
9881 @section fade
9882
9883 Apply a fade-in/out effect to the input video.
9884
9885 It accepts the following parameters:
9886
9887 @table @option
9888 @item type, t
9889 The effect type can be either "in" for a fade-in, or "out" for a fade-out
9890 effect.
9891 Default is @code{in}.
9892
9893 @item start_frame, s
9894 Specify the number of the frame to start applying the fade
9895 effect at. Default is 0.
9896
9897 @item nb_frames, n
9898 The number of frames that the fade effect lasts. At the end of the
9899 fade-in effect, the output video will have the same intensity as the input video.
9900 At the end of the fade-out transition, the output video will be filled with the
9901 selected @option{color}.
9902 Default is 25.
9903
9904 @item alpha
9905 If set to 1, fade only alpha channel, if one exists on the input.
9906 Default value is 0.
9907
9908 @item start_time, st
9909 Specify the timestamp (in seconds) of the frame to start to apply the fade
9910 effect. If both start_frame and start_time are specified, the fade will start at
9911 whichever comes last.  Default is 0.
9912
9913 @item duration, d
9914 The number of seconds for which the fade effect has to last. At the end of the
9915 fade-in effect the output video will have the same intensity as the input video,
9916 at the end of the fade-out transition the output video will be filled with the
9917 selected @option{color}.
9918 If both duration and nb_frames are specified, duration is used. Default is 0
9919 (nb_frames is used by default).
9920
9921 @item color, c
9922 Specify the color of the fade. Default is "black".
9923 @end table
9924
9925 @subsection Examples
9926
9927 @itemize
9928 @item
9929 Fade in the first 30 frames of video:
9930 @example
9931 fade=in:0:30
9932 @end example
9933
9934 The command above is equivalent to:
9935 @example
9936 fade=t=in:s=0:n=30
9937 @end example
9938
9939 @item
9940 Fade out the last 45 frames of a 200-frame video:
9941 @example
9942 fade=out:155:45
9943 fade=type=out:start_frame=155:nb_frames=45
9944 @end example
9945
9946 @item
9947 Fade in the first 25 frames and fade out the last 25 frames of a 1000-frame video:
9948 @example
9949 fade=in:0:25, fade=out:975:25
9950 @end example
9951
9952 @item
9953 Make the first 5 frames yellow, then fade in from frame 5-24:
9954 @example
9955 fade=in:5:20:color=yellow
9956 @end example
9957
9958 @item
9959 Fade in alpha over first 25 frames of video:
9960 @example
9961 fade=in:0:25:alpha=1
9962 @end example
9963
9964 @item
9965 Make the first 5.5 seconds black, then fade in for 0.5 seconds:
9966 @example
9967 fade=t=in:st=5.5:d=0.5
9968 @end example
9969
9970 @end itemize
9971
9972 @section fftdnoiz
9973 Denoise frames using 3D FFT (frequency domain filtering).
9974
9975 The filter accepts the following options:
9976
9977 @table @option
9978 @item sigma
9979 Set the noise sigma constant. This sets denoising strength.
9980 Default value is 1. Allowed range is from 0 to 30.
9981 Using very high sigma with low overlap may give blocking artifacts.
9982
9983 @item amount
9984 Set amount of denoising. By default all detected noise is reduced.
9985 Default value is 1. Allowed range is from 0 to 1.
9986
9987 @item block
9988 Set size of block, Default is 4, can be 3, 4, 5 or 6.
9989 Actual size of block in pixels is 2 to power of @var{block}, so by default
9990 block size in pixels is 2^4 which is 16.
9991
9992 @item overlap
9993 Set block overlap. Default is 0.5. Allowed range is from 0.2 to 0.8.
9994
9995 @item prev
9996 Set number of previous frames to use for denoising. By default is set to 0.
9997
9998 @item next
9999 Set number of next frames to to use for denoising. By default is set to 0.
10000
10001 @item planes
10002 Set planes which will be filtered, by default are all available filtered
10003 except alpha.
10004 @end table
10005
10006 @section fftfilt
10007 Apply arbitrary expressions to samples in frequency domain
10008
10009 @table @option
10010 @item dc_Y
10011 Adjust the dc value (gain) of the luma plane of the image. The filter
10012 accepts an integer value in range @code{0} to @code{1000}. The default
10013 value is set to @code{0}.
10014
10015 @item dc_U
10016 Adjust the dc value (gain) of the 1st chroma plane of the image. The
10017 filter accepts an integer value in range @code{0} to @code{1000}. The
10018 default value is set to @code{0}.
10019
10020 @item dc_V
10021 Adjust the dc value (gain) of the 2nd chroma plane of the image. The
10022 filter accepts an integer value in range @code{0} to @code{1000}. The
10023 default value is set to @code{0}.
10024
10025 @item weight_Y
10026 Set the frequency domain weight expression for the luma plane.
10027
10028 @item weight_U
10029 Set the frequency domain weight expression for the 1st chroma plane.
10030
10031 @item weight_V
10032 Set the frequency domain weight expression for the 2nd chroma plane.
10033
10034 @item eval
10035 Set when the expressions are evaluated.
10036
10037 It accepts the following values:
10038 @table @samp
10039 @item init
10040 Only evaluate expressions once during the filter initialization.
10041
10042 @item frame
10043 Evaluate expressions for each incoming frame.
10044 @end table
10045
10046 Default value is @samp{init}.
10047
10048 The filter accepts the following variables:
10049 @item X
10050 @item Y
10051 The coordinates of the current sample.
10052
10053 @item W
10054 @item H
10055 The width and height of the image.
10056
10057 @item N
10058 The number of input frame, starting from 0.
10059 @end table
10060
10061 @subsection Examples
10062
10063 @itemize
10064 @item
10065 High-pass:
10066 @example
10067 fftfilt=dc_Y=128:weight_Y='squish(1-(Y+X)/100)'
10068 @end example
10069
10070 @item
10071 Low-pass:
10072 @example
10073 fftfilt=dc_Y=0:weight_Y='squish((Y+X)/100-1)'
10074 @end example
10075
10076 @item
10077 Sharpen:
10078 @example
10079 fftfilt=dc_Y=0:weight_Y='1+squish(1-(Y+X)/100)'
10080 @end example
10081
10082 @item
10083 Blur:
10084 @example
10085 fftfilt=dc_Y=0:weight_Y='exp(-4 * ((Y+X)/(W+H)))'
10086 @end example
10087
10088 @end itemize
10089
10090 @section field
10091
10092 Extract a single field from an interlaced image using stride
10093 arithmetic to avoid wasting CPU time. The output frames are marked as
10094 non-interlaced.
10095
10096 The filter accepts the following options:
10097
10098 @table @option
10099 @item type
10100 Specify whether to extract the top (if the value is @code{0} or
10101 @code{top}) or the bottom field (if the value is @code{1} or
10102 @code{bottom}).
10103 @end table
10104
10105 @section fieldhint
10106
10107 Create new frames by copying the top and bottom fields from surrounding frames
10108 supplied as numbers by the hint file.
10109
10110 @table @option
10111 @item hint
10112 Set file containing hints: absolute/relative frame numbers.
10113
10114 There must be one line for each frame in a clip. Each line must contain two
10115 numbers separated by the comma, optionally followed by @code{-} or @code{+}.
10116 Numbers supplied on each line of file can not be out of [N-1,N+1] where N
10117 is current frame number for @code{absolute} mode or out of [-1, 1] range
10118 for @code{relative} mode. First number tells from which frame to pick up top
10119 field and second number tells from which frame to pick up bottom field.
10120
10121 If optionally followed by @code{+} output frame will be marked as interlaced,
10122 else if followed by @code{-} output frame will be marked as progressive, else
10123 it will be marked same as input frame.
10124 If optionally followed by @code{t} output frame will use only top field, or in
10125 case of @code{b} it will use only bottom field.
10126 If line starts with @code{#} or @code{;} that line is skipped.
10127
10128 @item mode
10129 Can be item @code{absolute} or @code{relative}. Default is @code{absolute}.
10130 @end table
10131
10132 Example of first several lines of @code{hint} file for @code{relative} mode:
10133 @example
10134 0,0 - # first frame
10135 1,0 - # second frame, use third's frame top field and second's frame bottom field
10136 1,0 - # third frame, use fourth's frame top field and third's frame bottom field
10137 1,0 -
10138 0,0 -
10139 0,0 -
10140 1,0 -
10141 1,0 -
10142 1,0 -
10143 0,0 -
10144 0,0 -
10145 1,0 -
10146 1,0 -
10147 1,0 -
10148 0,0 -
10149 @end example
10150
10151 @section fieldmatch
10152
10153 Field matching filter for inverse telecine. It is meant to reconstruct the
10154 progressive frames from a telecined stream. The filter does not drop duplicated
10155 frames, so to achieve a complete inverse telecine @code{fieldmatch} needs to be
10156 followed by a decimation filter such as @ref{decimate} in the filtergraph.
10157
10158 The separation of the field matching and the decimation is notably motivated by
10159 the possibility of inserting a de-interlacing filter fallback between the two.
10160 If the source has mixed telecined and real interlaced content,
10161 @code{fieldmatch} will not be able to match fields for the interlaced parts.
10162 But these remaining combed frames will be marked as interlaced, and thus can be
10163 de-interlaced by a later filter such as @ref{yadif} before decimation.
10164
10165 In addition to the various configuration options, @code{fieldmatch} can take an
10166 optional second stream, activated through the @option{ppsrc} option. If
10167 enabled, the frames reconstruction will be based on the fields and frames from
10168 this second stream. This allows the first input to be pre-processed in order to
10169 help the various algorithms of the filter, while keeping the output lossless
10170 (assuming the fields are matched properly). Typically, a field-aware denoiser,
10171 or brightness/contrast adjustments can help.
10172
10173 Note that this filter uses the same algorithms as TIVTC/TFM (AviSynth project)
10174 and VIVTC/VFM (VapourSynth project). The later is a light clone of TFM from
10175 which @code{fieldmatch} is based on. While the semantic and usage are very
10176 close, some behaviour and options names can differ.
10177
10178 The @ref{decimate} filter currently only works for constant frame rate input.
10179 If your input has mixed telecined (30fps) and progressive content with a lower
10180 framerate like 24fps use the following filterchain to produce the necessary cfr
10181 stream: @code{dejudder,fps=30000/1001,fieldmatch,decimate}.
10182
10183 The filter accepts the following options:
10184
10185 @table @option
10186 @item order
10187 Specify the assumed field order of the input stream. Available values are:
10188
10189 @table @samp
10190 @item auto
10191 Auto detect parity (use FFmpeg's internal parity value).
10192 @item bff
10193 Assume bottom field first.
10194 @item tff
10195 Assume top field first.
10196 @end table
10197
10198 Note that it is sometimes recommended not to trust the parity announced by the
10199 stream.
10200
10201 Default value is @var{auto}.
10202
10203 @item mode
10204 Set the matching mode or strategy to use. @option{pc} mode is the safest in the
10205 sense that it won't risk creating jerkiness due to duplicate frames when
10206 possible, but if there are bad edits or blended fields it will end up
10207 outputting combed frames when a good match might actually exist. On the other
10208 hand, @option{pcn_ub} mode is the most risky in terms of creating jerkiness,
10209 but will almost always find a good frame if there is one. The other values are
10210 all somewhere in between @option{pc} and @option{pcn_ub} in terms of risking
10211 jerkiness and creating duplicate frames versus finding good matches in sections
10212 with bad edits, orphaned fields, blended fields, etc.
10213
10214 More details about p/c/n/u/b are available in @ref{p/c/n/u/b meaning} section.
10215
10216 Available values are:
10217
10218 @table @samp
10219 @item pc
10220 2-way matching (p/c)
10221 @item pc_n
10222 2-way matching, and trying 3rd match if still combed (p/c + n)
10223 @item pc_u
10224 2-way matching, and trying 3rd match (same order) if still combed (p/c + u)
10225 @item pc_n_ub
10226 2-way matching, trying 3rd match if still combed, and trying 4th/5th matches if
10227 still combed (p/c + n + u/b)
10228 @item pcn
10229 3-way matching (p/c/n)
10230 @item pcn_ub
10231 3-way matching, and trying 4th/5th matches if all 3 of the original matches are
10232 detected as combed (p/c/n + u/b)
10233 @end table
10234
10235 The parenthesis at the end indicate the matches that would be used for that
10236 mode assuming @option{order}=@var{tff} (and @option{field} on @var{auto} or
10237 @var{top}).
10238
10239 In terms of speed @option{pc} mode is by far the fastest and @option{pcn_ub} is
10240 the slowest.
10241
10242 Default value is @var{pc_n}.
10243
10244 @item ppsrc
10245 Mark the main input stream as a pre-processed input, and enable the secondary
10246 input stream as the clean source to pick the fields from. See the filter
10247 introduction for more details. It is similar to the @option{clip2} feature from
10248 VFM/TFM.
10249
10250 Default value is @code{0} (disabled).
10251
10252 @item field
10253 Set the field to match from. It is recommended to set this to the same value as
10254 @option{order} unless you experience matching failures with that setting. In
10255 certain circumstances changing the field that is used to match from can have a
10256 large impact on matching performance. Available values are:
10257
10258 @table @samp
10259 @item auto
10260 Automatic (same value as @option{order}).
10261 @item bottom
10262 Match from the bottom field.
10263 @item top
10264 Match from the top field.
10265 @end table
10266
10267 Default value is @var{auto}.
10268
10269 @item mchroma
10270 Set whether or not chroma is included during the match comparisons. In most
10271 cases it is recommended to leave this enabled. You should set this to @code{0}
10272 only if your clip has bad chroma problems such as heavy rainbowing or other
10273 artifacts. Setting this to @code{0} could also be used to speed things up at
10274 the cost of some accuracy.
10275
10276 Default value is @code{1}.
10277
10278 @item y0
10279 @item y1
10280 These define an exclusion band which excludes the lines between @option{y0} and
10281 @option{y1} from being included in the field matching decision. An exclusion
10282 band can be used to ignore subtitles, a logo, or other things that may
10283 interfere with the matching. @option{y0} sets the starting scan line and
10284 @option{y1} sets the ending line; all lines in between @option{y0} and
10285 @option{y1} (including @option{y0} and @option{y1}) will be ignored. Setting
10286 @option{y0} and @option{y1} to the same value will disable the feature.
10287 @option{y0} and @option{y1} defaults to @code{0}.
10288
10289 @item scthresh
10290 Set the scene change detection threshold as a percentage of maximum change on
10291 the luma plane. Good values are in the @code{[8.0, 14.0]} range. Scene change
10292 detection is only relevant in case @option{combmatch}=@var{sc}.  The range for
10293 @option{scthresh} is @code{[0.0, 100.0]}.
10294
10295 Default value is @code{12.0}.
10296
10297 @item combmatch
10298 When @option{combatch} is not @var{none}, @code{fieldmatch} will take into
10299 account the combed scores of matches when deciding what match to use as the
10300 final match. Available values are:
10301
10302 @table @samp
10303 @item none
10304 No final matching based on combed scores.
10305 @item sc
10306 Combed scores are only used when a scene change is detected.
10307 @item full
10308 Use combed scores all the time.
10309 @end table
10310
10311 Default is @var{sc}.
10312
10313 @item combdbg
10314 Force @code{fieldmatch} to calculate the combed metrics for certain matches and
10315 print them. This setting is known as @option{micout} in TFM/VFM vocabulary.
10316 Available values are:
10317
10318 @table @samp
10319 @item none
10320 No forced calculation.
10321 @item pcn
10322 Force p/c/n calculations.
10323 @item pcnub
10324 Force p/c/n/u/b calculations.
10325 @end table
10326
10327 Default value is @var{none}.
10328
10329 @item cthresh
10330 This is the area combing threshold used for combed frame detection. This
10331 essentially controls how "strong" or "visible" combing must be to be detected.
10332 Larger values mean combing must be more visible and smaller values mean combing
10333 can be less visible or strong and still be detected. Valid settings are from
10334 @code{-1} (every pixel will be detected as combed) to @code{255} (no pixel will
10335 be detected as combed). This is basically a pixel difference value. A good
10336 range is @code{[8, 12]}.
10337
10338 Default value is @code{9}.
10339
10340 @item chroma
10341 Sets whether or not chroma is considered in the combed frame decision.  Only
10342 disable this if your source has chroma problems (rainbowing, etc.) that are
10343 causing problems for the combed frame detection with chroma enabled. Actually,
10344 using @option{chroma}=@var{0} is usually more reliable, except for the case
10345 where there is chroma only combing in the source.
10346
10347 Default value is @code{0}.
10348
10349 @item blockx
10350 @item blocky
10351 Respectively set the x-axis and y-axis size of the window used during combed
10352 frame detection. This has to do with the size of the area in which
10353 @option{combpel} pixels are required to be detected as combed for a frame to be
10354 declared combed. See the @option{combpel} parameter description for more info.
10355 Possible values are any number that is a power of 2 starting at 4 and going up
10356 to 512.
10357
10358 Default value is @code{16}.
10359
10360 @item combpel
10361 The number of combed pixels inside any of the @option{blocky} by
10362 @option{blockx} size blocks on the frame for the frame to be detected as
10363 combed. While @option{cthresh} controls how "visible" the combing must be, this
10364 setting controls "how much" combing there must be in any localized area (a
10365 window defined by the @option{blockx} and @option{blocky} settings) on the
10366 frame. Minimum value is @code{0} and maximum is @code{blocky x blockx} (at
10367 which point no frames will ever be detected as combed). This setting is known
10368 as @option{MI} in TFM/VFM vocabulary.
10369
10370 Default value is @code{80}.
10371 @end table
10372
10373 @anchor{p/c/n/u/b meaning}
10374 @subsection p/c/n/u/b meaning
10375
10376 @subsubsection p/c/n
10377
10378 We assume the following telecined stream:
10379
10380 @example
10381 Top fields:     1 2 2 3 4
10382 Bottom fields:  1 2 3 4 4
10383 @end example
10384
10385 The numbers correspond to the progressive frame the fields relate to. Here, the
10386 first two frames are progressive, the 3rd and 4th are combed, and so on.
10387
10388 When @code{fieldmatch} is configured to run a matching from bottom
10389 (@option{field}=@var{bottom}) this is how this input stream get transformed:
10390
10391 @example
10392 Input stream:
10393                 T     1 2 2 3 4
10394                 B     1 2 3 4 4   <-- matching reference
10395
10396 Matches:              c c n n c
10397
10398 Output stream:
10399                 T     1 2 3 4 4
10400                 B     1 2 3 4 4
10401 @end example
10402
10403 As a result of the field matching, we can see that some frames get duplicated.
10404 To perform a complete inverse telecine, you need to rely on a decimation filter
10405 after this operation. See for instance the @ref{decimate} filter.
10406
10407 The same operation now matching from top fields (@option{field}=@var{top})
10408 looks like this:
10409
10410 @example
10411 Input stream:
10412                 T     1 2 2 3 4   <-- matching reference
10413                 B     1 2 3 4 4
10414
10415 Matches:              c c p p c
10416
10417 Output stream:
10418                 T     1 2 2 3 4
10419                 B     1 2 2 3 4
10420 @end example
10421
10422 In these examples, we can see what @var{p}, @var{c} and @var{n} mean;
10423 basically, they refer to the frame and field of the opposite parity:
10424
10425 @itemize
10426 @item @var{p} matches the field of the opposite parity in the previous frame
10427 @item @var{c} matches the field of the opposite parity in the current frame
10428 @item @var{n} matches the field of the opposite parity in the next frame
10429 @end itemize
10430
10431 @subsubsection u/b
10432
10433 The @var{u} and @var{b} matching are a bit special in the sense that they match
10434 from the opposite parity flag. In the following examples, we assume that we are
10435 currently matching the 2nd frame (Top:2, bottom:2). According to the match, a
10436 'x' is placed above and below each matched fields.
10437
10438 With bottom matching (@option{field}=@var{bottom}):
10439 @example
10440 Match:           c         p           n          b          u
10441
10442                  x       x               x        x          x
10443   Top          1 2 2     1 2 2       1 2 2      1 2 2      1 2 2
10444   Bottom       1 2 3     1 2 3       1 2 3      1 2 3      1 2 3
10445                  x         x           x        x              x
10446
10447 Output frames:
10448                  2          1          2          2          2
10449                  2          2          2          1          3
10450 @end example
10451
10452 With top matching (@option{field}=@var{top}):
10453 @example
10454 Match:           c         p           n          b          u
10455
10456                  x         x           x        x              x
10457   Top          1 2 2     1 2 2       1 2 2      1 2 2      1 2 2
10458   Bottom       1 2 3     1 2 3       1 2 3      1 2 3      1 2 3
10459                  x       x               x        x          x
10460
10461 Output frames:
10462                  2          2          2          1          2
10463                  2          1          3          2          2
10464 @end example
10465
10466 @subsection Examples
10467
10468 Simple IVTC of a top field first telecined stream:
10469 @example
10470 fieldmatch=order=tff:combmatch=none, decimate
10471 @end example
10472
10473 Advanced IVTC, with fallback on @ref{yadif} for still combed frames:
10474 @example
10475 fieldmatch=order=tff:combmatch=full, yadif=deint=interlaced, decimate
10476 @end example
10477
10478 @section fieldorder
10479
10480 Transform the field order of the input video.
10481
10482 It accepts the following parameters:
10483
10484 @table @option
10485
10486 @item order
10487 The output field order. Valid values are @var{tff} for top field first or @var{bff}
10488 for bottom field first.
10489 @end table
10490
10491 The default value is @samp{tff}.
10492
10493 The transformation is done by shifting the picture content up or down
10494 by one line, and filling the remaining line with appropriate picture content.
10495 This method is consistent with most broadcast field order converters.
10496
10497 If the input video is not flagged as being interlaced, or it is already
10498 flagged as being of the required output field order, then this filter does
10499 not alter the incoming video.
10500
10501 It is very useful when converting to or from PAL DV material,
10502 which is bottom field first.
10503
10504 For example:
10505 @example
10506 ffmpeg -i in.vob -vf "fieldorder=bff" out.dv
10507 @end example
10508
10509 @section fifo, afifo
10510
10511 Buffer input images and send them when they are requested.
10512
10513 It is mainly useful when auto-inserted by the libavfilter
10514 framework.
10515
10516 It does not take parameters.
10517
10518 @section fillborders
10519
10520 Fill borders of the input video, without changing video stream dimensions.
10521 Sometimes video can have garbage at the four edges and you may not want to
10522 crop video input to keep size multiple of some number.
10523
10524 This filter accepts the following options:
10525
10526 @table @option
10527 @item left
10528 Number of pixels to fill from left border.
10529
10530 @item right
10531 Number of pixels to fill from right border.
10532
10533 @item top
10534 Number of pixels to fill from top border.
10535
10536 @item bottom
10537 Number of pixels to fill from bottom border.
10538
10539 @item mode
10540 Set fill mode.
10541
10542 It accepts the following values:
10543 @table @samp
10544 @item smear
10545 fill pixels using outermost pixels
10546
10547 @item mirror
10548 fill pixels using mirroring
10549
10550 @item fixed
10551 fill pixels with constant value
10552 @end table
10553
10554 Default is @var{smear}.
10555
10556 @item color
10557 Set color for pixels in fixed mode. Default is @var{black}.
10558 @end table
10559
10560 @section find_rect
10561
10562 Find a rectangular object
10563
10564 It accepts the following options:
10565
10566 @table @option
10567 @item object
10568 Filepath of the object image, needs to be in gray8.
10569
10570 @item threshold
10571 Detection threshold, default is 0.5.
10572
10573 @item mipmaps
10574 Number of mipmaps, default is 3.
10575
10576 @item xmin, ymin, xmax, ymax
10577 Specifies the rectangle in which to search.
10578 @end table
10579
10580 @subsection Examples
10581
10582 @itemize
10583 @item
10584 Cover a rectangular object by the supplied image of a given video using @command{ffmpeg}:
10585 @example
10586 ffmpeg -i file.ts -vf find_rect=newref.pgm,cover_rect=cover.jpg:mode=cover new.mkv
10587 @end example
10588 @end itemize
10589
10590 @section floodfill
10591
10592 Flood area with values of same pixel components with another values.
10593
10594 It accepts the following options:
10595 @table @option
10596 @item x
10597 Set pixel x coordinate.
10598
10599 @item y
10600 Set pixel y coordinate.
10601
10602 @item s0
10603 Set source #0 component value.
10604
10605 @item s1
10606 Set source #1 component value.
10607
10608 @item s2
10609 Set source #2 component value.
10610
10611 @item s3
10612 Set source #3 component value.
10613
10614 @item d0
10615 Set destination #0 component value.
10616
10617 @item d1
10618 Set destination #1 component value.
10619
10620 @item d2
10621 Set destination #2 component value.
10622
10623 @item d3
10624 Set destination #3 component value.
10625 @end table
10626
10627 @anchor{format}
10628 @section format
10629
10630 Convert the input video to one of the specified pixel formats.
10631 Libavfilter will try to pick one that is suitable as input to
10632 the next filter.
10633
10634 It accepts the following parameters:
10635 @table @option
10636
10637 @item pix_fmts
10638 A '|'-separated list of pixel format names, such as
10639 "pix_fmts=yuv420p|monow|rgb24".
10640
10641 @end table
10642
10643 @subsection Examples
10644
10645 @itemize
10646 @item
10647 Convert the input video to the @var{yuv420p} format
10648 @example
10649 format=pix_fmts=yuv420p
10650 @end example
10651
10652 Convert the input video to any of the formats in the list
10653 @example
10654 format=pix_fmts=yuv420p|yuv444p|yuv410p
10655 @end example
10656 @end itemize
10657
10658 @anchor{fps}
10659 @section fps
10660
10661 Convert the video to specified constant frame rate by duplicating or dropping
10662 frames as necessary.
10663
10664 It accepts the following parameters:
10665 @table @option
10666
10667 @item fps
10668 The desired output frame rate. The default is @code{25}.
10669
10670 @item start_time
10671 Assume the first PTS should be the given value, in seconds. This allows for
10672 padding/trimming at the start of stream. By default, no assumption is made
10673 about the first frame's expected PTS, so no padding or trimming is done.
10674 For example, this could be set to 0 to pad the beginning with duplicates of
10675 the first frame if a video stream starts after the audio stream or to trim any
10676 frames with a negative PTS.
10677
10678 @item round
10679 Timestamp (PTS) rounding method.
10680
10681 Possible values are:
10682 @table @option
10683 @item zero
10684 round towards 0
10685 @item inf
10686 round away from 0
10687 @item down
10688 round towards -infinity
10689 @item up
10690 round towards +infinity
10691 @item near
10692 round to nearest
10693 @end table
10694 The default is @code{near}.
10695
10696 @item eof_action
10697 Action performed when reading the last frame.
10698
10699 Possible values are:
10700 @table @option
10701 @item round
10702 Use same timestamp rounding method as used for other frames.
10703 @item pass
10704 Pass through last frame if input duration has not been reached yet.
10705 @end table
10706 The default is @code{round}.
10707
10708 @end table
10709
10710 Alternatively, the options can be specified as a flat string:
10711 @var{fps}[:@var{start_time}[:@var{round}]].
10712
10713 See also the @ref{setpts} filter.
10714
10715 @subsection Examples
10716
10717 @itemize
10718 @item
10719 A typical usage in order to set the fps to 25:
10720 @example
10721 fps=fps=25
10722 @end example
10723
10724 @item
10725 Sets the fps to 24, using abbreviation and rounding method to round to nearest:
10726 @example
10727 fps=fps=film:round=near
10728 @end example
10729 @end itemize
10730
10731 @section framepack
10732
10733 Pack two different video streams into a stereoscopic video, setting proper
10734 metadata on supported codecs. The two views should have the same size and
10735 framerate and processing will stop when the shorter video ends. Please note
10736 that you may conveniently adjust view properties with the @ref{scale} and
10737 @ref{fps} filters.
10738
10739 It accepts the following parameters:
10740 @table @option
10741
10742 @item format
10743 The desired packing format. Supported values are:
10744
10745 @table @option
10746
10747 @item sbs
10748 The views are next to each other (default).
10749
10750 @item tab
10751 The views are on top of each other.
10752
10753 @item lines
10754 The views are packed by line.
10755
10756 @item columns
10757 The views are packed by column.
10758
10759 @item frameseq
10760 The views are temporally interleaved.
10761
10762 @end table
10763
10764 @end table
10765
10766 Some examples:
10767
10768 @example
10769 # Convert left and right views into a frame-sequential video
10770 ffmpeg -i LEFT -i RIGHT -filter_complex framepack=frameseq OUTPUT
10771
10772 # Convert views into a side-by-side video with the same output resolution as the input
10773 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
10774 @end example
10775
10776 @section framerate
10777
10778 Change the frame rate by interpolating new video output frames from the source
10779 frames.
10780
10781 This filter is not designed to function correctly with interlaced media. If
10782 you wish to change the frame rate of interlaced media then you are required
10783 to deinterlace before this filter and re-interlace after this filter.
10784
10785 A description of the accepted options follows.
10786
10787 @table @option
10788 @item fps
10789 Specify the output frames per second. This option can also be specified
10790 as a value alone. The default is @code{50}.
10791
10792 @item interp_start
10793 Specify the start of a range where the output frame will be created as a
10794 linear interpolation of two frames. The range is [@code{0}-@code{255}],
10795 the default is @code{15}.
10796
10797 @item interp_end
10798 Specify the end of a range where the output frame will be created as a
10799 linear interpolation of two frames. The range is [@code{0}-@code{255}],
10800 the default is @code{240}.
10801
10802 @item scene
10803 Specify the level at which a scene change is detected as a value between
10804 0 and 100 to indicate a new scene; a low value reflects a low
10805 probability for the current frame to introduce a new scene, while a higher
10806 value means the current frame is more likely to be one.
10807 The default is @code{8.2}.
10808
10809 @item flags
10810 Specify flags influencing the filter process.
10811
10812 Available value for @var{flags} is:
10813
10814 @table @option
10815 @item scene_change_detect, scd
10816 Enable scene change detection using the value of the option @var{scene}.
10817 This flag is enabled by default.
10818 @end table
10819 @end table
10820
10821 @section framestep
10822
10823 Select one frame every N-th frame.
10824
10825 This filter accepts the following option:
10826 @table @option
10827 @item step
10828 Select frame after every @code{step} frames.
10829 Allowed values are positive integers higher than 0. Default value is @code{1}.
10830 @end table
10831
10832 @section freezedetect
10833
10834 Detect frozen video.
10835
10836 This filter logs a message and sets frame metadata when it detects that the
10837 input video has no significant change in content during a specified duration.
10838 Video freeze detection calculates the mean average absolute difference of all
10839 the components of video frames and compares it to a noise floor.
10840
10841 The printed times and duration are expressed in seconds. The
10842 @code{lavfi.freezedetect.freeze_start} metadata key is set on the first frame
10843 whose timestamp equals or exceeds the detection duration and it contains the
10844 timestamp of the first frame of the freeze. The
10845 @code{lavfi.freezedetect.freeze_duration} and
10846 @code{lavfi.freezedetect.freeze_end} metadata keys are set on the first frame
10847 after the freeze.
10848
10849 The filter accepts the following options:
10850
10851 @table @option
10852 @item noise, n
10853 Set noise tolerance. Can be specified in dB (in case "dB" is appended to the
10854 specified value) or as a difference ratio between 0 and 1. Default is -60dB, or
10855 0.001.
10856
10857 @item duration, d
10858 Set freeze duration until notification (default is 2 seconds).
10859 @end table
10860
10861 @anchor{frei0r}
10862 @section frei0r
10863
10864 Apply a frei0r effect to the input video.
10865
10866 To enable the compilation of this filter, you need to install the frei0r
10867 header and configure FFmpeg with @code{--enable-frei0r}.
10868
10869 It accepts the following parameters:
10870
10871 @table @option
10872
10873 @item filter_name
10874 The name of the frei0r effect to load. If the environment variable
10875 @env{FREI0R_PATH} is defined, the frei0r effect is searched for in each of the
10876 directories specified by the colon-separated list in @env{FREI0R_PATH}.
10877 Otherwise, the standard frei0r paths are searched, in this order:
10878 @file{HOME/.frei0r-1/lib/}, @file{/usr/local/lib/frei0r-1/},
10879 @file{/usr/lib/frei0r-1/}.
10880
10881 @item filter_params
10882 A '|'-separated list of parameters to pass to the frei0r effect.
10883
10884 @end table
10885
10886 A frei0r effect parameter can be a boolean (its value is either
10887 "y" or "n"), a double, a color (specified as
10888 @var{R}/@var{G}/@var{B}, where @var{R}, @var{G}, and @var{B} are floating point
10889 numbers between 0.0 and 1.0, inclusive) or a color description as specified in the
10890 @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils},
10891 a position (specified as @var{X}/@var{Y}, where
10892 @var{X} and @var{Y} are floating point numbers) and/or a string.
10893
10894 The number and types of parameters depend on the loaded effect. If an
10895 effect parameter is not specified, the default value is set.
10896
10897 @subsection Examples
10898
10899 @itemize
10900 @item
10901 Apply the distort0r effect, setting the first two double parameters:
10902 @example
10903 frei0r=filter_name=distort0r:filter_params=0.5|0.01
10904 @end example
10905
10906 @item
10907 Apply the colordistance effect, taking a color as the first parameter:
10908 @example
10909 frei0r=colordistance:0.2/0.3/0.4
10910 frei0r=colordistance:violet
10911 frei0r=colordistance:0x112233
10912 @end example
10913
10914 @item
10915 Apply the perspective effect, specifying the top left and top right image
10916 positions:
10917 @example
10918 frei0r=perspective:0.2/0.2|0.8/0.2
10919 @end example
10920 @end itemize
10921
10922 For more information, see
10923 @url{http://frei0r.dyne.org}
10924
10925 @section fspp
10926
10927 Apply fast and simple postprocessing. It is a faster version of @ref{spp}.
10928
10929 It splits (I)DCT into horizontal/vertical passes. Unlike the simple post-
10930 processing filter, one of them is performed once per block, not per pixel.
10931 This allows for much higher speed.
10932
10933 The filter accepts the following options:
10934
10935 @table @option
10936 @item quality
10937 Set quality. This option defines the number of levels for averaging. It accepts
10938 an integer in the range 4-5. Default value is @code{4}.
10939
10940 @item qp
10941 Force a constant quantization parameter. It accepts an integer in range 0-63.
10942 If not set, the filter will use the QP from the video stream (if available).
10943
10944 @item strength
10945 Set filter strength. It accepts an integer in range -15 to 32. Lower values mean
10946 more details but also more artifacts, while higher values make the image smoother
10947 but also blurrier. Default value is @code{0} âˆ’ PSNR optimal.
10948
10949 @item use_bframe_qp
10950 Enable the use of the QP from the B-Frames if set to @code{1}. Using this
10951 option may cause flicker since the B-Frames have often larger QP. Default is
10952 @code{0} (not enabled).
10953
10954 @end table
10955
10956 @section gblur
10957
10958 Apply Gaussian blur filter.
10959
10960 The filter accepts the following options:
10961
10962 @table @option
10963 @item sigma
10964 Set horizontal sigma, standard deviation of Gaussian blur. Default is @code{0.5}.
10965
10966 @item steps
10967 Set number of steps for Gaussian approximation. Default is @code{1}.
10968
10969 @item planes
10970 Set which planes to filter. By default all planes are filtered.
10971
10972 @item sigmaV
10973 Set vertical sigma, if negative it will be same as @code{sigma}.
10974 Default is @code{-1}.
10975 @end table
10976
10977 @subsection Commands
10978 This filter supports same commands as options.
10979 The command accepts the same syntax of the corresponding option.
10980
10981 If the specified expression is not valid, it is kept at its current
10982 value.
10983
10984 @section geq
10985
10986 Apply generic equation to each pixel.
10987
10988 The filter accepts the following options:
10989
10990 @table @option
10991 @item lum_expr, lum
10992 Set the luminance expression.
10993 @item cb_expr, cb
10994 Set the chrominance blue expression.
10995 @item cr_expr, cr
10996 Set the chrominance red expression.
10997 @item alpha_expr, a
10998 Set the alpha expression.
10999 @item red_expr, r
11000 Set the red expression.
11001 @item green_expr, g
11002 Set the green expression.
11003 @item blue_expr, b
11004 Set the blue expression.
11005 @end table
11006
11007 The colorspace is selected according to the specified options. If one
11008 of the @option{lum_expr}, @option{cb_expr}, or @option{cr_expr}
11009 options is specified, the filter will automatically select a YCbCr
11010 colorspace. If one of the @option{red_expr}, @option{green_expr}, or
11011 @option{blue_expr} options is specified, it will select an RGB
11012 colorspace.
11013
11014 If one of the chrominance expression is not defined, it falls back on the other
11015 one. If no alpha expression is specified it will evaluate to opaque value.
11016 If none of chrominance expressions are specified, they will evaluate
11017 to the luminance expression.
11018
11019 The expressions can use the following variables and functions:
11020
11021 @table @option
11022 @item N
11023 The sequential number of the filtered frame, starting from @code{0}.
11024
11025 @item X
11026 @item Y
11027 The coordinates of the current sample.
11028
11029 @item W
11030 @item H
11031 The width and height of the image.
11032
11033 @item SW
11034 @item SH
11035 Width and height scale depending on the currently filtered plane. It is the
11036 ratio between the corresponding luma plane number of pixels and the current
11037 plane ones. E.g. for YUV4:2:0 the values are @code{1,1} for the luma plane, and
11038 @code{0.5,0.5} for chroma planes.
11039
11040 @item T
11041 Time of the current frame, expressed in seconds.
11042
11043 @item p(x, y)
11044 Return the value of the pixel at location (@var{x},@var{y}) of the current
11045 plane.
11046
11047 @item lum(x, y)
11048 Return the value of the pixel at location (@var{x},@var{y}) of the luminance
11049 plane.
11050
11051 @item cb(x, y)
11052 Return the value of the pixel at location (@var{x},@var{y}) of the
11053 blue-difference chroma plane. Return 0 if there is no such plane.
11054
11055 @item cr(x, y)
11056 Return the value of the pixel at location (@var{x},@var{y}) of the
11057 red-difference chroma plane. Return 0 if there is no such plane.
11058
11059 @item r(x, y)
11060 @item g(x, y)
11061 @item b(x, y)
11062 Return the value of the pixel at location (@var{x},@var{y}) of the
11063 red/green/blue component. Return 0 if there is no such component.
11064
11065 @item alpha(x, y)
11066 Return the value of the pixel at location (@var{x},@var{y}) of the alpha
11067 plane. Return 0 if there is no such plane.
11068
11069 @item interpolation
11070 Set one of interpolation methods:
11071 @table @option
11072 @item nearest, n
11073 @item bilinear, b
11074 @end table
11075 Default is bilinear.
11076 @end table
11077
11078 For functions, if @var{x} and @var{y} are outside the area, the value will be
11079 automatically clipped to the closer edge.
11080
11081 @subsection Examples
11082
11083 @itemize
11084 @item
11085 Flip the image horizontally:
11086 @example
11087 geq=p(W-X\,Y)
11088 @end example
11089
11090 @item
11091 Generate a bidimensional sine wave, with angle @code{PI/3} and a
11092 wavelength of 100 pixels:
11093 @example
11094 geq=128 + 100*sin(2*(PI/100)*(cos(PI/3)*(X-50*T) + sin(PI/3)*Y)):128:128
11095 @end example
11096
11097 @item
11098 Generate a fancy enigmatic moving light:
11099 @example
11100 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
11101 @end example
11102
11103 @item
11104 Generate a quick emboss effect:
11105 @example
11106 format=gray,geq=lum_expr='(p(X,Y)+(256-p(X-4,Y-4)))/2'
11107 @end example
11108
11109 @item
11110 Modify RGB components depending on pixel position:
11111 @example
11112 geq=r='X/W*r(X,Y)':g='(1-X/W)*g(X,Y)':b='(H-Y)/H*b(X,Y)'
11113 @end example
11114
11115 @item
11116 Create a radial gradient that is the same size as the input (also see
11117 the @ref{vignette} filter):
11118 @example
11119 geq=lum=255*gauss((X/W-0.5)*3)*gauss((Y/H-0.5)*3)/gauss(0)/gauss(0),format=gray
11120 @end example
11121 @end itemize
11122
11123 @section gradfun
11124
11125 Fix the banding artifacts that are sometimes introduced into nearly flat
11126 regions by truncation to 8-bit color depth.
11127 Interpolate the gradients that should go where the bands are, and
11128 dither them.
11129
11130 It is designed for playback only.  Do not use it prior to
11131 lossy compression, because compression tends to lose the dither and
11132 bring back the bands.
11133
11134 It accepts the following parameters:
11135
11136 @table @option
11137
11138 @item strength
11139 The maximum amount by which the filter will change any one pixel. This is also
11140 the threshold for detecting nearly flat regions. Acceptable values range from
11141 .51 to 64; the default value is 1.2. Out-of-range values will be clipped to the
11142 valid range.
11143
11144 @item radius
11145 The neighborhood to fit the gradient to. A larger radius makes for smoother
11146 gradients, but also prevents the filter from modifying the pixels near detailed
11147 regions. Acceptable values are 8-32; the default value is 16. Out-of-range
11148 values will be clipped to the valid range.
11149
11150 @end table
11151
11152 Alternatively, the options can be specified as a flat string:
11153 @var{strength}[:@var{radius}]
11154
11155 @subsection Examples
11156
11157 @itemize
11158 @item
11159 Apply the filter with a @code{3.5} strength and radius of @code{8}:
11160 @example
11161 gradfun=3.5:8
11162 @end example
11163
11164 @item
11165 Specify radius, omitting the strength (which will fall-back to the default
11166 value):
11167 @example
11168 gradfun=radius=8
11169 @end example
11170
11171 @end itemize
11172
11173 @section graphmonitor, agraphmonitor
11174 Show various filtergraph stats.
11175
11176 With this filter one can debug complete filtergraph.
11177 Especially issues with links filling with queued frames.
11178
11179 The filter accepts the following options:
11180
11181 @table @option
11182 @item size, s
11183 Set video output size. Default is @var{hd720}.
11184
11185 @item opacity, o
11186 Set video opacity. Default is @var{0.9}. Allowed range is from @var{0} to @var{1}.
11187
11188 @item mode, m
11189 Set output mode, can be @var{fulll} or @var{compact}.
11190 In @var{compact} mode only filters with some queued frames have displayed stats.
11191
11192 @item flags, f
11193 Set flags which enable which stats are shown in video.
11194
11195 Available values for flags are:
11196 @table @samp
11197 @item queue
11198 Display number of queued frames in each link.
11199
11200 @item frame_count_in
11201 Display number of frames taken from filter.
11202
11203 @item frame_count_out
11204 Display number of frames given out from filter.
11205
11206 @item pts
11207 Display current filtered frame pts.
11208
11209 @item time
11210 Display current filtered frame time.
11211
11212 @item timebase
11213 Display time base for filter link.
11214
11215 @item format
11216 Display used format for filter link.
11217
11218 @item size
11219 Display video size or number of audio channels in case of audio used by filter link.
11220
11221 @item rate
11222 Display video frame rate or sample rate in case of audio used by filter link.
11223 @end table
11224
11225 @item rate, r
11226 Set upper limit for video rate of output stream, Default value is @var{25}.
11227 This guarantee that output video frame rate will not be higher than this value.
11228 @end table
11229
11230 @section greyedge
11231 A color constancy variation filter which estimates scene illumination via grey edge algorithm
11232 and corrects the scene colors accordingly.
11233
11234 See: @url{https://staff.science.uva.nl/th.gevers/pub/GeversTIP07.pdf}
11235
11236 The filter accepts the following options:
11237
11238 @table @option
11239 @item difford
11240 The order of differentiation to be applied on the scene. Must be chosen in the range
11241 [0,2] and default value is 1.
11242
11243 @item minknorm
11244 The Minkowski parameter to be used for calculating the Minkowski distance. Must
11245 be chosen in the range [0,20] and default value is 1. Set to 0 for getting
11246 max value instead of calculating Minkowski distance.
11247
11248 @item sigma
11249 The standard deviation of Gaussian blur to be applied on the scene. Must be
11250 chosen in the range [0,1024.0] and default value = 1. floor( @var{sigma} * break_off_sigma(3) )
11251 can't be equal to 0 if @var{difford} is greater than 0.
11252 @end table
11253
11254 @subsection Examples
11255 @itemize
11256
11257 @item
11258 Grey Edge:
11259 @example
11260 greyedge=difford=1:minknorm=5:sigma=2
11261 @end example
11262
11263 @item
11264 Max Edge:
11265 @example
11266 greyedge=difford=1:minknorm=0:sigma=2
11267 @end example
11268
11269 @end itemize
11270
11271 @anchor{haldclut}
11272 @section haldclut
11273
11274 Apply a Hald CLUT to a video stream.
11275
11276 First input is the video stream to process, and second one is the Hald CLUT.
11277 The Hald CLUT input can be a simple picture or a complete video stream.
11278
11279 The filter accepts the following options:
11280
11281 @table @option
11282 @item shortest
11283 Force termination when the shortest input terminates. Default is @code{0}.
11284 @item repeatlast
11285 Continue applying the last CLUT after the end of the stream. A value of
11286 @code{0} disable the filter after the last frame of the CLUT is reached.
11287 Default is @code{1}.
11288 @end table
11289
11290 @code{haldclut} also has the same interpolation options as @ref{lut3d} (both
11291 filters share the same internals).
11292
11293 This filter also supports the @ref{framesync} options.
11294
11295 More information about the Hald CLUT can be found on Eskil Steenberg's website
11296 (Hald CLUT author) at @url{http://www.quelsolaar.com/technology/clut.html}.
11297
11298 @subsection Workflow examples
11299
11300 @subsubsection Hald CLUT video stream
11301
11302 Generate an identity Hald CLUT stream altered with various effects:
11303 @example
11304 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
11305 @end example
11306
11307 Note: make sure you use a lossless codec.
11308
11309 Then use it with @code{haldclut} to apply it on some random stream:
11310 @example
11311 ffmpeg -f lavfi -i mandelbrot -i clut.nut -filter_complex '[0][1] haldclut' -t 20 mandelclut.mkv
11312 @end example
11313
11314 The Hald CLUT will be applied to the 10 first seconds (duration of
11315 @file{clut.nut}), then the latest picture of that CLUT stream will be applied
11316 to the remaining frames of the @code{mandelbrot} stream.
11317
11318 @subsubsection Hald CLUT with preview
11319
11320 A Hald CLUT is supposed to be a squared image of @code{Level*Level*Level} by
11321 @code{Level*Level*Level} pixels. For a given Hald CLUT, FFmpeg will select the
11322 biggest possible square starting at the top left of the picture. The remaining
11323 padding pixels (bottom or right) will be ignored. This area can be used to add
11324 a preview of the Hald CLUT.
11325
11326 Typically, the following generated Hald CLUT will be supported by the
11327 @code{haldclut} filter:
11328
11329 @example
11330 ffmpeg -f lavfi -i @ref{haldclutsrc}=8 -vf "
11331    pad=iw+320 [padded_clut];
11332    smptebars=s=320x256, split [a][b];
11333    [padded_clut][a] overlay=W-320:h, curves=color_negative [main];
11334    [main][b] overlay=W-320" -frames:v 1 clut.png
11335 @end example
11336
11337 It contains the original and a preview of the effect of the CLUT: SMPTE color
11338 bars are displayed on the right-top, and below the same color bars processed by
11339 the color changes.
11340
11341 Then, the effect of this Hald CLUT can be visualized with:
11342 @example
11343 ffplay input.mkv -vf "movie=clut.png, [in] haldclut"
11344 @end example
11345
11346 @section hflip
11347
11348 Flip the input video horizontally.
11349
11350 For example, to horizontally flip the input video with @command{ffmpeg}:
11351 @example
11352 ffmpeg -i in.avi -vf "hflip" out.avi
11353 @end example
11354
11355 @section histeq
11356 This filter applies a global color histogram equalization on a
11357 per-frame basis.
11358
11359 It can be used to correct video that has a compressed range of pixel
11360 intensities.  The filter redistributes the pixel intensities to
11361 equalize their distribution across the intensity range. It may be
11362 viewed as an "automatically adjusting contrast filter". This filter is
11363 useful only for correcting degraded or poorly captured source
11364 video.
11365
11366 The filter accepts the following options:
11367
11368 @table @option
11369 @item strength
11370 Determine the amount of equalization to be applied.  As the strength
11371 is reduced, the distribution of pixel intensities more-and-more
11372 approaches that of the input frame. The value must be a float number
11373 in the range [0,1] and defaults to 0.200.
11374
11375 @item intensity
11376 Set the maximum intensity that can generated and scale the output
11377 values appropriately.  The strength should be set as desired and then
11378 the intensity can be limited if needed to avoid washing-out. The value
11379 must be a float number in the range [0,1] and defaults to 0.210.
11380
11381 @item antibanding
11382 Set the antibanding level. If enabled the filter will randomly vary
11383 the luminance of output pixels by a small amount to avoid banding of
11384 the histogram. Possible values are @code{none}, @code{weak} or
11385 @code{strong}. It defaults to @code{none}.
11386 @end table
11387
11388 @section histogram
11389
11390 Compute and draw a color distribution histogram for the input video.
11391
11392 The computed histogram is a representation of the color component
11393 distribution in an image.
11394
11395 Standard histogram displays the color components distribution in an image.
11396 Displays color graph for each color component. Shows distribution of
11397 the Y, U, V, A or R, G, B components, depending on input format, in the
11398 current frame. Below each graph a color component scale meter is shown.
11399
11400 The filter accepts the following options:
11401
11402 @table @option
11403 @item level_height
11404 Set height of level. Default value is @code{200}.
11405 Allowed range is [50, 2048].
11406
11407 @item scale_height
11408 Set height of color scale. Default value is @code{12}.
11409 Allowed range is [0, 40].
11410
11411 @item display_mode
11412 Set display mode.
11413 It accepts the following values:
11414 @table @samp
11415 @item stack
11416 Per color component graphs are placed below each other.
11417
11418 @item parade
11419 Per color component graphs are placed side by side.
11420
11421 @item overlay
11422 Presents information identical to that in the @code{parade}, except
11423 that the graphs representing color components are superimposed directly
11424 over one another.
11425 @end table
11426 Default is @code{stack}.
11427
11428 @item levels_mode
11429 Set mode. Can be either @code{linear}, or @code{logarithmic}.
11430 Default is @code{linear}.
11431
11432 @item components
11433 Set what color components to display.
11434 Default is @code{7}.
11435
11436 @item fgopacity
11437 Set foreground opacity. Default is @code{0.7}.
11438
11439 @item bgopacity
11440 Set background opacity. Default is @code{0.5}.
11441 @end table
11442
11443 @subsection Examples
11444
11445 @itemize
11446
11447 @item
11448 Calculate and draw histogram:
11449 @example
11450 ffplay -i input -vf histogram
11451 @end example
11452
11453 @end itemize
11454
11455 @anchor{hqdn3d}
11456 @section hqdn3d
11457
11458 This is a high precision/quality 3d denoise filter. It aims to reduce
11459 image noise, producing smooth images and making still images really
11460 still. It should enhance compressibility.
11461
11462 It accepts the following optional parameters:
11463
11464 @table @option
11465 @item luma_spatial
11466 A non-negative floating point number which specifies spatial luma strength.
11467 It defaults to 4.0.
11468
11469 @item chroma_spatial
11470 A non-negative floating point number which specifies spatial chroma strength.
11471 It defaults to 3.0*@var{luma_spatial}/4.0.
11472
11473 @item luma_tmp
11474 A floating point number which specifies luma temporal strength. It defaults to
11475 6.0*@var{luma_spatial}/4.0.
11476
11477 @item chroma_tmp
11478 A floating point number which specifies chroma temporal strength. It defaults to
11479 @var{luma_tmp}*@var{chroma_spatial}/@var{luma_spatial}.
11480 @end table
11481
11482 @anchor{hwdownload}
11483 @section hwdownload
11484
11485 Download hardware frames to system memory.
11486
11487 The input must be in hardware frames, and the output a non-hardware format.
11488 Not all formats will be supported on the output - it may be necessary to insert
11489 an additional @option{format} filter immediately following in the graph to get
11490 the output in a supported format.
11491
11492 @section hwmap
11493
11494 Map hardware frames to system memory or to another device.
11495
11496 This filter has several different modes of operation; which one is used depends
11497 on the input and output formats:
11498 @itemize
11499 @item
11500 Hardware frame input, normal frame output
11501
11502 Map the input frames to system memory and pass them to the output.  If the
11503 original hardware frame is later required (for example, after overlaying
11504 something else on part of it), the @option{hwmap} filter can be used again
11505 in the next mode to retrieve it.
11506 @item
11507 Normal frame input, hardware frame output
11508
11509 If the input is actually a software-mapped hardware frame, then unmap it -
11510 that is, return the original hardware frame.
11511
11512 Otherwise, a device must be provided.  Create new hardware surfaces on that
11513 device for the output, then map them back to the software format at the input
11514 and give those frames to the preceding filter.  This will then act like the
11515 @option{hwupload} filter, but may be able to avoid an additional copy when
11516 the input is already in a compatible format.
11517 @item
11518 Hardware frame input and output
11519
11520 A device must be supplied for the output, either directly or with the
11521 @option{derive_device} option.  The input and output devices must be of
11522 different types and compatible - the exact meaning of this is
11523 system-dependent, but typically it means that they must refer to the same
11524 underlying hardware context (for example, refer to the same graphics card).
11525
11526 If the input frames were originally created on the output device, then unmap
11527 to retrieve the original frames.
11528
11529 Otherwise, map the frames to the output device - create new hardware frames
11530 on the output corresponding to the frames on the input.
11531 @end itemize
11532
11533 The following additional parameters are accepted:
11534
11535 @table @option
11536 @item mode
11537 Set the frame mapping mode.  Some combination of:
11538 @table @var
11539 @item read
11540 The mapped frame should be readable.
11541 @item write
11542 The mapped frame should be writeable.
11543 @item overwrite
11544 The mapping will always overwrite the entire frame.
11545
11546 This may improve performance in some cases, as the original contents of the
11547 frame need not be loaded.
11548 @item direct
11549 The mapping must not involve any copying.
11550
11551 Indirect mappings to copies of frames are created in some cases where either
11552 direct mapping is not possible or it would have unexpected properties.
11553 Setting this flag ensures that the mapping is direct and will fail if that is
11554 not possible.
11555 @end table
11556 Defaults to @var{read+write} if not specified.
11557
11558 @item derive_device @var{type}
11559 Rather than using the device supplied at initialisation, instead derive a new
11560 device of type @var{type} from the device the input frames exist on.
11561
11562 @item reverse
11563 In a hardware to hardware mapping, map in reverse - create frames in the sink
11564 and map them back to the source.  This may be necessary in some cases where
11565 a mapping in one direction is required but only the opposite direction is
11566 supported by the devices being used.
11567
11568 This option is dangerous - it may break the preceding filter in undefined
11569 ways if there are any additional constraints on that filter's output.
11570 Do not use it without fully understanding the implications of its use.
11571 @end table
11572
11573 @anchor{hwupload}
11574 @section hwupload
11575
11576 Upload system memory frames to hardware surfaces.
11577
11578 The device to upload to must be supplied when the filter is initialised.  If
11579 using ffmpeg, select the appropriate device with the @option{-filter_hw_device}
11580 option.
11581
11582 @anchor{hwupload_cuda}
11583 @section hwupload_cuda
11584
11585 Upload system memory frames to a CUDA device.
11586
11587 It accepts the following optional parameters:
11588
11589 @table @option
11590 @item device
11591 The number of the CUDA device to use
11592 @end table
11593
11594 @section hqx
11595
11596 Apply a high-quality magnification filter designed for pixel art. This filter
11597 was originally created by Maxim Stepin.
11598
11599 It accepts the following option:
11600
11601 @table @option
11602 @item n
11603 Set the scaling dimension: @code{2} for @code{hq2x}, @code{3} for
11604 @code{hq3x} and @code{4} for @code{hq4x}.
11605 Default is @code{3}.
11606 @end table
11607
11608 @section hstack
11609 Stack input videos horizontally.
11610
11611 All streams must be of same pixel format and of same height.
11612
11613 Note that this filter is faster than using @ref{overlay} and @ref{pad} filter
11614 to create same output.
11615
11616 The filter accepts the following option:
11617
11618 @table @option
11619 @item inputs
11620 Set number of input streams. Default is 2.
11621
11622 @item shortest
11623 If set to 1, force the output to terminate when the shortest input
11624 terminates. Default value is 0.
11625 @end table
11626
11627 @section hue
11628
11629 Modify the hue and/or the saturation of the input.
11630
11631 It accepts the following parameters:
11632
11633 @table @option
11634 @item h
11635 Specify the hue angle as a number of degrees. It accepts an expression,
11636 and defaults to "0".
11637
11638 @item s
11639 Specify the saturation in the [-10,10] range. It accepts an expression and
11640 defaults to "1".
11641
11642 @item H
11643 Specify the hue angle as a number of radians. It accepts an
11644 expression, and defaults to "0".
11645
11646 @item b
11647 Specify the brightness in the [-10,10] range. It accepts an expression and
11648 defaults to "0".
11649 @end table
11650
11651 @option{h} and @option{H} are mutually exclusive, and can't be
11652 specified at the same time.
11653
11654 The @option{b}, @option{h}, @option{H} and @option{s} option values are
11655 expressions containing the following constants:
11656
11657 @table @option
11658 @item n
11659 frame count of the input frame starting from 0
11660
11661 @item pts
11662 presentation timestamp of the input frame expressed in time base units
11663
11664 @item r
11665 frame rate of the input video, NAN if the input frame rate is unknown
11666
11667 @item t
11668 timestamp expressed in seconds, NAN if the input timestamp is unknown
11669
11670 @item tb
11671 time base of the input video
11672 @end table
11673
11674 @subsection Examples
11675
11676 @itemize
11677 @item
11678 Set the hue to 90 degrees and the saturation to 1.0:
11679 @example
11680 hue=h=90:s=1
11681 @end example
11682
11683 @item
11684 Same command but expressing the hue in radians:
11685 @example
11686 hue=H=PI/2:s=1
11687 @end example
11688
11689 @item
11690 Rotate hue and make the saturation swing between 0
11691 and 2 over a period of 1 second:
11692 @example
11693 hue="H=2*PI*t: s=sin(2*PI*t)+1"
11694 @end example
11695
11696 @item
11697 Apply a 3 seconds saturation fade-in effect starting at 0:
11698 @example
11699 hue="s=min(t/3\,1)"
11700 @end example
11701
11702 The general fade-in expression can be written as:
11703 @example
11704 hue="s=min(0\, max((t-START)/DURATION\, 1))"
11705 @end example
11706
11707 @item
11708 Apply a 3 seconds saturation fade-out effect starting at 5 seconds:
11709 @example
11710 hue="s=max(0\, min(1\, (8-t)/3))"
11711 @end example
11712
11713 The general fade-out expression can be written as:
11714 @example
11715 hue="s=max(0\, min(1\, (START+DURATION-t)/DURATION))"
11716 @end example
11717
11718 @end itemize
11719
11720 @subsection Commands
11721
11722 This filter supports the following commands:
11723 @table @option
11724 @item b
11725 @item s
11726 @item h
11727 @item H
11728 Modify the hue and/or the saturation and/or brightness of the input video.
11729 The command accepts the same syntax of the corresponding option.
11730
11731 If the specified expression is not valid, it is kept at its current
11732 value.
11733 @end table
11734
11735 @section hysteresis
11736
11737 Grow first stream into second stream by connecting components.
11738 This makes it possible to build more robust edge masks.
11739
11740 This filter accepts the following options:
11741
11742 @table @option
11743 @item planes
11744 Set which planes will be processed as bitmap, unprocessed planes will be
11745 copied from first stream.
11746 By default value 0xf, all planes will be processed.
11747
11748 @item threshold
11749 Set threshold which is used in filtering. If pixel component value is higher than
11750 this value filter algorithm for connecting components is activated.
11751 By default value is 0.
11752 @end table
11753
11754 @section idet
11755
11756 Detect video interlacing type.
11757
11758 This filter tries to detect if the input frames are interlaced, progressive,
11759 top or bottom field first. It will also try to detect fields that are
11760 repeated between adjacent frames (a sign of telecine).
11761
11762 Single frame detection considers only immediately adjacent frames when classifying each frame.
11763 Multiple frame detection incorporates the classification history of previous frames.
11764
11765 The filter will log these metadata values:
11766
11767 @table @option
11768 @item single.current_frame
11769 Detected type of current frame using single-frame detection. One of:
11770 ``tff'' (top field first), ``bff'' (bottom field first),
11771 ``progressive'', or ``undetermined''
11772
11773 @item single.tff
11774 Cumulative number of frames detected as top field first using single-frame detection.
11775
11776 @item multiple.tff
11777 Cumulative number of frames detected as top field first using multiple-frame detection.
11778
11779 @item single.bff
11780 Cumulative number of frames detected as bottom field first using single-frame detection.
11781
11782 @item multiple.current_frame
11783 Detected type of current frame using multiple-frame detection. One of:
11784 ``tff'' (top field first), ``bff'' (bottom field first),
11785 ``progressive'', or ``undetermined''
11786
11787 @item multiple.bff
11788 Cumulative number of frames detected as bottom field first using multiple-frame detection.
11789
11790 @item single.progressive
11791 Cumulative number of frames detected as progressive using single-frame detection.
11792
11793 @item multiple.progressive
11794 Cumulative number of frames detected as progressive using multiple-frame detection.
11795
11796 @item single.undetermined
11797 Cumulative number of frames that could not be classified using single-frame detection.
11798
11799 @item multiple.undetermined
11800 Cumulative number of frames that could not be classified using multiple-frame detection.
11801
11802 @item repeated.current_frame
11803 Which field in the current frame is repeated from the last. One of ``neither'', ``top'', or ``bottom''.
11804
11805 @item repeated.neither
11806 Cumulative number of frames with no repeated field.
11807
11808 @item repeated.top
11809 Cumulative number of frames with the top field repeated from the previous frame's top field.
11810
11811 @item repeated.bottom
11812 Cumulative number of frames with the bottom field repeated from the previous frame's bottom field.
11813 @end table
11814
11815 The filter accepts the following options:
11816
11817 @table @option
11818 @item intl_thres
11819 Set interlacing threshold.
11820 @item prog_thres
11821 Set progressive threshold.
11822 @item rep_thres
11823 Threshold for repeated field detection.
11824 @item half_life
11825 Number of frames after which a given frame's contribution to the
11826 statistics is halved (i.e., it contributes only 0.5 to its
11827 classification). The default of 0 means that all frames seen are given
11828 full weight of 1.0 forever.
11829 @item analyze_interlaced_flag
11830 When this is not 0 then idet will use the specified number of frames to determine
11831 if the interlaced flag is accurate, it will not count undetermined frames.
11832 If the flag is found to be accurate it will be used without any further
11833 computations, if it is found to be inaccurate it will be cleared without any
11834 further computations. This allows inserting the idet filter as a low computational
11835 method to clean up the interlaced flag
11836 @end table
11837
11838 @section il
11839
11840 Deinterleave or interleave fields.
11841
11842 This filter allows one to process interlaced images fields without
11843 deinterlacing them. Deinterleaving splits the input frame into 2
11844 fields (so called half pictures). Odd lines are moved to the top
11845 half of the output image, even lines to the bottom half.
11846 You can process (filter) them independently and then re-interleave them.
11847
11848 The filter accepts the following options:
11849
11850 @table @option
11851 @item luma_mode, l
11852 @item chroma_mode, c
11853 @item alpha_mode, a
11854 Available values for @var{luma_mode}, @var{chroma_mode} and
11855 @var{alpha_mode} are:
11856
11857 @table @samp
11858 @item none
11859 Do nothing.
11860
11861 @item deinterleave, d
11862 Deinterleave fields, placing one above the other.
11863
11864 @item interleave, i
11865 Interleave fields. Reverse the effect of deinterleaving.
11866 @end table
11867 Default value is @code{none}.
11868
11869 @item luma_swap, ls
11870 @item chroma_swap, cs
11871 @item alpha_swap, as
11872 Swap luma/chroma/alpha fields. Exchange even & odd lines. Default value is @code{0}.
11873 @end table
11874
11875 @section inflate
11876
11877 Apply inflate effect to the video.
11878
11879 This filter replaces the pixel by the local(3x3) average by taking into account
11880 only values higher than the pixel.
11881
11882 It accepts the following options:
11883
11884 @table @option
11885 @item threshold0
11886 @item threshold1
11887 @item threshold2
11888 @item threshold3
11889 Limit the maximum change for each plane, default is 65535.
11890 If 0, plane will remain unchanged.
11891 @end table
11892
11893 @section interlace
11894
11895 Simple interlacing filter from progressive contents. This interleaves upper (or
11896 lower) lines from odd frames with lower (or upper) lines from even frames,
11897 halving the frame rate and preserving image height.
11898
11899 @example
11900    Original        Original             New Frame
11901    Frame 'j'      Frame 'j+1'             (tff)
11902   ==========      ===========       ==================
11903     Line 0  -------------------->    Frame 'j' Line 0
11904     Line 1          Line 1  ---->   Frame 'j+1' Line 1
11905     Line 2 --------------------->    Frame 'j' Line 2
11906     Line 3          Line 3  ---->   Frame 'j+1' Line 3
11907      ...             ...                   ...
11908 New Frame + 1 will be generated by Frame 'j+2' and Frame 'j+3' and so on
11909 @end example
11910
11911 It accepts the following optional parameters:
11912
11913 @table @option
11914 @item scan
11915 This determines whether the interlaced frame is taken from the even
11916 (tff - default) or odd (bff) lines of the progressive frame.
11917
11918 @item lowpass
11919 Vertical lowpass filter to avoid twitter interlacing and
11920 reduce moire patterns.
11921
11922 @table @samp
11923 @item 0, off
11924 Disable vertical lowpass filter
11925
11926 @item 1, linear
11927 Enable linear filter (default)
11928
11929 @item 2, complex
11930 Enable complex filter. This will slightly less reduce twitter and moire
11931 but better retain detail and subjective sharpness impression.
11932
11933 @end table
11934 @end table
11935
11936 @section kerndeint
11937
11938 Deinterlace input video by applying Donald Graft's adaptive kernel
11939 deinterling. Work on interlaced parts of a video to produce
11940 progressive frames.
11941
11942 The description of the accepted parameters follows.
11943
11944 @table @option
11945 @item thresh
11946 Set the threshold which affects the filter's tolerance when
11947 determining if a pixel line must be processed. It must be an integer
11948 in the range [0,255] and defaults to 10. A value of 0 will result in
11949 applying the process on every pixels.
11950
11951 @item map
11952 Paint pixels exceeding the threshold value to white if set to 1.
11953 Default is 0.
11954
11955 @item order
11956 Set the fields order. Swap fields if set to 1, leave fields alone if
11957 0. Default is 0.
11958
11959 @item sharp
11960 Enable additional sharpening if set to 1. Default is 0.
11961
11962 @item twoway
11963 Enable twoway sharpening if set to 1. Default is 0.
11964 @end table
11965
11966 @subsection Examples
11967
11968 @itemize
11969 @item
11970 Apply default values:
11971 @example
11972 kerndeint=thresh=10:map=0:order=0:sharp=0:twoway=0
11973 @end example
11974
11975 @item
11976 Enable additional sharpening:
11977 @example
11978 kerndeint=sharp=1
11979 @end example
11980
11981 @item
11982 Paint processed pixels in white:
11983 @example
11984 kerndeint=map=1
11985 @end example
11986 @end itemize
11987
11988 @section lagfun
11989
11990 Slowly update darker pixels.
11991
11992 This filter makes short flashes of light appear longer.
11993 This filter accepts the following options:
11994
11995 @table @option
11996 @item decay
11997 Set factor for decaying. Default is .95. Allowed range is from 0 to 1.
11998
11999 @item planes
12000 Set which planes to filter. Default is all. Allowed range is from 0 to 15.
12001 @end table
12002
12003 @section lenscorrection
12004
12005 Correct radial lens distortion
12006
12007 This filter can be used to correct for radial distortion as can result from the use
12008 of wide angle lenses, and thereby re-rectify the image. To find the right parameters
12009 one can use tools available for example as part of opencv or simply trial-and-error.
12010 To use opencv use the calibration sample (under samples/cpp) from the opencv sources
12011 and extract the k1 and k2 coefficients from the resulting matrix.
12012
12013 Note that effectively the same filter is available in the open-source tools Krita and
12014 Digikam from the KDE project.
12015
12016 In contrast to the @ref{vignette} filter, which can also be used to compensate lens errors,
12017 this filter corrects the distortion of the image, whereas @ref{vignette} corrects the
12018 brightness distribution, so you may want to use both filters together in certain
12019 cases, though you will have to take care of ordering, i.e. whether vignetting should
12020 be applied before or after lens correction.
12021
12022 @subsection Options
12023
12024 The filter accepts the following options:
12025
12026 @table @option
12027 @item cx
12028 Relative x-coordinate of the focal point of the image, and thereby the center of the
12029 distortion. This value has a range [0,1] and is expressed as fractions of the image
12030 width. Default is 0.5.
12031 @item cy
12032 Relative y-coordinate of the focal point of the image, and thereby the center of the
12033 distortion. This value has a range [0,1] and is expressed as fractions of the image
12034 height. Default is 0.5.
12035 @item k1
12036 Coefficient of the quadratic correction term. This value has a range [-1,1]. 0 means
12037 no correction. Default is 0.
12038 @item k2
12039 Coefficient of the double quadratic correction term. This value has a range [-1,1].
12040 0 means no correction. Default is 0.
12041 @end table
12042
12043 The formula that generates the correction is:
12044
12045 @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)
12046
12047 where @var{r_0} is halve of the image diagonal and @var{r_src} and @var{r_tgt} are the
12048 distances from the focal point in the source and target images, respectively.
12049
12050 @section lensfun
12051
12052 Apply lens correction via the lensfun library (@url{http://lensfun.sourceforge.net/}).
12053
12054 The @code{lensfun} filter requires the camera make, camera model, and lens model
12055 to apply the lens correction. The filter will load the lensfun database and
12056 query it to find the corresponding camera and lens entries in the database. As
12057 long as these entries can be found with the given options, the filter can
12058 perform corrections on frames. Note that incomplete strings will result in the
12059 filter choosing the best match with the given options, and the filter will
12060 output the chosen camera and lens models (logged with level "info"). You must
12061 provide the make, camera model, and lens model as they are required.
12062
12063 The filter accepts the following options:
12064
12065 @table @option
12066 @item make
12067 The make of the camera (for example, "Canon"). This option is required.
12068
12069 @item model
12070 The model of the camera (for example, "Canon EOS 100D"). This option is
12071 required.
12072
12073 @item lens_model
12074 The model of the lens (for example, "Canon EF-S 18-55mm f/3.5-5.6 IS STM"). This
12075 option is required.
12076
12077 @item mode
12078 The type of correction to apply. The following values are valid options:
12079
12080 @table @samp
12081 @item vignetting
12082 Enables fixing lens vignetting.
12083
12084 @item geometry
12085 Enables fixing lens geometry. This is the default.
12086
12087 @item subpixel
12088 Enables fixing chromatic aberrations.
12089
12090 @item vig_geo
12091 Enables fixing lens vignetting and lens geometry.
12092
12093 @item vig_subpixel
12094 Enables fixing lens vignetting and chromatic aberrations.
12095
12096 @item distortion
12097 Enables fixing both lens geometry and chromatic aberrations.
12098
12099 @item all
12100 Enables all possible corrections.
12101
12102 @end table
12103 @item focal_length
12104 The focal length of the image/video (zoom; expected constant for video). For
12105 example, a 18--55mm lens has focal length range of [18--55], so a value in that
12106 range should be chosen when using that lens. Default 18.
12107
12108 @item aperture
12109 The aperture of the image/video (expected constant for video). Note that
12110 aperture is only used for vignetting correction. Default 3.5.
12111
12112 @item focus_distance
12113 The focus distance of the image/video (expected constant for video). Note that
12114 focus distance is only used for vignetting and only slightly affects the
12115 vignetting correction process. If unknown, leave it at the default value (which
12116 is 1000).
12117
12118 @item scale
12119 The scale factor which is applied after transformation. After correction the
12120 video is no longer necessarily rectangular. This parameter controls how much of
12121 the resulting image is visible. The value 0 means that a value will be chosen
12122 automatically such that there is little or no unmapped area in the output
12123 image. 1.0 means that no additional scaling is done. Lower values may result
12124 in more of the corrected image being visible, while higher values may avoid
12125 unmapped areas in the output.
12126
12127 @item target_geometry
12128 The target geometry of the output image/video. The following values are valid
12129 options:
12130
12131 @table @samp
12132 @item rectilinear (default)
12133 @item fisheye
12134 @item panoramic
12135 @item equirectangular
12136 @item fisheye_orthographic
12137 @item fisheye_stereographic
12138 @item fisheye_equisolid
12139 @item fisheye_thoby
12140 @end table
12141 @item reverse
12142 Apply the reverse of image correction (instead of correcting distortion, apply
12143 it).
12144
12145 @item interpolation
12146 The type of interpolation used when correcting distortion. The following values
12147 are valid options:
12148
12149 @table @samp
12150 @item nearest
12151 @item linear (default)
12152 @item lanczos
12153 @end table
12154 @end table
12155
12156 @subsection Examples
12157
12158 @itemize
12159 @item
12160 Apply lens correction with make "Canon", camera model "Canon EOS 100D", and lens
12161 model "Canon EF-S 18-55mm f/3.5-5.6 IS STM" with focal length of "18" and
12162 aperture of "8.0".
12163
12164 @example
12165 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
12166 @end example
12167
12168 @item
12169 Apply the same as before, but only for the first 5 seconds of video.
12170
12171 @example
12172 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
12173 @end example
12174
12175 @end itemize
12176
12177 @section libvmaf
12178
12179 Obtain the VMAF (Video Multi-Method Assessment Fusion)
12180 score between two input videos.
12181
12182 The obtained VMAF score is printed through the logging system.
12183
12184 It requires Netflix's vmaf library (libvmaf) as a pre-requisite.
12185 After installing the library it can be enabled using:
12186 @code{./configure --enable-libvmaf --enable-version3}.
12187 If no model path is specified it uses the default model: @code{vmaf_v0.6.1.pkl}.
12188
12189 The filter has following options:
12190
12191 @table @option
12192 @item model_path
12193 Set the model path which is to be used for SVM.
12194 Default value: @code{"vmaf_v0.6.1.pkl"}
12195
12196 @item log_path
12197 Set the file path to be used to store logs.
12198
12199 @item log_fmt
12200 Set the format of the log file (xml or json).
12201
12202 @item enable_transform
12203 This option can enable/disable the @code{score_transform} applied to the final predicted VMAF score,
12204 if you have specified score_transform option in the input parameter file passed to @code{run_vmaf_training.py}
12205 Default value: @code{false}
12206
12207 @item phone_model
12208 Invokes the phone model which will generate VMAF scores higher than in the
12209 regular model, which is more suitable for laptop, TV, etc. viewing conditions.
12210
12211 @item psnr
12212 Enables computing psnr along with vmaf.
12213
12214 @item ssim
12215 Enables computing ssim along with vmaf.
12216
12217 @item ms_ssim
12218 Enables computing ms_ssim along with vmaf.
12219
12220 @item pool
12221 Set the pool method (mean, min or harmonic mean) to be used for computing vmaf.
12222
12223 @item n_threads
12224 Set number of threads to be used when computing vmaf.
12225
12226 @item n_subsample
12227 Set interval for frame subsampling used when computing vmaf.
12228
12229 @item enable_conf_interval
12230 Enables confidence interval.
12231 @end table
12232
12233 This filter also supports the @ref{framesync} options.
12234
12235 On the below examples the input file @file{main.mpg} being processed is
12236 compared with the reference file @file{ref.mpg}.
12237
12238 @example
12239 ffmpeg -i main.mpg -i ref.mpg -lavfi libvmaf -f null -
12240 @end example
12241
12242 Example with options:
12243 @example
12244 ffmpeg -i main.mpg -i ref.mpg -lavfi libvmaf="psnr=1:log_fmt=json" -f null -
12245 @end example
12246
12247 @section limiter
12248
12249 Limits the pixel components values to the specified range [min, max].
12250
12251 The filter accepts the following options:
12252
12253 @table @option
12254 @item min
12255 Lower bound. Defaults to the lowest allowed value for the input.
12256
12257 @item max
12258 Upper bound. Defaults to the highest allowed value for the input.
12259
12260 @item planes
12261 Specify which planes will be processed. Defaults to all available.
12262 @end table
12263
12264 @section loop
12265
12266 Loop video frames.
12267
12268 The filter accepts the following options:
12269
12270 @table @option
12271 @item loop
12272 Set the number of loops. Setting this value to -1 will result in infinite loops.
12273 Default is 0.
12274
12275 @item size
12276 Set maximal size in number of frames. Default is 0.
12277
12278 @item start
12279 Set first frame of loop. Default is 0.
12280 @end table
12281
12282 @subsection Examples
12283
12284 @itemize
12285 @item
12286 Loop single first frame infinitely:
12287 @example
12288 loop=loop=-1:size=1:start=0
12289 @end example
12290
12291 @item
12292 Loop single first frame 10 times:
12293 @example
12294 loop=loop=10:size=1:start=0
12295 @end example
12296
12297 @item
12298 Loop 10 first frames 5 times:
12299 @example
12300 loop=loop=5:size=10:start=0
12301 @end example
12302 @end itemize
12303
12304 @section lut1d
12305
12306 Apply a 1D LUT to an input video.
12307
12308 The filter accepts the following options:
12309
12310 @table @option
12311 @item file
12312 Set the 1D LUT file name.
12313
12314 Currently supported formats:
12315 @table @samp
12316 @item cube
12317 Iridas
12318 @item csp
12319 cineSpace
12320 @end table
12321
12322 @item interp
12323 Select interpolation mode.
12324
12325 Available values are:
12326
12327 @table @samp
12328 @item nearest
12329 Use values from the nearest defined point.
12330 @item linear
12331 Interpolate values using the linear interpolation.
12332 @item cosine
12333 Interpolate values using the cosine interpolation.
12334 @item cubic
12335 Interpolate values using the cubic interpolation.
12336 @item spline
12337 Interpolate values using the spline interpolation.
12338 @end table
12339 @end table
12340
12341 @anchor{lut3d}
12342 @section lut3d
12343
12344 Apply a 3D LUT to an input video.
12345
12346 The filter accepts the following options:
12347
12348 @table @option
12349 @item file
12350 Set the 3D LUT file name.
12351
12352 Currently supported formats:
12353 @table @samp
12354 @item 3dl
12355 AfterEffects
12356 @item cube
12357 Iridas
12358 @item dat
12359 DaVinci
12360 @item m3d
12361 Pandora
12362 @item csp
12363 cineSpace
12364 @end table
12365 @item interp
12366 Select interpolation mode.
12367
12368 Available values are:
12369
12370 @table @samp
12371 @item nearest
12372 Use values from the nearest defined point.
12373 @item trilinear
12374 Interpolate values using the 8 points defining a cube.
12375 @item tetrahedral
12376 Interpolate values using a tetrahedron.
12377 @end table
12378 @end table
12379
12380 @section lumakey
12381
12382 Turn certain luma values into transparency.
12383
12384 The filter accepts the following options:
12385
12386 @table @option
12387 @item threshold
12388 Set the luma which will be used as base for transparency.
12389 Default value is @code{0}.
12390
12391 @item tolerance
12392 Set the range of luma values to be keyed out.
12393 Default value is @code{0}.
12394
12395 @item softness
12396 Set the range of softness. Default value is @code{0}.
12397 Use this to control gradual transition from zero to full transparency.
12398 @end table
12399
12400 @section lut, lutrgb, lutyuv
12401
12402 Compute a look-up table for binding each pixel component input value
12403 to an output value, and apply it to the input video.
12404
12405 @var{lutyuv} applies a lookup table to a YUV input video, @var{lutrgb}
12406 to an RGB input video.
12407
12408 These filters accept the following parameters:
12409 @table @option
12410 @item c0
12411 set first pixel component expression
12412 @item c1
12413 set second pixel component expression
12414 @item c2
12415 set third pixel component expression
12416 @item c3
12417 set fourth pixel component expression, corresponds to the alpha component
12418
12419 @item r
12420 set red component expression
12421 @item g
12422 set green component expression
12423 @item b
12424 set blue component expression
12425 @item a
12426 alpha component expression
12427
12428 @item y
12429 set Y/luminance component expression
12430 @item u
12431 set U/Cb component expression
12432 @item v
12433 set V/Cr component expression
12434 @end table
12435
12436 Each of them specifies the expression to use for computing the lookup table for
12437 the corresponding pixel component values.
12438
12439 The exact component associated to each of the @var{c*} options depends on the
12440 format in input.
12441
12442 The @var{lut} filter requires either YUV or RGB pixel formats in input,
12443 @var{lutrgb} requires RGB pixel formats in input, and @var{lutyuv} requires YUV.
12444
12445 The expressions can contain the following constants and functions:
12446
12447 @table @option
12448 @item w
12449 @item h
12450 The input width and height.
12451
12452 @item val
12453 The input value for the pixel component.
12454
12455 @item clipval
12456 The input value, clipped to the @var{minval}-@var{maxval} range.
12457
12458 @item maxval
12459 The maximum value for the pixel component.
12460
12461 @item minval
12462 The minimum value for the pixel component.
12463
12464 @item negval
12465 The negated value for the pixel component value, clipped to the
12466 @var{minval}-@var{maxval} range; it corresponds to the expression
12467 "maxval-clipval+minval".
12468
12469 @item clip(val)
12470 The computed value in @var{val}, clipped to the
12471 @var{minval}-@var{maxval} range.
12472
12473 @item gammaval(gamma)
12474 The computed gamma correction value of the pixel component value,
12475 clipped to the @var{minval}-@var{maxval} range. It corresponds to the
12476 expression
12477 "pow((clipval-minval)/(maxval-minval)\,@var{gamma})*(maxval-minval)+minval"
12478
12479 @end table
12480
12481 All expressions default to "val".
12482
12483 @subsection Examples
12484
12485 @itemize
12486 @item
12487 Negate input video:
12488 @example
12489 lutrgb="r=maxval+minval-val:g=maxval+minval-val:b=maxval+minval-val"
12490 lutyuv="y=maxval+minval-val:u=maxval+minval-val:v=maxval+minval-val"
12491 @end example
12492
12493 The above is the same as:
12494 @example
12495 lutrgb="r=negval:g=negval:b=negval"
12496 lutyuv="y=negval:u=negval:v=negval"
12497 @end example
12498
12499 @item
12500 Negate luminance:
12501 @example
12502 lutyuv=y=negval
12503 @end example
12504
12505 @item
12506 Remove chroma components, turning the video into a graytone image:
12507 @example
12508 lutyuv="u=128:v=128"
12509 @end example
12510
12511 @item
12512 Apply a luma burning effect:
12513 @example
12514 lutyuv="y=2*val"
12515 @end example
12516
12517 @item
12518 Remove green and blue components:
12519 @example
12520 lutrgb="g=0:b=0"
12521 @end example
12522
12523 @item
12524 Set a constant alpha channel value on input:
12525 @example
12526 format=rgba,lutrgb=a="maxval-minval/2"
12527 @end example
12528
12529 @item
12530 Correct luminance gamma by a factor of 0.5:
12531 @example
12532 lutyuv=y=gammaval(0.5)
12533 @end example
12534
12535 @item
12536 Discard least significant bits of luma:
12537 @example
12538 lutyuv=y='bitand(val, 128+64+32)'
12539 @end example
12540
12541 @item
12542 Technicolor like effect:
12543 @example
12544 lutyuv=u='(val-maxval/2)*2+maxval/2':v='(val-maxval/2)*2+maxval/2'
12545 @end example
12546 @end itemize
12547
12548 @section lut2, tlut2
12549
12550 The @code{lut2} filter takes two input streams and outputs one
12551 stream.
12552
12553 The @code{tlut2} (time lut2) filter takes two consecutive frames
12554 from one single stream.
12555
12556 This filter accepts the following parameters:
12557 @table @option
12558 @item c0
12559 set first pixel component expression
12560 @item c1
12561 set second pixel component expression
12562 @item c2
12563 set third pixel component expression
12564 @item c3
12565 set fourth pixel component expression, corresponds to the alpha component
12566
12567 @item d
12568 set output bit depth, only available for @code{lut2} filter. By default is 0,
12569 which means bit depth is automatically picked from first input format.
12570 @end table
12571
12572 Each of them specifies the expression to use for computing the lookup table for
12573 the corresponding pixel component values.
12574
12575 The exact component associated to each of the @var{c*} options depends on the
12576 format in inputs.
12577
12578 The expressions can contain the following constants:
12579
12580 @table @option
12581 @item w
12582 @item h
12583 The input width and height.
12584
12585 @item x
12586 The first input value for the pixel component.
12587
12588 @item y
12589 The second input value for the pixel component.
12590
12591 @item bdx
12592 The first input video bit depth.
12593
12594 @item bdy
12595 The second input video bit depth.
12596 @end table
12597
12598 All expressions default to "x".
12599
12600 @subsection Examples
12601
12602 @itemize
12603 @item
12604 Highlight differences between two RGB video streams:
12605 @example
12606 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)'
12607 @end example
12608
12609 @item
12610 Highlight differences between two YUV video streams:
12611 @example
12612 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)'
12613 @end example
12614
12615 @item
12616 Show max difference between two video streams:
12617 @example
12618 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)))'
12619 @end example
12620 @end itemize
12621
12622 @section maskedclamp
12623
12624 Clamp the first input stream with the second input and third input stream.
12625
12626 Returns the value of first stream to be between second input
12627 stream - @code{undershoot} and third input stream + @code{overshoot}.
12628
12629 This filter accepts the following options:
12630 @table @option
12631 @item undershoot
12632 Default value is @code{0}.
12633
12634 @item overshoot
12635 Default value is @code{0}.
12636
12637 @item planes
12638 Set which planes will be processed as bitmap, unprocessed planes will be
12639 copied from first stream.
12640 By default value 0xf, all planes will be processed.
12641 @end table
12642
12643 @section maskedmerge
12644
12645 Merge the first input stream with the second input stream using per pixel
12646 weights in the third input stream.
12647
12648 A value of 0 in the third stream pixel component means that pixel component
12649 from first stream is returned unchanged, while maximum value (eg. 255 for
12650 8-bit videos) means that pixel component from second stream is returned
12651 unchanged. Intermediate values define the amount of merging between both
12652 input stream's pixel components.
12653
12654 This filter accepts the following options:
12655 @table @option
12656 @item planes
12657 Set which planes will be processed as bitmap, unprocessed planes will be
12658 copied from first stream.
12659 By default value 0xf, all planes will be processed.
12660 @end table
12661
12662 @section maskfun
12663 Create mask from input video.
12664
12665 For example it is useful to create motion masks after @code{tblend} filter.
12666
12667 This filter accepts the following options:
12668
12669 @table @option
12670 @item low
12671 Set low threshold. Any pixel component lower or exact than this value will be set to 0.
12672
12673 @item high
12674 Set high threshold. Any pixel component higher than this value will be set to max value
12675 allowed for current pixel format.
12676
12677 @item planes
12678 Set planes to filter, by default all available planes are filtered.
12679
12680 @item fill
12681 Fill all frame pixels with this value.
12682
12683 @item sum
12684 Set max average pixel value for frame. If sum of all pixel components is higher that this
12685 average, output frame will be completely filled with value set by @var{fill} option.
12686 Typically useful for scene changes when used in combination with @code{tblend} filter.
12687 @end table
12688
12689 @section mcdeint
12690
12691 Apply motion-compensation deinterlacing.
12692
12693 It needs one field per frame as input and must thus be used together
12694 with yadif=1/3 or equivalent.
12695
12696 This filter accepts the following options:
12697 @table @option
12698 @item mode
12699 Set the deinterlacing mode.
12700
12701 It accepts one of the following values:
12702 @table @samp
12703 @item fast
12704 @item medium
12705 @item slow
12706 use iterative motion estimation
12707 @item extra_slow
12708 like @samp{slow}, but use multiple reference frames.
12709 @end table
12710 Default value is @samp{fast}.
12711
12712 @item parity
12713 Set the picture field parity assumed for the input video. It must be
12714 one of the following values:
12715
12716 @table @samp
12717 @item 0, tff
12718 assume top field first
12719 @item 1, bff
12720 assume bottom field first
12721 @end table
12722
12723 Default value is @samp{bff}.
12724
12725 @item qp
12726 Set per-block quantization parameter (QP) used by the internal
12727 encoder.
12728
12729 Higher values should result in a smoother motion vector field but less
12730 optimal individual vectors. Default value is 1.
12731 @end table
12732
12733 @section mergeplanes
12734
12735 Merge color channel components from several video streams.
12736
12737 The filter accepts up to 4 input streams, and merge selected input
12738 planes to the output video.
12739
12740 This filter accepts the following options:
12741 @table @option
12742 @item mapping
12743 Set input to output plane mapping. Default is @code{0}.
12744
12745 The mappings is specified as a bitmap. It should be specified as a
12746 hexadecimal number in the form 0xAa[Bb[Cc[Dd]]]. 'Aa' describes the
12747 mapping for the first plane of the output stream. 'A' sets the number of
12748 the input stream to use (from 0 to 3), and 'a' the plane number of the
12749 corresponding input to use (from 0 to 3). The rest of the mappings is
12750 similar, 'Bb' describes the mapping for the output stream second
12751 plane, 'Cc' describes the mapping for the output stream third plane and
12752 'Dd' describes the mapping for the output stream fourth plane.
12753
12754 @item format
12755 Set output pixel format. Default is @code{yuva444p}.
12756 @end table
12757
12758 @subsection Examples
12759
12760 @itemize
12761 @item
12762 Merge three gray video streams of same width and height into single video stream:
12763 @example
12764 [a0][a1][a2]mergeplanes=0x001020:yuv444p
12765 @end example
12766
12767 @item
12768 Merge 1st yuv444p stream and 2nd gray video stream into yuva444p video stream:
12769 @example
12770 [a0][a1]mergeplanes=0x00010210:yuva444p
12771 @end example
12772
12773 @item
12774 Swap Y and A plane in yuva444p stream:
12775 @example
12776 format=yuva444p,mergeplanes=0x03010200:yuva444p
12777 @end example
12778
12779 @item
12780 Swap U and V plane in yuv420p stream:
12781 @example
12782 format=yuv420p,mergeplanes=0x000201:yuv420p
12783 @end example
12784
12785 @item
12786 Cast a rgb24 clip to yuv444p:
12787 @example
12788 format=rgb24,mergeplanes=0x000102:yuv444p
12789 @end example
12790 @end itemize
12791
12792 @section mestimate
12793
12794 Estimate and export motion vectors using block matching algorithms.
12795 Motion vectors are stored in frame side data to be used by other filters.
12796
12797 This filter accepts the following options:
12798 @table @option
12799 @item method
12800 Specify the motion estimation method. Accepts one of the following values:
12801
12802 @table @samp
12803 @item esa
12804 Exhaustive search algorithm.
12805 @item tss
12806 Three step search algorithm.
12807 @item tdls
12808 Two dimensional logarithmic search algorithm.
12809 @item ntss
12810 New three step search algorithm.
12811 @item fss
12812 Four step search algorithm.
12813 @item ds
12814 Diamond search algorithm.
12815 @item hexbs
12816 Hexagon-based search algorithm.
12817 @item epzs
12818 Enhanced predictive zonal search algorithm.
12819 @item umh
12820 Uneven multi-hexagon search algorithm.
12821 @end table
12822 Default value is @samp{esa}.
12823
12824 @item mb_size
12825 Macroblock size. Default @code{16}.
12826
12827 @item search_param
12828 Search parameter. Default @code{7}.
12829 @end table
12830
12831 @section midequalizer
12832
12833 Apply Midway Image Equalization effect using two video streams.
12834
12835 Midway Image Equalization adjusts a pair of images to have the same
12836 histogram, while maintaining their dynamics as much as possible. It's
12837 useful for e.g. matching exposures from a pair of stereo cameras.
12838
12839 This filter has two inputs and one output, which must be of same pixel format, but
12840 may be of different sizes. The output of filter is first input adjusted with
12841 midway histogram of both inputs.
12842
12843 This filter accepts the following option:
12844
12845 @table @option
12846 @item planes
12847 Set which planes to process. Default is @code{15}, which is all available planes.
12848 @end table
12849
12850 @section minterpolate
12851
12852 Convert the video to specified frame rate using motion interpolation.
12853
12854 This filter accepts the following options:
12855 @table @option
12856 @item fps
12857 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}.
12858
12859 @item mi_mode
12860 Motion interpolation mode. Following values are accepted:
12861 @table @samp
12862 @item dup
12863 Duplicate previous or next frame for interpolating new ones.
12864 @item blend
12865 Blend source frames. Interpolated frame is mean of previous and next frames.
12866 @item mci
12867 Motion compensated interpolation. Following options are effective when this mode is selected:
12868
12869 @table @samp
12870 @item mc_mode
12871 Motion compensation mode. Following values are accepted:
12872 @table @samp
12873 @item obmc
12874 Overlapped block motion compensation.
12875 @item aobmc
12876 Adaptive overlapped block motion compensation. Window weighting coefficients are controlled adaptively according to the reliabilities of the neighboring motion vectors to reduce oversmoothing.
12877 @end table
12878 Default mode is @samp{obmc}.
12879
12880 @item me_mode
12881 Motion estimation mode. Following values are accepted:
12882 @table @samp
12883 @item bidir
12884 Bidirectional motion estimation. Motion vectors are estimated for each source frame in both forward and backward directions.
12885 @item bilat
12886 Bilateral motion estimation. Motion vectors are estimated directly for interpolated frame.
12887 @end table
12888 Default mode is @samp{bilat}.
12889
12890 @item me
12891 The algorithm to be used for motion estimation. Following values are accepted:
12892 @table @samp
12893 @item esa
12894 Exhaustive search algorithm.
12895 @item tss
12896 Three step search algorithm.
12897 @item tdls
12898 Two dimensional logarithmic search algorithm.
12899 @item ntss
12900 New three step search algorithm.
12901 @item fss
12902 Four step search algorithm.
12903 @item ds
12904 Diamond search algorithm.
12905 @item hexbs
12906 Hexagon-based search algorithm.
12907 @item epzs
12908 Enhanced predictive zonal search algorithm.
12909 @item umh
12910 Uneven multi-hexagon search algorithm.
12911 @end table
12912 Default algorithm is @samp{epzs}.
12913
12914 @item mb_size
12915 Macroblock size. Default @code{16}.
12916
12917 @item search_param
12918 Motion estimation search parameter. Default @code{32}.
12919
12920 @item vsbmc
12921 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).
12922 @end table
12923 @end table
12924
12925 @item scd
12926 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:
12927 @table @samp
12928 @item none
12929 Disable scene change detection.
12930 @item fdiff
12931 Frame difference. Corresponding pixel values are compared and if it satisfies @var{scd_threshold} scene change is detected.
12932 @end table
12933 Default method is @samp{fdiff}.
12934
12935 @item scd_threshold
12936 Scene change detection threshold. Default is @code{5.0}.
12937 @end table
12938
12939 @section mix
12940
12941 Mix several video input streams into one video stream.
12942
12943 A description of the accepted options follows.
12944
12945 @table @option
12946 @item nb_inputs
12947 The number of inputs. If unspecified, it defaults to 2.
12948
12949 @item weights
12950 Specify weight of each input video stream as sequence.
12951 Each weight is separated by space. If number of weights
12952 is smaller than number of @var{frames} last specified
12953 weight will be used for all remaining unset weights.
12954
12955 @item scale
12956 Specify scale, if it is set it will be multiplied with sum
12957 of each weight multiplied with pixel values to give final destination
12958 pixel value. By default @var{scale} is auto scaled to sum of weights.
12959
12960 @item duration
12961 Specify how end of stream is determined.
12962 @table @samp
12963 @item longest
12964 The duration of the longest input. (default)
12965
12966 @item shortest
12967 The duration of the shortest input.
12968
12969 @item first
12970 The duration of the first input.
12971 @end table
12972 @end table
12973
12974 @section mpdecimate
12975
12976 Drop frames that do not differ greatly from the previous frame in
12977 order to reduce frame rate.
12978
12979 The main use of this filter is for very-low-bitrate encoding
12980 (e.g. streaming over dialup modem), but it could in theory be used for
12981 fixing movies that were inverse-telecined incorrectly.
12982
12983 A description of the accepted options follows.
12984
12985 @table @option
12986 @item max
12987 Set the maximum number of consecutive frames which can be dropped (if
12988 positive), or the minimum interval between dropped frames (if
12989 negative). If the value is 0, the frame is dropped disregarding the
12990 number of previous sequentially dropped frames.
12991
12992 Default value is 0.
12993
12994 @item hi
12995 @item lo
12996 @item frac
12997 Set the dropping threshold values.
12998
12999 Values for @option{hi} and @option{lo} are for 8x8 pixel blocks and
13000 represent actual pixel value differences, so a threshold of 64
13001 corresponds to 1 unit of difference for each pixel, or the same spread
13002 out differently over the block.
13003
13004 A frame is a candidate for dropping if no 8x8 blocks differ by more
13005 than a threshold of @option{hi}, and if no more than @option{frac} blocks (1
13006 meaning the whole image) differ by more than a threshold of @option{lo}.
13007
13008 Default value for @option{hi} is 64*12, default value for @option{lo} is
13009 64*5, and default value for @option{frac} is 0.33.
13010 @end table
13011
13012
13013 @section negate
13014
13015 Negate (invert) the input video.
13016
13017 It accepts the following option:
13018
13019 @table @option
13020
13021 @item negate_alpha
13022 With value 1, it negates the alpha component, if present. Default value is 0.
13023 @end table
13024
13025 @anchor{nlmeans}
13026 @section nlmeans
13027
13028 Denoise frames using Non-Local Means algorithm.
13029
13030 Each pixel is adjusted by looking for other pixels with similar contexts. This
13031 context similarity is defined by comparing their surrounding patches of size
13032 @option{p}x@option{p}. Patches are searched in an area of @option{r}x@option{r}
13033 around the pixel.
13034
13035 Note that the research area defines centers for patches, which means some
13036 patches will be made of pixels outside that research area.
13037
13038 The filter accepts the following options.
13039
13040 @table @option
13041 @item s
13042 Set denoising strength. Default is 1.0. Must be in range [1.0, 30.0].
13043
13044 @item p
13045 Set patch size. Default is 7. Must be odd number in range [0, 99].
13046
13047 @item pc
13048 Same as @option{p} but for chroma planes.
13049
13050 The default value is @var{0} and means automatic.
13051
13052 @item r
13053 Set research size. Default is 15. Must be odd number in range [0, 99].
13054
13055 @item rc
13056 Same as @option{r} but for chroma planes.
13057
13058 The default value is @var{0} and means automatic.
13059 @end table
13060
13061 @section nnedi
13062
13063 Deinterlace video using neural network edge directed interpolation.
13064
13065 This filter accepts the following options:
13066
13067 @table @option
13068 @item weights
13069 Mandatory option, without binary file filter can not work.
13070 Currently file can be found here:
13071 https://github.com/dubhater/vapoursynth-nnedi3/blob/master/src/nnedi3_weights.bin
13072
13073 @item deint
13074 Set which frames to deinterlace, by default it is @code{all}.
13075 Can be @code{all} or @code{interlaced}.
13076
13077 @item field
13078 Set mode of operation.
13079
13080 Can be one of the following:
13081
13082 @table @samp
13083 @item af
13084 Use frame flags, both fields.
13085 @item a
13086 Use frame flags, single field.
13087 @item t
13088 Use top field only.
13089 @item b
13090 Use bottom field only.
13091 @item tf
13092 Use both fields, top first.
13093 @item bf
13094 Use both fields, bottom first.
13095 @end table
13096
13097 @item planes
13098 Set which planes to process, by default filter process all frames.
13099
13100 @item nsize
13101 Set size of local neighborhood around each pixel, used by the predictor neural
13102 network.
13103
13104 Can be one of the following:
13105
13106 @table @samp
13107 @item s8x6
13108 @item s16x6
13109 @item s32x6
13110 @item s48x6
13111 @item s8x4
13112 @item s16x4
13113 @item s32x4
13114 @end table
13115
13116 @item nns
13117 Set the number of neurons in predictor neural network.
13118 Can be one of the following:
13119
13120 @table @samp
13121 @item n16
13122 @item n32
13123 @item n64
13124 @item n128
13125 @item n256
13126 @end table
13127
13128 @item qual
13129 Controls the number of different neural network predictions that are blended
13130 together to compute the final output value. Can be @code{fast}, default or
13131 @code{slow}.
13132
13133 @item etype
13134 Set which set of weights to use in the predictor.
13135 Can be one of the following:
13136
13137 @table @samp
13138 @item a
13139 weights trained to minimize absolute error
13140 @item s
13141 weights trained to minimize squared error
13142 @end table
13143
13144 @item pscrn
13145 Controls whether or not the prescreener neural network is used to decide
13146 which pixels should be processed by the predictor neural network and which
13147 can be handled by simple cubic interpolation.
13148 The prescreener is trained to know whether cubic interpolation will be
13149 sufficient for a pixel or whether it should be predicted by the predictor nn.
13150 The computational complexity of the prescreener nn is much less than that of
13151 the predictor nn. Since most pixels can be handled by cubic interpolation,
13152 using the prescreener generally results in much faster processing.
13153 The prescreener is pretty accurate, so the difference between using it and not
13154 using it is almost always unnoticeable.
13155
13156 Can be one of the following:
13157
13158 @table @samp
13159 @item none
13160 @item original
13161 @item new
13162 @end table
13163
13164 Default is @code{new}.
13165
13166 @item fapprox
13167 Set various debugging flags.
13168 @end table
13169
13170 @section noformat
13171
13172 Force libavfilter not to use any of the specified pixel formats for the
13173 input to the next filter.
13174
13175 It accepts the following parameters:
13176 @table @option
13177
13178 @item pix_fmts
13179 A '|'-separated list of pixel format names, such as
13180 pix_fmts=yuv420p|monow|rgb24".
13181
13182 @end table
13183
13184 @subsection Examples
13185
13186 @itemize
13187 @item
13188 Force libavfilter to use a format different from @var{yuv420p} for the
13189 input to the vflip filter:
13190 @example
13191 noformat=pix_fmts=yuv420p,vflip
13192 @end example
13193
13194 @item
13195 Convert the input video to any of the formats not contained in the list:
13196 @example
13197 noformat=yuv420p|yuv444p|yuv410p
13198 @end example
13199 @end itemize
13200
13201 @section noise
13202
13203 Add noise on video input frame.
13204
13205 The filter accepts the following options:
13206
13207 @table @option
13208 @item all_seed
13209 @item c0_seed
13210 @item c1_seed
13211 @item c2_seed
13212 @item c3_seed
13213 Set noise seed for specific pixel component or all pixel components in case
13214 of @var{all_seed}. Default value is @code{123457}.
13215
13216 @item all_strength, alls
13217 @item c0_strength, c0s
13218 @item c1_strength, c1s
13219 @item c2_strength, c2s
13220 @item c3_strength, c3s
13221 Set noise strength for specific pixel component or all pixel components in case
13222 @var{all_strength}. Default value is @code{0}. Allowed range is [0, 100].
13223
13224 @item all_flags, allf
13225 @item c0_flags, c0f
13226 @item c1_flags, c1f
13227 @item c2_flags, c2f
13228 @item c3_flags, c3f
13229 Set pixel component flags or set flags for all components if @var{all_flags}.
13230 Available values for component flags are:
13231 @table @samp
13232 @item a
13233 averaged temporal noise (smoother)
13234 @item p
13235 mix random noise with a (semi)regular pattern
13236 @item t
13237 temporal noise (noise pattern changes between frames)
13238 @item u
13239 uniform noise (gaussian otherwise)
13240 @end table
13241 @end table
13242
13243 @subsection Examples
13244
13245 Add temporal and uniform noise to input video:
13246 @example
13247 noise=alls=20:allf=t+u
13248 @end example
13249
13250 @section normalize
13251
13252 Normalize RGB video (aka histogram stretching, contrast stretching).
13253 See: https://en.wikipedia.org/wiki/Normalization_(image_processing)
13254
13255 For each channel of each frame, the filter computes the input range and maps
13256 it linearly to the user-specified output range. The output range defaults
13257 to the full dynamic range from pure black to pure white.
13258
13259 Temporal smoothing can be used on the input range to reduce flickering (rapid
13260 changes in brightness) caused when small dark or bright objects enter or leave
13261 the scene. This is similar to the auto-exposure (automatic gain control) on a
13262 video camera, and, like a video camera, it may cause a period of over- or
13263 under-exposure of the video.
13264
13265 The R,G,B channels can be normalized independently, which may cause some
13266 color shifting, or linked together as a single channel, which prevents
13267 color shifting. Linked normalization preserves hue. Independent normalization
13268 does not, so it can be used to remove some color casts. Independent and linked
13269 normalization can be combined in any ratio.
13270
13271 The normalize filter accepts the following options:
13272
13273 @table @option
13274 @item blackpt
13275 @item whitept
13276 Colors which define the output range. The minimum input value is mapped to
13277 the @var{blackpt}. The maximum input value is mapped to the @var{whitept}.
13278 The defaults are black and white respectively. Specifying white for
13279 @var{blackpt} and black for @var{whitept} will give color-inverted,
13280 normalized video. Shades of grey can be used to reduce the dynamic range
13281 (contrast). Specifying saturated colors here can create some interesting
13282 effects.
13283
13284 @item smoothing
13285 The number of previous frames to use for temporal smoothing. The input range
13286 of each channel is smoothed using a rolling average over the current frame
13287 and the @var{smoothing} previous frames. The default is 0 (no temporal
13288 smoothing).
13289
13290 @item independence
13291 Controls the ratio of independent (color shifting) channel normalization to
13292 linked (color preserving) normalization. 0.0 is fully linked, 1.0 is fully
13293 independent. Defaults to 1.0 (fully independent).
13294
13295 @item strength
13296 Overall strength of the filter. 1.0 is full strength. 0.0 is a rather
13297 expensive no-op. Defaults to 1.0 (full strength).
13298
13299 @end table
13300
13301 @subsection Examples
13302
13303 Stretch video contrast to use the full dynamic range, with no temporal
13304 smoothing; may flicker depending on the source content:
13305 @example
13306 normalize=blackpt=black:whitept=white:smoothing=0
13307 @end example
13308
13309 As above, but with 50 frames of temporal smoothing; flicker should be
13310 reduced, depending on the source content:
13311 @example
13312 normalize=blackpt=black:whitept=white:smoothing=50
13313 @end example
13314
13315 As above, but with hue-preserving linked channel normalization:
13316 @example
13317 normalize=blackpt=black:whitept=white:smoothing=50:independence=0
13318 @end example
13319
13320 As above, but with half strength:
13321 @example
13322 normalize=blackpt=black:whitept=white:smoothing=50:independence=0:strength=0.5
13323 @end example
13324
13325 Map the darkest input color to red, the brightest input color to cyan:
13326 @example
13327 normalize=blackpt=red:whitept=cyan
13328 @end example
13329
13330 @section null
13331
13332 Pass the video source unchanged to the output.
13333
13334 @section ocr
13335 Optical Character Recognition
13336
13337 This filter uses Tesseract for optical character recognition. To enable
13338 compilation of this filter, you need to configure FFmpeg with
13339 @code{--enable-libtesseract}.
13340
13341 It accepts the following options:
13342
13343 @table @option
13344 @item datapath
13345 Set datapath to tesseract data. Default is to use whatever was
13346 set at installation.
13347
13348 @item language
13349 Set language, default is "eng".
13350
13351 @item whitelist
13352 Set character whitelist.
13353
13354 @item blacklist
13355 Set character blacklist.
13356 @end table
13357
13358 The filter exports recognized text as the frame metadata @code{lavfi.ocr.text}.
13359 The filter exports confidence of recognized words as the frame metadata @code{lavfi.ocr.confidence}.
13360
13361 @section ocv
13362
13363 Apply a video transform using libopencv.
13364
13365 To enable this filter, install the libopencv library and headers and
13366 configure FFmpeg with @code{--enable-libopencv}.
13367
13368 It accepts the following parameters:
13369
13370 @table @option
13371
13372 @item filter_name
13373 The name of the libopencv filter to apply.
13374
13375 @item filter_params
13376 The parameters to pass to the libopencv filter. If not specified, the default
13377 values are assumed.
13378
13379 @end table
13380
13381 Refer to the official libopencv documentation for more precise
13382 information:
13383 @url{http://docs.opencv.org/master/modules/imgproc/doc/filtering.html}
13384
13385 Several libopencv filters are supported; see the following subsections.
13386
13387 @anchor{dilate}
13388 @subsection dilate
13389
13390 Dilate an image by using a specific structuring element.
13391 It corresponds to the libopencv function @code{cvDilate}.
13392
13393 It accepts the parameters: @var{struct_el}|@var{nb_iterations}.
13394
13395 @var{struct_el} represents a structuring element, and has the syntax:
13396 @var{cols}x@var{rows}+@var{anchor_x}x@var{anchor_y}/@var{shape}
13397
13398 @var{cols} and @var{rows} represent the number of columns and rows of
13399 the structuring element, @var{anchor_x} and @var{anchor_y} the anchor
13400 point, and @var{shape} the shape for the structuring element. @var{shape}
13401 must be "rect", "cross", "ellipse", or "custom".
13402
13403 If the value for @var{shape} is "custom", it must be followed by a
13404 string of the form "=@var{filename}". The file with name
13405 @var{filename} is assumed to represent a binary image, with each
13406 printable character corresponding to a bright pixel. When a custom
13407 @var{shape} is used, @var{cols} and @var{rows} are ignored, the number
13408 or columns and rows of the read file are assumed instead.
13409
13410 The default value for @var{struct_el} is "3x3+0x0/rect".
13411
13412 @var{nb_iterations} specifies the number of times the transform is
13413 applied to the image, and defaults to 1.
13414
13415 Some examples:
13416 @example
13417 # Use the default values
13418 ocv=dilate
13419
13420 # Dilate using a structuring element with a 5x5 cross, iterating two times
13421 ocv=filter_name=dilate:filter_params=5x5+2x2/cross|2
13422
13423 # Read the shape from the file diamond.shape, iterating two times.
13424 # The file diamond.shape may contain a pattern of characters like this
13425 #   *
13426 #  ***
13427 # *****
13428 #  ***
13429 #   *
13430 # The specified columns and rows are ignored
13431 # but the anchor point coordinates are not
13432 ocv=dilate:0x0+2x2/custom=diamond.shape|2
13433 @end example
13434
13435 @subsection erode
13436
13437 Erode an image by using a specific structuring element.
13438 It corresponds to the libopencv function @code{cvErode}.
13439
13440 It accepts the parameters: @var{struct_el}:@var{nb_iterations},
13441 with the same syntax and semantics as the @ref{dilate} filter.
13442
13443 @subsection smooth
13444
13445 Smooth the input video.
13446
13447 The filter takes the following parameters:
13448 @var{type}|@var{param1}|@var{param2}|@var{param3}|@var{param4}.
13449
13450 @var{type} is the type of smooth filter to apply, and must be one of
13451 the following values: "blur", "blur_no_scale", "median", "gaussian",
13452 or "bilateral". The default value is "gaussian".
13453
13454 The meaning of @var{param1}, @var{param2}, @var{param3}, and @var{param4}
13455 depends on the smooth type. @var{param1} and
13456 @var{param2} accept integer positive values or 0. @var{param3} and
13457 @var{param4} accept floating point values.
13458
13459 The default value for @var{param1} is 3. The default value for the
13460 other parameters is 0.
13461
13462 These parameters correspond to the parameters assigned to the
13463 libopencv function @code{cvSmooth}.
13464
13465 @section oscilloscope
13466
13467 2D Video Oscilloscope.
13468
13469 Useful to measure spatial impulse, step responses, chroma delays, etc.
13470
13471 It accepts the following parameters:
13472
13473 @table @option
13474 @item x
13475 Set scope center x position.
13476
13477 @item y
13478 Set scope center y position.
13479
13480 @item s
13481 Set scope size, relative to frame diagonal.
13482
13483 @item t
13484 Set scope tilt/rotation.
13485
13486 @item o
13487 Set trace opacity.
13488
13489 @item tx
13490 Set trace center x position.
13491
13492 @item ty
13493 Set trace center y position.
13494
13495 @item tw
13496 Set trace width, relative to width of frame.
13497
13498 @item th
13499 Set trace height, relative to height of frame.
13500
13501 @item c
13502 Set which components to trace. By default it traces first three components.
13503
13504 @item g
13505 Draw trace grid. By default is enabled.
13506
13507 @item st
13508 Draw some statistics. By default is enabled.
13509
13510 @item sc
13511 Draw scope. By default is enabled.
13512 @end table
13513
13514 @subsection Examples
13515
13516 @itemize
13517 @item
13518 Inspect full first row of video frame.
13519 @example
13520 oscilloscope=x=0.5:y=0:s=1
13521 @end example
13522
13523 @item
13524 Inspect full last row of video frame.
13525 @example
13526 oscilloscope=x=0.5:y=1:s=1
13527 @end example
13528
13529 @item
13530 Inspect full 5th line of video frame of height 1080.
13531 @example
13532 oscilloscope=x=0.5:y=5/1080:s=1
13533 @end example
13534
13535 @item
13536 Inspect full last column of video frame.
13537 @example
13538 oscilloscope=x=1:y=0.5:s=1:t=1
13539 @end example
13540
13541 @end itemize
13542
13543 @anchor{overlay}
13544 @section overlay
13545
13546 Overlay one video on top of another.
13547
13548 It takes two inputs and has one output. The first input is the "main"
13549 video on which the second input is overlaid.
13550
13551 It accepts the following parameters:
13552
13553 A description of the accepted options follows.
13554
13555 @table @option
13556 @item x
13557 @item y
13558 Set the expression for the x and y coordinates of the overlaid video
13559 on the main video. Default value is "0" for both expressions. In case
13560 the expression is invalid, it is set to a huge value (meaning that the
13561 overlay will not be displayed within the output visible area).
13562
13563 @item eof_action
13564 See @ref{framesync}.
13565
13566 @item eval
13567 Set when the expressions for @option{x}, and @option{y} are evaluated.
13568
13569 It accepts the following values:
13570 @table @samp
13571 @item init
13572 only evaluate expressions once during the filter initialization or
13573 when a command is processed
13574
13575 @item frame
13576 evaluate expressions for each incoming frame
13577 @end table
13578
13579 Default value is @samp{frame}.
13580
13581 @item shortest
13582 See @ref{framesync}.
13583
13584 @item format
13585 Set the format for the output video.
13586
13587 It accepts the following values:
13588 @table @samp
13589 @item yuv420
13590 force YUV420 output
13591
13592 @item yuv422
13593 force YUV422 output
13594
13595 @item yuv444
13596 force YUV444 output
13597
13598 @item rgb
13599 force packed RGB output
13600
13601 @item gbrp
13602 force planar RGB output
13603
13604 @item auto
13605 automatically pick format
13606 @end table
13607
13608 Default value is @samp{yuv420}.
13609
13610 @item repeatlast
13611 See @ref{framesync}.
13612
13613 @item alpha
13614 Set format of alpha of the overlaid video, it can be @var{straight} or
13615 @var{premultiplied}. Default is @var{straight}.
13616 @end table
13617
13618 The @option{x}, and @option{y} expressions can contain the following
13619 parameters.
13620
13621 @table @option
13622 @item main_w, W
13623 @item main_h, H
13624 The main input width and height.
13625
13626 @item overlay_w, w
13627 @item overlay_h, h
13628 The overlay input width and height.
13629
13630 @item x
13631 @item y
13632 The computed values for @var{x} and @var{y}. They are evaluated for
13633 each new frame.
13634
13635 @item hsub
13636 @item vsub
13637 horizontal and vertical chroma subsample values of the output
13638 format. For example for the pixel format "yuv422p" @var{hsub} is 2 and
13639 @var{vsub} is 1.
13640
13641 @item n
13642 the number of input frame, starting from 0
13643
13644 @item pos
13645 the position in the file of the input frame, NAN if unknown
13646
13647 @item t
13648 The timestamp, expressed in seconds. It's NAN if the input timestamp is unknown.
13649
13650 @end table
13651
13652 This filter also supports the @ref{framesync} options.
13653
13654 Note that the @var{n}, @var{pos}, @var{t} variables are available only
13655 when evaluation is done @emph{per frame}, and will evaluate to NAN
13656 when @option{eval} is set to @samp{init}.
13657
13658 Be aware that frames are taken from each input video in timestamp
13659 order, hence, if their initial timestamps differ, it is a good idea
13660 to pass the two inputs through a @var{setpts=PTS-STARTPTS} filter to
13661 have them begin in the same zero timestamp, as the example for
13662 the @var{movie} filter does.
13663
13664 You can chain together more overlays but you should test the
13665 efficiency of such approach.
13666
13667 @subsection Commands
13668
13669 This filter supports the following commands:
13670 @table @option
13671 @item x
13672 @item y
13673 Modify the x and y of the overlay input.
13674 The command accepts the same syntax of the corresponding option.
13675
13676 If the specified expression is not valid, it is kept at its current
13677 value.
13678 @end table
13679
13680 @subsection Examples
13681
13682 @itemize
13683 @item
13684 Draw the overlay at 10 pixels from the bottom right corner of the main
13685 video:
13686 @example
13687 overlay=main_w-overlay_w-10:main_h-overlay_h-10
13688 @end example
13689
13690 Using named options the example above becomes:
13691 @example
13692 overlay=x=main_w-overlay_w-10:y=main_h-overlay_h-10
13693 @end example
13694
13695 @item
13696 Insert a transparent PNG logo in the bottom left corner of the input,
13697 using the @command{ffmpeg} tool with the @code{-filter_complex} option:
13698 @example
13699 ffmpeg -i input -i logo -filter_complex 'overlay=10:main_h-overlay_h-10' output
13700 @end example
13701
13702 @item
13703 Insert 2 different transparent PNG logos (second logo on bottom
13704 right corner) using the @command{ffmpeg} tool:
13705 @example
13706 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
13707 @end example
13708
13709 @item
13710 Add a transparent color layer on top of the main video; @code{WxH}
13711 must specify the size of the main input to the overlay filter:
13712 @example
13713 color=color=red@@.3:size=WxH [over]; [in][over] overlay [out]
13714 @end example
13715
13716 @item
13717 Play an original video and a filtered version (here with the deshake
13718 filter) side by side using the @command{ffplay} tool:
13719 @example
13720 ffplay input.avi -vf 'split[a][b]; [a]pad=iw*2:ih[src]; [b]deshake[filt]; [src][filt]overlay=w'
13721 @end example
13722
13723 The above command is the same as:
13724 @example
13725 ffplay input.avi -vf 'split[b], pad=iw*2[src], [b]deshake, [src]overlay=w'
13726 @end example
13727
13728 @item
13729 Make a sliding overlay appearing from the left to the right top part of the
13730 screen starting since time 2:
13731 @example
13732 overlay=x='if(gte(t,2), -w+(t-2)*20, NAN)':y=0
13733 @end example
13734
13735 @item
13736 Compose output by putting two input videos side to side:
13737 @example
13738 ffmpeg -i left.avi -i right.avi -filter_complex "
13739 nullsrc=size=200x100 [background];
13740 [0:v] setpts=PTS-STARTPTS, scale=100x100 [left];
13741 [1:v] setpts=PTS-STARTPTS, scale=100x100 [right];
13742 [background][left]       overlay=shortest=1       [background+left];
13743 [background+left][right] overlay=shortest=1:x=100 [left+right]
13744 "
13745 @end example
13746
13747 @item
13748 Mask 10-20 seconds of a video by applying the delogo filter to a section
13749 @example
13750 ffmpeg -i test.avi -codec:v:0 wmv2 -ar 11025 -b:v 9000k
13751 -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]'
13752 masked.avi
13753 @end example
13754
13755 @item
13756 Chain several overlays in cascade:
13757 @example
13758 nullsrc=s=200x200 [bg];
13759 testsrc=s=100x100, split=4 [in0][in1][in2][in3];
13760 [in0] lutrgb=r=0, [bg]   overlay=0:0     [mid0];
13761 [in1] lutrgb=g=0, [mid0] overlay=100:0   [mid1];
13762 [in2] lutrgb=b=0, [mid1] overlay=0:100   [mid2];
13763 [in3] null,       [mid2] overlay=100:100 [out0]
13764 @end example
13765
13766 @end itemize
13767
13768 @section owdenoise
13769
13770 Apply Overcomplete Wavelet denoiser.
13771
13772 The filter accepts the following options:
13773
13774 @table @option
13775 @item depth
13776 Set depth.
13777
13778 Larger depth values will denoise lower frequency components more, but
13779 slow down filtering.
13780
13781 Must be an int in the range 8-16, default is @code{8}.
13782
13783 @item luma_strength, ls
13784 Set luma strength.
13785
13786 Must be a double value in the range 0-1000, default is @code{1.0}.
13787
13788 @item chroma_strength, cs
13789 Set chroma strength.
13790
13791 Must be a double value in the range 0-1000, default is @code{1.0}.
13792 @end table
13793
13794 @anchor{pad}
13795 @section pad
13796
13797 Add paddings to the input image, and place the original input at the
13798 provided @var{x}, @var{y} coordinates.
13799
13800 It accepts the following parameters:
13801
13802 @table @option
13803 @item width, w
13804 @item height, h
13805 Specify an expression for the size of the output image with the
13806 paddings added. If the value for @var{width} or @var{height} is 0, the
13807 corresponding input size is used for the output.
13808
13809 The @var{width} expression can reference the value set by the
13810 @var{height} expression, and vice versa.
13811
13812 The default value of @var{width} and @var{height} is 0.
13813
13814 @item x
13815 @item y
13816 Specify the offsets to place the input image at within the padded area,
13817 with respect to the top/left border of the output image.
13818
13819 The @var{x} expression can reference the value set by the @var{y}
13820 expression, and vice versa.
13821
13822 The default value of @var{x} and @var{y} is 0.
13823
13824 If @var{x} or @var{y} evaluate to a negative number, they'll be changed
13825 so the input image is centered on the padded area.
13826
13827 @item color
13828 Specify the color of the padded area. For the syntax of this option,
13829 check the @ref{color syntax,,"Color" section in the ffmpeg-utils
13830 manual,ffmpeg-utils}.
13831
13832 The default value of @var{color} is "black".
13833
13834 @item eval
13835 Specify when to evaluate  @var{width}, @var{height}, @var{x} and @var{y} expression.
13836
13837 It accepts the following values:
13838
13839 @table @samp
13840 @item init
13841 Only evaluate expressions once during the filter initialization or when
13842 a command is processed.
13843
13844 @item frame
13845 Evaluate expressions for each incoming frame.
13846
13847 @end table
13848
13849 Default value is @samp{init}.
13850
13851 @item aspect
13852 Pad to aspect instead to a resolution.
13853
13854 @end table
13855
13856 The value for the @var{width}, @var{height}, @var{x}, and @var{y}
13857 options are expressions containing the following constants:
13858
13859 @table @option
13860 @item in_w
13861 @item in_h
13862 The input video width and height.
13863
13864 @item iw
13865 @item ih
13866 These are the same as @var{in_w} and @var{in_h}.
13867
13868 @item out_w
13869 @item out_h
13870 The output width and height (the size of the padded area), as
13871 specified by the @var{width} and @var{height} expressions.
13872
13873 @item ow
13874 @item oh
13875 These are the same as @var{out_w} and @var{out_h}.
13876
13877 @item x
13878 @item y
13879 The x and y offsets as specified by the @var{x} and @var{y}
13880 expressions, or NAN if not yet specified.
13881
13882 @item a
13883 same as @var{iw} / @var{ih}
13884
13885 @item sar
13886 input sample aspect ratio
13887
13888 @item dar
13889 input display aspect ratio, it is the same as (@var{iw} / @var{ih}) * @var{sar}
13890
13891 @item hsub
13892 @item vsub
13893 The horizontal and vertical chroma subsample values. For example for the
13894 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
13895 @end table
13896
13897 @subsection Examples
13898
13899 @itemize
13900 @item
13901 Add paddings with the color "violet" to the input video. The output video
13902 size is 640x480, and the top-left corner of the input video is placed at
13903 column 0, row 40
13904 @example
13905 pad=640:480:0:40:violet
13906 @end example
13907
13908 The example above is equivalent to the following command:
13909 @example
13910 pad=width=640:height=480:x=0:y=40:color=violet
13911 @end example
13912
13913 @item
13914 Pad the input to get an output with dimensions increased by 3/2,
13915 and put the input video at the center of the padded area:
13916 @example
13917 pad="3/2*iw:3/2*ih:(ow-iw)/2:(oh-ih)/2"
13918 @end example
13919
13920 @item
13921 Pad the input to get a squared output with size equal to the maximum
13922 value between the input width and height, and put the input video at
13923 the center of the padded area:
13924 @example
13925 pad="max(iw\,ih):ow:(ow-iw)/2:(oh-ih)/2"
13926 @end example
13927
13928 @item
13929 Pad the input to get a final w/h ratio of 16:9:
13930 @example
13931 pad="ih*16/9:ih:(ow-iw)/2:(oh-ih)/2"
13932 @end example
13933
13934 @item
13935 In case of anamorphic video, in order to set the output display aspect
13936 correctly, it is necessary to use @var{sar} in the expression,
13937 according to the relation:
13938 @example
13939 (ih * X / ih) * sar = output_dar
13940 X = output_dar / sar
13941 @end example
13942
13943 Thus the previous example needs to be modified to:
13944 @example
13945 pad="ih*16/9/sar:ih:(ow-iw)/2:(oh-ih)/2"
13946 @end example
13947
13948 @item
13949 Double the output size and put the input video in the bottom-right
13950 corner of the output padded area:
13951 @example
13952 pad="2*iw:2*ih:ow-iw:oh-ih"
13953 @end example
13954 @end itemize
13955
13956 @anchor{palettegen}
13957 @section palettegen
13958
13959 Generate one palette for a whole video stream.
13960
13961 It accepts the following options:
13962
13963 @table @option
13964 @item max_colors
13965 Set the maximum number of colors to quantize in the palette.
13966 Note: the palette will still contain 256 colors; the unused palette entries
13967 will be black.
13968
13969 @item reserve_transparent
13970 Create a palette of 255 colors maximum and reserve the last one for
13971 transparency. Reserving the transparency color is useful for GIF optimization.
13972 If not set, the maximum of colors in the palette will be 256. You probably want
13973 to disable this option for a standalone image.
13974 Set by default.
13975
13976 @item transparency_color
13977 Set the color that will be used as background for transparency.
13978
13979 @item stats_mode
13980 Set statistics mode.
13981
13982 It accepts the following values:
13983 @table @samp
13984 @item full
13985 Compute full frame histograms.
13986 @item diff
13987 Compute histograms only for the part that differs from previous frame. This
13988 might be relevant to give more importance to the moving part of your input if
13989 the background is static.
13990 @item single
13991 Compute new histogram for each frame.
13992 @end table
13993
13994 Default value is @var{full}.
13995 @end table
13996
13997 The filter also exports the frame metadata @code{lavfi.color_quant_ratio}
13998 (@code{nb_color_in / nb_color_out}) which you can use to evaluate the degree of
13999 color quantization of the palette. This information is also visible at
14000 @var{info} logging level.
14001
14002 @subsection Examples
14003
14004 @itemize
14005 @item
14006 Generate a representative palette of a given video using @command{ffmpeg}:
14007 @example
14008 ffmpeg -i input.mkv -vf palettegen palette.png
14009 @end example
14010 @end itemize
14011
14012 @section paletteuse
14013
14014 Use a palette to downsample an input video stream.
14015
14016 The filter takes two inputs: one video stream and a palette. The palette must
14017 be a 256 pixels image.
14018
14019 It accepts the following options:
14020
14021 @table @option
14022 @item dither
14023 Select dithering mode. Available algorithms are:
14024 @table @samp
14025 @item bayer
14026 Ordered 8x8 bayer dithering (deterministic)
14027 @item heckbert
14028 Dithering as defined by Paul Heckbert in 1982 (simple error diffusion).
14029 Note: this dithering is sometimes considered "wrong" and is included as a
14030 reference.
14031 @item floyd_steinberg
14032 Floyd and Steingberg dithering (error diffusion)
14033 @item sierra2
14034 Frankie Sierra dithering v2 (error diffusion)
14035 @item sierra2_4a
14036 Frankie Sierra dithering v2 "Lite" (error diffusion)
14037 @end table
14038
14039 Default is @var{sierra2_4a}.
14040
14041 @item bayer_scale
14042 When @var{bayer} dithering is selected, this option defines the scale of the
14043 pattern (how much the crosshatch pattern is visible). A low value means more
14044 visible pattern for less banding, and higher value means less visible pattern
14045 at the cost of more banding.
14046
14047 The option must be an integer value in the range [0,5]. Default is @var{2}.
14048
14049 @item diff_mode
14050 If set, define the zone to process
14051
14052 @table @samp
14053 @item rectangle
14054 Only the changing rectangle will be reprocessed. This is similar to GIF
14055 cropping/offsetting compression mechanism. This option can be useful for speed
14056 if only a part of the image is changing, and has use cases such as limiting the
14057 scope of the error diffusal @option{dither} to the rectangle that bounds the
14058 moving scene (it leads to more deterministic output if the scene doesn't change
14059 much, and as a result less moving noise and better GIF compression).
14060 @end table
14061
14062 Default is @var{none}.
14063
14064 @item new
14065 Take new palette for each output frame.
14066
14067 @item alpha_threshold
14068 Sets the alpha threshold for transparency. Alpha values above this threshold
14069 will be treated as completely opaque, and values below this threshold will be
14070 treated as completely transparent.
14071
14072 The option must be an integer value in the range [0,255]. Default is @var{128}.
14073 @end table
14074
14075 @subsection Examples
14076
14077 @itemize
14078 @item
14079 Use a palette (generated for example with @ref{palettegen}) to encode a GIF
14080 using @command{ffmpeg}:
14081 @example
14082 ffmpeg -i input.mkv -i palette.png -lavfi paletteuse output.gif
14083 @end example
14084 @end itemize
14085
14086 @section perspective
14087
14088 Correct perspective of video not recorded perpendicular to the screen.
14089
14090 A description of the accepted parameters follows.
14091
14092 @table @option
14093 @item x0
14094 @item y0
14095 @item x1
14096 @item y1
14097 @item x2
14098 @item y2
14099 @item x3
14100 @item y3
14101 Set coordinates expression for top left, top right, bottom left and bottom right corners.
14102 Default values are @code{0:0:W:0:0:H:W:H} with which perspective will remain unchanged.
14103 If the @code{sense} option is set to @code{source}, then the specified points will be sent
14104 to the corners of the destination. If the @code{sense} option is set to @code{destination},
14105 then the corners of the source will be sent to the specified coordinates.
14106
14107 The expressions can use the following variables:
14108
14109 @table @option
14110 @item W
14111 @item H
14112 the width and height of video frame.
14113 @item in
14114 Input frame count.
14115 @item on
14116 Output frame count.
14117 @end table
14118
14119 @item interpolation
14120 Set interpolation for perspective correction.
14121
14122 It accepts the following values:
14123 @table @samp
14124 @item linear
14125 @item cubic
14126 @end table
14127
14128 Default value is @samp{linear}.
14129
14130 @item sense
14131 Set interpretation of coordinate options.
14132
14133 It accepts the following values:
14134 @table @samp
14135 @item 0, source
14136
14137 Send point in the source specified by the given coordinates to
14138 the corners of the destination.
14139
14140 @item 1, destination
14141
14142 Send the corners of the source to the point in the destination specified
14143 by the given coordinates.
14144
14145 Default value is @samp{source}.
14146 @end table
14147
14148 @item eval
14149 Set when the expressions for coordinates @option{x0,y0,...x3,y3} are evaluated.
14150
14151 It accepts the following values:
14152 @table @samp
14153 @item init
14154 only evaluate expressions once during the filter initialization or
14155 when a command is processed
14156
14157 @item frame
14158 evaluate expressions for each incoming frame
14159 @end table
14160
14161 Default value is @samp{init}.
14162 @end table
14163
14164 @section phase
14165
14166 Delay interlaced video by one field time so that the field order changes.
14167
14168 The intended use is to fix PAL movies that have been captured with the
14169 opposite field order to the film-to-video transfer.
14170
14171 A description of the accepted parameters follows.
14172
14173 @table @option
14174 @item mode
14175 Set phase mode.
14176
14177 It accepts the following values:
14178 @table @samp
14179 @item t
14180 Capture field order top-first, transfer bottom-first.
14181 Filter will delay the bottom field.
14182
14183 @item b
14184 Capture field order bottom-first, transfer top-first.
14185 Filter will delay the top field.
14186
14187 @item p
14188 Capture and transfer with the same field order. This mode only exists
14189 for the documentation of the other options to refer to, but if you
14190 actually select it, the filter will faithfully do nothing.
14191
14192 @item a
14193 Capture field order determined automatically by field flags, transfer
14194 opposite.
14195 Filter selects among @samp{t} and @samp{b} modes on a frame by frame
14196 basis using field flags. If no field information is available,
14197 then this works just like @samp{u}.
14198
14199 @item u
14200 Capture unknown or varying, transfer opposite.
14201 Filter selects among @samp{t} and @samp{b} on a frame by frame basis by
14202 analyzing the images and selecting the alternative that produces best
14203 match between the fields.
14204
14205 @item T
14206 Capture top-first, transfer unknown or varying.
14207 Filter selects among @samp{t} and @samp{p} using image analysis.
14208
14209 @item B
14210 Capture bottom-first, transfer unknown or varying.
14211 Filter selects among @samp{b} and @samp{p} using image analysis.
14212
14213 @item A
14214 Capture determined by field flags, transfer unknown or varying.
14215 Filter selects among @samp{t}, @samp{b} and @samp{p} using field flags and
14216 image analysis. If no field information is available, then this works just
14217 like @samp{U}. This is the default mode.
14218
14219 @item U
14220 Both capture and transfer unknown or varying.
14221 Filter selects among @samp{t}, @samp{b} and @samp{p} using image analysis only.
14222 @end table
14223 @end table
14224
14225 @section photosensitivity
14226 Reduce various flashes in video, so to help users with epilepsy.
14227
14228 It accepts the following options:
14229 @table @option
14230 @item frames, f
14231 Set how many frames to use when filtering. Default is 30.
14232
14233 @item threshold, t
14234 Set detection threshold factor. Default is 1.
14235 Lower is stricter.
14236
14237 @item skip
14238 Set how many pixels to skip when sampling frames. Defalt is 1.
14239 Allowed range is from 1 to 1024.
14240
14241 @item bypass
14242 Leave frames unchanged. Default is disabled.
14243 @end table
14244
14245 @section pixdesctest
14246
14247 Pixel format descriptor test filter, mainly useful for internal
14248 testing. The output video should be equal to the input video.
14249
14250 For example:
14251 @example
14252 format=monow, pixdesctest
14253 @end example
14254
14255 can be used to test the monowhite pixel format descriptor definition.
14256
14257 @section pixscope
14258
14259 Display sample values of color channels. Mainly useful for checking color
14260 and levels. Minimum supported resolution is 640x480.
14261
14262 The filters accept the following options:
14263
14264 @table @option
14265 @item x
14266 Set scope X position, relative offset on X axis.
14267
14268 @item y
14269 Set scope Y position, relative offset on Y axis.
14270
14271 @item w
14272 Set scope width.
14273
14274 @item h
14275 Set scope height.
14276
14277 @item o
14278 Set window opacity. This window also holds statistics about pixel area.
14279
14280 @item wx
14281 Set window X position, relative offset on X axis.
14282
14283 @item wy
14284 Set window Y position, relative offset on Y axis.
14285 @end table
14286
14287 @section pp
14288
14289 Enable the specified chain of postprocessing subfilters using libpostproc. This
14290 library should be automatically selected with a GPL build (@code{--enable-gpl}).
14291 Subfilters must be separated by '/' and can be disabled by prepending a '-'.
14292 Each subfilter and some options have a short and a long name that can be used
14293 interchangeably, i.e. dr/dering are the same.
14294
14295 The filters accept the following options:
14296
14297 @table @option
14298 @item subfilters
14299 Set postprocessing subfilters string.
14300 @end table
14301
14302 All subfilters share common options to determine their scope:
14303
14304 @table @option
14305 @item a/autoq
14306 Honor the quality commands for this subfilter.
14307
14308 @item c/chrom
14309 Do chrominance filtering, too (default).
14310
14311 @item y/nochrom
14312 Do luminance filtering only (no chrominance).
14313
14314 @item n/noluma
14315 Do chrominance filtering only (no luminance).
14316 @end table
14317
14318 These options can be appended after the subfilter name, separated by a '|'.
14319
14320 Available subfilters are:
14321
14322 @table @option
14323 @item hb/hdeblock[|difference[|flatness]]
14324 Horizontal deblocking filter
14325 @table @option
14326 @item difference
14327 Difference factor where higher values mean more deblocking (default: @code{32}).
14328 @item flatness
14329 Flatness threshold where lower values mean more deblocking (default: @code{39}).
14330 @end table
14331
14332 @item vb/vdeblock[|difference[|flatness]]
14333 Vertical deblocking filter
14334 @table @option
14335 @item difference
14336 Difference factor where higher values mean more deblocking (default: @code{32}).
14337 @item flatness
14338 Flatness threshold where lower values mean more deblocking (default: @code{39}).
14339 @end table
14340
14341 @item ha/hadeblock[|difference[|flatness]]
14342 Accurate horizontal deblocking filter
14343 @table @option
14344 @item difference
14345 Difference factor where higher values mean more deblocking (default: @code{32}).
14346 @item flatness
14347 Flatness threshold where lower values mean more deblocking (default: @code{39}).
14348 @end table
14349
14350 @item va/vadeblock[|difference[|flatness]]
14351 Accurate vertical deblocking filter
14352 @table @option
14353 @item difference
14354 Difference factor where higher values mean more deblocking (default: @code{32}).
14355 @item flatness
14356 Flatness threshold where lower values mean more deblocking (default: @code{39}).
14357 @end table
14358 @end table
14359
14360 The horizontal and vertical deblocking filters share the difference and
14361 flatness values so you cannot set different horizontal and vertical
14362 thresholds.
14363
14364 @table @option
14365 @item h1/x1hdeblock
14366 Experimental horizontal deblocking filter
14367
14368 @item v1/x1vdeblock
14369 Experimental vertical deblocking filter
14370
14371 @item dr/dering
14372 Deringing filter
14373
14374 @item tn/tmpnoise[|threshold1[|threshold2[|threshold3]]], temporal noise reducer
14375 @table @option
14376 @item threshold1
14377 larger -> stronger filtering
14378 @item threshold2
14379 larger -> stronger filtering
14380 @item threshold3
14381 larger -> stronger filtering
14382 @end table
14383
14384 @item al/autolevels[:f/fullyrange], automatic brightness / contrast correction
14385 @table @option
14386 @item f/fullyrange
14387 Stretch luminance to @code{0-255}.
14388 @end table
14389
14390 @item lb/linblenddeint
14391 Linear blend deinterlacing filter that deinterlaces the given block by
14392 filtering all lines with a @code{(1 2 1)} filter.
14393
14394 @item li/linipoldeint
14395 Linear interpolating deinterlacing filter that deinterlaces the given block by
14396 linearly interpolating every second line.
14397
14398 @item ci/cubicipoldeint
14399 Cubic interpolating deinterlacing filter deinterlaces the given block by
14400 cubically interpolating every second line.
14401
14402 @item md/mediandeint
14403 Median deinterlacing filter that deinterlaces the given block by applying a
14404 median filter to every second line.
14405
14406 @item fd/ffmpegdeint
14407 FFmpeg deinterlacing filter that deinterlaces the given block by filtering every
14408 second line with a @code{(-1 4 2 4 -1)} filter.
14409
14410 @item l5/lowpass5
14411 Vertically applied FIR lowpass deinterlacing filter that deinterlaces the given
14412 block by filtering all lines with a @code{(-1 2 6 2 -1)} filter.
14413
14414 @item fq/forceQuant[|quantizer]
14415 Overrides the quantizer table from the input with the constant quantizer you
14416 specify.
14417 @table @option
14418 @item quantizer
14419 Quantizer to use
14420 @end table
14421
14422 @item de/default
14423 Default pp filter combination (@code{hb|a,vb|a,dr|a})
14424
14425 @item fa/fast
14426 Fast pp filter combination (@code{h1|a,v1|a,dr|a})
14427
14428 @item ac
14429 High quality pp filter combination (@code{ha|a|128|7,va|a,dr|a})
14430 @end table
14431
14432 @subsection Examples
14433
14434 @itemize
14435 @item
14436 Apply horizontal and vertical deblocking, deringing and automatic
14437 brightness/contrast:
14438 @example
14439 pp=hb/vb/dr/al
14440 @end example
14441
14442 @item
14443 Apply default filters without brightness/contrast correction:
14444 @example
14445 pp=de/-al
14446 @end example
14447
14448 @item
14449 Apply default filters and temporal denoiser:
14450 @example
14451 pp=default/tmpnoise|1|2|3
14452 @end example
14453
14454 @item
14455 Apply deblocking on luminance only, and switch vertical deblocking on or off
14456 automatically depending on available CPU time:
14457 @example
14458 pp=hb|y/vb|a
14459 @end example
14460 @end itemize
14461
14462 @section pp7
14463 Apply Postprocessing filter 7. It is variant of the @ref{spp} filter,
14464 similar to spp = 6 with 7 point DCT, where only the center sample is
14465 used after IDCT.
14466
14467 The filter accepts the following options:
14468
14469 @table @option
14470 @item qp
14471 Force a constant quantization parameter. It accepts an integer in range
14472 0 to 63. If not set, the filter will use the QP from the video stream
14473 (if available).
14474
14475 @item mode
14476 Set thresholding mode. Available modes are:
14477
14478 @table @samp
14479 @item hard
14480 Set hard thresholding.
14481 @item soft
14482 Set soft thresholding (better de-ringing effect, but likely blurrier).
14483 @item medium
14484 Set medium thresholding (good results, default).
14485 @end table
14486 @end table
14487
14488 @section premultiply
14489 Apply alpha premultiply effect to input video stream using first plane
14490 of second stream as alpha.
14491
14492 Both streams must have same dimensions and same pixel format.
14493
14494 The filter accepts the following option:
14495
14496 @table @option
14497 @item planes
14498 Set which planes will be processed, unprocessed planes will be copied.
14499 By default value 0xf, all planes will be processed.
14500
14501 @item inplace
14502 Do not require 2nd input for processing, instead use alpha plane from input stream.
14503 @end table
14504
14505 @section prewitt
14506 Apply prewitt operator to input video stream.
14507
14508 The filter accepts the following option:
14509
14510 @table @option
14511 @item planes
14512 Set which planes will be processed, unprocessed planes will be copied.
14513 By default value 0xf, all planes will be processed.
14514
14515 @item scale
14516 Set value which will be multiplied with filtered result.
14517
14518 @item delta
14519 Set value which will be added to filtered result.
14520 @end table
14521
14522 @anchor{program_opencl}
14523 @section program_opencl
14524
14525 Filter video using an OpenCL program.
14526
14527 @table @option
14528
14529 @item source
14530 OpenCL program source file.
14531
14532 @item kernel
14533 Kernel name in program.
14534
14535 @item inputs
14536 Number of inputs to the filter.  Defaults to 1.
14537
14538 @item size, s
14539 Size of output frames.  Defaults to the same as the first input.
14540
14541 @end table
14542
14543 The program source file must contain a kernel function with the given name,
14544 which will be run once for each plane of the output.  Each run on a plane
14545 gets enqueued as a separate 2D global NDRange with one work-item for each
14546 pixel to be generated.  The global ID offset for each work-item is therefore
14547 the coordinates of a pixel in the destination image.
14548
14549 The kernel function needs to take the following arguments:
14550 @itemize
14551 @item
14552 Destination image, @var{__write_only image2d_t}.
14553
14554 This image will become the output; the kernel should write all of it.
14555 @item
14556 Frame index, @var{unsigned int}.
14557
14558 This is a counter starting from zero and increasing by one for each frame.
14559 @item
14560 Source images, @var{__read_only image2d_t}.
14561
14562 These are the most recent images on each input.  The kernel may read from
14563 them to generate the output, but they can't be written to.
14564 @end itemize
14565
14566 Example programs:
14567
14568 @itemize
14569 @item
14570 Copy the input to the output (output must be the same size as the input).
14571 @verbatim
14572 __kernel void copy(__write_only image2d_t destination,
14573                    unsigned int index,
14574                    __read_only  image2d_t source)
14575 {
14576     const sampler_t sampler = CLK_NORMALIZED_COORDS_FALSE;
14577
14578     int2 location = (int2)(get_global_id(0), get_global_id(1));
14579
14580     float4 value = read_imagef(source, sampler, location);
14581
14582     write_imagef(destination, location, value);
14583 }
14584 @end verbatim
14585
14586 @item
14587 Apply a simple transformation, rotating the input by an amount increasing
14588 with the index counter.  Pixel values are linearly interpolated by the
14589 sampler, and the output need not have the same dimensions as the input.
14590 @verbatim
14591 __kernel void rotate_image(__write_only image2d_t dst,
14592                            unsigned int index,
14593                            __read_only  image2d_t src)
14594 {
14595     const sampler_t sampler = (CLK_NORMALIZED_COORDS_FALSE |
14596                                CLK_FILTER_LINEAR);
14597
14598     float angle = (float)index / 100.0f;
14599
14600     float2 dst_dim = convert_float2(get_image_dim(dst));
14601     float2 src_dim = convert_float2(get_image_dim(src));
14602
14603     float2 dst_cen = dst_dim / 2.0f;
14604     float2 src_cen = src_dim / 2.0f;
14605
14606     int2   dst_loc = (int2)(get_global_id(0), get_global_id(1));
14607
14608     float2 dst_pos = convert_float2(dst_loc) - dst_cen;
14609     float2 src_pos = {
14610         cos(angle) * dst_pos.x - sin(angle) * dst_pos.y,
14611         sin(angle) * dst_pos.x + cos(angle) * dst_pos.y
14612     };
14613     src_pos = src_pos * src_dim / dst_dim;
14614
14615     float2 src_loc = src_pos + src_cen;
14616
14617     if (src_loc.x < 0.0f      || src_loc.y < 0.0f ||
14618         src_loc.x > src_dim.x || src_loc.y > src_dim.y)
14619         write_imagef(dst, dst_loc, 0.5f);
14620     else
14621         write_imagef(dst, dst_loc, read_imagef(src, sampler, src_loc));
14622 }
14623 @end verbatim
14624
14625 @item
14626 Blend two inputs together, with the amount of each input used varying
14627 with the index counter.
14628 @verbatim
14629 __kernel void blend_images(__write_only image2d_t dst,
14630                            unsigned int index,
14631                            __read_only  image2d_t src1,
14632                            __read_only  image2d_t src2)
14633 {
14634     const sampler_t sampler = (CLK_NORMALIZED_COORDS_FALSE |
14635                                CLK_FILTER_LINEAR);
14636
14637     float blend = (cos((float)index / 50.0f) + 1.0f) / 2.0f;
14638
14639     int2  dst_loc = (int2)(get_global_id(0), get_global_id(1));
14640     int2 src1_loc = dst_loc * get_image_dim(src1) / get_image_dim(dst);
14641     int2 src2_loc = dst_loc * get_image_dim(src2) / get_image_dim(dst);
14642
14643     float4 val1 = read_imagef(src1, sampler, src1_loc);
14644     float4 val2 = read_imagef(src2, sampler, src2_loc);
14645
14646     write_imagef(dst, dst_loc, val1 * blend + val2 * (1.0f - blend));
14647 }
14648 @end verbatim
14649
14650 @end itemize
14651
14652 @section pseudocolor
14653
14654 Alter frame colors in video with pseudocolors.
14655
14656 This filter accepts the following options:
14657
14658 @table @option
14659 @item c0
14660 set pixel first component expression
14661
14662 @item c1
14663 set pixel second component expression
14664
14665 @item c2
14666 set pixel third component expression
14667
14668 @item c3
14669 set pixel fourth component expression, corresponds to the alpha component
14670
14671 @item i
14672 set component to use as base for altering colors
14673 @end table
14674
14675 Each of them specifies the expression to use for computing the lookup table for
14676 the corresponding pixel component values.
14677
14678 The expressions can contain the following constants and functions:
14679
14680 @table @option
14681 @item w
14682 @item h
14683 The input width and height.
14684
14685 @item val
14686 The input value for the pixel component.
14687
14688 @item ymin, umin, vmin, amin
14689 The minimum allowed component value.
14690
14691 @item ymax, umax, vmax, amax
14692 The maximum allowed component value.
14693 @end table
14694
14695 All expressions default to "val".
14696
14697 @subsection Examples
14698
14699 @itemize
14700 @item
14701 Change too high luma values to gradient:
14702 @example
14703 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'"
14704 @end example
14705 @end itemize
14706
14707 @section psnr
14708
14709 Obtain the average, maximum and minimum PSNR (Peak Signal to Noise
14710 Ratio) between two input videos.
14711
14712 This filter takes in input two input videos, the first input is
14713 considered the "main" source and is passed unchanged to the
14714 output. The second input is used as a "reference" video for computing
14715 the PSNR.
14716
14717 Both video inputs must have the same resolution and pixel format for
14718 this filter to work correctly. Also it assumes that both inputs
14719 have the same number of frames, which are compared one by one.
14720
14721 The obtained average PSNR is printed through the logging system.
14722
14723 The filter stores the accumulated MSE (mean squared error) of each
14724 frame, and at the end of the processing it is averaged across all frames
14725 equally, and the following formula is applied to obtain the PSNR:
14726
14727 @example
14728 PSNR = 10*log10(MAX^2/MSE)
14729 @end example
14730
14731 Where MAX is the average of the maximum values of each component of the
14732 image.
14733
14734 The description of the accepted parameters follows.
14735
14736 @table @option
14737 @item stats_file, f
14738 If specified the filter will use the named file to save the PSNR of
14739 each individual frame. When filename equals "-" the data is sent to
14740 standard output.
14741
14742 @item stats_version
14743 Specifies which version of the stats file format to use. Details of
14744 each format are written below.
14745 Default value is 1.
14746
14747 @item stats_add_max
14748 Determines whether the max value is output to the stats log.
14749 Default value is 0.
14750 Requires stats_version >= 2. If this is set and stats_version < 2,
14751 the filter will return an error.
14752 @end table
14753
14754 This filter also supports the @ref{framesync} options.
14755
14756 The file printed if @var{stats_file} is selected, contains a sequence of
14757 key/value pairs of the form @var{key}:@var{value} for each compared
14758 couple of frames.
14759
14760 If a @var{stats_version} greater than 1 is specified, a header line precedes
14761 the list of per-frame-pair stats, with key value pairs following the frame
14762 format with the following parameters:
14763
14764 @table @option
14765 @item psnr_log_version
14766 The version of the log file format. Will match @var{stats_version}.
14767
14768 @item fields
14769 A comma separated list of the per-frame-pair parameters included in
14770 the log.
14771 @end table
14772
14773 A description of each shown per-frame-pair parameter follows:
14774
14775 @table @option
14776 @item n
14777 sequential number of the input frame, starting from 1
14778
14779 @item mse_avg
14780 Mean Square Error pixel-by-pixel average difference of the compared
14781 frames, averaged over all the image components.
14782
14783 @item mse_y, mse_u, mse_v, mse_r, mse_g, mse_b, mse_a
14784 Mean Square Error pixel-by-pixel average difference of the compared
14785 frames for the component specified by the suffix.
14786
14787 @item psnr_y, psnr_u, psnr_v, psnr_r, psnr_g, psnr_b, psnr_a
14788 Peak Signal to Noise ratio of the compared frames for the component
14789 specified by the suffix.
14790
14791 @item max_avg, max_y, max_u, max_v
14792 Maximum allowed value for each channel, and average over all
14793 channels.
14794 @end table
14795
14796 For example:
14797 @example
14798 movie=ref_movie.mpg, setpts=PTS-STARTPTS [main];
14799 [main][ref] psnr="stats_file=stats.log" [out]
14800 @end example
14801
14802 On this example the input file being processed is compared with the
14803 reference file @file{ref_movie.mpg}. The PSNR of each individual frame
14804 is stored in @file{stats.log}.
14805
14806 @anchor{pullup}
14807 @section pullup
14808
14809 Pulldown reversal (inverse telecine) filter, capable of handling mixed
14810 hard-telecine, 24000/1001 fps progressive, and 30000/1001 fps progressive
14811 content.
14812
14813 The pullup filter is designed to take advantage of future context in making
14814 its decisions. This filter is stateless in the sense that it does not lock
14815 onto a pattern to follow, but it instead looks forward to the following
14816 fields in order to identify matches and rebuild progressive frames.
14817
14818 To produce content with an even framerate, insert the fps filter after
14819 pullup, use @code{fps=24000/1001} if the input frame rate is 29.97fps,
14820 @code{fps=24} for 30fps and the (rare) telecined 25fps input.
14821
14822 The filter accepts the following options:
14823
14824 @table @option
14825 @item jl
14826 @item jr
14827 @item jt
14828 @item jb
14829 These options set the amount of "junk" to ignore at the left, right, top, and
14830 bottom of the image, respectively. Left and right are in units of 8 pixels,
14831 while top and bottom are in units of 2 lines.
14832 The default is 8 pixels on each side.
14833
14834 @item sb
14835 Set the strict breaks. Setting this option to 1 will reduce the chances of
14836 filter generating an occasional mismatched frame, but it may also cause an
14837 excessive number of frames to be dropped during high motion sequences.
14838 Conversely, setting it to -1 will make filter match fields more easily.
14839 This may help processing of video where there is slight blurring between
14840 the fields, but may also cause there to be interlaced frames in the output.
14841 Default value is @code{0}.
14842
14843 @item mp
14844 Set the metric plane to use. It accepts the following values:
14845 @table @samp
14846 @item l
14847 Use luma plane.
14848
14849 @item u
14850 Use chroma blue plane.
14851
14852 @item v
14853 Use chroma red plane.
14854 @end table
14855
14856 This option may be set to use chroma plane instead of the default luma plane
14857 for doing filter's computations. This may improve accuracy on very clean
14858 source material, but more likely will decrease accuracy, especially if there
14859 is chroma noise (rainbow effect) or any grayscale video.
14860 The main purpose of setting @option{mp} to a chroma plane is to reduce CPU
14861 load and make pullup usable in realtime on slow machines.
14862 @end table
14863
14864 For best results (without duplicated frames in the output file) it is
14865 necessary to change the output frame rate. For example, to inverse
14866 telecine NTSC input:
14867 @example
14868 ffmpeg -i input -vf pullup -r 24000/1001 ...
14869 @end example
14870
14871 @section qp
14872
14873 Change video quantization parameters (QP).
14874
14875 The filter accepts the following option:
14876
14877 @table @option
14878 @item qp
14879 Set expression for quantization parameter.
14880 @end table
14881
14882 The expression is evaluated through the eval API and can contain, among others,
14883 the following constants:
14884
14885 @table @var
14886 @item known
14887 1 if index is not 129, 0 otherwise.
14888
14889 @item qp
14890 Sequential index starting from -129 to 128.
14891 @end table
14892
14893 @subsection Examples
14894
14895 @itemize
14896 @item
14897 Some equation like:
14898 @example
14899 qp=2+2*sin(PI*qp)
14900 @end example
14901 @end itemize
14902
14903 @section random
14904
14905 Flush video frames from internal cache of frames into a random order.
14906 No frame is discarded.
14907 Inspired by @ref{frei0r} nervous filter.
14908
14909 @table @option
14910 @item frames
14911 Set size in number of frames of internal cache, in range from @code{2} to
14912 @code{512}. Default is @code{30}.
14913
14914 @item seed
14915 Set seed for random number generator, must be an integer included between
14916 @code{0} and @code{UINT32_MAX}. If not specified, or if explicitly set to
14917 less than @code{0}, the filter will try to use a good random seed on a
14918 best effort basis.
14919 @end table
14920
14921 @section readeia608
14922
14923 Read closed captioning (EIA-608) information from the top lines of a video frame.
14924
14925 This filter adds frame metadata for @code{lavfi.readeia608.X.cc} and
14926 @code{lavfi.readeia608.X.line}, where @code{X} is the number of the identified line
14927 with EIA-608 data (starting from 0). A description of each metadata value follows:
14928
14929 @table @option
14930 @item lavfi.readeia608.X.cc
14931 The two bytes stored as EIA-608 data (printed in hexadecimal).
14932
14933 @item lavfi.readeia608.X.line
14934 The number of the line on which the EIA-608 data was identified and read.
14935 @end table
14936
14937 This filter accepts the following options:
14938
14939 @table @option
14940 @item scan_min
14941 Set the line to start scanning for EIA-608 data. Default is @code{0}.
14942
14943 @item scan_max
14944 Set the line to end scanning for EIA-608 data. Default is @code{29}.
14945
14946 @item mac
14947 Set minimal acceptable amplitude change for sync codes detection.
14948 Default is @code{0.2}. Allowed range is @code{[0.001 - 1]}.
14949
14950 @item spw
14951 Set the ratio of width reserved for sync code detection.
14952 Default is @code{0.27}. Allowed range is @code{[0.01 - 0.7]}.
14953
14954 @item mhd
14955 Set the max peaks height difference for sync code detection.
14956 Default is @code{0.1}. Allowed range is @code{[0.0 - 0.5]}.
14957
14958 @item mpd
14959 Set max peaks period difference for sync code detection.
14960 Default is @code{0.1}. Allowed range is @code{[0.0 - 0.5]}.
14961
14962 @item msd
14963 Set the first two max start code bits differences.
14964 Default is @code{0.02}. Allowed range is @code{[0.0 - 0.5]}.
14965
14966 @item bhd
14967 Set the minimum ratio of bits height compared to 3rd start code bit.
14968 Default is @code{0.75}. Allowed range is @code{[0.01 - 1]}.
14969
14970 @item th_w
14971 Set the white color threshold. Default is @code{0.35}. Allowed range is @code{[0.1 - 1]}.
14972
14973 @item th_b
14974 Set the black color threshold. Default is @code{0.15}. Allowed range is @code{[0.0 - 0.5]}.
14975
14976 @item chp
14977 Enable checking the parity bit. In the event of a parity error, the filter will output
14978 @code{0x00} for that character. Default is false.
14979
14980 @item lp
14981 Lowpass lines prior to further processing. Default is disabled.
14982 @end table
14983
14984 @subsection Examples
14985
14986 @itemize
14987 @item
14988 Output a csv with presentation time and the first two lines of identified EIA-608 captioning data.
14989 @example
14990 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
14991 @end example
14992 @end itemize
14993
14994 @section readvitc
14995
14996 Read vertical interval timecode (VITC) information from the top lines of a
14997 video frame.
14998
14999 The filter adds frame metadata key @code{lavfi.readvitc.tc_str} with the
15000 timecode value, if a valid timecode has been detected. Further metadata key
15001 @code{lavfi.readvitc.found} is set to 0/1 depending on whether
15002 timecode data has been found or not.
15003
15004 This filter accepts the following options:
15005
15006 @table @option
15007 @item scan_max
15008 Set the maximum number of lines to scan for VITC data. If the value is set to
15009 @code{-1} the full video frame is scanned. Default is @code{45}.
15010
15011 @item thr_b
15012 Set the luma threshold for black. Accepts float numbers in the range [0.0,1.0],
15013 default value is @code{0.2}. The value must be equal or less than @code{thr_w}.
15014
15015 @item thr_w
15016 Set the luma threshold for white. Accepts float numbers in the range [0.0,1.0],
15017 default value is @code{0.6}. The value must be equal or greater than @code{thr_b}.
15018 @end table
15019
15020 @subsection Examples
15021
15022 @itemize
15023 @item
15024 Detect and draw VITC data onto the video frame; if no valid VITC is detected,
15025 draw @code{--:--:--:--} as a placeholder:
15026 @example
15027 ffmpeg -i input.avi -filter:v 'readvitc,drawtext=fontfile=FreeMono.ttf:text=%@{metadata\\:lavfi.readvitc.tc_str\\:--\\\\\\:--\\\\\\:--\\\\\\:--@}:x=(w-tw)/2:y=400-ascent'
15028 @end example
15029 @end itemize
15030
15031 @section remap
15032
15033 Remap pixels using 2nd: Xmap and 3rd: Ymap input video stream.
15034
15035 Destination pixel at position (X, Y) will be picked from source (x, y) position
15036 where x = Xmap(X, Y) and y = Ymap(X, Y). If mapping values are out of range, zero
15037 value for pixel will be used for destination pixel.
15038
15039 Xmap and Ymap input video streams must be of same dimensions. Output video stream
15040 will have Xmap/Ymap video stream dimensions.
15041 Xmap and Ymap input video streams are 16bit depth, single channel.
15042
15043 @table @option
15044 @item format
15045 Specify pixel format of output from this filter. Can be @code{color} or @code{gray}.
15046 Default is @code{color}.
15047 @end table
15048
15049 @section removegrain
15050
15051 The removegrain filter is a spatial denoiser for progressive video.
15052
15053 @table @option
15054 @item m0
15055 Set mode for the first plane.
15056
15057 @item m1
15058 Set mode for the second plane.
15059
15060 @item m2
15061 Set mode for the third plane.
15062
15063 @item m3
15064 Set mode for the fourth plane.
15065 @end table
15066
15067 Range of mode is from 0 to 24. Description of each mode follows:
15068
15069 @table @var
15070 @item 0
15071 Leave input plane unchanged. Default.
15072
15073 @item 1
15074 Clips the pixel with the minimum and maximum of the 8 neighbour pixels.
15075
15076 @item 2
15077 Clips the pixel with the second minimum and maximum of the 8 neighbour pixels.
15078
15079 @item 3
15080 Clips the pixel with the third minimum and maximum of the 8 neighbour pixels.
15081
15082 @item 4
15083 Clips the pixel with the fourth minimum and maximum of the 8 neighbour pixels.
15084 This is equivalent to a median filter.
15085
15086 @item 5
15087 Line-sensitive clipping giving the minimal change.
15088
15089 @item 6
15090 Line-sensitive clipping, intermediate.
15091
15092 @item 7
15093 Line-sensitive clipping, intermediate.
15094
15095 @item 8
15096 Line-sensitive clipping, intermediate.
15097
15098 @item 9
15099 Line-sensitive clipping on a line where the neighbours pixels are the closest.
15100
15101 @item 10
15102 Replaces the target pixel with the closest neighbour.
15103
15104 @item 11
15105 [1 2 1] horizontal and vertical kernel blur.
15106
15107 @item 12
15108 Same as mode 11.
15109
15110 @item 13
15111 Bob mode, interpolates top field from the line where the neighbours
15112 pixels are the closest.
15113
15114 @item 14
15115 Bob mode, interpolates bottom field from the line where the neighbours
15116 pixels are the closest.
15117
15118 @item 15
15119 Bob mode, interpolates top field. Same as 13 but with a more complicated
15120 interpolation formula.
15121
15122 @item 16
15123 Bob mode, interpolates bottom field. Same as 14 but with a more complicated
15124 interpolation formula.
15125
15126 @item 17
15127 Clips the pixel with the minimum and maximum of respectively the maximum and
15128 minimum of each pair of opposite neighbour pixels.
15129
15130 @item 18
15131 Line-sensitive clipping using opposite neighbours whose greatest distance from
15132 the current pixel is minimal.
15133
15134 @item 19
15135 Replaces the pixel with the average of its 8 neighbours.
15136
15137 @item 20
15138 Averages the 9 pixels ([1 1 1] horizontal and vertical blur).
15139
15140 @item 21
15141 Clips pixels using the averages of opposite neighbour.
15142
15143 @item 22
15144 Same as mode 21 but simpler and faster.
15145
15146 @item 23
15147 Small edge and halo removal, but reputed useless.
15148
15149 @item 24
15150 Similar as 23.
15151 @end table
15152
15153 @section removelogo
15154
15155 Suppress a TV station logo, using an image file to determine which
15156 pixels comprise the logo. It works by filling in the pixels that
15157 comprise the logo with neighboring pixels.
15158
15159 The filter accepts the following options:
15160
15161 @table @option
15162 @item filename, f
15163 Set the filter bitmap file, which can be any image format supported by
15164 libavformat. The width and height of the image file must match those of the
15165 video stream being processed.
15166 @end table
15167
15168 Pixels in the provided bitmap image with a value of zero are not
15169 considered part of the logo, non-zero pixels are considered part of
15170 the logo. If you use white (255) for the logo and black (0) for the
15171 rest, you will be safe. For making the filter bitmap, it is
15172 recommended to take a screen capture of a black frame with the logo
15173 visible, and then using a threshold filter followed by the erode
15174 filter once or twice.
15175
15176 If needed, little splotches can be fixed manually. Remember that if
15177 logo pixels are not covered, the filter quality will be much
15178 reduced. Marking too many pixels as part of the logo does not hurt as
15179 much, but it will increase the amount of blurring needed to cover over
15180 the image and will destroy more information than necessary, and extra
15181 pixels will slow things down on a large logo.
15182
15183 @section repeatfields
15184
15185 This filter uses the repeat_field flag from the Video ES headers and hard repeats
15186 fields based on its value.
15187
15188 @section reverse
15189
15190 Reverse a video clip.
15191
15192 Warning: This filter requires memory to buffer the entire clip, so trimming
15193 is suggested.
15194
15195 @subsection Examples
15196
15197 @itemize
15198 @item
15199 Take the first 5 seconds of a clip, and reverse it.
15200 @example
15201 trim=end=5,reverse
15202 @end example
15203 @end itemize
15204
15205 @section rgbashift
15206 Shift R/G/B/A pixels horizontally and/or vertically.
15207
15208 The filter accepts the following options:
15209 @table @option
15210 @item rh
15211 Set amount to shift red horizontally.
15212 @item rv
15213 Set amount to shift red vertically.
15214 @item gh
15215 Set amount to shift green horizontally.
15216 @item gv
15217 Set amount to shift green vertically.
15218 @item bh
15219 Set amount to shift blue horizontally.
15220 @item bv
15221 Set amount to shift blue vertically.
15222 @item ah
15223 Set amount to shift alpha horizontally.
15224 @item av
15225 Set amount to shift alpha vertically.
15226 @item edge
15227 Set edge mode, can be @var{smear}, default, or @var{warp}.
15228 @end table
15229
15230 @section roberts
15231 Apply roberts cross operator to input video stream.
15232
15233 The filter accepts the following option:
15234
15235 @table @option
15236 @item planes
15237 Set which planes will be processed, unprocessed planes will be copied.
15238 By default value 0xf, all planes will be processed.
15239
15240 @item scale
15241 Set value which will be multiplied with filtered result.
15242
15243 @item delta
15244 Set value which will be added to filtered result.
15245 @end table
15246
15247 @section rotate
15248
15249 Rotate video by an arbitrary angle expressed in radians.
15250
15251 The filter accepts the following options:
15252
15253 A description of the optional parameters follows.
15254 @table @option
15255 @item angle, a
15256 Set an expression for the angle by which to rotate the input video
15257 clockwise, expressed as a number of radians. A negative value will
15258 result in a counter-clockwise rotation. By default it is set to "0".
15259
15260 This expression is evaluated for each frame.
15261
15262 @item out_w, ow
15263 Set the output width expression, default value is "iw".
15264 This expression is evaluated just once during configuration.
15265
15266 @item out_h, oh
15267 Set the output height expression, default value is "ih".
15268 This expression is evaluated just once during configuration.
15269
15270 @item bilinear
15271 Enable bilinear interpolation if set to 1, a value of 0 disables
15272 it. Default value is 1.
15273
15274 @item fillcolor, c
15275 Set the color used to fill the output area not covered by the rotated
15276 image. For the general syntax of this option, check the
15277 @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
15278 If the special value "none" is selected then no
15279 background is printed (useful for example if the background is never shown).
15280
15281 Default value is "black".
15282 @end table
15283
15284 The expressions for the angle and the output size can contain the
15285 following constants and functions:
15286
15287 @table @option
15288 @item n
15289 sequential number of the input frame, starting from 0. It is always NAN
15290 before the first frame is filtered.
15291
15292 @item t
15293 time in seconds of the input frame, it is set to 0 when the filter is
15294 configured. It is always NAN before the first frame is filtered.
15295
15296 @item hsub
15297 @item vsub
15298 horizontal and vertical chroma subsample values. For example for the
15299 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
15300
15301 @item in_w, iw
15302 @item in_h, ih
15303 the input video width and height
15304
15305 @item out_w, ow
15306 @item out_h, oh
15307 the output width and height, that is the size of the padded area as
15308 specified by the @var{width} and @var{height} expressions
15309
15310 @item rotw(a)
15311 @item roth(a)
15312 the minimal width/height required for completely containing the input
15313 video rotated by @var{a} radians.
15314
15315 These are only available when computing the @option{out_w} and
15316 @option{out_h} expressions.
15317 @end table
15318
15319 @subsection Examples
15320
15321 @itemize
15322 @item
15323 Rotate the input by PI/6 radians clockwise:
15324 @example
15325 rotate=PI/6
15326 @end example
15327
15328 @item
15329 Rotate the input by PI/6 radians counter-clockwise:
15330 @example
15331 rotate=-PI/6
15332 @end example
15333
15334 @item
15335 Rotate the input by 45 degrees clockwise:
15336 @example
15337 rotate=45*PI/180
15338 @end example
15339
15340 @item
15341 Apply a constant rotation with period T, starting from an angle of PI/3:
15342 @example
15343 rotate=PI/3+2*PI*t/T
15344 @end example
15345
15346 @item
15347 Make the input video rotation oscillating with a period of T
15348 seconds and an amplitude of A radians:
15349 @example
15350 rotate=A*sin(2*PI/T*t)
15351 @end example
15352
15353 @item
15354 Rotate the video, output size is chosen so that the whole rotating
15355 input video is always completely contained in the output:
15356 @example
15357 rotate='2*PI*t:ow=hypot(iw,ih):oh=ow'
15358 @end example
15359
15360 @item
15361 Rotate the video, reduce the output size so that no background is ever
15362 shown:
15363 @example
15364 rotate=2*PI*t:ow='min(iw,ih)/sqrt(2)':oh=ow:c=none
15365 @end example
15366 @end itemize
15367
15368 @subsection Commands
15369
15370 The filter supports the following commands:
15371
15372 @table @option
15373 @item a, angle
15374 Set the angle expression.
15375 The command accepts the same syntax of the corresponding option.
15376
15377 If the specified expression is not valid, it is kept at its current
15378 value.
15379 @end table
15380
15381 @section sab
15382
15383 Apply Shape Adaptive Blur.
15384
15385 The filter accepts the following options:
15386
15387 @table @option
15388 @item luma_radius, lr
15389 Set luma blur filter strength, must be a value in range 0.1-4.0, default
15390 value is 1.0. A greater value will result in a more blurred image, and
15391 in slower processing.
15392
15393 @item luma_pre_filter_radius, lpfr
15394 Set luma pre-filter radius, must be a value in the 0.1-2.0 range, default
15395 value is 1.0.
15396
15397 @item luma_strength, ls
15398 Set luma maximum difference between pixels to still be considered, must
15399 be a value in the 0.1-100.0 range, default value is 1.0.
15400
15401 @item chroma_radius, cr
15402 Set chroma blur filter strength, must be a value in range -0.9-4.0. A
15403 greater value will result in a more blurred image, and in slower
15404 processing.
15405
15406 @item chroma_pre_filter_radius, cpfr
15407 Set chroma pre-filter radius, must be a value in the -0.9-2.0 range.
15408
15409 @item chroma_strength, cs
15410 Set chroma maximum difference between pixels to still be considered,
15411 must be a value in the -0.9-100.0 range.
15412 @end table
15413
15414 Each chroma option value, if not explicitly specified, is set to the
15415 corresponding luma option value.
15416
15417 @anchor{scale}
15418 @section scale
15419
15420 Scale (resize) the input video, using the libswscale library.
15421
15422 The scale filter forces the output display aspect ratio to be the same
15423 of the input, by changing the output sample aspect ratio.
15424
15425 If the input image format is different from the format requested by
15426 the next filter, the scale filter will convert the input to the
15427 requested format.
15428
15429 @subsection Options
15430 The filter accepts the following options, or any of the options
15431 supported by the libswscale scaler.
15432
15433 See @ref{scaler_options,,the ffmpeg-scaler manual,ffmpeg-scaler} for
15434 the complete list of scaler options.
15435
15436 @table @option
15437 @item width, w
15438 @item height, h
15439 Set the output video dimension expression. Default value is the input
15440 dimension.
15441
15442 If the @var{width} or @var{w} value is 0, the input width is used for
15443 the output. If the @var{height} or @var{h} value is 0, the input height
15444 is used for the output.
15445
15446 If one and only one of the values is -n with n >= 1, the scale filter
15447 will use a value that maintains the aspect ratio of the input image,
15448 calculated from the other specified dimension. After that it will,
15449 however, make sure that the calculated dimension is divisible by n and
15450 adjust the value if necessary.
15451
15452 If both values are -n with n >= 1, the behavior will be identical to
15453 both values being set to 0 as previously detailed.
15454
15455 See below for the list of accepted constants for use in the dimension
15456 expression.
15457
15458 @item eval
15459 Specify when to evaluate @var{width} and @var{height} expression. It accepts the following values:
15460
15461 @table @samp
15462 @item init
15463 Only evaluate expressions once during the filter initialization or when a command is processed.
15464
15465 @item frame
15466 Evaluate expressions for each incoming frame.
15467
15468 @end table
15469
15470 Default value is @samp{init}.
15471
15472
15473 @item interl
15474 Set the interlacing mode. It accepts the following values:
15475
15476 @table @samp
15477 @item 1
15478 Force interlaced aware scaling.
15479
15480 @item 0
15481 Do not apply interlaced scaling.
15482
15483 @item -1
15484 Select interlaced aware scaling depending on whether the source frames
15485 are flagged as interlaced or not.
15486 @end table
15487
15488 Default value is @samp{0}.
15489
15490 @item flags
15491 Set libswscale scaling flags. See
15492 @ref{sws_flags,,the ffmpeg-scaler manual,ffmpeg-scaler} for the
15493 complete list of values. If not explicitly specified the filter applies
15494 the default flags.
15495
15496
15497 @item param0, param1
15498 Set libswscale input parameters for scaling algorithms that need them. See
15499 @ref{sws_params,,the ffmpeg-scaler manual,ffmpeg-scaler} for the
15500 complete documentation. If not explicitly specified the filter applies
15501 empty parameters.
15502
15503
15504
15505 @item size, s
15506 Set the video size. For the syntax of this option, check the
15507 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
15508
15509 @item in_color_matrix
15510 @item out_color_matrix
15511 Set in/output YCbCr color space type.
15512
15513 This allows the autodetected value to be overridden as well as allows forcing
15514 a specific value used for the output and encoder.
15515
15516 If not specified, the color space type depends on the pixel format.
15517
15518 Possible values:
15519
15520 @table @samp
15521 @item auto
15522 Choose automatically.
15523
15524 @item bt709
15525 Format conforming to International Telecommunication Union (ITU)
15526 Recommendation BT.709.
15527
15528 @item fcc
15529 Set color space conforming to the United States Federal Communications
15530 Commission (FCC) Code of Federal Regulations (CFR) Title 47 (2003) 73.682 (a).
15531
15532 @item bt601
15533 @item bt470
15534 @item smpte170m
15535 Set color space conforming to:
15536
15537 @itemize
15538 @item
15539 ITU Radiocommunication Sector (ITU-R) Recommendation BT.601
15540
15541 @item
15542 ITU-R Rec. BT.470-6 (1998) Systems B, B1, and G
15543
15544 @item
15545 Society of Motion Picture and Television Engineers (SMPTE) ST 170:2004
15546
15547 @end itemize
15548
15549 @item smpte240m
15550 Set color space conforming to SMPTE ST 240:1999.
15551
15552 @item bt2020
15553 Set color space conforming to ITU-R BT.2020 non-constant luminance system.
15554 @end table
15555
15556 @item in_range
15557 @item out_range
15558 Set in/output YCbCr sample range.
15559
15560 This allows the autodetected value to be overridden as well as allows forcing
15561 a specific value used for the output and encoder. If not specified, the
15562 range depends on the pixel format. Possible values:
15563
15564 @table @samp
15565 @item auto/unknown
15566 Choose automatically.
15567
15568 @item jpeg/full/pc
15569 Set full range (0-255 in case of 8-bit luma).
15570
15571 @item mpeg/limited/tv
15572 Set "MPEG" range (16-235 in case of 8-bit luma).
15573 @end table
15574
15575 @item force_original_aspect_ratio
15576 Enable decreasing or increasing output video width or height if necessary to
15577 keep the original aspect ratio. Possible values:
15578
15579 @table @samp
15580 @item disable
15581 Scale the video as specified and disable this feature.
15582
15583 @item decrease
15584 The output video dimensions will automatically be decreased if needed.
15585
15586 @item increase
15587 The output video dimensions will automatically be increased if needed.
15588
15589 @end table
15590
15591 One useful instance of this option is that when you know a specific device's
15592 maximum allowed resolution, you can use this to limit the output video to
15593 that, while retaining the aspect ratio. For example, device A allows
15594 1280x720 playback, and your video is 1920x800. Using this option (set it to
15595 decrease) and specifying 1280x720 to the command line makes the output
15596 1280x533.
15597
15598 Please note that this is a different thing than specifying -1 for @option{w}
15599 or @option{h}, you still need to specify the output resolution for this option
15600 to work.
15601
15602 @item force_divisible_by
15603 Ensures that both the output dimensions, width and height, are divisible by the
15604 given integer when used together with @option{force_original_aspect_ratio}. This
15605 works similar to using @code{-n} in the @option{w} and @option{h} options.
15606
15607 This option respects the value set for @option{force_original_aspect_ratio},
15608 increasing or decreasing the resolution accordingly. The video's aspect ratio
15609 may be slightly modified.
15610
15611 This option can be handy if you need to have a video fit within or exceed
15612 a defined resolution using @option{force_original_aspect_ratio} but also have
15613 encoder restrictions on width or height divisibility.
15614
15615 @end table
15616
15617 The values of the @option{w} and @option{h} options are expressions
15618 containing the following constants:
15619
15620 @table @var
15621 @item in_w
15622 @item in_h
15623 The input width and height
15624
15625 @item iw
15626 @item ih
15627 These are the same as @var{in_w} and @var{in_h}.
15628
15629 @item out_w
15630 @item out_h
15631 The output (scaled) width and height
15632
15633 @item ow
15634 @item oh
15635 These are the same as @var{out_w} and @var{out_h}
15636
15637 @item a
15638 The same as @var{iw} / @var{ih}
15639
15640 @item sar
15641 input sample aspect ratio
15642
15643 @item dar
15644 The input display aspect ratio. Calculated from @code{(iw / ih) * sar}.
15645
15646 @item hsub
15647 @item vsub
15648 horizontal and vertical input chroma subsample values. For example for the
15649 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
15650
15651 @item ohsub
15652 @item ovsub
15653 horizontal and vertical output chroma subsample values. For example for the
15654 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
15655 @end table
15656
15657 @subsection Examples
15658
15659 @itemize
15660 @item
15661 Scale the input video to a size of 200x100
15662 @example
15663 scale=w=200:h=100
15664 @end example
15665
15666 This is equivalent to:
15667 @example
15668 scale=200:100
15669 @end example
15670
15671 or:
15672 @example
15673 scale=200x100
15674 @end example
15675
15676 @item
15677 Specify a size abbreviation for the output size:
15678 @example
15679 scale=qcif
15680 @end example
15681
15682 which can also be written as:
15683 @example
15684 scale=size=qcif
15685 @end example
15686
15687 @item
15688 Scale the input to 2x:
15689 @example
15690 scale=w=2*iw:h=2*ih
15691 @end example
15692
15693 @item
15694 The above is the same as:
15695 @example
15696 scale=2*in_w:2*in_h
15697 @end example
15698
15699 @item
15700 Scale the input to 2x with forced interlaced scaling:
15701 @example
15702 scale=2*iw:2*ih:interl=1
15703 @end example
15704
15705 @item
15706 Scale the input to half size:
15707 @example
15708 scale=w=iw/2:h=ih/2
15709 @end example
15710
15711 @item
15712 Increase the width, and set the height to the same size:
15713 @example
15714 scale=3/2*iw:ow
15715 @end example
15716
15717 @item
15718 Seek Greek harmony:
15719 @example
15720 scale=iw:1/PHI*iw
15721 scale=ih*PHI:ih
15722 @end example
15723
15724 @item
15725 Increase the height, and set the width to 3/2 of the height:
15726 @example
15727 scale=w=3/2*oh:h=3/5*ih
15728 @end example
15729
15730 @item
15731 Increase the size, making the size a multiple of the chroma
15732 subsample values:
15733 @example
15734 scale="trunc(3/2*iw/hsub)*hsub:trunc(3/2*ih/vsub)*vsub"
15735 @end example
15736
15737 @item
15738 Increase the width to a maximum of 500 pixels,
15739 keeping the same aspect ratio as the input:
15740 @example
15741 scale=w='min(500\, iw*3/2):h=-1'
15742 @end example
15743
15744 @item
15745 Make pixels square by combining scale and setsar:
15746 @example
15747 scale='trunc(ih*dar):ih',setsar=1/1
15748 @end example
15749
15750 @item
15751 Make pixels square by combining scale and setsar,
15752 making sure the resulting resolution is even (required by some codecs):
15753 @example
15754 scale='trunc(ih*dar/2)*2:trunc(ih/2)*2',setsar=1/1
15755 @end example
15756 @end itemize
15757
15758 @subsection Commands
15759
15760 This filter supports the following commands:
15761 @table @option
15762 @item width, w
15763 @item height, h
15764 Set the output video dimension expression.
15765 The command accepts the same syntax of the corresponding option.
15766
15767 If the specified expression is not valid, it is kept at its current
15768 value.
15769 @end table
15770
15771 @section scale_npp
15772
15773 Use the NVIDIA Performance Primitives (libnpp) to perform scaling and/or pixel
15774 format conversion on CUDA video frames. Setting the output width and height
15775 works in the same way as for the @var{scale} filter.
15776
15777 The following additional options are accepted:
15778 @table @option
15779 @item format
15780 The pixel format of the output CUDA frames. If set to the string "same" (the
15781 default), the input format will be kept. Note that automatic format negotiation
15782 and conversion is not yet supported for hardware frames
15783
15784 @item interp_algo
15785 The interpolation algorithm used for resizing. One of the following:
15786 @table @option
15787 @item nn
15788 Nearest neighbour.
15789
15790 @item linear
15791 @item cubic
15792 @item cubic2p_bspline
15793 2-parameter cubic (B=1, C=0)
15794
15795 @item cubic2p_catmullrom
15796 2-parameter cubic (B=0, C=1/2)
15797
15798 @item cubic2p_b05c03
15799 2-parameter cubic (B=1/2, C=3/10)
15800
15801 @item super
15802 Supersampling
15803
15804 @item lanczos
15805 @end table
15806
15807 @end table
15808
15809 @section scale2ref
15810
15811 Scale (resize) the input video, based on a reference video.
15812
15813 See the scale filter for available options, scale2ref supports the same but
15814 uses the reference video instead of the main input as basis. scale2ref also
15815 supports the following additional constants for the @option{w} and
15816 @option{h} options:
15817
15818 @table @var
15819 @item main_w
15820 @item main_h
15821 The main input video's width and height
15822
15823 @item main_a
15824 The same as @var{main_w} / @var{main_h}
15825
15826 @item main_sar
15827 The main input video's sample aspect ratio
15828
15829 @item main_dar, mdar
15830 The main input video's display aspect ratio. Calculated from
15831 @code{(main_w / main_h) * main_sar}.
15832
15833 @item main_hsub
15834 @item main_vsub
15835 The main input video's horizontal and vertical chroma subsample values.
15836 For example for the pixel format "yuv422p" @var{hsub} is 2 and @var{vsub}
15837 is 1.
15838 @end table
15839
15840 @subsection Examples
15841
15842 @itemize
15843 @item
15844 Scale a subtitle stream (b) to match the main video (a) in size before overlaying
15845 @example
15846 'scale2ref[b][a];[a][b]overlay'
15847 @end example
15848
15849 @item
15850 Scale a logo to 1/10th the height of a video, while preserving its display aspect ratio.
15851 @example
15852 [logo-in][video-in]scale2ref=w=oh*mdar:h=ih/10[logo-out][video-out]
15853 @end example
15854 @end itemize
15855
15856 @section scroll
15857 Scroll input video horizontally and/or vertically by constant speed.
15858
15859 The filter accepts the following options:
15860 @table @option
15861 @item horizontal, h
15862 Set the horizontal scrolling speed. Default is 0. Allowed range is from -1 to 1.
15863 Negative values changes scrolling direction.
15864
15865 @item vertical, v
15866 Set the vertical scrolling speed. Default is 0. Allowed range is from -1 to 1.
15867 Negative values changes scrolling direction.
15868
15869 @item hpos
15870 Set the initial horizontal scrolling position. Default is 0. Allowed range is from 0 to 1.
15871
15872 @item vpos
15873 Set the initial vertical scrolling position. Default is 0. Allowed range is from 0 to 1.
15874 @end table
15875
15876 @subsection Commands
15877
15878 This filter supports the following @ref{commands}:
15879 @table @option
15880 @item horizontal, h
15881 Set the horizontal scrolling speed.
15882 @item vertical, v
15883 Set the vertical scrolling speed.
15884 @end table
15885
15886 @anchor{selectivecolor}
15887 @section selectivecolor
15888
15889 Adjust cyan, magenta, yellow and black (CMYK) to certain ranges of colors (such
15890 as "reds", "yellows", "greens", "cyans", ...). The adjustment range is defined
15891 by the "purity" of the color (that is, how saturated it already is).
15892
15893 This filter is similar to the Adobe Photoshop Selective Color tool.
15894
15895 The filter accepts the following options:
15896
15897 @table @option
15898 @item correction_method
15899 Select color correction method.
15900
15901 Available values are:
15902 @table @samp
15903 @item absolute
15904 Specified adjustments are applied "as-is" (added/subtracted to original pixel
15905 component value).
15906 @item relative
15907 Specified adjustments are relative to the original component value.
15908 @end table
15909 Default is @code{absolute}.
15910 @item reds
15911 Adjustments for red pixels (pixels where the red component is the maximum)
15912 @item yellows
15913 Adjustments for yellow pixels (pixels where the blue component is the minimum)
15914 @item greens
15915 Adjustments for green pixels (pixels where the green component is the maximum)
15916 @item cyans
15917 Adjustments for cyan pixels (pixels where the red component is the minimum)
15918 @item blues
15919 Adjustments for blue pixels (pixels where the blue component is the maximum)
15920 @item magentas
15921 Adjustments for magenta pixels (pixels where the green component is the minimum)
15922 @item whites
15923 Adjustments for white pixels (pixels where all components are greater than 128)
15924 @item neutrals
15925 Adjustments for all pixels except pure black and pure white
15926 @item blacks
15927 Adjustments for black pixels (pixels where all components are lesser than 128)
15928 @item psfile
15929 Specify a Photoshop selective color file (@code{.asv}) to import the settings from.
15930 @end table
15931
15932 All the adjustment settings (@option{reds}, @option{yellows}, ...) accept up to
15933 4 space separated floating point adjustment values in the [-1,1] range,
15934 respectively to adjust the amount of cyan, magenta, yellow and black for the
15935 pixels of its range.
15936
15937 @subsection Examples
15938
15939 @itemize
15940 @item
15941 Increase cyan by 50% and reduce yellow by 33% in every green areas, and
15942 increase magenta by 27% in blue areas:
15943 @example
15944 selectivecolor=greens=.5 0 -.33 0:blues=0 .27
15945 @end example
15946
15947 @item
15948 Use a Photoshop selective color preset:
15949 @example
15950 selectivecolor=psfile=MySelectiveColorPresets/Misty.asv
15951 @end example
15952 @end itemize
15953
15954 @anchor{separatefields}
15955 @section separatefields
15956
15957 The @code{separatefields} takes a frame-based video input and splits
15958 each frame into its components fields, producing a new half height clip
15959 with twice the frame rate and twice the frame count.
15960
15961 This filter use field-dominance information in frame to decide which
15962 of each pair of fields to place first in the output.
15963 If it gets it wrong use @ref{setfield} filter before @code{separatefields} filter.
15964
15965 @section setdar, setsar
15966
15967 The @code{setdar} filter sets the Display Aspect Ratio for the filter
15968 output video.
15969
15970 This is done by changing the specified Sample (aka Pixel) Aspect
15971 Ratio, according to the following equation:
15972 @example
15973 @var{DAR} = @var{HORIZONTAL_RESOLUTION} / @var{VERTICAL_RESOLUTION} * @var{SAR}
15974 @end example
15975
15976 Keep in mind that the @code{setdar} filter does not modify the pixel
15977 dimensions of the video frame. Also, the display aspect ratio set by
15978 this filter may be changed by later filters in the filterchain,
15979 e.g. in case of scaling or if another "setdar" or a "setsar" filter is
15980 applied.
15981
15982 The @code{setsar} filter sets the Sample (aka Pixel) Aspect Ratio for
15983 the filter output video.
15984
15985 Note that as a consequence of the application of this filter, the
15986 output display aspect ratio will change according to the equation
15987 above.
15988
15989 Keep in mind that the sample aspect ratio set by the @code{setsar}
15990 filter may be changed by later filters in the filterchain, e.g. if
15991 another "setsar" or a "setdar" filter is applied.
15992
15993 It accepts the following parameters:
15994
15995 @table @option
15996 @item r, ratio, dar (@code{setdar} only), sar (@code{setsar} only)
15997 Set the aspect ratio used by the filter.
15998
15999 The parameter can be a floating point number string, an expression, or
16000 a string of the form @var{num}:@var{den}, where @var{num} and
16001 @var{den} are the numerator and denominator of the aspect ratio. If
16002 the parameter is not specified, it is assumed the value "0".
16003 In case the form "@var{num}:@var{den}" is used, the @code{:} character
16004 should be escaped.
16005
16006 @item max
16007 Set the maximum integer value to use for expressing numerator and
16008 denominator when reducing the expressed aspect ratio to a rational.
16009 Default value is @code{100}.
16010
16011 @end table
16012
16013 The parameter @var{sar} is an expression containing
16014 the following constants:
16015
16016 @table @option
16017 @item E, PI, PHI
16018 These are approximated values for the mathematical constants e
16019 (Euler's number), pi (Greek pi), and phi (the golden ratio).
16020
16021 @item w, h
16022 The input width and height.
16023
16024 @item a
16025 These are the same as @var{w} / @var{h}.
16026
16027 @item sar
16028 The input sample aspect ratio.
16029
16030 @item dar
16031 The input display aspect ratio. It is the same as
16032 (@var{w} / @var{h}) * @var{sar}.
16033
16034 @item hsub, vsub
16035 Horizontal and vertical chroma subsample values. For example, for the
16036 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
16037 @end table
16038
16039 @subsection Examples
16040
16041 @itemize
16042
16043 @item
16044 To change the display aspect ratio to 16:9, specify one of the following:
16045 @example
16046 setdar=dar=1.77777
16047 setdar=dar=16/9
16048 @end example
16049
16050 @item
16051 To change the sample aspect ratio to 10:11, specify:
16052 @example
16053 setsar=sar=10/11
16054 @end example
16055
16056 @item
16057 To set a display aspect ratio of 16:9, and specify a maximum integer value of
16058 1000 in the aspect ratio reduction, use the command:
16059 @example
16060 setdar=ratio=16/9:max=1000
16061 @end example
16062
16063 @end itemize
16064
16065 @anchor{setfield}
16066 @section setfield
16067
16068 Force field for the output video frame.
16069
16070 The @code{setfield} filter marks the interlace type field for the
16071 output frames. It does not change the input frame, but only sets the
16072 corresponding property, which affects how the frame is treated by
16073 following filters (e.g. @code{fieldorder} or @code{yadif}).
16074
16075 The filter accepts the following options:
16076
16077 @table @option
16078
16079 @item mode
16080 Available values are:
16081
16082 @table @samp
16083 @item auto
16084 Keep the same field property.
16085
16086 @item bff
16087 Mark the frame as bottom-field-first.
16088
16089 @item tff
16090 Mark the frame as top-field-first.
16091
16092 @item prog
16093 Mark the frame as progressive.
16094 @end table
16095 @end table
16096
16097 @anchor{setparams}
16098 @section setparams
16099
16100 Force frame parameter for the output video frame.
16101
16102 The @code{setparams} filter marks interlace and color range for the
16103 output frames. It does not change the input frame, but only sets the
16104 corresponding property, which affects how the frame is treated by
16105 filters/encoders.
16106
16107 @table @option
16108 @item field_mode
16109 Available values are:
16110
16111 @table @samp
16112 @item auto
16113 Keep the same field property (default).
16114
16115 @item bff
16116 Mark the frame as bottom-field-first.
16117
16118 @item tff
16119 Mark the frame as top-field-first.
16120
16121 @item prog
16122 Mark the frame as progressive.
16123 @end table
16124
16125 @item range
16126 Available values are:
16127
16128 @table @samp
16129 @item auto
16130 Keep the same color range property (default).
16131
16132 @item unspecified, unknown
16133 Mark the frame as unspecified color range.
16134
16135 @item limited, tv, mpeg
16136 Mark the frame as limited range.
16137
16138 @item full, pc, jpeg
16139 Mark the frame as full range.
16140 @end table
16141
16142 @item color_primaries
16143 Set the color primaries.
16144 Available values are:
16145
16146 @table @samp
16147 @item auto
16148 Keep the same color primaries property (default).
16149
16150 @item bt709
16151 @item unknown
16152 @item bt470m
16153 @item bt470bg
16154 @item smpte170m
16155 @item smpte240m
16156 @item film
16157 @item bt2020
16158 @item smpte428
16159 @item smpte431
16160 @item smpte432
16161 @item jedec-p22
16162 @end table
16163
16164 @item color_trc
16165 Set the color transfer.
16166 Available values are:
16167
16168 @table @samp
16169 @item auto
16170 Keep the same color trc property (default).
16171
16172 @item bt709
16173 @item unknown
16174 @item bt470m
16175 @item bt470bg
16176 @item smpte170m
16177 @item smpte240m
16178 @item linear
16179 @item log100
16180 @item log316
16181 @item iec61966-2-4
16182 @item bt1361e
16183 @item iec61966-2-1
16184 @item bt2020-10
16185 @item bt2020-12
16186 @item smpte2084
16187 @item smpte428
16188 @item arib-std-b67
16189 @end table
16190
16191 @item colorspace
16192 Set the colorspace.
16193 Available values are:
16194
16195 @table @samp
16196 @item auto
16197 Keep the same colorspace property (default).
16198
16199 @item gbr
16200 @item bt709
16201 @item unknown
16202 @item fcc
16203 @item bt470bg
16204 @item smpte170m
16205 @item smpte240m
16206 @item ycgco
16207 @item bt2020nc
16208 @item bt2020c
16209 @item smpte2085
16210 @item chroma-derived-nc
16211 @item chroma-derived-c
16212 @item ictcp
16213 @end table
16214 @end table
16215
16216 @section showinfo
16217
16218 Show a line containing various information for each input video frame.
16219 The input video is not modified.
16220
16221 This filter supports the following options:
16222
16223 @table @option
16224 @item checksum
16225 Calculate checksums of each plane. By default enabled.
16226 @end table
16227
16228 The shown line contains a sequence of key/value pairs of the form
16229 @var{key}:@var{value}.
16230
16231 The following values are shown in the output:
16232
16233 @table @option
16234 @item n
16235 The (sequential) number of the input frame, starting from 0.
16236
16237 @item pts
16238 The Presentation TimeStamp of the input frame, expressed as a number of
16239 time base units. The time base unit depends on the filter input pad.
16240
16241 @item pts_time
16242 The Presentation TimeStamp of the input frame, expressed as a number of
16243 seconds.
16244
16245 @item pos
16246 The position of the frame in the input stream, or -1 if this information is
16247 unavailable and/or meaningless (for example in case of synthetic video).
16248
16249 @item fmt
16250 The pixel format name.
16251
16252 @item sar
16253 The sample aspect ratio of the input frame, expressed in the form
16254 @var{num}/@var{den}.
16255
16256 @item s
16257 The size of the input frame. For the syntax of this option, check the
16258 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
16259
16260 @item i
16261 The type of interlaced mode ("P" for "progressive", "T" for top field first, "B"
16262 for bottom field first).
16263
16264 @item iskey
16265 This is 1 if the frame is a key frame, 0 otherwise.
16266
16267 @item type
16268 The picture type of the input frame ("I" for an I-frame, "P" for a
16269 P-frame, "B" for a B-frame, or "?" for an unknown type).
16270 Also refer to the documentation of the @code{AVPictureType} enum and of
16271 the @code{av_get_picture_type_char} function defined in
16272 @file{libavutil/avutil.h}.
16273
16274 @item checksum
16275 The Adler-32 checksum (printed in hexadecimal) of all the planes of the input frame.
16276
16277 @item plane_checksum
16278 The Adler-32 checksum (printed in hexadecimal) of each plane of the input frame,
16279 expressed in the form "[@var{c0} @var{c1} @var{c2} @var{c3}]".
16280 @end table
16281
16282 @section showpalette
16283
16284 Displays the 256 colors palette of each frame. This filter is only relevant for
16285 @var{pal8} pixel format frames.
16286
16287 It accepts the following option:
16288
16289 @table @option
16290 @item s
16291 Set the size of the box used to represent one palette color entry. Default is
16292 @code{30} (for a @code{30x30} pixel box).
16293 @end table
16294
16295 @section shuffleframes
16296
16297 Reorder and/or duplicate and/or drop video frames.
16298
16299 It accepts the following parameters:
16300
16301 @table @option
16302 @item mapping
16303 Set the destination indexes of input frames.
16304 This is space or '|' separated list of indexes that maps input frames to output
16305 frames. Number of indexes also sets maximal value that each index may have.
16306 '-1' index have special meaning and that is to drop frame.
16307 @end table
16308
16309 The first frame has the index 0. The default is to keep the input unchanged.
16310
16311 @subsection Examples
16312
16313 @itemize
16314 @item
16315 Swap second and third frame of every three frames of the input:
16316 @example
16317 ffmpeg -i INPUT -vf "shuffleframes=0 2 1" OUTPUT
16318 @end example
16319
16320 @item
16321 Swap 10th and 1st frame of every ten frames of the input:
16322 @example
16323 ffmpeg -i INPUT -vf "shuffleframes=9 1 2 3 4 5 6 7 8 0" OUTPUT
16324 @end example
16325 @end itemize
16326
16327 @section shuffleplanes
16328
16329 Reorder and/or duplicate video planes.
16330
16331 It accepts the following parameters:
16332
16333 @table @option
16334
16335 @item map0
16336 The index of the input plane to be used as the first output plane.
16337
16338 @item map1
16339 The index of the input plane to be used as the second output plane.
16340
16341 @item map2
16342 The index of the input plane to be used as the third output plane.
16343
16344 @item map3
16345 The index of the input plane to be used as the fourth output plane.
16346
16347 @end table
16348
16349 The first plane has the index 0. The default is to keep the input unchanged.
16350
16351 @subsection Examples
16352
16353 @itemize
16354 @item
16355 Swap the second and third planes of the input:
16356 @example
16357 ffmpeg -i INPUT -vf shuffleplanes=0:2:1:3 OUTPUT
16358 @end example
16359 @end itemize
16360
16361 @anchor{signalstats}
16362 @section signalstats
16363 Evaluate various visual metrics that assist in determining issues associated
16364 with the digitization of analog video media.
16365
16366 By default the filter will log these metadata values:
16367
16368 @table @option
16369 @item YMIN
16370 Display the minimal Y value contained within the input frame. Expressed in
16371 range of [0-255].
16372
16373 @item YLOW
16374 Display the Y value at the 10% percentile within the input frame. Expressed in
16375 range of [0-255].
16376
16377 @item YAVG
16378 Display the average Y value within the input frame. Expressed in range of
16379 [0-255].
16380
16381 @item YHIGH
16382 Display the Y value at the 90% percentile within the input frame. Expressed in
16383 range of [0-255].
16384
16385 @item YMAX
16386 Display the maximum Y value contained within the input frame. Expressed in
16387 range of [0-255].
16388
16389 @item UMIN
16390 Display the minimal U value contained within the input frame. Expressed in
16391 range of [0-255].
16392
16393 @item ULOW
16394 Display the U value at the 10% percentile within the input frame. Expressed in
16395 range of [0-255].
16396
16397 @item UAVG
16398 Display the average U value within the input frame. Expressed in range of
16399 [0-255].
16400
16401 @item UHIGH
16402 Display the U value at the 90% percentile within the input frame. Expressed in
16403 range of [0-255].
16404
16405 @item UMAX
16406 Display the maximum U value contained within the input frame. Expressed in
16407 range of [0-255].
16408
16409 @item VMIN
16410 Display the minimal V value contained within the input frame. Expressed in
16411 range of [0-255].
16412
16413 @item VLOW
16414 Display the V value at the 10% percentile within the input frame. Expressed in
16415 range of [0-255].
16416
16417 @item VAVG
16418 Display the average V value within the input frame. Expressed in range of
16419 [0-255].
16420
16421 @item VHIGH
16422 Display the V value at the 90% percentile within the input frame. Expressed in
16423 range of [0-255].
16424
16425 @item VMAX
16426 Display the maximum V value contained within the input frame. Expressed in
16427 range of [0-255].
16428
16429 @item SATMIN
16430 Display the minimal saturation value contained within the input frame.
16431 Expressed in range of [0-~181.02].
16432
16433 @item SATLOW
16434 Display the saturation value at the 10% percentile within the input frame.
16435 Expressed in range of [0-~181.02].
16436
16437 @item SATAVG
16438 Display the average saturation value within the input frame. Expressed in range
16439 of [0-~181.02].
16440
16441 @item SATHIGH
16442 Display the saturation value at the 90% percentile within the input frame.
16443 Expressed in range of [0-~181.02].
16444
16445 @item SATMAX
16446 Display the maximum saturation value contained within the input frame.
16447 Expressed in range of [0-~181.02].
16448
16449 @item HUEMED
16450 Display the median value for hue within the input frame. Expressed in range of
16451 [0-360].
16452
16453 @item HUEAVG
16454 Display the average value for hue within the input frame. Expressed in range of
16455 [0-360].
16456
16457 @item YDIF
16458 Display the average of sample value difference between all values of the Y
16459 plane in the current frame and corresponding values of the previous input frame.
16460 Expressed in range of [0-255].
16461
16462 @item UDIF
16463 Display the average of sample value difference between all values of the U
16464 plane in the current frame and corresponding values of the previous input frame.
16465 Expressed in range of [0-255].
16466
16467 @item VDIF
16468 Display the average of sample value difference between all values of the V
16469 plane in the current frame and corresponding values of the previous input frame.
16470 Expressed in range of [0-255].
16471
16472 @item YBITDEPTH
16473 Display bit depth of Y plane in current frame.
16474 Expressed in range of [0-16].
16475
16476 @item UBITDEPTH
16477 Display bit depth of U plane in current frame.
16478 Expressed in range of [0-16].
16479
16480 @item VBITDEPTH
16481 Display bit depth of V plane in current frame.
16482 Expressed in range of [0-16].
16483 @end table
16484
16485 The filter accepts the following options:
16486
16487 @table @option
16488 @item stat
16489 @item out
16490
16491 @option{stat} specify an additional form of image analysis.
16492 @option{out} output video with the specified type of pixel highlighted.
16493
16494 Both options accept the following values:
16495
16496 @table @samp
16497 @item tout
16498 Identify @var{temporal outliers} pixels. A @var{temporal outlier} is a pixel
16499 unlike the neighboring pixels of the same field. Examples of temporal outliers
16500 include the results of video dropouts, head clogs, or tape tracking issues.
16501
16502 @item vrep
16503 Identify @var{vertical line repetition}. Vertical line repetition includes
16504 similar rows of pixels within a frame. In born-digital video vertical line
16505 repetition is common, but this pattern is uncommon in video digitized from an
16506 analog source. When it occurs in video that results from the digitization of an
16507 analog source it can indicate concealment from a dropout compensator.
16508
16509 @item brng
16510 Identify pixels that fall outside of legal broadcast range.
16511 @end table
16512
16513 @item color, c
16514 Set the highlight color for the @option{out} option. The default color is
16515 yellow.
16516 @end table
16517
16518 @subsection Examples
16519
16520 @itemize
16521 @item
16522 Output data of various video metrics:
16523 @example
16524 ffprobe -f lavfi movie=example.mov,signalstats="stat=tout+vrep+brng" -show_frames
16525 @end example
16526
16527 @item
16528 Output specific data about the minimum and maximum values of the Y plane per frame:
16529 @example
16530 ffprobe -f lavfi movie=example.mov,signalstats -show_entries frame_tags=lavfi.signalstats.YMAX,lavfi.signalstats.YMIN
16531 @end example
16532
16533 @item
16534 Playback video while highlighting pixels that are outside of broadcast range in red.
16535 @example
16536 ffplay example.mov -vf signalstats="out=brng:color=red"
16537 @end example
16538
16539 @item
16540 Playback video with signalstats metadata drawn over the frame.
16541 @example
16542 ffplay example.mov -vf signalstats=stat=brng+vrep+tout,drawtext=fontfile=FreeSerif.ttf:textfile=signalstat_drawtext.txt
16543 @end example
16544
16545 The contents of signalstat_drawtext.txt used in the command are:
16546 @example
16547 time %@{pts:hms@}
16548 Y (%@{metadata:lavfi.signalstats.YMIN@}-%@{metadata:lavfi.signalstats.YMAX@})
16549 U (%@{metadata:lavfi.signalstats.UMIN@}-%@{metadata:lavfi.signalstats.UMAX@})
16550 V (%@{metadata:lavfi.signalstats.VMIN@}-%@{metadata:lavfi.signalstats.VMAX@})
16551 saturation maximum: %@{metadata:lavfi.signalstats.SATMAX@}
16552
16553 @end example
16554 @end itemize
16555
16556 @anchor{signature}
16557 @section signature
16558
16559 Calculates the MPEG-7 Video Signature. The filter can handle more than one
16560 input. In this case the matching between the inputs can be calculated additionally.
16561 The filter always passes through the first input. The signature of each stream can
16562 be written into a file.
16563
16564 It accepts the following options:
16565
16566 @table @option
16567 @item detectmode
16568 Enable or disable the matching process.
16569
16570 Available values are:
16571
16572 @table @samp
16573 @item off
16574 Disable the calculation of a matching (default).
16575 @item full
16576 Calculate the matching for the whole video and output whether the whole video
16577 matches or only parts.
16578 @item fast
16579 Calculate only until a matching is found or the video ends. Should be faster in
16580 some cases.
16581 @end table
16582
16583 @item nb_inputs
16584 Set the number of inputs. The option value must be a non negative integer.
16585 Default value is 1.
16586
16587 @item filename
16588 Set the path to which the output is written. If there is more than one input,
16589 the path must be a prototype, i.e. must contain %d or %0nd (where n is a positive
16590 integer), that will be replaced with the input number. If no filename is
16591 specified, no output will be written. This is the default.
16592
16593 @item format
16594 Choose the output format.
16595
16596 Available values are:
16597
16598 @table @samp
16599 @item binary
16600 Use the specified binary representation (default).
16601 @item xml
16602 Use the specified xml representation.
16603 @end table
16604
16605 @item th_d
16606 Set threshold to detect one word as similar. The option value must be an integer
16607 greater than zero. The default value is 9000.
16608
16609 @item th_dc
16610 Set threshold to detect all words as similar. The option value must be an integer
16611 greater than zero. The default value is 60000.
16612
16613 @item th_xh
16614 Set threshold to detect frames as similar. The option value must be an integer
16615 greater than zero. The default value is 116.
16616
16617 @item th_di
16618 Set the minimum length of a sequence in frames to recognize it as matching
16619 sequence. The option value must be a non negative integer value.
16620 The default value is 0.
16621
16622 @item th_it
16623 Set the minimum relation, that matching frames to all frames must have.
16624 The option value must be a double value between 0 and 1. The default value is 0.5.
16625 @end table
16626
16627 @subsection Examples
16628
16629 @itemize
16630 @item
16631 To calculate the signature of an input video and store it in signature.bin:
16632 @example
16633 ffmpeg -i input.mkv -vf signature=filename=signature.bin -map 0:v -f null -
16634 @end example
16635
16636 @item
16637 To detect whether two videos match and store the signatures in XML format in
16638 signature0.xml and signature1.xml:
16639 @example
16640 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 -
16641 @end example
16642
16643 @end itemize
16644
16645 @anchor{smartblur}
16646 @section smartblur
16647
16648 Blur the input video without impacting the outlines.
16649
16650 It accepts the following options:
16651
16652 @table @option
16653 @item luma_radius, lr
16654 Set the luma radius. The option value must be a float number in
16655 the range [0.1,5.0] that specifies the variance of the gaussian filter
16656 used to blur the image (slower if larger). Default value is 1.0.
16657
16658 @item luma_strength, ls
16659 Set the luma strength. The option value must be a float number
16660 in the range [-1.0,1.0] that configures the blurring. A value included
16661 in [0.0,1.0] will blur the image whereas a value included in
16662 [-1.0,0.0] will sharpen the image. Default value is 1.0.
16663
16664 @item luma_threshold, lt
16665 Set the luma threshold used as a coefficient to determine
16666 whether a pixel should be blurred or not. The option value must be an
16667 integer in the range [-30,30]. A value of 0 will filter all the image,
16668 a value included in [0,30] will filter flat areas and a value included
16669 in [-30,0] will filter edges. Default value is 0.
16670
16671 @item chroma_radius, cr
16672 Set the chroma radius. The option value must be a float number in
16673 the range [0.1,5.0] that specifies the variance of the gaussian filter
16674 used to blur the image (slower if larger). Default value is @option{luma_radius}.
16675
16676 @item chroma_strength, cs
16677 Set the chroma strength. The option value must be a float number
16678 in the range [-1.0,1.0] that configures the blurring. A value included
16679 in [0.0,1.0] will blur the image whereas a value included in
16680 [-1.0,0.0] will sharpen the image. Default value is @option{luma_strength}.
16681
16682 @item chroma_threshold, ct
16683 Set the chroma threshold used as a coefficient to determine
16684 whether a pixel should be blurred or not. The option value must be an
16685 integer in the range [-30,30]. A value of 0 will filter all the image,
16686 a value included in [0,30] will filter flat areas and a value included
16687 in [-30,0] will filter edges. Default value is @option{luma_threshold}.
16688 @end table
16689
16690 If a chroma option is not explicitly set, the corresponding luma value
16691 is set.
16692
16693 @section sobel
16694 Apply sobel operator to input video stream.
16695
16696 The filter accepts the following option:
16697
16698 @table @option
16699 @item planes
16700 Set which planes will be processed, unprocessed planes will be copied.
16701 By default value 0xf, all planes will be processed.
16702
16703 @item scale
16704 Set value which will be multiplied with filtered result.
16705
16706 @item delta
16707 Set value which will be added to filtered result.
16708 @end table
16709
16710 @anchor{spp}
16711 @section spp
16712
16713 Apply a simple postprocessing filter that compresses and decompresses the image
16714 at several (or - in the case of @option{quality} level @code{6} - all) shifts
16715 and average the results.
16716
16717 The filter accepts the following options:
16718
16719 @table @option
16720 @item quality
16721 Set quality. This option defines the number of levels for averaging. It accepts
16722 an integer in the range 0-6. If set to @code{0}, the filter will have no
16723 effect. A value of @code{6} means the higher quality. For each increment of
16724 that value the speed drops by a factor of approximately 2.  Default value is
16725 @code{3}.
16726
16727 @item qp
16728 Force a constant quantization parameter. If not set, the filter will use the QP
16729 from the video stream (if available).
16730
16731 @item mode
16732 Set thresholding mode. Available modes are:
16733
16734 @table @samp
16735 @item hard
16736 Set hard thresholding (default).
16737 @item soft
16738 Set soft thresholding (better de-ringing effect, but likely blurrier).
16739 @end table
16740
16741 @item use_bframe_qp
16742 Enable the use of the QP from the B-Frames if set to @code{1}. Using this
16743 option may cause flicker since the B-Frames have often larger QP. Default is
16744 @code{0} (not enabled).
16745 @end table
16746
16747 @section sr
16748
16749 Scale the input by applying one of the super-resolution methods based on
16750 convolutional neural networks. Supported models:
16751
16752 @itemize
16753 @item
16754 Super-Resolution Convolutional Neural Network model (SRCNN).
16755 See @url{https://arxiv.org/abs/1501.00092}.
16756
16757 @item
16758 Efficient Sub-Pixel Convolutional Neural Network model (ESPCN).
16759 See @url{https://arxiv.org/abs/1609.05158}.
16760 @end itemize
16761
16762 Training scripts as well as scripts for model file (.pb) saving can be found at
16763 @url{https://github.com/XueweiMeng/sr/tree/sr_dnn_native}. Original repository
16764 is at @url{https://github.com/HighVoltageRocknRoll/sr.git}.
16765
16766 Native model files (.model) can be generated from TensorFlow model
16767 files (.pb) by using tools/python/convert.py
16768
16769 The filter accepts the following options:
16770
16771 @table @option
16772 @item dnn_backend
16773 Specify which DNN backend to use for model loading and execution. This option accepts
16774 the following values:
16775
16776 @table @samp
16777 @item native
16778 Native implementation of DNN loading and execution.
16779
16780 @item tensorflow
16781 TensorFlow backend. To enable this backend you
16782 need to install the TensorFlow for C library (see
16783 @url{https://www.tensorflow.org/install/install_c}) and configure FFmpeg with
16784 @code{--enable-libtensorflow}
16785 @end table
16786
16787 Default value is @samp{native}.
16788
16789 @item model
16790 Set path to model file specifying network architecture and its parameters.
16791 Note that different backends use different file formats. TensorFlow backend
16792 can load files for both formats, while native backend can load files for only
16793 its format.
16794
16795 @item scale_factor
16796 Set scale factor for SRCNN model. Allowed values are @code{2}, @code{3} and @code{4}.
16797 Default value is @code{2}. Scale factor is necessary for SRCNN model, because it accepts
16798 input upscaled using bicubic upscaling with proper scale factor.
16799 @end table
16800
16801 @section ssim
16802
16803 Obtain the SSIM (Structural SImilarity Metric) between two input videos.
16804
16805 This filter takes in input two input videos, the first input is
16806 considered the "main" source and is passed unchanged to the
16807 output. The second input is used as a "reference" video for computing
16808 the SSIM.
16809
16810 Both video inputs must have the same resolution and pixel format for
16811 this filter to work correctly. Also it assumes that both inputs
16812 have the same number of frames, which are compared one by one.
16813
16814 The filter stores the calculated SSIM of each frame.
16815
16816 The description of the accepted parameters follows.
16817
16818 @table @option
16819 @item stats_file, f
16820 If specified the filter will use the named file to save the SSIM of
16821 each individual frame. When filename equals "-" the data is sent to
16822 standard output.
16823 @end table
16824
16825 The file printed if @var{stats_file} is selected, contains a sequence of
16826 key/value pairs of the form @var{key}:@var{value} for each compared
16827 couple of frames.
16828
16829 A description of each shown parameter follows:
16830
16831 @table @option
16832 @item n
16833 sequential number of the input frame, starting from 1
16834
16835 @item Y, U, V, R, G, B
16836 SSIM of the compared frames for the component specified by the suffix.
16837
16838 @item All
16839 SSIM of the compared frames for the whole frame.
16840
16841 @item dB
16842 Same as above but in dB representation.
16843 @end table
16844
16845 This filter also supports the @ref{framesync} options.
16846
16847 For example:
16848 @example
16849 movie=ref_movie.mpg, setpts=PTS-STARTPTS [main];
16850 [main][ref] ssim="stats_file=stats.log" [out]
16851 @end example
16852
16853 On this example the input file being processed is compared with the
16854 reference file @file{ref_movie.mpg}. The SSIM of each individual frame
16855 is stored in @file{stats.log}.
16856
16857 Another example with both psnr and ssim at same time:
16858 @example
16859 ffmpeg -i main.mpg -i ref.mpg -lavfi  "ssim;[0:v][1:v]psnr" -f null -
16860 @end example
16861
16862 @section stereo3d
16863
16864 Convert between different stereoscopic image formats.
16865
16866 The filters accept the following options:
16867
16868 @table @option
16869 @item in
16870 Set stereoscopic image format of input.
16871
16872 Available values for input image formats are:
16873 @table @samp
16874 @item sbsl
16875 side by side parallel (left eye left, right eye right)
16876
16877 @item sbsr
16878 side by side crosseye (right eye left, left eye right)
16879
16880 @item sbs2l
16881 side by side parallel with half width resolution
16882 (left eye left, right eye right)
16883
16884 @item sbs2r
16885 side by side crosseye with half width resolution
16886 (right eye left, left eye right)
16887
16888 @item abl
16889 @item tbl
16890 above-below (left eye above, right eye below)
16891
16892 @item abr
16893 @item tbr
16894 above-below (right eye above, left eye below)
16895
16896 @item ab2l
16897 @item tb2l
16898 above-below with half height resolution
16899 (left eye above, right eye below)
16900
16901 @item ab2r
16902 @item tb2r
16903 above-below with half height resolution
16904 (right eye above, left eye below)
16905
16906 @item al
16907 alternating frames (left eye first, right eye second)
16908
16909 @item ar
16910 alternating frames (right eye first, left eye second)
16911
16912 @item irl
16913 interleaved rows (left eye has top row, right eye starts on next row)
16914
16915 @item irr
16916 interleaved rows (right eye has top row, left eye starts on next row)
16917
16918 @item icl
16919 interleaved columns, left eye first
16920
16921 @item icr
16922 interleaved columns, right eye first
16923
16924 Default value is @samp{sbsl}.
16925 @end table
16926
16927 @item out
16928 Set stereoscopic image format of output.
16929
16930 @table @samp
16931 @item sbsl
16932 side by side parallel (left eye left, right eye right)
16933
16934 @item sbsr
16935 side by side crosseye (right eye left, left eye right)
16936
16937 @item sbs2l
16938 side by side parallel with half width resolution
16939 (left eye left, right eye right)
16940
16941 @item sbs2r
16942 side by side crosseye with half width resolution
16943 (right eye left, left eye right)
16944
16945 @item abl
16946 @item tbl
16947 above-below (left eye above, right eye below)
16948
16949 @item abr
16950 @item tbr
16951 above-below (right eye above, left eye below)
16952
16953 @item ab2l
16954 @item tb2l
16955 above-below with half height resolution
16956 (left eye above, right eye below)
16957
16958 @item ab2r
16959 @item tb2r
16960 above-below with half height resolution
16961 (right eye above, left eye below)
16962
16963 @item al
16964 alternating frames (left eye first, right eye second)
16965
16966 @item ar
16967 alternating frames (right eye first, left eye second)
16968
16969 @item irl
16970 interleaved rows (left eye has top row, right eye starts on next row)
16971
16972 @item irr
16973 interleaved rows (right eye has top row, left eye starts on next row)
16974
16975 @item arbg
16976 anaglyph red/blue gray
16977 (red filter on left eye, blue filter on right eye)
16978
16979 @item argg
16980 anaglyph red/green gray
16981 (red filter on left eye, green filter on right eye)
16982
16983 @item arcg
16984 anaglyph red/cyan gray
16985 (red filter on left eye, cyan filter on right eye)
16986
16987 @item arch
16988 anaglyph red/cyan half colored
16989 (red filter on left eye, cyan filter on right eye)
16990
16991 @item arcc
16992 anaglyph red/cyan color
16993 (red filter on left eye, cyan filter on right eye)
16994
16995 @item arcd
16996 anaglyph red/cyan color optimized with the least squares projection of dubois
16997 (red filter on left eye, cyan filter on right eye)
16998
16999 @item agmg
17000 anaglyph green/magenta gray
17001 (green filter on left eye, magenta filter on right eye)
17002
17003 @item agmh
17004 anaglyph green/magenta half colored
17005 (green filter on left eye, magenta filter on right eye)
17006
17007 @item agmc
17008 anaglyph green/magenta colored
17009 (green filter on left eye, magenta filter on right eye)
17010
17011 @item agmd
17012 anaglyph green/magenta color optimized with the least squares projection of dubois
17013 (green filter on left eye, magenta filter on right eye)
17014
17015 @item aybg
17016 anaglyph yellow/blue gray
17017 (yellow filter on left eye, blue filter on right eye)
17018
17019 @item aybh
17020 anaglyph yellow/blue half colored
17021 (yellow filter on left eye, blue filter on right eye)
17022
17023 @item aybc
17024 anaglyph yellow/blue colored
17025 (yellow filter on left eye, blue filter on right eye)
17026
17027 @item aybd
17028 anaglyph yellow/blue color optimized with the least squares projection of dubois
17029 (yellow filter on left eye, blue filter on right eye)
17030
17031 @item ml
17032 mono output (left eye only)
17033
17034 @item mr
17035 mono output (right eye only)
17036
17037 @item chl
17038 checkerboard, left eye first
17039
17040 @item chr
17041 checkerboard, right eye first
17042
17043 @item icl
17044 interleaved columns, left eye first
17045
17046 @item icr
17047 interleaved columns, right eye first
17048
17049 @item hdmi
17050 HDMI frame pack
17051 @end table
17052
17053 Default value is @samp{arcd}.
17054 @end table
17055
17056 @subsection Examples
17057
17058 @itemize
17059 @item
17060 Convert input video from side by side parallel to anaglyph yellow/blue dubois:
17061 @example
17062 stereo3d=sbsl:aybd
17063 @end example
17064
17065 @item
17066 Convert input video from above below (left eye above, right eye below) to side by side crosseye.
17067 @example
17068 stereo3d=abl:sbsr
17069 @end example
17070 @end itemize
17071
17072 @section streamselect, astreamselect
17073 Select video or audio streams.
17074
17075 The filter accepts the following options:
17076
17077 @table @option
17078 @item inputs
17079 Set number of inputs. Default is 2.
17080
17081 @item map
17082 Set input indexes to remap to outputs.
17083 @end table
17084
17085 @subsection Commands
17086
17087 The @code{streamselect} and @code{astreamselect} filter supports the following
17088 commands:
17089
17090 @table @option
17091 @item map
17092 Set input indexes to remap to outputs.
17093 @end table
17094
17095 @subsection Examples
17096
17097 @itemize
17098 @item
17099 Select first 5 seconds 1st stream and rest of time 2nd stream:
17100 @example
17101 sendcmd='5.0 streamselect map 1',streamselect=inputs=2:map=0
17102 @end example
17103
17104 @item
17105 Same as above, but for audio:
17106 @example
17107 asendcmd='5.0 astreamselect map 1',astreamselect=inputs=2:map=0
17108 @end example
17109 @end itemize
17110
17111 @anchor{subtitles}
17112 @section subtitles
17113
17114 Draw subtitles on top of input video using the libass library.
17115
17116 To enable compilation of this filter you need to configure FFmpeg with
17117 @code{--enable-libass}. This filter also requires a build with libavcodec and
17118 libavformat to convert the passed subtitles file to ASS (Advanced Substation
17119 Alpha) subtitles format.
17120
17121 The filter accepts the following options:
17122
17123 @table @option
17124 @item filename, f
17125 Set the filename of the subtitle file to read. It must be specified.
17126
17127 @item original_size
17128 Specify the size of the original video, the video for which the ASS file
17129 was composed. For the syntax of this option, check the
17130 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
17131 Due to a misdesign in ASS aspect ratio arithmetic, this is necessary to
17132 correctly scale the fonts if the aspect ratio has been changed.
17133
17134 @item fontsdir
17135 Set a directory path containing fonts that can be used by the filter.
17136 These fonts will be used in addition to whatever the font provider uses.
17137
17138 @item alpha
17139 Process alpha channel, by default alpha channel is untouched.
17140
17141 @item charenc
17142 Set subtitles input character encoding. @code{subtitles} filter only. Only
17143 useful if not UTF-8.
17144
17145 @item stream_index, si
17146 Set subtitles stream index. @code{subtitles} filter only.
17147
17148 @item force_style
17149 Override default style or script info parameters of the subtitles. It accepts a
17150 string containing ASS style format @code{KEY=VALUE} couples separated by ",".
17151 @end table
17152
17153 If the first key is not specified, it is assumed that the first value
17154 specifies the @option{filename}.
17155
17156 For example, to render the file @file{sub.srt} on top of the input
17157 video, use the command:
17158 @example
17159 subtitles=sub.srt
17160 @end example
17161
17162 which is equivalent to:
17163 @example
17164 subtitles=filename=sub.srt
17165 @end example
17166
17167 To render the default subtitles stream from file @file{video.mkv}, use:
17168 @example
17169 subtitles=video.mkv
17170 @end example
17171
17172 To render the second subtitles stream from that file, use:
17173 @example
17174 subtitles=video.mkv:si=1
17175 @end example
17176
17177 To make the subtitles stream from @file{sub.srt} appear in 80% transparent blue
17178 @code{DejaVu Serif}, use:
17179 @example
17180 subtitles=sub.srt:force_style='FontName=DejaVu Serif,PrimaryColour=&HCCFF0000'
17181 @end example
17182
17183 @section super2xsai
17184
17185 Scale the input by 2x and smooth using the Super2xSaI (Scale and
17186 Interpolate) pixel art scaling algorithm.
17187
17188 Useful for enlarging pixel art images without reducing sharpness.
17189
17190 @section swaprect
17191
17192 Swap two rectangular objects in video.
17193
17194 This filter accepts the following options:
17195
17196 @table @option
17197 @item w
17198 Set object width.
17199
17200 @item h
17201 Set object height.
17202
17203 @item x1
17204 Set 1st rect x coordinate.
17205
17206 @item y1
17207 Set 1st rect y coordinate.
17208
17209 @item x2
17210 Set 2nd rect x coordinate.
17211
17212 @item y2
17213 Set 2nd rect y coordinate.
17214
17215 All expressions are evaluated once for each frame.
17216 @end table
17217
17218 The all options are expressions containing the following constants:
17219
17220 @table @option
17221 @item w
17222 @item h
17223 The input width and height.
17224
17225 @item a
17226 same as @var{w} / @var{h}
17227
17228 @item sar
17229 input sample aspect ratio
17230
17231 @item dar
17232 input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}
17233
17234 @item n
17235 The number of the input frame, starting from 0.
17236
17237 @item t
17238 The timestamp expressed in seconds. It's NAN if the input timestamp is unknown.
17239
17240 @item pos
17241 the position in the file of the input frame, NAN if unknown
17242 @end table
17243
17244 @section swapuv
17245 Swap U & V plane.
17246
17247 @section telecine
17248
17249 Apply telecine process to the video.
17250
17251 This filter accepts the following options:
17252
17253 @table @option
17254 @item first_field
17255 @table @samp
17256 @item top, t
17257 top field first
17258 @item bottom, b
17259 bottom field first
17260 The default value is @code{top}.
17261 @end table
17262
17263 @item pattern
17264 A string of numbers representing the pulldown pattern you wish to apply.
17265 The default value is @code{23}.
17266 @end table
17267
17268 @example
17269 Some typical patterns:
17270
17271 NTSC output (30i):
17272 27.5p: 32222
17273 24p: 23 (classic)
17274 24p: 2332 (preferred)
17275 20p: 33
17276 18p: 334
17277 16p: 3444
17278
17279 PAL output (25i):
17280 27.5p: 12222
17281 24p: 222222222223 ("Euro pulldown")
17282 16.67p: 33
17283 16p: 33333334
17284 @end example
17285
17286 @section threshold
17287
17288 Apply threshold effect to video stream.
17289
17290 This filter needs four video streams to perform thresholding.
17291 First stream is stream we are filtering.
17292 Second stream is holding threshold values, third stream is holding min values,
17293 and last, fourth stream is holding max values.
17294
17295 The filter accepts the following option:
17296
17297 @table @option
17298 @item planes
17299 Set which planes will be processed, unprocessed planes will be copied.
17300 By default value 0xf, all planes will be processed.
17301 @end table
17302
17303 For example if first stream pixel's component value is less then threshold value
17304 of pixel component from 2nd threshold stream, third stream value will picked,
17305 otherwise fourth stream pixel component value will be picked.
17306
17307 Using color source filter one can perform various types of thresholding:
17308
17309 @subsection Examples
17310
17311 @itemize
17312 @item
17313 Binary threshold, using gray color as threshold:
17314 @example
17315 ffmpeg -i 320x240.avi -f lavfi -i color=gray -f lavfi -i color=black -f lavfi -i color=white -lavfi threshold output.avi
17316 @end example
17317
17318 @item
17319 Inverted binary threshold, using gray color as threshold:
17320 @example
17321 ffmpeg -i 320x240.avi -f lavfi -i color=gray -f lavfi -i color=white -f lavfi -i color=black -lavfi threshold output.avi
17322 @end example
17323
17324 @item
17325 Truncate binary threshold, using gray color as threshold:
17326 @example
17327 ffmpeg -i 320x240.avi -f lavfi -i color=gray -i 320x240.avi -f lavfi -i color=gray -lavfi threshold output.avi
17328 @end example
17329
17330 @item
17331 Threshold to zero, using gray color as threshold:
17332 @example
17333 ffmpeg -i 320x240.avi -f lavfi -i color=gray -f lavfi -i color=white -i 320x240.avi -lavfi threshold output.avi
17334 @end example
17335
17336 @item
17337 Inverted threshold to zero, using gray color as threshold:
17338 @example
17339 ffmpeg -i 320x240.avi -f lavfi -i color=gray -i 320x240.avi -f lavfi -i color=white -lavfi threshold output.avi
17340 @end example
17341 @end itemize
17342
17343 @section thumbnail
17344 Select the most representative frame in a given sequence of consecutive frames.
17345
17346 The filter accepts the following options:
17347
17348 @table @option
17349 @item n
17350 Set the frames batch size to analyze; in a set of @var{n} frames, the filter
17351 will pick one of them, and then handle the next batch of @var{n} frames until
17352 the end. Default is @code{100}.
17353 @end table
17354
17355 Since the filter keeps track of the whole frames sequence, a bigger @var{n}
17356 value will result in a higher memory usage, so a high value is not recommended.
17357
17358 @subsection Examples
17359
17360 @itemize
17361 @item
17362 Extract one picture each 50 frames:
17363 @example
17364 thumbnail=50
17365 @end example
17366
17367 @item
17368 Complete example of a thumbnail creation with @command{ffmpeg}:
17369 @example
17370 ffmpeg -i in.avi -vf thumbnail,scale=300:200 -frames:v 1 out.png
17371 @end example
17372 @end itemize
17373
17374 @section tile
17375
17376 Tile several successive frames together.
17377
17378 The filter accepts the following options:
17379
17380 @table @option
17381
17382 @item layout
17383 Set the grid size (i.e. the number of lines and columns). For the syntax of
17384 this option, check the
17385 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
17386
17387 @item nb_frames
17388 Set the maximum number of frames to render in the given area. It must be less
17389 than or equal to @var{w}x@var{h}. The default value is @code{0}, meaning all
17390 the area will be used.
17391
17392 @item margin
17393 Set the outer border margin in pixels.
17394
17395 @item padding
17396 Set the inner border thickness (i.e. the number of pixels between frames). For
17397 more advanced padding options (such as having different values for the edges),
17398 refer to the pad video filter.
17399
17400 @item color
17401 Specify the color of the unused area. For the syntax of this option, check the
17402 @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
17403 The default value of @var{color} is "black".
17404
17405 @item overlap
17406 Set the number of frames to overlap when tiling several successive frames together.
17407 The value must be between @code{0} and @var{nb_frames - 1}.
17408
17409 @item init_padding
17410 Set the number of frames to initially be empty before displaying first output frame.
17411 This controls how soon will one get first output frame.
17412 The value must be between @code{0} and @var{nb_frames - 1}.
17413 @end table
17414
17415 @subsection Examples
17416
17417 @itemize
17418 @item
17419 Produce 8x8 PNG tiles of all keyframes (@option{-skip_frame nokey}) in a movie:
17420 @example
17421 ffmpeg -skip_frame nokey -i file.avi -vf 'scale=128:72,tile=8x8' -an -vsync 0 keyframes%03d.png
17422 @end example
17423 The @option{-vsync 0} is necessary to prevent @command{ffmpeg} from
17424 duplicating each output frame to accommodate the originally detected frame
17425 rate.
17426
17427 @item
17428 Display @code{5} pictures in an area of @code{3x2} frames,
17429 with @code{7} pixels between them, and @code{2} pixels of initial margin, using
17430 mixed flat and named options:
17431 @example
17432 tile=3x2:nb_frames=5:padding=7:margin=2
17433 @end example
17434 @end itemize
17435
17436 @section tinterlace
17437
17438 Perform various types of temporal field interlacing.
17439
17440 Frames are counted starting from 1, so the first input frame is
17441 considered odd.
17442
17443 The filter accepts the following options:
17444
17445 @table @option
17446
17447 @item mode
17448 Specify the mode of the interlacing. This option can also be specified
17449 as a value alone. See below for a list of values for this option.
17450
17451 Available values are:
17452
17453 @table @samp
17454 @item merge, 0
17455 Move odd frames into the upper field, even into the lower field,
17456 generating a double height frame at half frame rate.
17457 @example
17458  ------> time
17459 Input:
17460 Frame 1         Frame 2         Frame 3         Frame 4
17461
17462 11111           22222           33333           44444
17463 11111           22222           33333           44444
17464 11111           22222           33333           44444
17465 11111           22222           33333           44444
17466
17467 Output:
17468 11111                           33333
17469 22222                           44444
17470 11111                           33333
17471 22222                           44444
17472 11111                           33333
17473 22222                           44444
17474 11111                           33333
17475 22222                           44444
17476 @end example
17477
17478 @item drop_even, 1
17479 Only output odd frames, even frames are dropped, generating a frame with
17480 unchanged height at half frame rate.
17481
17482 @example
17483  ------> time
17484 Input:
17485 Frame 1         Frame 2         Frame 3         Frame 4
17486
17487 11111           22222           33333           44444
17488 11111           22222           33333           44444
17489 11111           22222           33333           44444
17490 11111           22222           33333           44444
17491
17492 Output:
17493 11111                           33333
17494 11111                           33333
17495 11111                           33333
17496 11111                           33333
17497 @end example
17498
17499 @item drop_odd, 2
17500 Only output even frames, odd frames are dropped, generating a frame with
17501 unchanged height at half frame rate.
17502
17503 @example
17504  ------> time
17505 Input:
17506 Frame 1         Frame 2         Frame 3         Frame 4
17507
17508 11111           22222           33333           44444
17509 11111           22222           33333           44444
17510 11111           22222           33333           44444
17511 11111           22222           33333           44444
17512
17513 Output:
17514                 22222                           44444
17515                 22222                           44444
17516                 22222                           44444
17517                 22222                           44444
17518 @end example
17519
17520 @item pad, 3
17521 Expand each frame to full height, but pad alternate lines with black,
17522 generating a frame with double height at the same input frame rate.
17523
17524 @example
17525  ------> time
17526 Input:
17527 Frame 1         Frame 2         Frame 3         Frame 4
17528
17529 11111           22222           33333           44444
17530 11111           22222           33333           44444
17531 11111           22222           33333           44444
17532 11111           22222           33333           44444
17533
17534 Output:
17535 11111           .....           33333           .....
17536 .....           22222           .....           44444
17537 11111           .....           33333           .....
17538 .....           22222           .....           44444
17539 11111           .....           33333           .....
17540 .....           22222           .....           44444
17541 11111           .....           33333           .....
17542 .....           22222           .....           44444
17543 @end example
17544
17545
17546 @item interleave_top, 4
17547 Interleave the upper field from odd frames with the lower field from
17548 even frames, generating a frame with unchanged height at half frame rate.
17549
17550 @example
17551  ------> time
17552 Input:
17553 Frame 1         Frame 2         Frame 3         Frame 4
17554
17555 11111<-         22222           33333<-         44444
17556 11111           22222<-         33333           44444<-
17557 11111<-         22222           33333<-         44444
17558 11111           22222<-         33333           44444<-
17559
17560 Output:
17561 11111                           33333
17562 22222                           44444
17563 11111                           33333
17564 22222                           44444
17565 @end example
17566
17567
17568 @item interleave_bottom, 5
17569 Interleave the lower field from odd frames with the upper field from
17570 even frames, generating a frame with unchanged height at half frame rate.
17571
17572 @example
17573  ------> time
17574 Input:
17575 Frame 1         Frame 2         Frame 3         Frame 4
17576
17577 11111           22222<-         33333           44444<-
17578 11111<-         22222           33333<-         44444
17579 11111           22222<-         33333           44444<-
17580 11111<-         22222           33333<-         44444
17581
17582 Output:
17583 22222                           44444
17584 11111                           33333
17585 22222                           44444
17586 11111                           33333
17587 @end example
17588
17589
17590 @item interlacex2, 6
17591 Double frame rate with unchanged height. Frames are inserted each
17592 containing the second temporal field from the previous input frame and
17593 the first temporal field from the next input frame. This mode relies on
17594 the top_field_first flag. Useful for interlaced video displays with no
17595 field synchronisation.
17596
17597 @example
17598  ------> time
17599 Input:
17600 Frame 1         Frame 2         Frame 3         Frame 4
17601
17602 11111           22222           33333           44444
17603  11111           22222           33333           44444
17604 11111           22222           33333           44444
17605  11111           22222           33333           44444
17606
17607 Output:
17608 11111   22222   22222   33333   33333   44444   44444
17609  11111   11111   22222   22222   33333   33333   44444
17610 11111   22222   22222   33333   33333   44444   44444
17611  11111   11111   22222   22222   33333   33333   44444
17612 @end example
17613
17614
17615 @item mergex2, 7
17616 Move odd frames into the upper field, even into the lower field,
17617 generating a double height frame at same frame rate.
17618
17619 @example
17620  ------> time
17621 Input:
17622 Frame 1         Frame 2         Frame 3         Frame 4
17623
17624 11111           22222           33333           44444
17625 11111           22222           33333           44444
17626 11111           22222           33333           44444
17627 11111           22222           33333           44444
17628
17629 Output:
17630 11111           33333           33333           55555
17631 22222           22222           44444           44444
17632 11111           33333           33333           55555
17633 22222           22222           44444           44444
17634 11111           33333           33333           55555
17635 22222           22222           44444           44444
17636 11111           33333           33333           55555
17637 22222           22222           44444           44444
17638 @end example
17639
17640 @end table
17641
17642 Numeric values are deprecated but are accepted for backward
17643 compatibility reasons.
17644
17645 Default mode is @code{merge}.
17646
17647 @item flags
17648 Specify flags influencing the filter process.
17649
17650 Available value for @var{flags} is:
17651
17652 @table @option
17653 @item low_pass_filter, vlpf
17654 Enable linear vertical low-pass filtering in the filter.
17655 Vertical low-pass filtering is required when creating an interlaced
17656 destination from a progressive source which contains high-frequency
17657 vertical detail. Filtering will reduce interlace 'twitter' and Moire
17658 patterning.
17659
17660 @item complex_filter, cvlpf
17661 Enable complex vertical low-pass filtering.
17662 This will slightly less reduce interlace 'twitter' and Moire
17663 patterning but better retain detail and subjective sharpness impression.
17664
17665 @end table
17666
17667 Vertical low-pass filtering can only be enabled for @option{mode}
17668 @var{interleave_top} and @var{interleave_bottom}.
17669
17670 @end table
17671
17672 @section tmix
17673
17674 Mix successive video frames.
17675
17676 A description of the accepted options follows.
17677
17678 @table @option
17679 @item frames
17680 The number of successive frames to mix. If unspecified, it defaults to 3.
17681
17682 @item weights
17683 Specify weight of each input video frame.
17684 Each weight is separated by space. If number of weights is smaller than
17685 number of @var{frames} last specified weight will be used for all remaining
17686 unset weights.
17687
17688 @item scale
17689 Specify scale, if it is set it will be multiplied with sum
17690 of each weight multiplied with pixel values to give final destination
17691 pixel value. By default @var{scale} is auto scaled to sum of weights.
17692 @end table
17693
17694 @subsection Examples
17695
17696 @itemize
17697 @item
17698 Average 7 successive frames:
17699 @example
17700 tmix=frames=7:weights="1 1 1 1 1 1 1"
17701 @end example
17702
17703 @item
17704 Apply simple temporal convolution:
17705 @example
17706 tmix=frames=3:weights="-1 3 -1"
17707 @end example
17708
17709 @item
17710 Similar as above but only showing temporal differences:
17711 @example
17712 tmix=frames=3:weights="-1 2 -1":scale=1
17713 @end example
17714 @end itemize
17715
17716 @anchor{tonemap}
17717 @section tonemap
17718 Tone map colors from different dynamic ranges.
17719
17720 This filter expects data in single precision floating point, as it needs to
17721 operate on (and can output) out-of-range values. Another filter, such as
17722 @ref{zscale}, is needed to convert the resulting frame to a usable format.
17723
17724 The tonemapping algorithms implemented only work on linear light, so input
17725 data should be linearized beforehand (and possibly correctly tagged).
17726
17727 @example
17728 ffmpeg -i INPUT -vf zscale=transfer=linear,tonemap=clip,zscale=transfer=bt709,format=yuv420p OUTPUT
17729 @end example
17730
17731 @subsection Options
17732 The filter accepts the following options.
17733
17734 @table @option
17735 @item tonemap
17736 Set the tone map algorithm to use.
17737
17738 Possible values are:
17739 @table @var
17740 @item none
17741 Do not apply any tone map, only desaturate overbright pixels.
17742
17743 @item clip
17744 Hard-clip any out-of-range values. Use it for perfect color accuracy for
17745 in-range values, while distorting out-of-range values.
17746
17747 @item linear
17748 Stretch the entire reference gamut to a linear multiple of the display.
17749
17750 @item gamma
17751 Fit a logarithmic transfer between the tone curves.
17752
17753 @item reinhard
17754 Preserve overall image brightness with a simple curve, using nonlinear
17755 contrast, which results in flattening details and degrading color accuracy.
17756
17757 @item hable
17758 Preserve both dark and bright details better than @var{reinhard}, at the cost
17759 of slightly darkening everything. Use it when detail preservation is more
17760 important than color and brightness accuracy.
17761
17762 @item mobius
17763 Smoothly map out-of-range values, while retaining contrast and colors for
17764 in-range material as much as possible. Use it when color accuracy is more
17765 important than detail preservation.
17766 @end table
17767
17768 Default is none.
17769
17770 @item param
17771 Tune the tone mapping algorithm.
17772
17773 This affects the following algorithms:
17774 @table @var
17775 @item none
17776 Ignored.
17777
17778 @item linear
17779 Specifies the scale factor to use while stretching.
17780 Default to 1.0.
17781
17782 @item gamma
17783 Specifies the exponent of the function.
17784 Default to 1.8.
17785
17786 @item clip
17787 Specify an extra linear coefficient to multiply into the signal before clipping.
17788 Default to 1.0.
17789
17790 @item reinhard
17791 Specify the local contrast coefficient at the display peak.
17792 Default to 0.5, which means that in-gamut values will be about half as bright
17793 as when clipping.
17794
17795 @item hable
17796 Ignored.
17797
17798 @item mobius
17799 Specify the transition point from linear to mobius transform. Every value
17800 below this point is guaranteed to be mapped 1:1. The higher the value, the
17801 more accurate the result will be, at the cost of losing bright details.
17802 Default to 0.3, which due to the steep initial slope still preserves in-range
17803 colors fairly accurately.
17804 @end table
17805
17806 @item desat
17807 Apply desaturation for highlights that exceed this level of brightness. The
17808 higher the parameter, the more color information will be preserved. This
17809 setting helps prevent unnaturally blown-out colors for super-highlights, by
17810 (smoothly) turning into white instead. This makes images feel more natural,
17811 at the cost of reducing information about out-of-range colors.
17812
17813 The default of 2.0 is somewhat conservative and will mostly just apply to
17814 skies or directly sunlit surfaces. A setting of 0.0 disables this option.
17815
17816 This option works only if the input frame has a supported color tag.
17817
17818 @item peak
17819 Override signal/nominal/reference peak with this value. Useful when the
17820 embedded peak information in display metadata is not reliable or when tone
17821 mapping from a lower range to a higher range.
17822 @end table
17823
17824 @section tpad
17825
17826 Temporarily pad video frames.
17827
17828 The filter accepts the following options:
17829
17830 @table @option
17831 @item start
17832 Specify number of delay frames before input video stream.
17833
17834 @item stop
17835 Specify number of padding frames after input video stream.
17836 Set to -1 to pad indefinitely.
17837
17838 @item start_mode
17839 Set kind of frames added to beginning of stream.
17840 Can be either @var{add} or @var{clone}.
17841 With @var{add} frames of solid-color are added.
17842 With @var{clone} frames are clones of first frame.
17843
17844 @item stop_mode
17845 Set kind of frames added to end of stream.
17846 Can be either @var{add} or @var{clone}.
17847 With @var{add} frames of solid-color are added.
17848 With @var{clone} frames are clones of last frame.
17849
17850 @item start_duration, stop_duration
17851 Specify the duration of the start/stop delay. See
17852 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
17853 for the accepted syntax.
17854 These options override @var{start} and @var{stop}.
17855
17856 @item color
17857 Specify the color of the padded area. For the syntax of this option,
17858 check the @ref{color syntax,,"Color" section in the ffmpeg-utils
17859 manual,ffmpeg-utils}.
17860
17861 The default value of @var{color} is "black".
17862 @end table
17863
17864 @anchor{transpose}
17865 @section transpose
17866
17867 Transpose rows with columns in the input video and optionally flip it.
17868
17869 It accepts the following parameters:
17870
17871 @table @option
17872
17873 @item dir
17874 Specify the transposition direction.
17875
17876 Can assume the following values:
17877 @table @samp
17878 @item 0, 4, cclock_flip
17879 Rotate by 90 degrees counterclockwise and vertically flip (default), that is:
17880 @example
17881 L.R     L.l
17882 . . ->  . .
17883 l.r     R.r
17884 @end example
17885
17886 @item 1, 5, clock
17887 Rotate by 90 degrees clockwise, that is:
17888 @example
17889 L.R     l.L
17890 . . ->  . .
17891 l.r     r.R
17892 @end example
17893
17894 @item 2, 6, cclock
17895 Rotate by 90 degrees counterclockwise, that is:
17896 @example
17897 L.R     R.r
17898 . . ->  . .
17899 l.r     L.l
17900 @end example
17901
17902 @item 3, 7, clock_flip
17903 Rotate by 90 degrees clockwise and vertically flip, that is:
17904 @example
17905 L.R     r.R
17906 . . ->  . .
17907 l.r     l.L
17908 @end example
17909 @end table
17910
17911 For values between 4-7, the transposition is only done if the input
17912 video geometry is portrait and not landscape. These values are
17913 deprecated, the @code{passthrough} option should be used instead.
17914
17915 Numerical values are deprecated, and should be dropped in favor of
17916 symbolic constants.
17917
17918 @item passthrough
17919 Do not apply the transposition if the input geometry matches the one
17920 specified by the specified value. It accepts the following values:
17921 @table @samp
17922 @item none
17923 Always apply transposition.
17924 @item portrait
17925 Preserve portrait geometry (when @var{height} >= @var{width}).
17926 @item landscape
17927 Preserve landscape geometry (when @var{width} >= @var{height}).
17928 @end table
17929
17930 Default value is @code{none}.
17931 @end table
17932
17933 For example to rotate by 90 degrees clockwise and preserve portrait
17934 layout:
17935 @example
17936 transpose=dir=1:passthrough=portrait
17937 @end example
17938
17939 The command above can also be specified as:
17940 @example
17941 transpose=1:portrait
17942 @end example
17943
17944 @section transpose_npp
17945
17946 Transpose rows with columns in the input video and optionally flip it.
17947 For more in depth examples see the @ref{transpose} video filter, which shares mostly the same options.
17948
17949 It accepts the following parameters:
17950
17951 @table @option
17952
17953 @item dir
17954 Specify the transposition direction.
17955
17956 Can assume the following values:
17957 @table @samp
17958 @item cclock_flip
17959 Rotate by 90 degrees counterclockwise and vertically flip. (default)
17960
17961 @item clock
17962 Rotate by 90 degrees clockwise.
17963
17964 @item cclock
17965 Rotate by 90 degrees counterclockwise.
17966
17967 @item clock_flip
17968 Rotate by 90 degrees clockwise and vertically flip.
17969 @end table
17970
17971 @item passthrough
17972 Do not apply the transposition if the input geometry matches the one
17973 specified by the specified value. It accepts the following values:
17974 @table @samp
17975 @item none
17976 Always apply transposition. (default)
17977 @item portrait
17978 Preserve portrait geometry (when @var{height} >= @var{width}).
17979 @item landscape
17980 Preserve landscape geometry (when @var{width} >= @var{height}).
17981 @end table
17982
17983 @end table
17984
17985 @section trim
17986 Trim the input so that the output contains one continuous subpart of the input.
17987
17988 It accepts the following parameters:
17989 @table @option
17990 @item start
17991 Specify the time of the start of the kept section, i.e. the frame with the
17992 timestamp @var{start} will be the first frame in the output.
17993
17994 @item end
17995 Specify the time of the first frame that will be dropped, i.e. the frame
17996 immediately preceding the one with the timestamp @var{end} will be the last
17997 frame in the output.
17998
17999 @item start_pts
18000 This is the same as @var{start}, except this option sets the start timestamp
18001 in timebase units instead of seconds.
18002
18003 @item end_pts
18004 This is the same as @var{end}, except this option sets the end timestamp
18005 in timebase units instead of seconds.
18006
18007 @item duration
18008 The maximum duration of the output in seconds.
18009
18010 @item start_frame
18011 The number of the first frame that should be passed to the output.
18012
18013 @item end_frame
18014 The number of the first frame that should be dropped.
18015 @end table
18016
18017 @option{start}, @option{end}, and @option{duration} are expressed as time
18018 duration specifications; see
18019 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
18020 for the accepted syntax.
18021
18022 Note that the first two sets of the start/end options and the @option{duration}
18023 option look at the frame timestamp, while the _frame variants simply count the
18024 frames that pass through the filter. Also note that this filter does not modify
18025 the timestamps. If you wish for the output timestamps to start at zero, insert a
18026 setpts filter after the trim filter.
18027
18028 If multiple start or end options are set, this filter tries to be greedy and
18029 keep all the frames that match at least one of the specified constraints. To keep
18030 only the part that matches all the constraints at once, chain multiple trim
18031 filters.
18032
18033 The defaults are such that all the input is kept. So it is possible to set e.g.
18034 just the end values to keep everything before the specified time.
18035
18036 Examples:
18037 @itemize
18038 @item
18039 Drop everything except the second minute of input:
18040 @example
18041 ffmpeg -i INPUT -vf trim=60:120
18042 @end example
18043
18044 @item
18045 Keep only the first second:
18046 @example
18047 ffmpeg -i INPUT -vf trim=duration=1
18048 @end example
18049
18050 @end itemize
18051
18052 @section unpremultiply
18053 Apply alpha unpremultiply effect to input video stream using first plane
18054 of second stream as alpha.
18055
18056 Both streams must have same dimensions and same pixel format.
18057
18058 The filter accepts the following option:
18059
18060 @table @option
18061 @item planes
18062 Set which planes will be processed, unprocessed planes will be copied.
18063 By default value 0xf, all planes will be processed.
18064
18065 If the format has 1 or 2 components, then luma is bit 0.
18066 If the format has 3 or 4 components:
18067 for RGB formats bit 0 is green, bit 1 is blue and bit 2 is red;
18068 for YUV formats bit 0 is luma, bit 1 is chroma-U and bit 2 is chroma-V.
18069 If present, the alpha channel is always the last bit.
18070
18071 @item inplace
18072 Do not require 2nd input for processing, instead use alpha plane from input stream.
18073 @end table
18074
18075 @anchor{unsharp}
18076 @section unsharp
18077
18078 Sharpen or blur the input video.
18079
18080 It accepts the following parameters:
18081
18082 @table @option
18083 @item luma_msize_x, lx
18084 Set the luma matrix horizontal size. It must be an odd integer between
18085 3 and 23. The default value is 5.
18086
18087 @item luma_msize_y, ly
18088 Set the luma matrix vertical size. It must be an odd integer between 3
18089 and 23. The default value is 5.
18090
18091 @item luma_amount, la
18092 Set the luma effect strength. It must be a floating point number, reasonable
18093 values lay between -1.5 and 1.5.
18094
18095 Negative values will blur the input video, while positive values will
18096 sharpen it, a value of zero will disable the effect.
18097
18098 Default value is 1.0.
18099
18100 @item chroma_msize_x, cx
18101 Set the chroma matrix horizontal size. It must be an odd integer
18102 between 3 and 23. The default value is 5.
18103
18104 @item chroma_msize_y, cy
18105 Set the chroma matrix vertical size. It must be an odd integer
18106 between 3 and 23. The default value is 5.
18107
18108 @item chroma_amount, ca
18109 Set the chroma effect strength. It must be a floating point number, reasonable
18110 values lay between -1.5 and 1.5.
18111
18112 Negative values will blur the input video, while positive values will
18113 sharpen it, a value of zero will disable the effect.
18114
18115 Default value is 0.0.
18116
18117 @end table
18118
18119 All parameters are optional and default to the equivalent of the
18120 string '5:5:1.0:5:5:0.0'.
18121
18122 @subsection Examples
18123
18124 @itemize
18125 @item
18126 Apply strong luma sharpen effect:
18127 @example
18128 unsharp=luma_msize_x=7:luma_msize_y=7:luma_amount=2.5
18129 @end example
18130
18131 @item
18132 Apply a strong blur of both luma and chroma parameters:
18133 @example
18134 unsharp=7:7:-2:7:7:-2
18135 @end example
18136 @end itemize
18137
18138 @section uspp
18139
18140 Apply ultra slow/simple postprocessing filter that compresses and decompresses
18141 the image at several (or - in the case of @option{quality} level @code{8} - all)
18142 shifts and average the results.
18143
18144 The way this differs from the behavior of spp is that uspp actually encodes &
18145 decodes each case with libavcodec Snow, whereas spp uses a simplified intra only 8x8
18146 DCT similar to MJPEG.
18147
18148 The filter accepts the following options:
18149
18150 @table @option
18151 @item quality
18152 Set quality. This option defines the number of levels for averaging. It accepts
18153 an integer in the range 0-8. If set to @code{0}, the filter will have no
18154 effect. A value of @code{8} means the higher quality. For each increment of
18155 that value the speed drops by a factor of approximately 2.  Default value is
18156 @code{3}.
18157
18158 @item qp
18159 Force a constant quantization parameter. If not set, the filter will use the QP
18160 from the video stream (if available).
18161 @end table
18162
18163 @section v360
18164
18165 Convert 360 videos between various formats.
18166
18167 The filter accepts the following options:
18168
18169 @table @option
18170
18171 @item input
18172 @item output
18173 Set format of the input/output video.
18174
18175 Available formats:
18176
18177 @table @samp
18178
18179 @item e
18180 @item equirect
18181 Equirectangular projection.
18182
18183 @item c3x2
18184 @item c6x1
18185 @item c1x6
18186 Cubemap with 3x2/6x1/1x6 layout.
18187
18188 Format specific options:
18189
18190 @table @option
18191 @item in_pad
18192 @item out_pad
18193 Set padding proportion for the input/output cubemap. Values in decimals.
18194
18195 Example values:
18196 @table @samp
18197 @item 0
18198 No padding.
18199 @item 0.01
18200 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)
18201 @end table
18202
18203 Default value is @b{@samp{0}}.
18204
18205 @item fin_pad
18206 @item fout_pad
18207 Set fixed padding for the input/output cubemap. Values in pixels.
18208
18209 Default value is @b{@samp{0}}. If greater than zero it overrides other padding options.
18210
18211 @item in_forder
18212 @item out_forder
18213 Set order of faces for the input/output cubemap. Choose one direction for each position.
18214
18215 Designation of directions:
18216 @table @samp
18217 @item r
18218 right
18219 @item l
18220 left
18221 @item u
18222 up
18223 @item d
18224 down
18225 @item f
18226 forward
18227 @item b
18228 back
18229 @end table
18230
18231 Default value is @b{@samp{rludfb}}.
18232
18233 @item in_frot
18234 @item out_frot
18235 Set rotation of faces for the input/output cubemap. Choose one angle for each position.
18236
18237 Designation of angles:
18238 @table @samp
18239 @item 0
18240 0 degrees clockwise
18241 @item 1
18242 90 degrees clockwise
18243 @item 2
18244 180 degrees clockwise
18245 @item 3
18246 270 degrees clockwise
18247 @end table
18248
18249 Default value is @b{@samp{000000}}.
18250 @end table
18251
18252 @item eac
18253 Equi-Angular Cubemap.
18254
18255 @item flat
18256 @item gnomonic
18257 @item rectilinear
18258 Regular video. @i{(output only)}
18259
18260 Format specific options:
18261 @table @option
18262 @item h_fov
18263 @item v_fov
18264 @item d_fov
18265 Set horizontal/vertical/diagonal field of view. Values in degrees.
18266
18267 If diagonal field of view is set it overrides horizontal and vertical field of view.
18268 @end table
18269
18270 @item dfisheye
18271 Dual fisheye.
18272
18273 Format specific options:
18274 @table @option
18275 @item in_pad
18276 @item out_pad
18277 Set padding proportion. Values in decimals.
18278
18279 Example values:
18280 @table @samp
18281 @item 0
18282 No padding.
18283 @item 0.01
18284 1% padding.
18285 @end table
18286
18287 Default value is @b{@samp{0}}.
18288 @end table
18289
18290 @item barrel
18291 @item fb
18292 Facebook's 360 format.
18293
18294 @item sg
18295 Stereographic format.
18296
18297 Format specific options:
18298 @table @option
18299 @item h_fov
18300 @item v_fov
18301 @item d_fov
18302 Set horizontal/vertical/diagonal field of view. Values in degrees.
18303
18304 If diagonal field of view is set it overrides horizontal and vertical field of view.
18305 @end table
18306
18307 @item mercator
18308 Mercator format.
18309
18310 @item ball
18311 Ball format, gives significant distortion toward the back.
18312
18313 @item hammer
18314 Hammer-Aitoff map projection format.
18315
18316 @item sinusoidal
18317 Sinusoidal map projection format.
18318
18319 @end table
18320
18321 @item interp
18322 Set interpolation method.@*
18323 @i{Note: more complex interpolation methods require much more memory to run.}
18324
18325 Available methods:
18326
18327 @table @samp
18328 @item near
18329 @item nearest
18330 Nearest neighbour.
18331 @item line
18332 @item linear
18333 Bilinear interpolation.
18334 @item cube
18335 @item cubic
18336 Bicubic interpolation.
18337 @item lanc
18338 @item lanczos
18339 Lanczos interpolation.
18340 @end table
18341
18342 Default value is @b{@samp{line}}.
18343
18344 @item w
18345 @item h
18346 Set the output video resolution.
18347
18348 Default resolution depends on formats.
18349
18350 @item in_stereo
18351 @item out_stereo
18352 Set the input/output stereo format.
18353
18354 @table @samp
18355 @item 2d
18356 2D mono
18357 @item sbs
18358 Side by side
18359 @item tb
18360 Top bottom
18361 @end table
18362
18363 Default value is @b{@samp{2d}} for input and output format.
18364
18365 @item yaw
18366 @item pitch
18367 @item roll
18368 Set rotation for the output video. Values in degrees.
18369
18370 @item rorder
18371 Set rotation order for the output video. Choose one item for each position.
18372
18373 @table @samp
18374 @item y, Y
18375 yaw
18376 @item p, P
18377 pitch
18378 @item r, R
18379 roll
18380 @end table
18381
18382 Default value is @b{@samp{ypr}}.
18383
18384 @item h_flip
18385 @item v_flip
18386 @item d_flip
18387 Flip the output video horizontally(swaps left-right)/vertically(swaps up-down)/in-depth(swaps back-forward). Boolean values.
18388
18389 @item ih_flip
18390 @item iv_flip
18391 Set if input video is flipped horizontally/vertically. Boolean values.
18392
18393 @item in_trans
18394 Set if input video is transposed. Boolean value, by default disabled.
18395
18396 @item out_trans
18397 Set if output video needs to be transposed. Boolean value, by default disabled.
18398
18399 @end table
18400
18401 @subsection Examples
18402
18403 @itemize
18404 @item
18405 Convert equirectangular video to cubemap with 3x2 layout and 1% padding using bicubic interpolation:
18406 @example
18407 ffmpeg -i input.mkv -vf v360=e:c3x2:cubic:out_pad=0.01 output.mkv
18408 @end example
18409 @item
18410 Extract back view of Equi-Angular Cubemap:
18411 @example
18412 ffmpeg -i input.mkv -vf v360=eac:flat:yaw=180 output.mkv
18413 @end example
18414 @item
18415 Convert transposed and horizontally flipped Equi-Angular Cubemap in side-by-side stereo format to equirectangular top-bottom stereo format:
18416 @example
18417 v360=eac:equirect:in_stereo=sbs:in_trans=1:ih_flip=1:out_stereo=tb
18418 @end example
18419 @end itemize
18420
18421 @section vaguedenoiser
18422
18423 Apply a wavelet based denoiser.
18424
18425 It transforms each frame from the video input into the wavelet domain,
18426 using Cohen-Daubechies-Feauveau 9/7. Then it applies some filtering to
18427 the obtained coefficients. It does an inverse wavelet transform after.
18428 Due to wavelet properties, it should give a nice smoothed result, and
18429 reduced noise, without blurring picture features.
18430
18431 This filter accepts the following options:
18432
18433 @table @option
18434 @item threshold
18435 The filtering strength. The higher, the more filtered the video will be.
18436 Hard thresholding can use a higher threshold than soft thresholding
18437 before the video looks overfiltered. Default value is 2.
18438
18439 @item method
18440 The filtering method the filter will use.
18441
18442 It accepts the following values:
18443 @table @samp
18444 @item hard
18445 All values under the threshold will be zeroed.
18446
18447 @item soft
18448 All values under the threshold will be zeroed. All values above will be
18449 reduced by the threshold.
18450
18451 @item garrote
18452 Scales or nullifies coefficients - intermediary between (more) soft and
18453 (less) hard thresholding.
18454 @end table
18455
18456 Default is garrote.
18457
18458 @item nsteps
18459 Number of times, the wavelet will decompose the picture. Picture can't
18460 be decomposed beyond a particular point (typically, 8 for a 640x480
18461 frame - as 2^9 = 512 > 480). Valid values are integers between 1 and 32. Default value is 6.
18462
18463 @item percent
18464 Partial of full denoising (limited coefficients shrinking), from 0 to 100. Default value is 85.
18465
18466 @item planes
18467 A list of the planes to process. By default all planes are processed.
18468 @end table
18469
18470 @section vectorscope
18471
18472 Display 2 color component values in the two dimensional graph (which is called
18473 a vectorscope).
18474
18475 This filter accepts the following options:
18476
18477 @table @option
18478 @item mode, m
18479 Set vectorscope mode.
18480
18481 It accepts the following values:
18482 @table @samp
18483 @item gray
18484 Gray values are displayed on graph, higher brightness means more pixels have
18485 same component color value on location in graph. This is the default mode.
18486
18487 @item color
18488 Gray values are displayed on graph. Surrounding pixels values which are not
18489 present in video frame are drawn in gradient of 2 color components which are
18490 set by option @code{x} and @code{y}. The 3rd color component is static.
18491
18492 @item color2
18493 Actual color components values present in video frame are displayed on graph.
18494
18495 @item color3
18496 Similar as color2 but higher frequency of same values @code{x} and @code{y}
18497 on graph increases value of another color component, which is luminance by
18498 default values of @code{x} and @code{y}.
18499
18500 @item color4
18501 Actual colors present in video frame are displayed on graph. If two different
18502 colors map to same position on graph then color with higher value of component
18503 not present in graph is picked.
18504
18505 @item color5
18506 Gray values are displayed on graph. Similar to @code{color} but with 3rd color
18507 component picked from radial gradient.
18508 @end table
18509
18510 @item x
18511 Set which color component will be represented on X-axis. Default is @code{1}.
18512
18513 @item y
18514 Set which color component will be represented on Y-axis. Default is @code{2}.
18515
18516 @item intensity, i
18517 Set intensity, used by modes: gray, color, color3 and color5 for increasing brightness
18518 of color component which represents frequency of (X, Y) location in graph.
18519
18520 @item envelope, e
18521 @table @samp
18522 @item none
18523 No envelope, this is default.
18524
18525 @item instant
18526 Instant envelope, even darkest single pixel will be clearly highlighted.
18527
18528 @item peak
18529 Hold maximum and minimum values presented in graph over time. This way you
18530 can still spot out of range values without constantly looking at vectorscope.
18531
18532 @item peak+instant
18533 Peak and instant envelope combined together.
18534 @end table
18535
18536 @item graticule, g
18537 Set what kind of graticule to draw.
18538 @table @samp
18539 @item none
18540 @item green
18541 @item color
18542 @end table
18543
18544 @item opacity, o
18545 Set graticule opacity.
18546
18547 @item flags, f
18548 Set graticule flags.
18549
18550 @table @samp
18551 @item white
18552 Draw graticule for white point.
18553
18554 @item black
18555 Draw graticule for black point.
18556
18557 @item name
18558 Draw color points short names.
18559 @end table
18560
18561 @item bgopacity, b
18562 Set background opacity.
18563
18564 @item lthreshold, l
18565 Set low threshold for color component not represented on X or Y axis.
18566 Values lower than this value will be ignored. Default is 0.
18567 Note this value is multiplied with actual max possible value one pixel component
18568 can have. So for 8-bit input and low threshold value of 0.1 actual threshold
18569 is 0.1 * 255 = 25.
18570
18571 @item hthreshold, h
18572 Set high threshold for color component not represented on X or Y axis.
18573 Values higher than this value will be ignored. Default is 1.
18574 Note this value is multiplied with actual max possible value one pixel component
18575 can have. So for 8-bit input and high threshold value of 0.9 actual threshold
18576 is 0.9 * 255 = 230.
18577
18578 @item colorspace, c
18579 Set what kind of colorspace to use when drawing graticule.
18580 @table @samp
18581 @item auto
18582 @item 601
18583 @item 709
18584 @end table
18585 Default is auto.
18586 @end table
18587
18588 @anchor{vidstabdetect}
18589 @section vidstabdetect
18590
18591 Analyze video stabilization/deshaking. Perform pass 1 of 2, see
18592 @ref{vidstabtransform} for pass 2.
18593
18594 This filter generates a file with relative translation and rotation
18595 transform information about subsequent frames, which is then used by
18596 the @ref{vidstabtransform} filter.
18597
18598 To enable compilation of this filter you need to configure FFmpeg with
18599 @code{--enable-libvidstab}.
18600
18601 This filter accepts the following options:
18602
18603 @table @option
18604 @item result
18605 Set the path to the file used to write the transforms information.
18606 Default value is @file{transforms.trf}.
18607
18608 @item shakiness
18609 Set how shaky the video is and how quick the camera is. It accepts an
18610 integer in the range 1-10, a value of 1 means little shakiness, a
18611 value of 10 means strong shakiness. Default value is 5.
18612
18613 @item accuracy
18614 Set the accuracy of the detection process. It must be a value in the
18615 range 1-15. A value of 1 means low accuracy, a value of 15 means high
18616 accuracy. Default value is 15.
18617
18618 @item stepsize
18619 Set stepsize of the search process. The region around minimum is
18620 scanned with 1 pixel resolution. Default value is 6.
18621
18622 @item mincontrast
18623 Set minimum contrast. Below this value a local measurement field is
18624 discarded. Must be a floating point value in the range 0-1. Default
18625 value is 0.3.
18626
18627 @item tripod
18628 Set reference frame number for tripod mode.
18629
18630 If enabled, the motion of the frames is compared to a reference frame
18631 in the filtered stream, identified by the specified number. The idea
18632 is to compensate all movements in a more-or-less static scene and keep
18633 the camera view absolutely still.
18634
18635 If set to 0, it is disabled. The frames are counted starting from 1.
18636
18637 @item show
18638 Show fields and transforms in the resulting frames. It accepts an
18639 integer in the range 0-2. Default value is 0, which disables any
18640 visualization.
18641 @end table
18642
18643 @subsection Examples
18644
18645 @itemize
18646 @item
18647 Use default values:
18648 @example
18649 vidstabdetect
18650 @end example
18651
18652 @item
18653 Analyze strongly shaky movie and put the results in file
18654 @file{mytransforms.trf}:
18655 @example
18656 vidstabdetect=shakiness=10:accuracy=15:result="mytransforms.trf"
18657 @end example
18658
18659 @item
18660 Visualize the result of internal transformations in the resulting
18661 video:
18662 @example
18663 vidstabdetect=show=1
18664 @end example
18665
18666 @item
18667 Analyze a video with medium shakiness using @command{ffmpeg}:
18668 @example
18669 ffmpeg -i input -vf vidstabdetect=shakiness=5:show=1 dummy.avi
18670 @end example
18671 @end itemize
18672
18673 @anchor{vidstabtransform}
18674 @section vidstabtransform
18675
18676 Video stabilization/deshaking: pass 2 of 2,
18677 see @ref{vidstabdetect} for pass 1.
18678
18679 Read a file with transform information for each frame and
18680 apply/compensate them. Together with the @ref{vidstabdetect}
18681 filter this can be used to deshake videos. See also
18682 @url{http://public.hronopik.de/vid.stab}. It is important to also use
18683 the @ref{unsharp} filter, see below.
18684
18685 To enable compilation of this filter you need to configure FFmpeg with
18686 @code{--enable-libvidstab}.
18687
18688 @subsection Options
18689
18690 @table @option
18691 @item input
18692 Set path to the file used to read the transforms. Default value is
18693 @file{transforms.trf}.
18694
18695 @item smoothing
18696 Set the number of frames (value*2 + 1) used for lowpass filtering the
18697 camera movements. Default value is 10.
18698
18699 For example a number of 10 means that 21 frames are used (10 in the
18700 past and 10 in the future) to smoothen the motion in the video. A
18701 larger value leads to a smoother video, but limits the acceleration of
18702 the camera (pan/tilt movements). 0 is a special case where a static
18703 camera is simulated.
18704
18705 @item optalgo
18706 Set the camera path optimization algorithm.
18707
18708 Accepted values are:
18709 @table @samp
18710 @item gauss
18711 gaussian kernel low-pass filter on camera motion (default)
18712 @item avg
18713 averaging on transformations
18714 @end table
18715
18716 @item maxshift
18717 Set maximal number of pixels to translate frames. Default value is -1,
18718 meaning no limit.
18719
18720 @item maxangle
18721 Set maximal angle in radians (degree*PI/180) to rotate frames. Default
18722 value is -1, meaning no limit.
18723
18724 @item crop
18725 Specify how to deal with borders that may be visible due to movement
18726 compensation.
18727
18728 Available values are:
18729 @table @samp
18730 @item keep
18731 keep image information from previous frame (default)
18732 @item black
18733 fill the border black
18734 @end table
18735
18736 @item invert
18737 Invert transforms if set to 1. Default value is 0.
18738
18739 @item relative
18740 Consider transforms as relative to previous frame if set to 1,
18741 absolute if set to 0. Default value is 0.
18742
18743 @item zoom
18744 Set percentage to zoom. A positive value will result in a zoom-in
18745 effect, a negative value in a zoom-out effect. Default value is 0 (no
18746 zoom).
18747
18748 @item optzoom
18749 Set optimal zooming to avoid borders.
18750
18751 Accepted values are:
18752 @table @samp
18753 @item 0
18754 disabled
18755 @item 1
18756 optimal static zoom value is determined (only very strong movements
18757 will lead to visible borders) (default)
18758 @item 2
18759 optimal adaptive zoom value is determined (no borders will be
18760 visible), see @option{zoomspeed}
18761 @end table
18762
18763 Note that the value given at zoom is added to the one calculated here.
18764
18765 @item zoomspeed
18766 Set percent to zoom maximally each frame (enabled when
18767 @option{optzoom} is set to 2). Range is from 0 to 5, default value is
18768 0.25.
18769
18770 @item interpol
18771 Specify type of interpolation.
18772
18773 Available values are:
18774 @table @samp
18775 @item no
18776 no interpolation
18777 @item linear
18778 linear only horizontal
18779 @item bilinear
18780 linear in both directions (default)
18781 @item bicubic
18782 cubic in both directions (slow)
18783 @end table
18784
18785 @item tripod
18786 Enable virtual tripod mode if set to 1, which is equivalent to
18787 @code{relative=0:smoothing=0}. Default value is 0.
18788
18789 Use also @code{tripod} option of @ref{vidstabdetect}.
18790
18791 @item debug
18792 Increase log verbosity if set to 1. Also the detected global motions
18793 are written to the temporary file @file{global_motions.trf}. Default
18794 value is 0.
18795 @end table
18796
18797 @subsection Examples
18798
18799 @itemize
18800 @item
18801 Use @command{ffmpeg} for a typical stabilization with default values:
18802 @example
18803 ffmpeg -i inp.mpeg -vf vidstabtransform,unsharp=5:5:0.8:3:3:0.4 inp_stabilized.mpeg
18804 @end example
18805
18806 Note the use of the @ref{unsharp} filter which is always recommended.
18807
18808 @item
18809 Zoom in a bit more and load transform data from a given file:
18810 @example
18811 vidstabtransform=zoom=5:input="mytransforms.trf"
18812 @end example
18813
18814 @item
18815 Smoothen the video even more:
18816 @example
18817 vidstabtransform=smoothing=30
18818 @end example
18819 @end itemize
18820
18821 @section vflip
18822
18823 Flip the input video vertically.
18824
18825 For example, to vertically flip a video with @command{ffmpeg}:
18826 @example
18827 ffmpeg -i in.avi -vf "vflip" out.avi
18828 @end example
18829
18830 @section vfrdet
18831
18832 Detect variable frame rate video.
18833
18834 This filter tries to detect if the input is variable or constant frame rate.
18835
18836 At end it will output number of frames detected as having variable delta pts,
18837 and ones with constant delta pts.
18838 If there was frames with variable delta, than it will also show min and max delta
18839 encountered.
18840
18841 @section vibrance
18842
18843 Boost or alter saturation.
18844
18845 The filter accepts the following options:
18846 @table @option
18847 @item intensity
18848 Set strength of boost if positive value or strength of alter if negative value.
18849 Default is 0. Allowed range is from -2 to 2.
18850
18851 @item rbal
18852 Set the red balance. Default is 1. Allowed range is from -10 to 10.
18853
18854 @item gbal
18855 Set the green balance. Default is 1. Allowed range is from -10 to 10.
18856
18857 @item bbal
18858 Set the blue balance. Default is 1. Allowed range is from -10 to 10.
18859
18860 @item rlum
18861 Set the red luma coefficient.
18862
18863 @item glum
18864 Set the green luma coefficient.
18865
18866 @item blum
18867 Set the blue luma coefficient.
18868
18869 @item alternate
18870 If @code{intensity} is negative and this is set to 1, colors will change,
18871 otherwise colors will be less saturated, more towards gray.
18872 @end table
18873
18874 @anchor{vignette}
18875 @section vignette
18876
18877 Make or reverse a natural vignetting effect.
18878
18879 The filter accepts the following options:
18880
18881 @table @option
18882 @item angle, a
18883 Set lens angle expression as a number of radians.
18884
18885 The value is clipped in the @code{[0,PI/2]} range.
18886
18887 Default value: @code{"PI/5"}
18888
18889 @item x0
18890 @item y0
18891 Set center coordinates expressions. Respectively @code{"w/2"} and @code{"h/2"}
18892 by default.
18893
18894 @item mode
18895 Set forward/backward mode.
18896
18897 Available modes are:
18898 @table @samp
18899 @item forward
18900 The larger the distance from the central point, the darker the image becomes.
18901
18902 @item backward
18903 The larger the distance from the central point, the brighter the image becomes.
18904 This can be used to reverse a vignette effect, though there is no automatic
18905 detection to extract the lens @option{angle} and other settings (yet). It can
18906 also be used to create a burning effect.
18907 @end table
18908
18909 Default value is @samp{forward}.
18910
18911 @item eval
18912 Set evaluation mode for the expressions (@option{angle}, @option{x0}, @option{y0}).
18913
18914 It accepts the following values:
18915 @table @samp
18916 @item init
18917 Evaluate expressions only once during the filter initialization.
18918
18919 @item frame
18920 Evaluate expressions for each incoming frame. This is way slower than the
18921 @samp{init} mode since it requires all the scalers to be re-computed, but it
18922 allows advanced dynamic expressions.
18923 @end table
18924
18925 Default value is @samp{init}.
18926
18927 @item dither
18928 Set dithering to reduce the circular banding effects. Default is @code{1}
18929 (enabled).
18930
18931 @item aspect
18932 Set vignette aspect. This setting allows one to adjust the shape of the vignette.
18933 Setting this value to the SAR of the input will make a rectangular vignetting
18934 following the dimensions of the video.
18935
18936 Default is @code{1/1}.
18937 @end table
18938
18939 @subsection Expressions
18940
18941 The @option{alpha}, @option{x0} and @option{y0} expressions can contain the
18942 following parameters.
18943
18944 @table @option
18945 @item w
18946 @item h
18947 input width and height
18948
18949 @item n
18950 the number of input frame, starting from 0
18951
18952 @item pts
18953 the PTS (Presentation TimeStamp) time of the filtered video frame, expressed in
18954 @var{TB} units, NAN if undefined
18955
18956 @item r
18957 frame rate of the input video, NAN if the input frame rate is unknown
18958
18959 @item t
18960 the PTS (Presentation TimeStamp) of the filtered video frame,
18961 expressed in seconds, NAN if undefined
18962
18963 @item tb
18964 time base of the input video
18965 @end table
18966
18967
18968 @subsection Examples
18969
18970 @itemize
18971 @item
18972 Apply simple strong vignetting effect:
18973 @example
18974 vignette=PI/4
18975 @end example
18976
18977 @item
18978 Make a flickering vignetting:
18979 @example
18980 vignette='PI/4+random(1)*PI/50':eval=frame
18981 @end example
18982
18983 @end itemize
18984
18985 @section vmafmotion
18986
18987 Obtain the average vmaf motion score of a video.
18988 It is one of the component filters of VMAF.
18989
18990 The obtained average motion score is printed through the logging system.
18991
18992 In the below example the input file @file{ref.mpg} is being processed and score
18993 is computed.
18994
18995 @example
18996 ffmpeg -i ref.mpg -lavfi vmafmotion -f null -
18997 @end example
18998
18999 @section vstack
19000 Stack input videos vertically.
19001
19002 All streams must be of same pixel format and of same width.
19003
19004 Note that this filter is faster than using @ref{overlay} and @ref{pad} filter
19005 to create same output.
19006
19007 The filter accepts the following options:
19008
19009 @table @option
19010 @item inputs
19011 Set number of input streams. Default is 2.
19012
19013 @item shortest
19014 If set to 1, force the output to terminate when the shortest input
19015 terminates. Default value is 0.
19016 @end table
19017
19018 @section w3fdif
19019
19020 Deinterlace the input video ("w3fdif" stands for "Weston 3 Field
19021 Deinterlacing Filter").
19022
19023 Based on the process described by Martin Weston for BBC R&D, and
19024 implemented based on the de-interlace algorithm written by Jim
19025 Easterbrook for BBC R&D, the Weston 3 field deinterlacing filter
19026 uses filter coefficients calculated by BBC R&D.
19027
19028 This filter uses field-dominance information in frame to decide which
19029 of each pair of fields to place first in the output.
19030 If it gets it wrong use @ref{setfield} filter before @code{w3fdif} filter.
19031
19032 There are two sets of filter coefficients, so called "simple"
19033 and "complex". Which set of filter coefficients is used can
19034 be set by passing an optional parameter:
19035
19036 @table @option
19037 @item filter
19038 Set the interlacing filter coefficients. Accepts one of the following values:
19039
19040 @table @samp
19041 @item simple
19042 Simple filter coefficient set.
19043 @item complex
19044 More-complex filter coefficient set.
19045 @end table
19046 Default value is @samp{complex}.
19047
19048 @item deint
19049 Specify which frames to deinterlace. Accepts one of the following values:
19050
19051 @table @samp
19052 @item all
19053 Deinterlace all frames,
19054 @item interlaced
19055 Only deinterlace frames marked as interlaced.
19056 @end table
19057
19058 Default value is @samp{all}.
19059 @end table
19060
19061 @section waveform
19062 Video waveform monitor.
19063
19064 The waveform monitor plots color component intensity. By default luminance
19065 only. Each column of the waveform corresponds to a column of pixels in the
19066 source video.
19067
19068 It accepts the following options:
19069
19070 @table @option
19071 @item mode, m
19072 Can be either @code{row}, or @code{column}. Default is @code{column}.
19073 In row mode, the graph on the left side represents color component value 0 and
19074 the right side represents value = 255. In column mode, the top side represents
19075 color component value = 0 and bottom side represents value = 255.
19076
19077 @item intensity, i
19078 Set intensity. Smaller values are useful to find out how many values of the same
19079 luminance are distributed across input rows/columns.
19080 Default value is @code{0.04}. Allowed range is [0, 1].
19081
19082 @item mirror, r
19083 Set mirroring mode. @code{0} means unmirrored, @code{1} means mirrored.
19084 In mirrored mode, higher values will be represented on the left
19085 side for @code{row} mode and at the top for @code{column} mode. Default is
19086 @code{1} (mirrored).
19087
19088 @item display, d
19089 Set display mode.
19090 It accepts the following values:
19091 @table @samp
19092 @item overlay
19093 Presents information identical to that in the @code{parade}, except
19094 that the graphs representing color components are superimposed directly
19095 over one another.
19096
19097 This display mode makes it easier to spot relative differences or similarities
19098 in overlapping areas of the color components that are supposed to be identical,
19099 such as neutral whites, grays, or blacks.
19100
19101 @item stack
19102 Display separate graph for the color components side by side in
19103 @code{row} mode or one below the other in @code{column} mode.
19104
19105 @item parade
19106 Display separate graph for the color components side by side in
19107 @code{column} mode or one below the other in @code{row} mode.
19108
19109 Using this display mode makes it easy to spot color casts in the highlights
19110 and shadows of an image, by comparing the contours of the top and the bottom
19111 graphs of each waveform. Since whites, grays, and blacks are characterized
19112 by exactly equal amounts of red, green, and blue, neutral areas of the picture
19113 should display three waveforms of roughly equal width/height. If not, the
19114 correction is easy to perform by making level adjustments the three waveforms.
19115 @end table
19116 Default is @code{stack}.
19117
19118 @item components, c
19119 Set which color components to display. Default is 1, which means only luminance
19120 or red color component if input is in RGB colorspace. If is set for example to
19121 7 it will display all 3 (if) available color components.
19122
19123 @item envelope, e
19124 @table @samp
19125 @item none
19126 No envelope, this is default.
19127
19128 @item instant
19129 Instant envelope, minimum and maximum values presented in graph will be easily
19130 visible even with small @code{step} value.
19131
19132 @item peak
19133 Hold minimum and maximum values presented in graph across time. This way you
19134 can still spot out of range values without constantly looking at waveforms.
19135
19136 @item peak+instant
19137 Peak and instant envelope combined together.
19138 @end table
19139
19140 @item filter, f
19141 @table @samp
19142 @item lowpass
19143 No filtering, this is default.
19144
19145 @item flat
19146 Luma and chroma combined together.
19147
19148 @item aflat
19149 Similar as above, but shows difference between blue and red chroma.
19150
19151 @item xflat
19152 Similar as above, but use different colors.
19153
19154 @item yflat
19155 Similar as above, but again with different colors.
19156
19157 @item chroma
19158 Displays only chroma.
19159
19160 @item color
19161 Displays actual color value on waveform.
19162
19163 @item acolor
19164 Similar as above, but with luma showing frequency of chroma values.
19165 @end table
19166
19167 @item graticule, g
19168 Set which graticule to display.
19169
19170 @table @samp
19171 @item none
19172 Do not display graticule.
19173
19174 @item green
19175 Display green graticule showing legal broadcast ranges.
19176
19177 @item orange
19178 Display orange graticule showing legal broadcast ranges.
19179
19180 @item invert
19181 Display invert graticule showing legal broadcast ranges.
19182 @end table
19183
19184 @item opacity, o
19185 Set graticule opacity.
19186
19187 @item flags, fl
19188 Set graticule flags.
19189
19190 @table @samp
19191 @item numbers
19192 Draw numbers above lines. By default enabled.
19193
19194 @item dots
19195 Draw dots instead of lines.
19196 @end table
19197
19198 @item scale, s
19199 Set scale used for displaying graticule.
19200
19201 @table @samp
19202 @item digital
19203 @item millivolts
19204 @item ire
19205 @end table
19206 Default is digital.
19207
19208 @item bgopacity, b
19209 Set background opacity.
19210 @end table
19211
19212 @section weave, doubleweave
19213
19214 The @code{weave} takes a field-based video input and join
19215 each two sequential fields into single frame, producing a new double
19216 height clip with half the frame rate and half the frame count.
19217
19218 The @code{doubleweave} works same as @code{weave} but without
19219 halving frame rate and frame count.
19220
19221 It accepts the following option:
19222
19223 @table @option
19224 @item first_field
19225 Set first field. Available values are:
19226
19227 @table @samp
19228 @item top, t
19229 Set the frame as top-field-first.
19230
19231 @item bottom, b
19232 Set the frame as bottom-field-first.
19233 @end table
19234 @end table
19235
19236 @subsection Examples
19237
19238 @itemize
19239 @item
19240 Interlace video using @ref{select} and @ref{separatefields} filter:
19241 @example
19242 separatefields,select=eq(mod(n,4),0)+eq(mod(n,4),3),weave
19243 @end example
19244 @end itemize
19245
19246 @section xbr
19247 Apply the xBR high-quality magnification filter which is designed for pixel
19248 art. It follows a set of edge-detection rules, see
19249 @url{https://forums.libretro.com/t/xbr-algorithm-tutorial/123}.
19250
19251 It accepts the following option:
19252
19253 @table @option
19254 @item n
19255 Set the scaling dimension: @code{2} for @code{2xBR}, @code{3} for
19256 @code{3xBR} and @code{4} for @code{4xBR}.
19257 Default is @code{3}.
19258 @end table
19259
19260 @section xmedian
19261 Pick median pixels from several input videos.
19262
19263 The filter accepts the following options:
19264
19265 @table @option
19266 @item inputs
19267 Set number of inputs.
19268 Default is 3. Allowed range is from 3 to 255.
19269 If number of inputs is even number, than result will be mean value between two median values.
19270
19271 @item planes
19272 Set which planes to filter. Default value is @code{15}, by which all planes are processed.
19273 @end table
19274
19275 @section xstack
19276 Stack video inputs into custom layout.
19277
19278 All streams must be of same pixel format.
19279
19280 The filter accepts the following options:
19281
19282 @table @option
19283 @item inputs
19284 Set number of input streams. Default is 2.
19285
19286 @item layout
19287 Specify layout of inputs.
19288 This option requires the desired layout configuration to be explicitly set by the user.
19289 This sets position of each video input in output. Each input
19290 is separated by '|'.
19291 The first number represents the column, and the second number represents the row.
19292 Numbers start at 0 and are separated by '_'. Optionally one can use wX and hX,
19293 where X is video input from which to take width or height.
19294 Multiple values can be used when separated by '+'. In such
19295 case values are summed together.
19296
19297 Note that if inputs are of different sizes gaps may appear, as not all of
19298 the output video frame will be filled. Similarly, videos can overlap each
19299 other if their position doesn't leave enough space for the full frame of
19300 adjoining videos.
19301
19302 For 2 inputs, a default layout of @code{0_0|w0_0} is set. In all other cases,
19303 a layout must be set by the user.
19304
19305 @item shortest
19306 If set to 1, force the output to terminate when the shortest input
19307 terminates. Default value is 0.
19308 @end table
19309
19310 @subsection Examples
19311
19312 @itemize
19313 @item
19314 Display 4 inputs into 2x2 grid.
19315
19316 Layout:
19317 @example
19318 input1(0, 0)  | input3(w0, 0)
19319 input2(0, h0) | input4(w0, h0)
19320 @end example
19321
19322 @example
19323 xstack=inputs=4:layout=0_0|0_h0|w0_0|w0_h0
19324 @end example
19325
19326 Note that if inputs are of different sizes, gaps or overlaps may occur.
19327
19328 @item
19329 Display 4 inputs into 1x4 grid.
19330
19331 Layout:
19332 @example
19333 input1(0, 0)
19334 input2(0, h0)
19335 input3(0, h0+h1)
19336 input4(0, h0+h1+h2)
19337 @end example
19338
19339 @example
19340 xstack=inputs=4:layout=0_0|0_h0|0_h0+h1|0_h0+h1+h2
19341 @end example
19342
19343 Note that if inputs are of different widths, unused space will appear.
19344
19345 @item
19346 Display 9 inputs into 3x3 grid.
19347
19348 Layout:
19349 @example
19350 input1(0, 0)       | input4(w0, 0)      | input7(w0+w3, 0)
19351 input2(0, h0)      | input5(w0, h0)     | input8(w0+w3, h0)
19352 input3(0, h0+h1)   | input6(w0, h0+h1)  | input9(w0+w3, h0+h1)
19353 @end example
19354
19355 @example
19356 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
19357 @end example
19358
19359 Note that if inputs are of different sizes, gaps or overlaps may occur.
19360
19361 @item
19362 Display 16 inputs into 4x4 grid.
19363
19364 Layout:
19365 @example
19366 input1(0, 0)       | input5(w0, 0)       | input9 (w0+w4, 0)       | input13(w0+w4+w8, 0)
19367 input2(0, h0)      | input6(w0, h0)      | input10(w0+w4, h0)      | input14(w0+w4+w8, h0)
19368 input3(0, h0+h1)   | input7(w0, h0+h1)   | input11(w0+w4, h0+h1)   | input15(w0+w4+w8, h0+h1)
19369 input4(0, h0+h1+h2)| input8(w0, h0+h1+h2)| input12(w0+w4, h0+h1+h2)| input16(w0+w4+w8, h0+h1+h2)
19370 @end example
19371
19372 @example
19373 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|
19374 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
19375 @end example
19376
19377 Note that if inputs are of different sizes, gaps or overlaps may occur.
19378
19379 @end itemize
19380
19381 @anchor{yadif}
19382 @section yadif
19383
19384 Deinterlace the input video ("yadif" means "yet another deinterlacing
19385 filter").
19386
19387 It accepts the following parameters:
19388
19389
19390 @table @option
19391
19392 @item mode
19393 The interlacing mode to adopt. It accepts one of the following values:
19394
19395 @table @option
19396 @item 0, send_frame
19397 Output one frame for each frame.
19398 @item 1, send_field
19399 Output one frame for each field.
19400 @item 2, send_frame_nospatial
19401 Like @code{send_frame}, but it skips the spatial interlacing check.
19402 @item 3, send_field_nospatial
19403 Like @code{send_field}, but it skips the spatial interlacing check.
19404 @end table
19405
19406 The default value is @code{send_frame}.
19407
19408 @item parity
19409 The picture field parity assumed for the input interlaced video. It accepts one
19410 of the following values:
19411
19412 @table @option
19413 @item 0, tff
19414 Assume the top field is first.
19415 @item 1, bff
19416 Assume the bottom field is first.
19417 @item -1, auto
19418 Enable automatic detection of field parity.
19419 @end table
19420
19421 The default value is @code{auto}.
19422 If the interlacing is unknown or the decoder does not export this information,
19423 top field first will be assumed.
19424
19425 @item deint
19426 Specify which frames to deinterlace. Accepts one of the following
19427 values:
19428
19429 @table @option
19430 @item 0, all
19431 Deinterlace all frames.
19432 @item 1, interlaced
19433 Only deinterlace frames marked as interlaced.
19434 @end table
19435
19436 The default value is @code{all}.
19437 @end table
19438
19439 @section yadif_cuda
19440
19441 Deinterlace the input video using the @ref{yadif} algorithm, but implemented
19442 in CUDA so that it can work as part of a GPU accelerated pipeline with nvdec
19443 and/or nvenc.
19444
19445 It accepts the following parameters:
19446
19447
19448 @table @option
19449
19450 @item mode
19451 The interlacing mode to adopt. It accepts one of the following values:
19452
19453 @table @option
19454 @item 0, send_frame
19455 Output one frame for each frame.
19456 @item 1, send_field
19457 Output one frame for each field.
19458 @item 2, send_frame_nospatial
19459 Like @code{send_frame}, but it skips the spatial interlacing check.
19460 @item 3, send_field_nospatial
19461 Like @code{send_field}, but it skips the spatial interlacing check.
19462 @end table
19463
19464 The default value is @code{send_frame}.
19465
19466 @item parity
19467 The picture field parity assumed for the input interlaced video. It accepts one
19468 of the following values:
19469
19470 @table @option
19471 @item 0, tff
19472 Assume the top field is first.
19473 @item 1, bff
19474 Assume the bottom field is first.
19475 @item -1, auto
19476 Enable automatic detection of field parity.
19477 @end table
19478
19479 The default value is @code{auto}.
19480 If the interlacing is unknown or the decoder does not export this information,
19481 top field first will be assumed.
19482
19483 @item deint
19484 Specify which frames to deinterlace. Accepts one of the following
19485 values:
19486
19487 @table @option
19488 @item 0, all
19489 Deinterlace all frames.
19490 @item 1, interlaced
19491 Only deinterlace frames marked as interlaced.
19492 @end table
19493
19494 The default value is @code{all}.
19495 @end table
19496
19497 @section zoompan
19498
19499 Apply Zoom & Pan effect.
19500
19501 This filter accepts the following options:
19502
19503 @table @option
19504 @item zoom, z
19505 Set the zoom expression. Range is 1-10. Default is 1.
19506
19507 @item x
19508 @item y
19509 Set the x and y expression. Default is 0.
19510
19511 @item d
19512 Set the duration expression in number of frames.
19513 This sets for how many number of frames effect will last for
19514 single input image.
19515
19516 @item s
19517 Set the output image size, default is 'hd720'.
19518
19519 @item fps
19520 Set the output frame rate, default is '25'.
19521 @end table
19522
19523 Each expression can contain the following constants:
19524
19525 @table @option
19526 @item in_w, iw
19527 Input width.
19528
19529 @item in_h, ih
19530 Input height.
19531
19532 @item out_w, ow
19533 Output width.
19534
19535 @item out_h, oh
19536 Output height.
19537
19538 @item in
19539 Input frame count.
19540
19541 @item on
19542 Output frame count.
19543
19544 @item x
19545 @item y
19546 Last calculated 'x' and 'y' position from 'x' and 'y' expression
19547 for current input frame.
19548
19549 @item px
19550 @item py
19551 'x' and 'y' of last output frame of previous input frame or 0 when there was
19552 not yet such frame (first input frame).
19553
19554 @item zoom
19555 Last calculated zoom from 'z' expression for current input frame.
19556
19557 @item pzoom
19558 Last calculated zoom of last output frame of previous input frame.
19559
19560 @item duration
19561 Number of output frames for current input frame. Calculated from 'd' expression
19562 for each input frame.
19563
19564 @item pduration
19565 number of output frames created for previous input frame
19566
19567 @item a
19568 Rational number: input width / input height
19569
19570 @item sar
19571 sample aspect ratio
19572
19573 @item dar
19574 display aspect ratio
19575
19576 @end table
19577
19578 @subsection Examples
19579
19580 @itemize
19581 @item
19582 Zoom-in up to 1.5 and pan at same time to some spot near center of picture:
19583 @example
19584 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
19585 @end example
19586
19587 @item
19588 Zoom-in up to 1.5 and pan always at center of picture:
19589 @example
19590 zoompan=z='min(zoom+0.0015,1.5)':d=700:x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)'
19591 @end example
19592
19593 @item
19594 Same as above but without pausing:
19595 @example
19596 zoompan=z='min(max(zoom,pzoom)+0.0015,1.5)':d=1:x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)'
19597 @end example
19598 @end itemize
19599
19600 @anchor{zscale}
19601 @section zscale
19602 Scale (resize) the input video, using the z.lib library:
19603 @url{https://github.com/sekrit-twc/zimg}. To enable compilation of this
19604 filter, you need to configure FFmpeg with @code{--enable-libzimg}.
19605
19606 The zscale filter forces the output display aspect ratio to be the same
19607 as the input, by changing the output sample aspect ratio.
19608
19609 If the input image format is different from the format requested by
19610 the next filter, the zscale filter will convert the input to the
19611 requested format.
19612
19613 @subsection Options
19614 The filter accepts the following options.
19615
19616 @table @option
19617 @item width, w
19618 @item height, h
19619 Set the output video dimension expression. Default value is the input
19620 dimension.
19621
19622 If the @var{width} or @var{w} value is 0, the input width is used for
19623 the output. If the @var{height} or @var{h} value is 0, the input height
19624 is used for the output.
19625
19626 If one and only one of the values is -n with n >= 1, the zscale filter
19627 will use a value that maintains the aspect ratio of the input image,
19628 calculated from the other specified dimension. After that it will,
19629 however, make sure that the calculated dimension is divisible by n and
19630 adjust the value if necessary.
19631
19632 If both values are -n with n >= 1, the behavior will be identical to
19633 both values being set to 0 as previously detailed.
19634
19635 See below for the list of accepted constants for use in the dimension
19636 expression.
19637
19638 @item size, s
19639 Set the video size. For the syntax of this option, check the
19640 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
19641
19642 @item dither, d
19643 Set the dither type.
19644
19645 Possible values are:
19646 @table @var
19647 @item none
19648 @item ordered
19649 @item random
19650 @item error_diffusion
19651 @end table
19652
19653 Default is none.
19654
19655 @item filter, f
19656 Set the resize filter type.
19657
19658 Possible values are:
19659 @table @var
19660 @item point
19661 @item bilinear
19662 @item bicubic
19663 @item spline16
19664 @item spline36
19665 @item lanczos
19666 @end table
19667
19668 Default is bilinear.
19669
19670 @item range, r
19671 Set the color range.
19672
19673 Possible values are:
19674 @table @var
19675 @item input
19676 @item limited
19677 @item full
19678 @end table
19679
19680 Default is same as input.
19681
19682 @item primaries, p
19683 Set the color primaries.
19684
19685 Possible values are:
19686 @table @var
19687 @item input
19688 @item 709
19689 @item unspecified
19690 @item 170m
19691 @item 240m
19692 @item 2020
19693 @end table
19694
19695 Default is same as input.
19696
19697 @item transfer, t
19698 Set the transfer characteristics.
19699
19700 Possible values are:
19701 @table @var
19702 @item input
19703 @item 709
19704 @item unspecified
19705 @item 601
19706 @item linear
19707 @item 2020_10
19708 @item 2020_12
19709 @item smpte2084
19710 @item iec61966-2-1
19711 @item arib-std-b67
19712 @end table
19713
19714 Default is same as input.
19715
19716 @item matrix, m
19717 Set the colorspace matrix.
19718
19719 Possible value are:
19720 @table @var
19721 @item input
19722 @item 709
19723 @item unspecified
19724 @item 470bg
19725 @item 170m
19726 @item 2020_ncl
19727 @item 2020_cl
19728 @end table
19729
19730 Default is same as input.
19731
19732 @item rangein, rin
19733 Set the input color range.
19734
19735 Possible values are:
19736 @table @var
19737 @item input
19738 @item limited
19739 @item full
19740 @end table
19741
19742 Default is same as input.
19743
19744 @item primariesin, pin
19745 Set the input color primaries.
19746
19747 Possible values are:
19748 @table @var
19749 @item input
19750 @item 709
19751 @item unspecified
19752 @item 170m
19753 @item 240m
19754 @item 2020
19755 @end table
19756
19757 Default is same as input.
19758
19759 @item transferin, tin
19760 Set the input transfer characteristics.
19761
19762 Possible values are:
19763 @table @var
19764 @item input
19765 @item 709
19766 @item unspecified
19767 @item 601
19768 @item linear
19769 @item 2020_10
19770 @item 2020_12
19771 @end table
19772
19773 Default is same as input.
19774
19775 @item matrixin, min
19776 Set the input colorspace matrix.
19777
19778 Possible value are:
19779 @table @var
19780 @item input
19781 @item 709
19782 @item unspecified
19783 @item 470bg
19784 @item 170m
19785 @item 2020_ncl
19786 @item 2020_cl
19787 @end table
19788
19789 @item chromal, c
19790 Set the output chroma location.
19791
19792 Possible values are:
19793 @table @var
19794 @item input
19795 @item left
19796 @item center
19797 @item topleft
19798 @item top
19799 @item bottomleft
19800 @item bottom
19801 @end table
19802
19803 @item chromalin, cin
19804 Set the input chroma location.
19805
19806 Possible values are:
19807 @table @var
19808 @item input
19809 @item left
19810 @item center
19811 @item topleft
19812 @item top
19813 @item bottomleft
19814 @item bottom
19815 @end table
19816
19817 @item npl
19818 Set the nominal peak luminance.
19819 @end table
19820
19821 The values of the @option{w} and @option{h} options are expressions
19822 containing the following constants:
19823
19824 @table @var
19825 @item in_w
19826 @item in_h
19827 The input width and height
19828
19829 @item iw
19830 @item ih
19831 These are the same as @var{in_w} and @var{in_h}.
19832
19833 @item out_w
19834 @item out_h
19835 The output (scaled) width and height
19836
19837 @item ow
19838 @item oh
19839 These are the same as @var{out_w} and @var{out_h}
19840
19841 @item a
19842 The same as @var{iw} / @var{ih}
19843
19844 @item sar
19845 input sample aspect ratio
19846
19847 @item dar
19848 The input display aspect ratio. Calculated from @code{(iw / ih) * sar}.
19849
19850 @item hsub
19851 @item vsub
19852 horizontal and vertical input chroma subsample values. For example for the
19853 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
19854
19855 @item ohsub
19856 @item ovsub
19857 horizontal and vertical output chroma subsample values. For example for the
19858 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
19859 @end table
19860
19861 @table @option
19862 @end table
19863
19864 @c man end VIDEO FILTERS
19865
19866 @chapter OpenCL Video Filters
19867 @c man begin OPENCL VIDEO FILTERS
19868
19869 Below is a description of the currently available OpenCL video filters.
19870
19871 To enable compilation of these filters you need to configure FFmpeg with
19872 @code{--enable-opencl}.
19873
19874 Running OpenCL filters requires you to initialize a hardware device and to pass that device to all filters in any filter graph.
19875 @table @option
19876
19877 @item -init_hw_device opencl[=@var{name}][:@var{device}[,@var{key=value}...]]
19878 Initialise a new hardware device of type @var{opencl} called @var{name}, using the
19879 given device parameters.
19880
19881 @item -filter_hw_device @var{name}
19882 Pass the hardware device called @var{name} to all filters in any filter graph.
19883
19884 @end table
19885
19886 For more detailed information see @url{https://www.ffmpeg.org/ffmpeg.html#Advanced-Video-options}
19887
19888 @itemize
19889 @item
19890 Example of choosing the first device on the second platform and running avgblur_opencl filter with default parameters on it.
19891 @example
19892 -init_hw_device opencl=gpu:1.0 -filter_hw_device gpu -i INPUT -vf "hwupload, avgblur_opencl, hwdownload" OUTPUT
19893 @end example
19894 @end itemize
19895
19896 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.
19897
19898 @section avgblur_opencl
19899
19900 Apply average blur filter.
19901
19902 The filter accepts the following options:
19903
19904 @table @option
19905 @item sizeX
19906 Set horizontal radius size.
19907 Range is @code{[1, 1024]} and default value is @code{1}.
19908
19909 @item planes
19910 Set which planes to filter. Default value is @code{0xf}, by which all planes are processed.
19911
19912 @item sizeY
19913 Set vertical radius size. Range is @code{[1, 1024]} and default value is @code{0}. If zero, @code{sizeX} value will be used.
19914 @end table
19915
19916 @subsection Example
19917
19918 @itemize
19919 @item
19920 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.
19921 @example
19922 -i INPUT -vf "hwupload, avgblur_opencl=3, hwdownload" OUTPUT
19923 @end example
19924 @end itemize
19925
19926 @section boxblur_opencl
19927
19928 Apply a boxblur algorithm to the input video.
19929
19930 It accepts the following parameters:
19931
19932 @table @option
19933
19934 @item luma_radius, lr
19935 @item luma_power, lp
19936 @item chroma_radius, cr
19937 @item chroma_power, cp
19938 @item alpha_radius, ar
19939 @item alpha_power, ap
19940
19941 @end table
19942
19943 A description of the accepted options follows.
19944
19945 @table @option
19946 @item luma_radius, lr
19947 @item chroma_radius, cr
19948 @item alpha_radius, ar
19949 Set an expression for the box radius in pixels used for blurring the
19950 corresponding input plane.
19951
19952 The radius value must be a non-negative number, and must not be
19953 greater than the value of the expression @code{min(w,h)/2} for the
19954 luma and alpha planes, and of @code{min(cw,ch)/2} for the chroma
19955 planes.
19956
19957 Default value for @option{luma_radius} is "2". If not specified,
19958 @option{chroma_radius} and @option{alpha_radius} default to the
19959 corresponding value set for @option{luma_radius}.
19960
19961 The expressions can contain the following constants:
19962 @table @option
19963 @item w
19964 @item h
19965 The input width and height in pixels.
19966
19967 @item cw
19968 @item ch
19969 The input chroma image width and height in pixels.
19970
19971 @item hsub
19972 @item vsub
19973 The horizontal and vertical chroma subsample values. For example, for the
19974 pixel format "yuv422p", @var{hsub} is 2 and @var{vsub} is 1.
19975 @end table
19976
19977 @item luma_power, lp
19978 @item chroma_power, cp
19979 @item alpha_power, ap
19980 Specify how many times the boxblur filter is applied to the
19981 corresponding plane.
19982
19983 Default value for @option{luma_power} is 2. If not specified,
19984 @option{chroma_power} and @option{alpha_power} default to the
19985 corresponding value set for @option{luma_power}.
19986
19987 A value of 0 will disable the effect.
19988 @end table
19989
19990 @subsection Examples
19991
19992 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.
19993
19994 @itemize
19995 @item
19996 Apply a boxblur filter with the luma, chroma, and alpha radius
19997 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.
19998 @example
19999 -i INPUT -vf "hwupload, boxblur_opencl=luma_radius=2:luma_power=3, hwdownload" OUTPUT
20000 -i INPUT -vf "hwupload, boxblur_opencl=2:3, hwdownload" OUTPUT
20001 @end example
20002
20003 @item
20004 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.
20005
20006 For the luma plane, a 2x2 box radius will be run once.
20007
20008 For the chroma plane, a 4x4 box radius will be run 5 times.
20009
20010 For the alpha plane, a 3x3 box radius will be run 7 times.
20011 @example
20012 -i INPUT -vf "hwupload, boxblur_opencl=2:1:4:5:3:7, hwdownload" OUTPUT
20013 @end example
20014 @end itemize
20015
20016 @section convolution_opencl
20017
20018 Apply convolution of 3x3, 5x5, 7x7 matrix.
20019
20020 The filter accepts the following options:
20021
20022 @table @option
20023 @item 0m
20024 @item 1m
20025 @item 2m
20026 @item 3m
20027 Set matrix for each plane.
20028 Matrix is sequence of 9, 25 or 49 signed numbers.
20029 Default value for each plane is @code{0 0 0 0 1 0 0 0 0}.
20030
20031 @item 0rdiv
20032 @item 1rdiv
20033 @item 2rdiv
20034 @item 3rdiv
20035 Set multiplier for calculated value for each plane.
20036 If unset or 0, it will be sum of all matrix elements.
20037 The option value must be a float number greater or equal to @code{0.0}. Default value is @code{1.0}.
20038
20039 @item 0bias
20040 @item 1bias
20041 @item 2bias
20042 @item 3bias
20043 Set bias for each plane. This value is added to the result of the multiplication.
20044 Useful for making the overall image brighter or darker.
20045 The option value must be a float number greater or equal to @code{0.0}. Default value is @code{0.0}.
20046
20047 @end table
20048
20049 @subsection Examples
20050
20051 @itemize
20052 @item
20053 Apply sharpen:
20054 @example
20055 -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
20056 @end example
20057
20058 @item
20059 Apply blur:
20060 @example
20061 -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
20062 @end example
20063
20064 @item
20065 Apply edge enhance:
20066 @example
20067 -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
20068 @end example
20069
20070 @item
20071 Apply edge detect:
20072 @example
20073 -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
20074 @end example
20075
20076 @item
20077 Apply laplacian edge detector which includes diagonals:
20078 @example
20079 -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
20080 @end example
20081
20082 @item
20083 Apply emboss:
20084 @example
20085 -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
20086 @end example
20087 @end itemize
20088
20089 @section dilation_opencl
20090
20091 Apply dilation effect to the video.
20092
20093 This filter replaces the pixel by the local(3x3) maximum.
20094
20095 It accepts the following options:
20096
20097 @table @option
20098 @item threshold0
20099 @item threshold1
20100 @item threshold2
20101 @item threshold3
20102 Limit the maximum change for each plane. Range is @code{[0, 65535]} and default value is @code{65535}.
20103 If @code{0}, plane will remain unchanged.
20104
20105 @item coordinates
20106 Flag which specifies the pixel to refer to.
20107 Range is @code{[0, 255]} and default value is @code{255}, i.e. all eight pixels are used.
20108
20109 Flags to local 3x3 coordinates region centered on @code{x}:
20110
20111     1 2 3
20112
20113     4 x 5
20114
20115     6 7 8
20116 @end table
20117
20118 @subsection Example
20119
20120 @itemize
20121 @item
20122 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.
20123 @example
20124 -i INPUT -vf "hwupload, dilation_opencl=30:40:50:coordinates=231, hwdownload" OUTPUT
20125 @end example
20126 @end itemize
20127
20128 @section erosion_opencl
20129
20130 Apply erosion effect to the video.
20131
20132 This filter replaces the pixel by the local(3x3) minimum.
20133
20134 It accepts the following options:
20135
20136 @table @option
20137 @item threshold0
20138 @item threshold1
20139 @item threshold2
20140 @item threshold3
20141 Limit the maximum change for each plane. Range is @code{[0, 65535]} and default value is @code{65535}.
20142 If @code{0}, plane will remain unchanged.
20143
20144 @item coordinates
20145 Flag which specifies the pixel to refer to.
20146 Range is @code{[0, 255]} and default value is @code{255}, i.e. all eight pixels are used.
20147
20148 Flags to local 3x3 coordinates region centered on @code{x}:
20149
20150     1 2 3
20151
20152     4 x 5
20153
20154     6 7 8
20155 @end table
20156
20157 @subsection Example
20158
20159 @itemize
20160 @item
20161 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.
20162 @example
20163 -i INPUT -vf "hwupload, erosion_opencl=30:40:50:coordinates=231, hwdownload" OUTPUT
20164 @end example
20165 @end itemize
20166
20167 @section colorkey_opencl
20168 RGB colorspace color keying.
20169
20170 The filter accepts the following options:
20171
20172 @table @option
20173 @item color
20174 The color which will be replaced with transparency.
20175
20176 @item similarity
20177 Similarity percentage with the key color.
20178
20179 0.01 matches only the exact key color, while 1.0 matches everything.
20180
20181 @item blend
20182 Blend percentage.
20183
20184 0.0 makes pixels either fully transparent, or not transparent at all.
20185
20186 Higher values result in semi-transparent pixels, with a higher transparency
20187 the more similar the pixels color is to the key color.
20188 @end table
20189
20190 @subsection Examples
20191
20192 @itemize
20193 @item
20194 Make every semi-green pixel in the input transparent with some slight blending:
20195 @example
20196 -i INPUT -vf "hwupload, colorkey_opencl=green:0.3:0.1, hwdownload" OUTPUT
20197 @end example
20198 @end itemize
20199
20200 @section deshake_opencl
20201 Feature-point based video stabilization filter.
20202
20203 The filter accepts the following options:
20204
20205 @table @option
20206 @item tripod
20207 Simulates a tripod by preventing any camera movement whatsoever from the original frame. Defaults to @code{0}.
20208
20209 @item debug
20210 Whether or not additional debug info should be displayed, both in the processed output and in the console.
20211
20212 Note that in order to see console debug output you will also need to pass @code{-v verbose} to ffmpeg.
20213
20214 Viewing point matches in the output video is only supported for RGB input.
20215
20216 Defaults to @code{0}.
20217
20218 @item adaptive_crop
20219 Whether or not to do a tiny bit of cropping at the borders to cut down on the amount of mirrored pixels.
20220
20221 Defaults to @code{1}.
20222
20223 @item refine_features
20224 Whether or not feature points should be refined at a sub-pixel level.
20225
20226 This can be turned off for a slight performance gain at the cost of precision.
20227
20228 Defaults to @code{1}.
20229
20230 @item smooth_strength
20231 The strength of the smoothing applied to the camera path from @code{0.0} to @code{1.0}.
20232
20233 @code{1.0} is the maximum smoothing strength while values less than that result in less smoothing.
20234
20235 @code{0.0} causes the filter to adaptively choose a smoothing strength on a per-frame basis.
20236
20237 Defaults to @code{0.0}.
20238
20239 @item smooth_window_multiplier
20240 Controls the size of the smoothing window (the number of frames buffered to determine motion information from).
20241
20242 The size of the smoothing window is determined by multiplying the framerate of the video by this number.
20243
20244 Acceptable values range from @code{0.1} to @code{10.0}.
20245
20246 Larger values increase the amount of motion data available for determining how to smooth the camera path,
20247 potentially improving smoothness, but also increase latency and memory usage.
20248
20249 Defaults to @code{2.0}.
20250
20251 @end table
20252
20253 @subsection Examples
20254
20255 @itemize
20256 @item
20257 Stabilize a video with a fixed, medium smoothing strength:
20258 @example
20259 -i INPUT -vf "hwupload, deshake_opencl=smooth_strength=0.5, hwdownload" OUTPUT
20260 @end example
20261
20262 @item
20263 Stabilize a video with debugging (both in console and in rendered video):
20264 @example
20265 -i INPUT -filter_complex "[0:v]format=rgba, hwupload, deshake_opencl=debug=1, hwdownload, format=rgba, format=yuv420p" -v verbose OUTPUT
20266 @end example
20267 @end itemize
20268
20269 @section nlmeans_opencl
20270
20271 Non-local Means denoise filter through OpenCL, this filter accepts same options as @ref{nlmeans}.
20272
20273 @section overlay_opencl
20274
20275 Overlay one video on top of another.
20276
20277 It takes two inputs and has one output. The first input is the "main" video on which the second input is overlaid.
20278 This filter requires same memory layout for all the inputs. So, format conversion may be needed.
20279
20280 The filter accepts the following options:
20281
20282 @table @option
20283
20284 @item x
20285 Set the x coordinate of the overlaid video on the main video.
20286 Default value is @code{0}.
20287
20288 @item y
20289 Set the x coordinate of the overlaid video on the main video.
20290 Default value is @code{0}.
20291
20292 @end table
20293
20294 @subsection Examples
20295
20296 @itemize
20297 @item
20298 Overlay an image LOGO at the top-left corner of the INPUT video. Both inputs are yuv420p format.
20299 @example
20300 -i INPUT -i LOGO -filter_complex "[0:v]hwupload[a], [1:v]format=yuv420p, hwupload[b], [a][b]overlay_opencl, hwdownload" OUTPUT
20301 @end example
20302 @item
20303 The inputs have same memory layout for color channels , the overlay has additional alpha plane, like INPUT is yuv420p, and the LOGO is yuva420p.
20304 @example
20305 -i INPUT -i LOGO -filter_complex "[0:v]hwupload[a], [1:v]format=yuva420p, hwupload[b], [a][b]overlay_opencl, hwdownload" OUTPUT
20306 @end example
20307
20308 @end itemize
20309
20310 @section prewitt_opencl
20311
20312 Apply the Prewitt operator (@url{https://en.wikipedia.org/wiki/Prewitt_operator}) to input video stream.
20313
20314 The filter accepts the following option:
20315
20316 @table @option
20317 @item planes
20318 Set which planes to filter. Default value is @code{0xf}, by which all planes are processed.
20319
20320 @item scale
20321 Set value which will be multiplied with filtered result.
20322 Range is @code{[0.0, 65535]} and default value is @code{1.0}.
20323
20324 @item delta
20325 Set value which will be added to filtered result.
20326 Range is @code{[-65535, 65535]} and default value is @code{0.0}.
20327 @end table
20328
20329 @subsection Example
20330
20331 @itemize
20332 @item
20333 Apply the Prewitt operator with scale set to 2 and delta set to 10.
20334 @example
20335 -i INPUT -vf "hwupload, prewitt_opencl=scale=2:delta=10, hwdownload" OUTPUT
20336 @end example
20337 @end itemize
20338
20339 @section roberts_opencl
20340 Apply the Roberts cross operator (@url{https://en.wikipedia.org/wiki/Roberts_cross}) to input video stream.
20341
20342 The filter accepts the following option:
20343
20344 @table @option
20345 @item planes
20346 Set which planes to filter. Default value is @code{0xf}, by which all planes are processed.
20347
20348 @item scale
20349 Set value which will be multiplied with filtered result.
20350 Range is @code{[0.0, 65535]} and default value is @code{1.0}.
20351
20352 @item delta
20353 Set value which will be added to filtered result.
20354 Range is @code{[-65535, 65535]} and default value is @code{0.0}.
20355 @end table
20356
20357 @subsection Example
20358
20359 @itemize
20360 @item
20361 Apply the Roberts cross operator with scale set to 2 and delta set to 10
20362 @example
20363 -i INPUT -vf "hwupload, roberts_opencl=scale=2:delta=10, hwdownload" OUTPUT
20364 @end example
20365 @end itemize
20366
20367 @section sobel_opencl
20368
20369 Apply the Sobel operator (@url{https://en.wikipedia.org/wiki/Sobel_operator}) to input video stream.
20370
20371 The filter accepts the following option:
20372
20373 @table @option
20374 @item planes
20375 Set which planes to filter. Default value is @code{0xf}, by which all planes are processed.
20376
20377 @item scale
20378 Set value which will be multiplied with filtered result.
20379 Range is @code{[0.0, 65535]} and default value is @code{1.0}.
20380
20381 @item delta
20382 Set value which will be added to filtered result.
20383 Range is @code{[-65535, 65535]} and default value is @code{0.0}.
20384 @end table
20385
20386 @subsection Example
20387
20388 @itemize
20389 @item
20390 Apply sobel operator with scale set to 2 and delta set to 10
20391 @example
20392 -i INPUT -vf "hwupload, sobel_opencl=scale=2:delta=10, hwdownload" OUTPUT
20393 @end example
20394 @end itemize
20395
20396 @section tonemap_opencl
20397
20398 Perform HDR(PQ/HLG) to SDR conversion with tone-mapping.
20399
20400 It accepts the following parameters:
20401
20402 @table @option
20403 @item tonemap
20404 Specify the tone-mapping operator to be used. Same as tonemap option in @ref{tonemap}.
20405
20406 @item param
20407 Tune the tone mapping algorithm. same as param option in @ref{tonemap}.
20408
20409 @item desat
20410 Apply desaturation for highlights that exceed this level of brightness. The
20411 higher the parameter, the more color information will be preserved. This
20412 setting helps prevent unnaturally blown-out colors for super-highlights, by
20413 (smoothly) turning into white instead. This makes images feel more natural,
20414 at the cost of reducing information about out-of-range colors.
20415
20416 The default value is 0.5, and the algorithm here is a little different from
20417 the cpu version tonemap currently. A setting of 0.0 disables this option.
20418
20419 @item threshold
20420 The tonemapping algorithm parameters is fine-tuned per each scene. And a threshold
20421 is used to detect whether the scene has changed or not. If the distance between
20422 the current frame average brightness and the current running average exceeds
20423 a threshold value, we would re-calculate scene average and peak brightness.
20424 The default value is 0.2.
20425
20426 @item format
20427 Specify the output pixel format.
20428
20429 Currently supported formats are:
20430 @table @var
20431 @item p010
20432 @item nv12
20433 @end table
20434
20435 @item range, r
20436 Set the output color range.
20437
20438 Possible values are:
20439 @table @var
20440 @item tv/mpeg
20441 @item pc/jpeg
20442 @end table
20443
20444 Default is same as input.
20445
20446 @item primaries, p
20447 Set the output color primaries.
20448
20449 Possible values are:
20450 @table @var
20451 @item bt709
20452 @item bt2020
20453 @end table
20454
20455 Default is same as input.
20456
20457 @item transfer, t
20458 Set the output transfer characteristics.
20459
20460 Possible values are:
20461 @table @var
20462 @item bt709
20463 @item bt2020
20464 @end table
20465
20466 Default is bt709.
20467
20468 @item matrix, m
20469 Set the output colorspace matrix.
20470
20471 Possible value are:
20472 @table @var
20473 @item bt709
20474 @item bt2020
20475 @end table
20476
20477 Default is same as input.
20478
20479 @end table
20480
20481 @subsection Example
20482
20483 @itemize
20484 @item
20485 Convert HDR(PQ/HLG) video to bt2020-transfer-characteristic p010 format using linear operator.
20486 @example
20487 -i INPUT -vf "format=p010,hwupload,tonemap_opencl=t=bt2020:tonemap=linear:format=p010,hwdownload,format=p010" OUTPUT
20488 @end example
20489 @end itemize
20490
20491 @section unsharp_opencl
20492
20493 Sharpen or blur the input video.
20494
20495 It accepts the following parameters:
20496
20497 @table @option
20498 @item luma_msize_x, lx
20499 Set the luma matrix horizontal size.
20500 Range is @code{[1, 23]} and default value is @code{5}.
20501
20502 @item luma_msize_y, ly
20503 Set the luma matrix vertical size.
20504 Range is @code{[1, 23]} and default value is @code{5}.
20505
20506 @item luma_amount, la
20507 Set the luma effect strength.
20508 Range is @code{[-10, 10]} and default value is @code{1.0}.
20509
20510 Negative values will blur the input video, while positive values will
20511 sharpen it, a value of zero will disable the effect.
20512
20513 @item chroma_msize_x, cx
20514 Set the chroma matrix horizontal size.
20515 Range is @code{[1, 23]} and default value is @code{5}.
20516
20517 @item chroma_msize_y, cy
20518 Set the chroma matrix vertical size.
20519 Range is @code{[1, 23]} and default value is @code{5}.
20520
20521 @item chroma_amount, ca
20522 Set the chroma effect strength.
20523 Range is @code{[-10, 10]} and default value is @code{0.0}.
20524
20525 Negative values will blur the input video, while positive values will
20526 sharpen it, a value of zero will disable the effect.
20527
20528 @end table
20529
20530 All parameters are optional and default to the equivalent of the
20531 string '5:5:1.0:5:5:0.0'.
20532
20533 @subsection Examples
20534
20535 @itemize
20536 @item
20537 Apply strong luma sharpen effect:
20538 @example
20539 -i INPUT -vf "hwupload, unsharp_opencl=luma_msize_x=7:luma_msize_y=7:luma_amount=2.5, hwdownload" OUTPUT
20540 @end example
20541
20542 @item
20543 Apply a strong blur of both luma and chroma parameters:
20544 @example
20545 -i INPUT -vf "hwupload, unsharp_opencl=7:7:-2:7:7:-2, hwdownload" OUTPUT
20546 @end example
20547 @end itemize
20548
20549 @c man end OPENCL VIDEO FILTERS
20550
20551 @chapter Video Sources
20552 @c man begin VIDEO SOURCES
20553
20554 Below is a description of the currently available video sources.
20555
20556 @section buffer
20557
20558 Buffer video frames, and make them available to the filter chain.
20559
20560 This source is mainly intended for a programmatic use, in particular
20561 through the interface defined in @file{libavfilter/vsrc_buffer.h}.
20562
20563 It accepts the following parameters:
20564
20565 @table @option
20566
20567 @item video_size
20568 Specify the size (width and height) of the buffered video frames. For the
20569 syntax of this option, check the
20570 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
20571
20572 @item width
20573 The input video width.
20574
20575 @item height
20576 The input video height.
20577
20578 @item pix_fmt
20579 A string representing the pixel format of the buffered video frames.
20580 It may be a number corresponding to a pixel format, or a pixel format
20581 name.
20582
20583 @item time_base
20584 Specify the timebase assumed by the timestamps of the buffered frames.
20585
20586 @item frame_rate
20587 Specify the frame rate expected for the video stream.
20588
20589 @item pixel_aspect, sar
20590 The sample (pixel) aspect ratio of the input video.
20591
20592 @item sws_param
20593 Specify the optional parameters to be used for the scale filter which
20594 is automatically inserted when an input change is detected in the
20595 input size or format.
20596
20597 @item hw_frames_ctx
20598 When using a hardware pixel format, this should be a reference to an
20599 AVHWFramesContext describing input frames.
20600 @end table
20601
20602 For example:
20603 @example
20604 buffer=width=320:height=240:pix_fmt=yuv410p:time_base=1/24:sar=1
20605 @end example
20606
20607 will instruct the source to accept video frames with size 320x240 and
20608 with format "yuv410p", assuming 1/24 as the timestamps timebase and
20609 square pixels (1:1 sample aspect ratio).
20610 Since the pixel format with name "yuv410p" corresponds to the number 6
20611 (check the enum AVPixelFormat definition in @file{libavutil/pixfmt.h}),
20612 this example corresponds to:
20613 @example
20614 buffer=size=320x240:pixfmt=6:time_base=1/24:pixel_aspect=1/1
20615 @end example
20616
20617 Alternatively, the options can be specified as a flat string, but this
20618 syntax is deprecated:
20619
20620 @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}]
20621
20622 @section cellauto
20623
20624 Create a pattern generated by an elementary cellular automaton.
20625
20626 The initial state of the cellular automaton can be defined through the
20627 @option{filename} and @option{pattern} options. If such options are
20628 not specified an initial state is created randomly.
20629
20630 At each new frame a new row in the video is filled with the result of
20631 the cellular automaton next generation. The behavior when the whole
20632 frame is filled is defined by the @option{scroll} option.
20633
20634 This source accepts the following options:
20635
20636 @table @option
20637 @item filename, f
20638 Read the initial cellular automaton state, i.e. the starting row, from
20639 the specified file.
20640 In the file, each non-whitespace character is considered an alive
20641 cell, a newline will terminate the row, and further characters in the
20642 file will be ignored.
20643
20644 @item pattern, p
20645 Read the initial cellular automaton state, i.e. the starting row, from
20646 the specified string.
20647
20648 Each non-whitespace character in the string is considered an alive
20649 cell, a newline will terminate the row, and further characters in the
20650 string will be ignored.
20651
20652 @item rate, r
20653 Set the video rate, that is the number of frames generated per second.
20654 Default is 25.
20655
20656 @item random_fill_ratio, ratio
20657 Set the random fill ratio for the initial cellular automaton row. It
20658 is a floating point number value ranging from 0 to 1, defaults to
20659 1/PHI.
20660
20661 This option is ignored when a file or a pattern is specified.
20662
20663 @item random_seed, seed
20664 Set the seed for filling randomly the initial row, must be an integer
20665 included between 0 and UINT32_MAX. If not specified, or if explicitly
20666 set to -1, the filter will try to use a good random seed on a best
20667 effort basis.
20668
20669 @item rule
20670 Set the cellular automaton rule, it is a number ranging from 0 to 255.
20671 Default value is 110.
20672
20673 @item size, s
20674 Set the size of the output video. For the syntax of this option, check the
20675 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
20676
20677 If @option{filename} or @option{pattern} is specified, the size is set
20678 by default to the width of the specified initial state row, and the
20679 height is set to @var{width} * PHI.
20680
20681 If @option{size} is set, it must contain the width of the specified
20682 pattern string, and the specified pattern will be centered in the
20683 larger row.
20684
20685 If a filename or a pattern string is not specified, the size value
20686 defaults to "320x518" (used for a randomly generated initial state).
20687
20688 @item scroll
20689 If set to 1, scroll the output upward when all the rows in the output
20690 have been already filled. If set to 0, the new generated row will be
20691 written over the top row just after the bottom row is filled.
20692 Defaults to 1.
20693
20694 @item start_full, full
20695 If set to 1, completely fill the output with generated rows before
20696 outputting the first frame.
20697 This is the default behavior, for disabling set the value to 0.
20698
20699 @item stitch
20700 If set to 1, stitch the left and right row edges together.
20701 This is the default behavior, for disabling set the value to 0.
20702 @end table
20703
20704 @subsection Examples
20705
20706 @itemize
20707 @item
20708 Read the initial state from @file{pattern}, and specify an output of
20709 size 200x400.
20710 @example
20711 cellauto=f=pattern:s=200x400
20712 @end example
20713
20714 @item
20715 Generate a random initial row with a width of 200 cells, with a fill
20716 ratio of 2/3:
20717 @example
20718 cellauto=ratio=2/3:s=200x200
20719 @end example
20720
20721 @item
20722 Create a pattern generated by rule 18 starting by a single alive cell
20723 centered on an initial row with width 100:
20724 @example
20725 cellauto=p=@@:s=100x400:full=0:rule=18
20726 @end example
20727
20728 @item
20729 Specify a more elaborated initial pattern:
20730 @example
20731 cellauto=p='@@@@ @@ @@@@':s=100x400:full=0:rule=18
20732 @end example
20733
20734 @end itemize
20735
20736 @anchor{coreimagesrc}
20737 @section coreimagesrc
20738 Video source generated on GPU using Apple's CoreImage API on OSX.
20739
20740 This video source is a specialized version of the @ref{coreimage} video filter.
20741 Use a core image generator at the beginning of the applied filterchain to
20742 generate the content.
20743
20744 The coreimagesrc video source accepts the following options:
20745 @table @option
20746 @item list_generators
20747 List all available generators along with all their respective options as well as
20748 possible minimum and maximum values along with the default values.
20749 @example
20750 list_generators=true
20751 @end example
20752
20753 @item size, s
20754 Specify the size of the sourced video. For the syntax of this option, check the
20755 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
20756 The default value is @code{320x240}.
20757
20758 @item rate, r
20759 Specify the frame rate of the sourced video, as the number of frames
20760 generated per second. It has to be a string in the format
20761 @var{frame_rate_num}/@var{frame_rate_den}, an integer number, a floating point
20762 number or a valid video frame rate abbreviation. The default value is
20763 "25".
20764
20765 @item sar
20766 Set the sample aspect ratio of the sourced video.
20767
20768 @item duration, d
20769 Set the duration of the sourced video. See
20770 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
20771 for the accepted syntax.
20772
20773 If not specified, or the expressed duration is negative, the video is
20774 supposed to be generated forever.
20775 @end table
20776
20777 Additionally, all options of the @ref{coreimage} video filter are accepted.
20778 A complete filterchain can be used for further processing of the
20779 generated input without CPU-HOST transfer. See @ref{coreimage} documentation
20780 and examples for details.
20781
20782 @subsection Examples
20783
20784 @itemize
20785
20786 @item
20787 Use CIQRCodeGenerator to create a QR code for the FFmpeg homepage,
20788 given as complete and escaped command-line for Apple's standard bash shell:
20789 @example
20790 ffmpeg -f lavfi -i coreimagesrc=s=100x100:filter=CIQRCodeGenerator@@inputMessage=https\\\\\://FFmpeg.org/@@inputCorrectionLevel=H -frames:v 1 QRCode.png
20791 @end example
20792 This example is equivalent to the QRCode example of @ref{coreimage} without the
20793 need for a nullsrc video source.
20794 @end itemize
20795
20796
20797 @section mandelbrot
20798
20799 Generate a Mandelbrot set fractal, and progressively zoom towards the
20800 point specified with @var{start_x} and @var{start_y}.
20801
20802 This source accepts the following options:
20803
20804 @table @option
20805
20806 @item end_pts
20807 Set the terminal pts value. Default value is 400.
20808
20809 @item end_scale
20810 Set the terminal scale value.
20811 Must be a floating point value. Default value is 0.3.
20812
20813 @item inner
20814 Set the inner coloring mode, that is the algorithm used to draw the
20815 Mandelbrot fractal internal region.
20816
20817 It shall assume one of the following values:
20818 @table @option
20819 @item black
20820 Set black mode.
20821 @item convergence
20822 Show time until convergence.
20823 @item mincol
20824 Set color based on point closest to the origin of the iterations.
20825 @item period
20826 Set period mode.
20827 @end table
20828
20829 Default value is @var{mincol}.
20830
20831 @item bailout
20832 Set the bailout value. Default value is 10.0.
20833
20834 @item maxiter
20835 Set the maximum of iterations performed by the rendering
20836 algorithm. Default value is 7189.
20837
20838 @item outer
20839 Set outer coloring mode.
20840 It shall assume one of following values:
20841 @table @option
20842 @item iteration_count
20843 Set iteration count mode.
20844 @item normalized_iteration_count
20845 set normalized iteration count mode.
20846 @end table
20847 Default value is @var{normalized_iteration_count}.
20848
20849 @item rate, r
20850 Set frame rate, expressed as number of frames per second. Default
20851 value is "25".
20852
20853 @item size, s
20854 Set frame size. For the syntax of this option, check the @ref{video size syntax,,"Video
20855 size" section in the ffmpeg-utils manual,ffmpeg-utils}. Default value is "640x480".
20856
20857 @item start_scale
20858 Set the initial scale value. Default value is 3.0.
20859
20860 @item start_x
20861 Set the initial x position. Must be a floating point value between
20862 -100 and 100. Default value is -0.743643887037158704752191506114774.
20863
20864 @item start_y
20865 Set the initial y position. Must be a floating point value between
20866 -100 and 100. Default value is -0.131825904205311970493132056385139.
20867 @end table
20868
20869 @section mptestsrc
20870
20871 Generate various test patterns, as generated by the MPlayer test filter.
20872
20873 The size of the generated video is fixed, and is 256x256.
20874 This source is useful in particular for testing encoding features.
20875
20876 This source accepts the following options:
20877
20878 @table @option
20879
20880 @item rate, r
20881 Specify the frame rate of the sourced video, as the number of frames
20882 generated per second. It has to be a string in the format
20883 @var{frame_rate_num}/@var{frame_rate_den}, an integer number, a floating point
20884 number or a valid video frame rate abbreviation. The default value is
20885 "25".
20886
20887 @item duration, d
20888 Set the duration of the sourced video. See
20889 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
20890 for the accepted syntax.
20891
20892 If not specified, or the expressed duration is negative, the video is
20893 supposed to be generated forever.
20894
20895 @item test, t
20896
20897 Set the number or the name of the test to perform. Supported tests are:
20898 @table @option
20899 @item dc_luma
20900 @item dc_chroma
20901 @item freq_luma
20902 @item freq_chroma
20903 @item amp_luma
20904 @item amp_chroma
20905 @item cbp
20906 @item mv
20907 @item ring1
20908 @item ring2
20909 @item all
20910
20911 @end table
20912
20913 Default value is "all", which will cycle through the list of all tests.
20914 @end table
20915
20916 Some examples:
20917 @example
20918 mptestsrc=t=dc_luma
20919 @end example
20920
20921 will generate a "dc_luma" test pattern.
20922
20923 @section frei0r_src
20924
20925 Provide a frei0r source.
20926
20927 To enable compilation of this filter you need to install the frei0r
20928 header and configure FFmpeg with @code{--enable-frei0r}.
20929
20930 This source accepts the following parameters:
20931
20932 @table @option
20933
20934 @item size
20935 The size of the video to generate. For the syntax of this option, check the
20936 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
20937
20938 @item framerate
20939 The framerate of the generated video. It may be a string of the form
20940 @var{num}/@var{den} or a frame rate abbreviation.
20941
20942 @item filter_name
20943 The name to the frei0r source to load. For more information regarding frei0r and
20944 how to set the parameters, read the @ref{frei0r} section in the video filters
20945 documentation.
20946
20947 @item filter_params
20948 A '|'-separated list of parameters to pass to the frei0r source.
20949
20950 @end table
20951
20952 For example, to generate a frei0r partik0l source with size 200x200
20953 and frame rate 10 which is overlaid on the overlay filter main input:
20954 @example
20955 frei0r_src=size=200x200:framerate=10:filter_name=partik0l:filter_params=1234 [overlay]; [in][overlay] overlay
20956 @end example
20957
20958 @section life
20959
20960 Generate a life pattern.
20961
20962 This source is based on a generalization of John Conway's life game.
20963
20964 The sourced input represents a life grid, each pixel represents a cell
20965 which can be in one of two possible states, alive or dead. Every cell
20966 interacts with its eight neighbours, which are the cells that are
20967 horizontally, vertically, or diagonally adjacent.
20968
20969 At each interaction the grid evolves according to the adopted rule,
20970 which specifies the number of neighbor alive cells which will make a
20971 cell stay alive or born. The @option{rule} option allows one to specify
20972 the rule to adopt.
20973
20974 This source accepts the following options:
20975
20976 @table @option
20977 @item filename, f
20978 Set the file from which to read the initial grid state. In the file,
20979 each non-whitespace character is considered an alive cell, and newline
20980 is used to delimit the end of each row.
20981
20982 If this option is not specified, the initial grid is generated
20983 randomly.
20984
20985 @item rate, r
20986 Set the video rate, that is the number of frames generated per second.
20987 Default is 25.
20988
20989 @item random_fill_ratio, ratio
20990 Set the random fill ratio for the initial random grid. It is a
20991 floating point number value ranging from 0 to 1, defaults to 1/PHI.
20992 It is ignored when a file is specified.
20993
20994 @item random_seed, seed
20995 Set the seed for filling the initial random grid, must be an integer
20996 included between 0 and UINT32_MAX. If not specified, or if explicitly
20997 set to -1, the filter will try to use a good random seed on a best
20998 effort basis.
20999
21000 @item rule
21001 Set the life rule.
21002
21003 A rule can be specified with a code of the kind "S@var{NS}/B@var{NB}",
21004 where @var{NS} and @var{NB} are sequences of numbers in the range 0-8,
21005 @var{NS} specifies the number of alive neighbor cells which make a
21006 live cell stay alive, and @var{NB} the number of alive neighbor cells
21007 which make a dead cell to become alive (i.e. to "born").
21008 "s" and "b" can be used in place of "S" and "B", respectively.
21009
21010 Alternatively a rule can be specified by an 18-bits integer. The 9
21011 high order bits are used to encode the next cell state if it is alive
21012 for each number of neighbor alive cells, the low order bits specify
21013 the rule for "borning" new cells. Higher order bits encode for an
21014 higher number of neighbor cells.
21015 For example the number 6153 = @code{(12<<9)+9} specifies a stay alive
21016 rule of 12 and a born rule of 9, which corresponds to "S23/B03".
21017
21018 Default value is "S23/B3", which is the original Conway's game of life
21019 rule, and will keep a cell alive if it has 2 or 3 neighbor alive
21020 cells, and will born a new cell if there are three alive cells around
21021 a dead cell.
21022
21023 @item size, s
21024 Set the size of the output video. For the syntax of this option, check the
21025 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
21026
21027 If @option{filename} is specified, the size is set by default to the
21028 same size of the input file. If @option{size} is set, it must contain
21029 the size specified in the input file, and the initial grid defined in
21030 that file is centered in the larger resulting area.
21031
21032 If a filename is not specified, the size value defaults to "320x240"
21033 (used for a randomly generated initial grid).
21034
21035 @item stitch
21036 If set to 1, stitch the left and right grid edges together, and the
21037 top and bottom edges also. Defaults to 1.
21038
21039 @item mold
21040 Set cell mold speed. If set, a dead cell will go from @option{death_color} to
21041 @option{mold_color} with a step of @option{mold}. @option{mold} can have a
21042 value from 0 to 255.
21043
21044 @item life_color
21045 Set the color of living (or new born) cells.
21046
21047 @item death_color
21048 Set the color of dead cells. If @option{mold} is set, this is the first color
21049 used to represent a dead cell.
21050
21051 @item mold_color
21052 Set mold color, for definitely dead and moldy cells.
21053
21054 For the syntax of these 3 color options, check the @ref{color syntax,,"Color" section in the
21055 ffmpeg-utils manual,ffmpeg-utils}.
21056 @end table
21057
21058 @subsection Examples
21059
21060 @itemize
21061 @item
21062 Read a grid from @file{pattern}, and center it on a grid of size
21063 300x300 pixels:
21064 @example
21065 life=f=pattern:s=300x300
21066 @end example
21067
21068 @item
21069 Generate a random grid of size 200x200, with a fill ratio of 2/3:
21070 @example
21071 life=ratio=2/3:s=200x200
21072 @end example
21073
21074 @item
21075 Specify a custom rule for evolving a randomly generated grid:
21076 @example
21077 life=rule=S14/B34
21078 @end example
21079
21080 @item
21081 Full example with slow death effect (mold) using @command{ffplay}:
21082 @example
21083 ffplay -f lavfi life=s=300x200:mold=10:r=60:ratio=0.1:death_color=#C83232:life_color=#00ff00,scale=1200:800:flags=16
21084 @end example
21085 @end itemize
21086
21087 @anchor{allrgb}
21088 @anchor{allyuv}
21089 @anchor{color}
21090 @anchor{haldclutsrc}
21091 @anchor{nullsrc}
21092 @anchor{pal75bars}
21093 @anchor{pal100bars}
21094 @anchor{rgbtestsrc}
21095 @anchor{smptebars}
21096 @anchor{smptehdbars}
21097 @anchor{testsrc}
21098 @anchor{testsrc2}
21099 @anchor{yuvtestsrc}
21100 @section allrgb, allyuv, color, haldclutsrc, nullsrc, pal75bars, pal100bars, rgbtestsrc, smptebars, smptehdbars, testsrc, testsrc2, yuvtestsrc
21101
21102 The @code{allrgb} source returns frames of size 4096x4096 of all rgb colors.
21103
21104 The @code{allyuv} source returns frames of size 4096x4096 of all yuv colors.
21105
21106 The @code{color} source provides an uniformly colored input.
21107
21108 The @code{haldclutsrc} source provides an identity Hald CLUT. See also
21109 @ref{haldclut} filter.
21110
21111 The @code{nullsrc} source returns unprocessed video frames. It is
21112 mainly useful to be employed in analysis / debugging tools, or as the
21113 source for filters which ignore the input data.
21114
21115 The @code{pal75bars} source generates a color bars pattern, based on
21116 EBU PAL recommendations with 75% color levels.
21117
21118 The @code{pal100bars} source generates a color bars pattern, based on
21119 EBU PAL recommendations with 100% color levels.
21120
21121 The @code{rgbtestsrc} source generates an RGB test pattern useful for
21122 detecting RGB vs BGR issues. You should see a red, green and blue
21123 stripe from top to bottom.
21124
21125 The @code{smptebars} source generates a color bars pattern, based on
21126 the SMPTE Engineering Guideline EG 1-1990.
21127
21128 The @code{smptehdbars} source generates a color bars pattern, based on
21129 the SMPTE RP 219-2002.
21130
21131 The @code{testsrc} source generates a test video pattern, showing a
21132 color pattern, a scrolling gradient and a timestamp. This is mainly
21133 intended for testing purposes.
21134
21135 The @code{testsrc2} source is similar to testsrc, but supports more
21136 pixel formats instead of just @code{rgb24}. This allows using it as an
21137 input for other tests without requiring a format conversion.
21138
21139 The @code{yuvtestsrc} source generates an YUV test pattern. You should
21140 see a y, cb and cr stripe from top to bottom.
21141
21142 The sources accept the following parameters:
21143
21144 @table @option
21145
21146 @item level
21147 Specify the level of the Hald CLUT, only available in the @code{haldclutsrc}
21148 source. A level of @code{N} generates a picture of @code{N*N*N} by @code{N*N*N}
21149 pixels to be used as identity matrix for 3D lookup tables. Each component is
21150 coded on a @code{1/(N*N)} scale.
21151
21152 @item color, c
21153 Specify the color of the source, only available in the @code{color}
21154 source. For the syntax of this option, check the
21155 @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
21156
21157 @item size, s
21158 Specify the size of the sourced video. For the syntax of this option, check the
21159 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
21160 The default value is @code{320x240}.
21161
21162 This option is not available with the @code{allrgb}, @code{allyuv}, and
21163 @code{haldclutsrc} filters.
21164
21165 @item rate, r
21166 Specify the frame rate of the sourced video, as the number of frames
21167 generated per second. It has to be a string in the format
21168 @var{frame_rate_num}/@var{frame_rate_den}, an integer number, a floating point
21169 number or a valid video frame rate abbreviation. The default value is
21170 "25".
21171
21172 @item duration, d
21173 Set the duration of the sourced video. See
21174 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
21175 for the accepted syntax.
21176
21177 If not specified, or the expressed duration is negative, the video is
21178 supposed to be generated forever.
21179
21180 @item sar
21181 Set the sample aspect ratio of the sourced video.
21182
21183 @item alpha
21184 Specify the alpha (opacity) of the background, only available in the
21185 @code{testsrc2} source. The value must be between 0 (fully transparent) and
21186 255 (fully opaque, the default).
21187
21188 @item decimals, n
21189 Set the number of decimals to show in the timestamp, only available in the
21190 @code{testsrc} source.
21191
21192 The displayed timestamp value will correspond to the original
21193 timestamp value multiplied by the power of 10 of the specified
21194 value. Default value is 0.
21195 @end table
21196
21197 @subsection Examples
21198
21199 @itemize
21200 @item
21201 Generate a video with a duration of 5.3 seconds, with size
21202 176x144 and a frame rate of 10 frames per second:
21203 @example
21204 testsrc=duration=5.3:size=qcif:rate=10
21205 @end example
21206
21207 @item
21208 The following graph description will generate a red source
21209 with an opacity of 0.2, with size "qcif" and a frame rate of 10
21210 frames per second:
21211 @example
21212 color=c=red@@0.2:s=qcif:r=10
21213 @end example
21214
21215 @item
21216 If the input content is to be ignored, @code{nullsrc} can be used. The
21217 following command generates noise in the luminance plane by employing
21218 the @code{geq} filter:
21219 @example
21220 nullsrc=s=256x256, geq=random(1)*255:128:128
21221 @end example
21222 @end itemize
21223
21224 @subsection Commands
21225
21226 The @code{color} source supports the following commands:
21227
21228 @table @option
21229 @item c, color
21230 Set the color of the created image. Accepts the same syntax of the
21231 corresponding @option{color} option.
21232 @end table
21233
21234 @section openclsrc
21235
21236 Generate video using an OpenCL program.
21237
21238 @table @option
21239
21240 @item source
21241 OpenCL program source file.
21242
21243 @item kernel
21244 Kernel name in program.
21245
21246 @item size, s
21247 Size of frames to generate.  This must be set.
21248
21249 @item format
21250 Pixel format to use for the generated frames.  This must be set.
21251
21252 @item rate, r
21253 Number of frames generated every second.  Default value is '25'.
21254
21255 @end table
21256
21257 For details of how the program loading works, see the @ref{program_opencl}
21258 filter.
21259
21260 Example programs:
21261
21262 @itemize
21263 @item
21264 Generate a colour ramp by setting pixel values from the position of the pixel
21265 in the output image.  (Note that this will work with all pixel formats, but
21266 the generated output will not be the same.)
21267 @verbatim
21268 __kernel void ramp(__write_only image2d_t dst,
21269                    unsigned int index)
21270 {
21271     int2 loc = (int2)(get_global_id(0), get_global_id(1));
21272
21273     float4 val;
21274     val.xy = val.zw = convert_float2(loc) / convert_float2(get_image_dim(dst));
21275
21276     write_imagef(dst, loc, val);
21277 }
21278 @end verbatim
21279
21280 @item
21281 Generate a Sierpinski carpet pattern, panning by a single pixel each frame.
21282 @verbatim
21283 __kernel void sierpinski_carpet(__write_only image2d_t dst,
21284                                 unsigned int index)
21285 {
21286     int2 loc = (int2)(get_global_id(0), get_global_id(1));
21287
21288     float4 value = 0.0f;
21289     int x = loc.x + index;
21290     int y = loc.y + index;
21291     while (x > 0 || y > 0) {
21292         if (x % 3 == 1 && y % 3 == 1) {
21293             value = 1.0f;
21294             break;
21295         }
21296         x /= 3;
21297         y /= 3;
21298     }
21299
21300     write_imagef(dst, loc, value);
21301 }
21302 @end verbatim
21303
21304 @end itemize
21305
21306 @section sierpinski
21307
21308 Generate a Sierpinski carpet/triangle fractal, and randomly pan around.
21309
21310 This source accepts the following options:
21311
21312 @table @option
21313 @item size, s
21314 Set frame size. For the syntax of this option, check the @ref{video size syntax,,"Video
21315 size" section in the ffmpeg-utils manual,ffmpeg-utils}. Default value is "640x480".
21316
21317 @item rate, r
21318 Set frame rate, expressed as number of frames per second. Default
21319 value is "25".
21320
21321 @item seed
21322 Set seed which is used for random panning.
21323
21324 @item jump
21325 Set max jump for single pan destination. Allowed range is from 1 to 10000.
21326
21327 @item type
21328 Set fractal type, can be default @code{carpet} or @code{triangle}.
21329 @end table
21330
21331 @c man end VIDEO SOURCES
21332
21333 @chapter Video Sinks
21334 @c man begin VIDEO SINKS
21335
21336 Below is a description of the currently available video sinks.
21337
21338 @section buffersink
21339
21340 Buffer video frames, and make them available to the end of the filter
21341 graph.
21342
21343 This sink is mainly intended for programmatic use, in particular
21344 through the interface defined in @file{libavfilter/buffersink.h}
21345 or the options system.
21346
21347 It accepts a pointer to an AVBufferSinkContext structure, which
21348 defines the incoming buffers' formats, to be passed as the opaque
21349 parameter to @code{avfilter_init_filter} for initialization.
21350
21351 @section nullsink
21352
21353 Null video sink: do absolutely nothing with the input video. It is
21354 mainly useful as a template and for use in analysis / debugging
21355 tools.
21356
21357 @c man end VIDEO SINKS
21358
21359 @chapter Multimedia Filters
21360 @c man begin MULTIMEDIA FILTERS
21361
21362 Below is a description of the currently available multimedia filters.
21363
21364 @section abitscope
21365
21366 Convert input audio to a video output, displaying the audio bit scope.
21367
21368 The filter accepts the following options:
21369
21370 @table @option
21371 @item rate, r
21372 Set frame rate, expressed as number of frames per second. Default
21373 value is "25".
21374
21375 @item size, s
21376 Specify the video size for the output. For the syntax of this option, check the
21377 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
21378 Default value is @code{1024x256}.
21379
21380 @item colors
21381 Specify list of colors separated by space or by '|' which will be used to
21382 draw channels. Unrecognized or missing colors will be replaced
21383 by white color.
21384 @end table
21385
21386 @section ahistogram
21387
21388 Convert input audio to a video output, displaying the volume histogram.
21389
21390 The filter accepts the following options:
21391
21392 @table @option
21393 @item dmode
21394 Specify how histogram is calculated.
21395
21396 It accepts the following values:
21397 @table @samp
21398 @item single
21399 Use single histogram for all channels.
21400 @item separate
21401 Use separate histogram for each channel.
21402 @end table
21403 Default is @code{single}.
21404
21405 @item rate, r
21406 Set frame rate, expressed as number of frames per second. Default
21407 value is "25".
21408
21409 @item size, s
21410 Specify the video size for the output. For the syntax of this option, check the
21411 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
21412 Default value is @code{hd720}.
21413
21414 @item scale
21415 Set display scale.
21416
21417 It accepts the following values:
21418 @table @samp
21419 @item log
21420 logarithmic
21421 @item sqrt
21422 square root
21423 @item cbrt
21424 cubic root
21425 @item lin
21426 linear
21427 @item rlog
21428 reverse logarithmic
21429 @end table
21430 Default is @code{log}.
21431
21432 @item ascale
21433 Set amplitude scale.
21434
21435 It accepts the following values:
21436 @table @samp
21437 @item log
21438 logarithmic
21439 @item lin
21440 linear
21441 @end table
21442 Default is @code{log}.
21443
21444 @item acount
21445 Set how much frames to accumulate in histogram.
21446 Default is 1. Setting this to -1 accumulates all frames.
21447
21448 @item rheight
21449 Set histogram ratio of window height.
21450
21451 @item slide
21452 Set sonogram sliding.
21453
21454 It accepts the following values:
21455 @table @samp
21456 @item replace
21457 replace old rows with new ones.
21458 @item scroll
21459 scroll from top to bottom.
21460 @end table
21461 Default is @code{replace}.
21462 @end table
21463
21464 @section aphasemeter
21465
21466 Measures phase of input audio, which is exported as metadata @code{lavfi.aphasemeter.phase},
21467 representing mean phase of current audio frame. A video output can also be produced and is
21468 enabled by default. The audio is passed through as first output.
21469
21470 Audio will be rematrixed to stereo if it has a different channel layout. Phase value is in
21471 range @code{[-1, 1]} where @code{-1} means left and right channels are completely out of phase
21472 and @code{1} means channels are in phase.
21473
21474 The filter accepts the following options, all related to its video output:
21475
21476 @table @option
21477 @item rate, r
21478 Set the output frame rate. Default value is @code{25}.
21479
21480 @item size, s
21481 Set the video size for the output. For the syntax of this option, check the
21482 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
21483 Default value is @code{800x400}.
21484
21485 @item rc
21486 @item gc
21487 @item bc
21488 Specify the red, green, blue contrast. Default values are @code{2},
21489 @code{7} and @code{1}.
21490 Allowed range is @code{[0, 255]}.
21491
21492 @item mpc
21493 Set color which will be used for drawing median phase. If color is
21494 @code{none} which is default, no median phase value will be drawn.
21495
21496 @item video
21497 Enable video output. Default is enabled.
21498 @end table
21499
21500 @section avectorscope
21501
21502 Convert input audio to a video output, representing the audio vector
21503 scope.
21504
21505 The filter is used to measure the difference between channels of stereo
21506 audio stream. A monaural signal, consisting of identical left and right
21507 signal, results in straight vertical line. Any stereo separation is visible
21508 as a deviation from this line, creating a Lissajous figure.
21509 If the straight (or deviation from it) but horizontal line appears this
21510 indicates that the left and right channels are out of phase.
21511
21512 The filter accepts the following options:
21513
21514 @table @option
21515 @item mode, m
21516 Set the vectorscope mode.
21517
21518 Available values are:
21519 @table @samp
21520 @item lissajous
21521 Lissajous rotated by 45 degrees.
21522
21523 @item lissajous_xy
21524 Same as above but not rotated.
21525
21526 @item polar
21527 Shape resembling half of circle.
21528 @end table
21529
21530 Default value is @samp{lissajous}.
21531
21532 @item size, s
21533 Set the video size for the output. For the syntax of this option, check the
21534 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
21535 Default value is @code{400x400}.
21536
21537 @item rate, r
21538 Set the output frame rate. Default value is @code{25}.
21539
21540 @item rc
21541 @item gc
21542 @item bc
21543 @item ac
21544 Specify the red, green, blue and alpha contrast. Default values are @code{40},
21545 @code{160}, @code{80} and @code{255}.
21546 Allowed range is @code{[0, 255]}.
21547
21548 @item rf
21549 @item gf
21550 @item bf
21551 @item af
21552 Specify the red, green, blue and alpha fade. Default values are @code{15},
21553 @code{10}, @code{5} and @code{5}.
21554 Allowed range is @code{[0, 255]}.
21555
21556 @item zoom
21557 Set the zoom factor. Default value is @code{1}. Allowed range is @code{[0, 10]}.
21558 Values lower than @var{1} will auto adjust zoom factor to maximal possible value.
21559
21560 @item draw
21561 Set the vectorscope drawing mode.
21562
21563 Available values are:
21564 @table @samp
21565 @item dot
21566 Draw dot for each sample.
21567
21568 @item line
21569 Draw line between previous and current sample.
21570 @end table
21571
21572 Default value is @samp{dot}.
21573
21574 @item scale
21575 Specify amplitude scale of audio samples.
21576
21577 Available values are:
21578 @table @samp
21579 @item lin
21580 Linear.
21581
21582 @item sqrt
21583 Square root.
21584
21585 @item cbrt
21586 Cubic root.
21587
21588 @item log
21589 Logarithmic.
21590 @end table
21591
21592 @item swap
21593 Swap left channel axis with right channel axis.
21594
21595 @item mirror
21596 Mirror axis.
21597
21598 @table @samp
21599 @item none
21600 No mirror.
21601
21602 @item x
21603 Mirror only x axis.
21604
21605 @item y
21606 Mirror only y axis.
21607
21608 @item xy
21609 Mirror both axis.
21610 @end table
21611
21612 @end table
21613
21614 @subsection Examples
21615
21616 @itemize
21617 @item
21618 Complete example using @command{ffplay}:
21619 @example
21620 ffplay -f lavfi 'amovie=input.mp3, asplit [a][out1];
21621              [a] avectorscope=zoom=1.3:rc=2:gc=200:bc=10:rf=1:gf=8:bf=7 [out0]'
21622 @end example
21623 @end itemize
21624
21625 @section bench, abench
21626
21627 Benchmark part of a filtergraph.
21628
21629 The filter accepts the following options:
21630
21631 @table @option
21632 @item action
21633 Start or stop a timer.
21634
21635 Available values are:
21636 @table @samp
21637 @item start
21638 Get the current time, set it as frame metadata (using the key
21639 @code{lavfi.bench.start_time}), and forward the frame to the next filter.
21640
21641 @item stop
21642 Get the current time and fetch the @code{lavfi.bench.start_time} metadata from
21643 the input frame metadata to get the time difference. Time difference, average,
21644 maximum and minimum time (respectively @code{t}, @code{avg}, @code{max} and
21645 @code{min}) are then printed. The timestamps are expressed in seconds.
21646 @end table
21647 @end table
21648
21649 @subsection Examples
21650
21651 @itemize
21652 @item
21653 Benchmark @ref{selectivecolor} filter:
21654 @example
21655 bench=start,selectivecolor=reds=-.2 .12 -.49,bench=stop
21656 @end example
21657 @end itemize
21658
21659 @section concat
21660
21661 Concatenate audio and video streams, joining them together one after the
21662 other.
21663
21664 The filter works on segments of synchronized video and audio streams. All
21665 segments must have the same number of streams of each type, and that will
21666 also be the number of streams at output.
21667
21668 The filter accepts the following options:
21669
21670 @table @option
21671
21672 @item n
21673 Set the number of segments. Default is 2.
21674
21675 @item v
21676 Set the number of output video streams, that is also the number of video
21677 streams in each segment. Default is 1.
21678
21679 @item a
21680 Set the number of output audio streams, that is also the number of audio
21681 streams in each segment. Default is 0.
21682
21683 @item unsafe
21684 Activate unsafe mode: do not fail if segments have a different format.
21685
21686 @end table
21687
21688 The filter has @var{v}+@var{a} outputs: first @var{v} video outputs, then
21689 @var{a} audio outputs.
21690
21691 There are @var{n}x(@var{v}+@var{a}) inputs: first the inputs for the first
21692 segment, in the same order as the outputs, then the inputs for the second
21693 segment, etc.
21694
21695 Related streams do not always have exactly the same duration, for various
21696 reasons including codec frame size or sloppy authoring. For that reason,
21697 related synchronized streams (e.g. a video and its audio track) should be
21698 concatenated at once. The concat filter will use the duration of the longest
21699 stream in each segment (except the last one), and if necessary pad shorter
21700 audio streams with silence.
21701
21702 For this filter to work correctly, all segments must start at timestamp 0.
21703
21704 All corresponding streams must have the same parameters in all segments; the
21705 filtering system will automatically select a common pixel format for video
21706 streams, and a common sample format, sample rate and channel layout for
21707 audio streams, but other settings, such as resolution, must be converted
21708 explicitly by the user.
21709
21710 Different frame rates are acceptable but will result in variable frame rate
21711 at output; be sure to configure the output file to handle it.
21712
21713 @subsection Examples
21714
21715 @itemize
21716 @item
21717 Concatenate an opening, an episode and an ending, all in bilingual version
21718 (video in stream 0, audio in streams 1 and 2):
21719 @example
21720 ffmpeg -i opening.mkv -i episode.mkv -i ending.mkv -filter_complex \
21721   '[0:0] [0:1] [0:2] [1:0] [1:1] [1:2] [2:0] [2:1] [2:2]
21722    concat=n=3:v=1:a=2 [v] [a1] [a2]' \
21723   -map '[v]' -map '[a1]' -map '[a2]' output.mkv
21724 @end example
21725
21726 @item
21727 Concatenate two parts, handling audio and video separately, using the
21728 (a)movie sources, and adjusting the resolution:
21729 @example
21730 movie=part1.mp4, scale=512:288 [v1] ; amovie=part1.mp4 [a1] ;
21731 movie=part2.mp4, scale=512:288 [v2] ; amovie=part2.mp4 [a2] ;
21732 [v1] [v2] concat [outv] ; [a1] [a2] concat=v=0:a=1 [outa]
21733 @end example
21734 Note that a desync will happen at the stitch if the audio and video streams
21735 do not have exactly the same duration in the first file.
21736
21737 @end itemize
21738
21739 @subsection Commands
21740
21741 This filter supports the following commands:
21742 @table @option
21743 @item next
21744 Close the current segment and step to the next one
21745 @end table
21746
21747 @section drawgraph, adrawgraph
21748
21749 Draw a graph using input video or audio metadata.
21750
21751 It accepts the following parameters:
21752
21753 @table @option
21754 @item m1
21755 Set 1st frame metadata key from which metadata values will be used to draw a graph.
21756
21757 @item fg1
21758 Set 1st foreground color expression.
21759
21760 @item m2
21761 Set 2nd frame metadata key from which metadata values will be used to draw a graph.
21762
21763 @item fg2
21764 Set 2nd foreground color expression.
21765
21766 @item m3
21767 Set 3rd frame metadata key from which metadata values will be used to draw a graph.
21768
21769 @item fg3
21770 Set 3rd foreground color expression.
21771
21772 @item m4
21773 Set 4th frame metadata key from which metadata values will be used to draw a graph.
21774
21775 @item fg4
21776 Set 4th foreground color expression.
21777
21778 @item min
21779 Set minimal value of metadata value.
21780
21781 @item max
21782 Set maximal value of metadata value.
21783
21784 @item bg
21785 Set graph background color. Default is white.
21786
21787 @item mode
21788 Set graph mode.
21789
21790 Available values for mode is:
21791 @table @samp
21792 @item bar
21793 @item dot
21794 @item line
21795 @end table
21796
21797 Default is @code{line}.
21798
21799 @item slide
21800 Set slide mode.
21801
21802 Available values for slide is:
21803 @table @samp
21804 @item frame
21805 Draw new frame when right border is reached.
21806
21807 @item replace
21808 Replace old columns with new ones.
21809
21810 @item scroll
21811 Scroll from right to left.
21812
21813 @item rscroll
21814 Scroll from left to right.
21815
21816 @item picture
21817 Draw single picture.
21818 @end table
21819
21820 Default is @code{frame}.
21821
21822 @item size
21823 Set size of graph video. For the syntax of this option, check the
21824 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
21825 The default value is @code{900x256}.
21826
21827 The foreground color expressions can use the following variables:
21828 @table @option
21829 @item MIN
21830 Minimal value of metadata value.
21831
21832 @item MAX
21833 Maximal value of metadata value.
21834
21835 @item VAL
21836 Current metadata key value.
21837 @end table
21838
21839 The color is defined as 0xAABBGGRR.
21840 @end table
21841
21842 Example using metadata from @ref{signalstats} filter:
21843 @example
21844 signalstats,drawgraph=lavfi.signalstats.YAVG:min=0:max=255
21845 @end example
21846
21847 Example using metadata from @ref{ebur128} filter:
21848 @example
21849 ebur128=metadata=1,adrawgraph=lavfi.r128.M:min=-120:max=5
21850 @end example
21851
21852 @anchor{ebur128}
21853 @section ebur128
21854
21855 EBU R128 scanner filter. This filter takes an audio stream and analyzes its loudness
21856 level. By default, it logs a message at a frequency of 10Hz with the
21857 Momentary loudness (identified by @code{M}), Short-term loudness (@code{S}),
21858 Integrated loudness (@code{I}) and Loudness Range (@code{LRA}).
21859
21860 The filter can only analyze streams which have a sampling rate of 48000 Hz and whose
21861 sample format is double-precision floating point. The input stream will be converted to
21862 this specification, if needed. Users may need to insert aformat and/or aresample filters
21863 after this filter to obtain the original parameters.
21864
21865 The filter also has a video output (see the @var{video} option) with a real
21866 time graph to observe the loudness evolution. The graphic contains the logged
21867 message mentioned above, so it is not printed anymore when this option is set,
21868 unless the verbose logging is set. The main graphing area contains the
21869 short-term loudness (3 seconds of analysis), and the gauge on the right is for
21870 the momentary loudness (400 milliseconds), but can optionally be configured
21871 to instead display short-term loudness (see @var{gauge}).
21872
21873 The green area marks a  +/- 1LU target range around the target loudness
21874 (-23LUFS by default, unless modified through @var{target}).
21875
21876 More information about the Loudness Recommendation EBU R128 on
21877 @url{http://tech.ebu.ch/loudness}.
21878
21879 The filter accepts the following options:
21880
21881 @table @option
21882
21883 @item video
21884 Activate the video output. The audio stream is passed unchanged whether this
21885 option is set or no. The video stream will be the first output stream if
21886 activated. Default is @code{0}.
21887
21888 @item size
21889 Set the video size. This option is for video only. For the syntax of this
21890 option, check the
21891 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
21892 Default and minimum resolution is @code{640x480}.
21893
21894 @item meter
21895 Set the EBU scale meter. Default is @code{9}. Common values are @code{9} and
21896 @code{18}, respectively for EBU scale meter +9 and EBU scale meter +18. Any
21897 other integer value between this range is allowed.
21898
21899 @item metadata
21900 Set metadata injection. If set to @code{1}, the audio input will be segmented
21901 into 100ms output frames, each of them containing various loudness information
21902 in metadata.  All the metadata keys are prefixed with @code{lavfi.r128.}.
21903
21904 Default is @code{0}.
21905
21906 @item framelog
21907 Force the frame logging level.
21908
21909 Available values are:
21910 @table @samp
21911 @item info
21912 information logging level
21913 @item verbose
21914 verbose logging level
21915 @end table
21916
21917 By default, the logging level is set to @var{info}. If the @option{video} or
21918 the @option{metadata} options are set, it switches to @var{verbose}.
21919
21920 @item peak
21921 Set peak mode(s).
21922
21923 Available modes can be cumulated (the option is a @code{flag} type). Possible
21924 values are:
21925 @table @samp
21926 @item none
21927 Disable any peak mode (default).
21928 @item sample
21929 Enable sample-peak mode.
21930
21931 Simple peak mode looking for the higher sample value. It logs a message
21932 for sample-peak (identified by @code{SPK}).
21933 @item true
21934 Enable true-peak mode.
21935
21936 If enabled, the peak lookup is done on an over-sampled version of the input
21937 stream for better peak accuracy. It logs a message for true-peak.
21938 (identified by @code{TPK}) and true-peak per frame (identified by @code{FTPK}).
21939 This mode requires a build with @code{libswresample}.
21940 @end table
21941
21942 @item dualmono
21943 Treat mono input files as "dual mono". If a mono file is intended for playback
21944 on a stereo system, its EBU R128 measurement will be perceptually incorrect.
21945 If set to @code{true}, this option will compensate for this effect.
21946 Multi-channel input files are not affected by this option.
21947
21948 @item panlaw
21949 Set a specific pan law to be used for the measurement of dual mono files.
21950 This parameter is optional, and has a default value of -3.01dB.
21951
21952 @item target
21953 Set a specific target level (in LUFS) used as relative zero in the visualization.
21954 This parameter is optional and has a default value of -23LUFS as specified
21955 by EBU R128. However, material published online may prefer a level of -16LUFS
21956 (e.g. for use with podcasts or video platforms).
21957
21958 @item gauge
21959 Set the value displayed by the gauge. Valid values are @code{momentary} and s
21960 @code{shortterm}. By default the momentary value will be used, but in certain
21961 scenarios it may be more useful to observe the short term value instead (e.g.
21962 live mixing).
21963
21964 @item scale
21965 Sets the display scale for the loudness. Valid parameters are @code{absolute}
21966 (in LUFS) or @code{relative} (LU) relative to the target. This only affects the
21967 video output, not the summary or continuous log output.
21968 @end table
21969
21970 @subsection Examples
21971
21972 @itemize
21973 @item
21974 Real-time graph using @command{ffplay}, with a EBU scale meter +18:
21975 @example
21976 ffplay -f lavfi -i "amovie=input.mp3,ebur128=video=1:meter=18 [out0][out1]"
21977 @end example
21978
21979 @item
21980 Run an analysis with @command{ffmpeg}:
21981 @example
21982 ffmpeg -nostats -i input.mp3 -filter_complex ebur128 -f null -
21983 @end example
21984 @end itemize
21985
21986 @section interleave, ainterleave
21987
21988 Temporally interleave frames from several inputs.
21989
21990 @code{interleave} works with video inputs, @code{ainterleave} with audio.
21991
21992 These filters read frames from several inputs and send the oldest
21993 queued frame to the output.
21994
21995 Input streams must have well defined, monotonically increasing frame
21996 timestamp values.
21997
21998 In order to submit one frame to output, these filters need to enqueue
21999 at least one frame for each input, so they cannot work in case one
22000 input is not yet terminated and will not receive incoming frames.
22001
22002 For example consider the case when one input is a @code{select} filter
22003 which always drops input frames. The @code{interleave} filter will keep
22004 reading from that input, but it will never be able to send new frames
22005 to output until the input sends an end-of-stream signal.
22006
22007 Also, depending on inputs synchronization, the filters will drop
22008 frames in case one input receives more frames than the other ones, and
22009 the queue is already filled.
22010
22011 These filters accept the following options:
22012
22013 @table @option
22014 @item nb_inputs, n
22015 Set the number of different inputs, it is 2 by default.
22016 @end table
22017
22018 @subsection Examples
22019
22020 @itemize
22021 @item
22022 Interleave frames belonging to different streams using @command{ffmpeg}:
22023 @example
22024 ffmpeg -i bambi.avi -i pr0n.mkv -filter_complex "[0:v][1:v] interleave" out.avi
22025 @end example
22026
22027 @item
22028 Add flickering blur effect:
22029 @example
22030 select='if(gt(random(0), 0.2), 1, 2)':n=2 [tmp], boxblur=2:2, [tmp] interleave
22031 @end example
22032 @end itemize
22033
22034 @section metadata, ametadata
22035
22036 Manipulate frame metadata.
22037
22038 This filter accepts the following options:
22039
22040 @table @option
22041 @item mode
22042 Set mode of operation of the filter.
22043
22044 Can be one of the following:
22045
22046 @table @samp
22047 @item select
22048 If both @code{value} and @code{key} is set, select frames
22049 which have such metadata. If only @code{key} is set, select
22050 every frame that has such key in metadata.
22051
22052 @item add
22053 Add new metadata @code{key} and @code{value}. If key is already available
22054 do nothing.
22055
22056 @item modify
22057 Modify value of already present key.
22058
22059 @item delete
22060 If @code{value} is set, delete only keys that have such value.
22061 Otherwise, delete key. If @code{key} is not set, delete all metadata values in
22062 the frame.
22063
22064 @item print
22065 Print key and its value if metadata was found. If @code{key} is not set print all
22066 metadata values available in frame.
22067 @end table
22068
22069 @item key
22070 Set key used with all modes. Must be set for all modes except @code{print} and @code{delete}.
22071
22072 @item value
22073 Set metadata value which will be used. This option is mandatory for
22074 @code{modify} and @code{add} mode.
22075
22076 @item function
22077 Which function to use when comparing metadata value and @code{value}.
22078
22079 Can be one of following:
22080
22081 @table @samp
22082 @item same_str
22083 Values are interpreted as strings, returns true if metadata value is same as @code{value}.
22084
22085 @item starts_with
22086 Values are interpreted as strings, returns true if metadata value starts with
22087 the @code{value} option string.
22088
22089 @item less
22090 Values are interpreted as floats, returns true if metadata value is less than @code{value}.
22091
22092 @item equal
22093 Values are interpreted as floats, returns true if @code{value} is equal with metadata value.
22094
22095 @item greater
22096 Values are interpreted as floats, returns true if metadata value is greater than @code{value}.
22097
22098 @item expr
22099 Values are interpreted as floats, returns true if expression from option @code{expr}
22100 evaluates to true.
22101
22102 @item ends_with
22103 Values are interpreted as strings, returns true if metadata value ends with
22104 the @code{value} option string.
22105 @end table
22106
22107 @item expr
22108 Set expression which is used when @code{function} is set to @code{expr}.
22109 The expression is evaluated through the eval API and can contain the following
22110 constants:
22111
22112 @table @option
22113 @item VALUE1
22114 Float representation of @code{value} from metadata key.
22115
22116 @item VALUE2
22117 Float representation of @code{value} as supplied by user in @code{value} option.
22118 @end table
22119
22120 @item file
22121 If specified in @code{print} mode, output is written to the named file. Instead of
22122 plain filename any writable url can be specified. Filename ``-'' is a shorthand
22123 for standard output. If @code{file} option is not set, output is written to the log
22124 with AV_LOG_INFO loglevel.
22125
22126 @end table
22127
22128 @subsection Examples
22129
22130 @itemize
22131 @item
22132 Print all metadata values for frames with key @code{lavfi.signalstats.YDIF} with values
22133 between 0 and 1.
22134 @example
22135 signalstats,metadata=print:key=lavfi.signalstats.YDIF:value=0:function=expr:expr='between(VALUE1,0,1)'
22136 @end example
22137 @item
22138 Print silencedetect output to file @file{metadata.txt}.
22139 @example
22140 silencedetect,ametadata=mode=print:file=metadata.txt
22141 @end example
22142 @item
22143 Direct all metadata to a pipe with file descriptor 4.
22144 @example
22145 metadata=mode=print:file='pipe\:4'
22146 @end example
22147 @end itemize
22148
22149 @section perms, aperms
22150
22151 Set read/write permissions for the output frames.
22152
22153 These filters are mainly aimed at developers to test direct path in the
22154 following filter in the filtergraph.
22155
22156 The filters accept the following options:
22157
22158 @table @option
22159 @item mode
22160 Select the permissions mode.
22161
22162 It accepts the following values:
22163 @table @samp
22164 @item none
22165 Do nothing. This is the default.
22166 @item ro
22167 Set all the output frames read-only.
22168 @item rw
22169 Set all the output frames directly writable.
22170 @item toggle
22171 Make the frame read-only if writable, and writable if read-only.
22172 @item random
22173 Set each output frame read-only or writable randomly.
22174 @end table
22175
22176 @item seed
22177 Set the seed for the @var{random} mode, must be an integer included between
22178 @code{0} and @code{UINT32_MAX}. If not specified, or if explicitly set to
22179 @code{-1}, the filter will try to use a good random seed on a best effort
22180 basis.
22181 @end table
22182
22183 Note: in case of auto-inserted filter between the permission filter and the
22184 following one, the permission might not be received as expected in that
22185 following filter. Inserting a @ref{format} or @ref{aformat} filter before the
22186 perms/aperms filter can avoid this problem.
22187
22188 @section realtime, arealtime
22189
22190 Slow down filtering to match real time approximately.
22191
22192 These filters will pause the filtering for a variable amount of time to
22193 match the output rate with the input timestamps.
22194 They are similar to the @option{re} option to @code{ffmpeg}.
22195
22196 They accept the following options:
22197
22198 @table @option
22199 @item limit
22200 Time limit for the pauses. Any pause longer than that will be considered
22201 a timestamp discontinuity and reset the timer. Default is 2 seconds.
22202 @item speed
22203 Speed factor for processing. The value must be a float larger than zero.
22204 Values larger than 1.0 will result in faster than realtime processing,
22205 smaller will slow processing down. The @var{limit} is automatically adapted
22206 accordingly. Default is 1.0.
22207
22208 A processing speed faster than what is possible without these filters cannot
22209 be achieved.
22210 @end table
22211
22212 @anchor{select}
22213 @section select, aselect
22214
22215 Select frames to pass in output.
22216
22217 This filter accepts the following options:
22218
22219 @table @option
22220
22221 @item expr, e
22222 Set expression, which is evaluated for each input frame.
22223
22224 If the expression is evaluated to zero, the frame is discarded.
22225
22226 If the evaluation result is negative or NaN, the frame is sent to the
22227 first output; otherwise it is sent to the output with index
22228 @code{ceil(val)-1}, assuming that the input index starts from 0.
22229
22230 For example a value of @code{1.2} corresponds to the output with index
22231 @code{ceil(1.2)-1 = 2-1 = 1}, that is the second output.
22232
22233 @item outputs, n
22234 Set the number of outputs. The output to which to send the selected
22235 frame is based on the result of the evaluation. Default value is 1.
22236 @end table
22237
22238 The expression can contain the following constants:
22239
22240 @table @option
22241 @item n
22242 The (sequential) number of the filtered frame, starting from 0.
22243
22244 @item selected_n
22245 The (sequential) number of the selected frame, starting from 0.
22246
22247 @item prev_selected_n
22248 The sequential number of the last selected frame. It's NAN if undefined.
22249
22250 @item TB
22251 The timebase of the input timestamps.
22252
22253 @item pts
22254 The PTS (Presentation TimeStamp) of the filtered video frame,
22255 expressed in @var{TB} units. It's NAN if undefined.
22256
22257 @item t
22258 The PTS of the filtered video frame,
22259 expressed in seconds. It's NAN if undefined.
22260
22261 @item prev_pts
22262 The PTS of the previously filtered video frame. It's NAN if undefined.
22263
22264 @item prev_selected_pts
22265 The PTS of the last previously filtered video frame. It's NAN if undefined.
22266
22267 @item prev_selected_t
22268 The PTS of the last previously selected video frame, expressed in seconds. It's NAN if undefined.
22269
22270 @item start_pts
22271 The PTS of the first video frame in the video. It's NAN if undefined.
22272
22273 @item start_t
22274 The time of the first video frame in the video. It's NAN if undefined.
22275
22276 @item pict_type @emph{(video only)}
22277 The type of the filtered frame. It can assume one of the following
22278 values:
22279 @table @option
22280 @item I
22281 @item P
22282 @item B
22283 @item S
22284 @item SI
22285 @item SP
22286 @item BI
22287 @end table
22288
22289 @item interlace_type @emph{(video only)}
22290 The frame interlace type. It can assume one of the following values:
22291 @table @option
22292 @item PROGRESSIVE
22293 The frame is progressive (not interlaced).
22294 @item TOPFIRST
22295 The frame is top-field-first.
22296 @item BOTTOMFIRST
22297 The frame is bottom-field-first.
22298 @end table
22299
22300 @item consumed_sample_n @emph{(audio only)}
22301 the number of selected samples before the current frame
22302
22303 @item samples_n @emph{(audio only)}
22304 the number of samples in the current frame
22305
22306 @item sample_rate @emph{(audio only)}
22307 the input sample rate
22308
22309 @item key
22310 This is 1 if the filtered frame is a key-frame, 0 otherwise.
22311
22312 @item pos
22313 the position in the file of the filtered frame, -1 if the information
22314 is not available (e.g. for synthetic video)
22315
22316 @item scene @emph{(video only)}
22317 value between 0 and 1 to indicate a new scene; a low value reflects a low
22318 probability for the current frame to introduce a new scene, while a higher
22319 value means the current frame is more likely to be one (see the example below)
22320
22321 @item concatdec_select
22322 The concat demuxer can select only part of a concat input file by setting an
22323 inpoint and an outpoint, but the output packets may not be entirely contained
22324 in the selected interval. By using this variable, it is possible to skip frames
22325 generated by the concat demuxer which are not exactly contained in the selected
22326 interval.
22327
22328 This works by comparing the frame pts against the @var{lavf.concat.start_time}
22329 and the @var{lavf.concat.duration} packet metadata values which are also
22330 present in the decoded frames.
22331
22332 The @var{concatdec_select} variable is -1 if the frame pts is at least
22333 start_time and either the duration metadata is missing or the frame pts is less
22334 than start_time + duration, 0 otherwise, and NaN if the start_time metadata is
22335 missing.
22336
22337 That basically means that an input frame is selected if its pts is within the
22338 interval set by the concat demuxer.
22339
22340 @end table
22341
22342 The default value of the select expression is "1".
22343
22344 @subsection Examples
22345
22346 @itemize
22347 @item
22348 Select all frames in input:
22349 @example
22350 select
22351 @end example
22352
22353 The example above is the same as:
22354 @example
22355 select=1
22356 @end example
22357
22358 @item
22359 Skip all frames:
22360 @example
22361 select=0
22362 @end example
22363
22364 @item
22365 Select only I-frames:
22366 @example
22367 select='eq(pict_type\,I)'
22368 @end example
22369
22370 @item
22371 Select one frame every 100:
22372 @example
22373 select='not(mod(n\,100))'
22374 @end example
22375
22376 @item
22377 Select only frames contained in the 10-20 time interval:
22378 @example
22379 select=between(t\,10\,20)
22380 @end example
22381
22382 @item
22383 Select only I-frames contained in the 10-20 time interval:
22384 @example
22385 select=between(t\,10\,20)*eq(pict_type\,I)
22386 @end example
22387
22388 @item
22389 Select frames with a minimum distance of 10 seconds:
22390 @example
22391 select='isnan(prev_selected_t)+gte(t-prev_selected_t\,10)'
22392 @end example
22393
22394 @item
22395 Use aselect to select only audio frames with samples number > 100:
22396 @example
22397 aselect='gt(samples_n\,100)'
22398 @end example
22399
22400 @item
22401 Create a mosaic of the first scenes:
22402 @example
22403 ffmpeg -i video.avi -vf select='gt(scene\,0.4)',scale=160:120,tile -frames:v 1 preview.png
22404 @end example
22405
22406 Comparing @var{scene} against a value between 0.3 and 0.5 is generally a sane
22407 choice.
22408
22409 @item
22410 Send even and odd frames to separate outputs, and compose them:
22411 @example
22412 select=n=2:e='mod(n, 2)+1' [odd][even]; [odd] pad=h=2*ih [tmp]; [tmp][even] overlay=y=h
22413 @end example
22414
22415 @item
22416 Select useful frames from an ffconcat file which is using inpoints and
22417 outpoints but where the source files are not intra frame only.
22418 @example
22419 ffmpeg -copyts -vsync 0 -segment_time_metadata 1 -i input.ffconcat -vf select=concatdec_select -af aselect=concatdec_select output.avi
22420 @end example
22421 @end itemize
22422
22423 @section sendcmd, asendcmd
22424
22425 Send commands to filters in the filtergraph.
22426
22427 These filters read commands to be sent to other filters in the
22428 filtergraph.
22429
22430 @code{sendcmd} must be inserted between two video filters,
22431 @code{asendcmd} must be inserted between two audio filters, but apart
22432 from that they act the same way.
22433
22434 The specification of commands can be provided in the filter arguments
22435 with the @var{commands} option, or in a file specified by the
22436 @var{filename} option.
22437
22438 These filters accept the following options:
22439 @table @option
22440 @item commands, c
22441 Set the commands to be read and sent to the other filters.
22442 @item filename, f
22443 Set the filename of the commands to be read and sent to the other
22444 filters.
22445 @end table
22446
22447 @subsection Commands syntax
22448
22449 A commands description consists of a sequence of interval
22450 specifications, comprising a list of commands to be executed when a
22451 particular event related to that interval occurs. The occurring event
22452 is typically the current frame time entering or leaving a given time
22453 interval.
22454
22455 An interval is specified by the following syntax:
22456 @example
22457 @var{START}[-@var{END}] @var{COMMANDS};
22458 @end example
22459
22460 The time interval is specified by the @var{START} and @var{END} times.
22461 @var{END} is optional and defaults to the maximum time.
22462
22463 The current frame time is considered within the specified interval if
22464 it is included in the interval [@var{START}, @var{END}), that is when
22465 the time is greater or equal to @var{START} and is lesser than
22466 @var{END}.
22467
22468 @var{COMMANDS} consists of a sequence of one or more command
22469 specifications, separated by ",", relating to that interval.  The
22470 syntax of a command specification is given by:
22471 @example
22472 [@var{FLAGS}] @var{TARGET} @var{COMMAND} @var{ARG}
22473 @end example
22474
22475 @var{FLAGS} is optional and specifies the type of events relating to
22476 the time interval which enable sending the specified command, and must
22477 be a non-null sequence of identifier flags separated by "+" or "|" and
22478 enclosed between "[" and "]".
22479
22480 The following flags are recognized:
22481 @table @option
22482 @item enter
22483 The command is sent when the current frame timestamp enters the
22484 specified interval. In other words, the command is sent when the
22485 previous frame timestamp was not in the given interval, and the
22486 current is.
22487
22488 @item leave
22489 The command is sent when the current frame timestamp leaves the
22490 specified interval. In other words, the command is sent when the
22491 previous frame timestamp was in the given interval, and the
22492 current is not.
22493 @end table
22494
22495 If @var{FLAGS} is not specified, a default value of @code{[enter]} is
22496 assumed.
22497
22498 @var{TARGET} specifies the target of the command, usually the name of
22499 the filter class or a specific filter instance name.
22500
22501 @var{COMMAND} specifies the name of the command for the target filter.
22502
22503 @var{ARG} is optional and specifies the optional list of argument for
22504 the given @var{COMMAND}.
22505
22506 Between one interval specification and another, whitespaces, or
22507 sequences of characters starting with @code{#} until the end of line,
22508 are ignored and can be used to annotate comments.
22509
22510 A simplified BNF description of the commands specification syntax
22511 follows:
22512 @example
22513 @var{COMMAND_FLAG}  ::= "enter" | "leave"
22514 @var{COMMAND_FLAGS} ::= @var{COMMAND_FLAG} [(+|"|")@var{COMMAND_FLAG}]
22515 @var{COMMAND}       ::= ["[" @var{COMMAND_FLAGS} "]"] @var{TARGET} @var{COMMAND} [@var{ARG}]
22516 @var{COMMANDS}      ::= @var{COMMAND} [,@var{COMMANDS}]
22517 @var{INTERVAL}      ::= @var{START}[-@var{END}] @var{COMMANDS}
22518 @var{INTERVALS}     ::= @var{INTERVAL}[;@var{INTERVALS}]
22519 @end example
22520
22521 @subsection Examples
22522
22523 @itemize
22524 @item
22525 Specify audio tempo change at second 4:
22526 @example
22527 asendcmd=c='4.0 atempo tempo 1.5',atempo
22528 @end example
22529
22530 @item
22531 Target a specific filter instance:
22532 @example
22533 asendcmd=c='4.0 atempo@@my tempo 1.5',atempo@@my
22534 @end example
22535
22536 @item
22537 Specify a list of drawtext and hue commands in a file.
22538 @example
22539 # show text in the interval 5-10
22540 5.0-10.0 [enter] drawtext reinit 'fontfile=FreeSerif.ttf:text=hello world',
22541          [leave] drawtext reinit 'fontfile=FreeSerif.ttf:text=';
22542
22543 # desaturate the image in the interval 15-20
22544 15.0-20.0 [enter] hue s 0,
22545           [enter] drawtext reinit 'fontfile=FreeSerif.ttf:text=nocolor',
22546           [leave] hue s 1,
22547           [leave] drawtext reinit 'fontfile=FreeSerif.ttf:text=color';
22548
22549 # apply an exponential saturation fade-out effect, starting from time 25
22550 25 [enter] hue s exp(25-t)
22551 @end example
22552
22553 A filtergraph allowing to read and process the above command list
22554 stored in a file @file{test.cmd}, can be specified with:
22555 @example
22556 sendcmd=f=test.cmd,drawtext=fontfile=FreeSerif.ttf:text='',hue
22557 @end example
22558 @end itemize
22559
22560 @anchor{setpts}
22561 @section setpts, asetpts
22562
22563 Change the PTS (presentation timestamp) of the input frames.
22564
22565 @code{setpts} works on video frames, @code{asetpts} on audio frames.
22566
22567 This filter accepts the following options:
22568
22569 @table @option
22570
22571 @item expr
22572 The expression which is evaluated for each frame to construct its timestamp.
22573
22574 @end table
22575
22576 The expression is evaluated through the eval API and can contain the following
22577 constants:
22578
22579 @table @option
22580 @item FRAME_RATE, FR
22581 frame rate, only defined for constant frame-rate video
22582
22583 @item PTS
22584 The presentation timestamp in input
22585
22586 @item N
22587 The count of the input frame for video or the number of consumed samples,
22588 not including the current frame for audio, starting from 0.
22589
22590 @item NB_CONSUMED_SAMPLES
22591 The number of consumed samples, not including the current frame (only
22592 audio)
22593
22594 @item NB_SAMPLES, S
22595 The number of samples in the current frame (only audio)
22596
22597 @item SAMPLE_RATE, SR
22598 The audio sample rate.
22599
22600 @item STARTPTS
22601 The PTS of the first frame.
22602
22603 @item STARTT
22604 the time in seconds of the first frame
22605
22606 @item INTERLACED
22607 State whether the current frame is interlaced.
22608
22609 @item T
22610 the time in seconds of the current frame
22611
22612 @item POS
22613 original position in the file of the frame, or undefined if undefined
22614 for the current frame
22615
22616 @item PREV_INPTS
22617 The previous input PTS.
22618
22619 @item PREV_INT
22620 previous input time in seconds
22621
22622 @item PREV_OUTPTS
22623 The previous output PTS.
22624
22625 @item PREV_OUTT
22626 previous output time in seconds
22627
22628 @item RTCTIME
22629 The wallclock (RTC) time in microseconds. This is deprecated, use time(0)
22630 instead.
22631
22632 @item RTCSTART
22633 The wallclock (RTC) time at the start of the movie in microseconds.
22634
22635 @item TB
22636 The timebase of the input timestamps.
22637
22638 @end table
22639
22640 @subsection Examples
22641
22642 @itemize
22643 @item
22644 Start counting PTS from zero
22645 @example
22646 setpts=PTS-STARTPTS
22647 @end example
22648
22649 @item
22650 Apply fast motion effect:
22651 @example
22652 setpts=0.5*PTS
22653 @end example
22654
22655 @item
22656 Apply slow motion effect:
22657 @example
22658 setpts=2.0*PTS
22659 @end example
22660
22661 @item
22662 Set fixed rate of 25 frames per second:
22663 @example
22664 setpts=N/(25*TB)
22665 @end example
22666
22667 @item
22668 Set fixed rate 25 fps with some jitter:
22669 @example
22670 setpts='1/(25*TB) * (N + 0.05 * sin(N*2*PI/25))'
22671 @end example
22672
22673 @item
22674 Apply an offset of 10 seconds to the input PTS:
22675 @example
22676 setpts=PTS+10/TB
22677 @end example
22678
22679 @item
22680 Generate timestamps from a "live source" and rebase onto the current timebase:
22681 @example
22682 setpts='(RTCTIME - RTCSTART) / (TB * 1000000)'
22683 @end example
22684
22685 @item
22686 Generate timestamps by counting samples:
22687 @example
22688 asetpts=N/SR/TB
22689 @end example
22690
22691 @end itemize
22692
22693 @section setrange
22694
22695 Force color range for the output video frame.
22696
22697 The @code{setrange} filter marks the color range property for the
22698 output frames. It does not change the input frame, but only sets the
22699 corresponding property, which affects how the frame is treated by
22700 following filters.
22701
22702 The filter accepts the following options:
22703
22704 @table @option
22705
22706 @item range
22707 Available values are:
22708
22709 @table @samp
22710 @item auto
22711 Keep the same color range property.
22712
22713 @item unspecified, unknown
22714 Set the color range as unspecified.
22715
22716 @item limited, tv, mpeg
22717 Set the color range as limited.
22718
22719 @item full, pc, jpeg
22720 Set the color range as full.
22721 @end table
22722 @end table
22723
22724 @section settb, asettb
22725
22726 Set the timebase to use for the output frames timestamps.
22727 It is mainly useful for testing timebase configuration.
22728
22729 It accepts the following parameters:
22730
22731 @table @option
22732
22733 @item expr, tb
22734 The expression which is evaluated into the output timebase.
22735
22736 @end table
22737
22738 The value for @option{tb} is an arithmetic expression representing a
22739 rational. The expression can contain the constants "AVTB" (the default
22740 timebase), "intb" (the input timebase) and "sr" (the sample rate,
22741 audio only). Default value is "intb".
22742
22743 @subsection Examples
22744
22745 @itemize
22746 @item
22747 Set the timebase to 1/25:
22748 @example
22749 settb=expr=1/25
22750 @end example
22751
22752 @item
22753 Set the timebase to 1/10:
22754 @example
22755 settb=expr=0.1
22756 @end example
22757
22758 @item
22759 Set the timebase to 1001/1000:
22760 @example
22761 settb=1+0.001
22762 @end example
22763
22764 @item
22765 Set the timebase to 2*intb:
22766 @example
22767 settb=2*intb
22768 @end example
22769
22770 @item
22771 Set the default timebase value:
22772 @example
22773 settb=AVTB
22774 @end example
22775 @end itemize
22776
22777 @section showcqt
22778 Convert input audio to a video output representing frequency spectrum
22779 logarithmically using Brown-Puckette constant Q transform algorithm with
22780 direct frequency domain coefficient calculation (but the transform itself
22781 is not really constant Q, instead the Q factor is actually variable/clamped),
22782 with musical tone scale, from E0 to D#10.
22783
22784 The filter accepts the following options:
22785
22786 @table @option
22787 @item size, s
22788 Specify the video size for the output. It must be even. For the syntax of this option,
22789 check the @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
22790 Default value is @code{1920x1080}.
22791
22792 @item fps, rate, r
22793 Set the output frame rate. Default value is @code{25}.
22794
22795 @item bar_h
22796 Set the bargraph height. It must be even. Default value is @code{-1} which
22797 computes the bargraph height automatically.
22798
22799 @item axis_h
22800 Set the axis height. It must be even. Default value is @code{-1} which computes
22801 the axis height automatically.
22802
22803 @item sono_h
22804 Set the sonogram height. It must be even. Default value is @code{-1} which
22805 computes the sonogram height automatically.
22806
22807 @item fullhd
22808 Set the fullhd resolution. This option is deprecated, use @var{size}, @var{s}
22809 instead. Default value is @code{1}.
22810
22811 @item sono_v, volume
22812 Specify the sonogram volume expression. It can contain variables:
22813 @table @option
22814 @item bar_v
22815 the @var{bar_v} evaluated expression
22816 @item frequency, freq, f
22817 the frequency where it is evaluated
22818 @item timeclamp, tc
22819 the value of @var{timeclamp} option
22820 @end table
22821 and functions:
22822 @table @option
22823 @item a_weighting(f)
22824 A-weighting of equal loudness
22825 @item b_weighting(f)
22826 B-weighting of equal loudness
22827 @item c_weighting(f)
22828 C-weighting of equal loudness.
22829 @end table
22830 Default value is @code{16}.
22831
22832 @item bar_v, volume2
22833 Specify the bargraph volume expression. It can contain variables:
22834 @table @option
22835 @item sono_v
22836 the @var{sono_v} evaluated expression
22837 @item frequency, freq, f
22838 the frequency where it is evaluated
22839 @item timeclamp, tc
22840 the value of @var{timeclamp} option
22841 @end table
22842 and functions:
22843 @table @option
22844 @item a_weighting(f)
22845 A-weighting of equal loudness
22846 @item b_weighting(f)
22847 B-weighting of equal loudness
22848 @item c_weighting(f)
22849 C-weighting of equal loudness.
22850 @end table
22851 Default value is @code{sono_v}.
22852
22853 @item sono_g, gamma
22854 Specify the sonogram gamma. Lower gamma makes the spectrum more contrast,
22855 higher gamma makes the spectrum having more range. Default value is @code{3}.
22856 Acceptable range is @code{[1, 7]}.
22857
22858 @item bar_g, gamma2
22859 Specify the bargraph gamma. Default value is @code{1}. Acceptable range is
22860 @code{[1, 7]}.
22861
22862 @item bar_t
22863 Specify the bargraph transparency level. Lower value makes the bargraph sharper.
22864 Default value is @code{1}. Acceptable range is @code{[0, 1]}.
22865
22866 @item timeclamp, tc
22867 Specify the transform timeclamp. At low frequency, there is trade-off between
22868 accuracy in time domain and frequency domain. If timeclamp is lower,
22869 event in time domain is represented more accurately (such as fast bass drum),
22870 otherwise event in frequency domain is represented more accurately
22871 (such as bass guitar). Acceptable range is @code{[0.002, 1]}. Default value is @code{0.17}.
22872
22873 @item attack
22874 Set attack time in seconds. The default is @code{0} (disabled). Otherwise, it
22875 limits future samples by applying asymmetric windowing in time domain, useful
22876 when low latency is required. Accepted range is @code{[0, 1]}.
22877
22878 @item basefreq
22879 Specify the transform base frequency. Default value is @code{20.01523126408007475},
22880 which is frequency 50 cents below E0. Acceptable range is @code{[10, 100000]}.
22881
22882 @item endfreq
22883 Specify the transform end frequency. Default value is @code{20495.59681441799654},
22884 which is frequency 50 cents above D#10. Acceptable range is @code{[10, 100000]}.
22885
22886 @item coeffclamp
22887 This option is deprecated and ignored.
22888
22889 @item tlength
22890 Specify the transform length in time domain. Use this option to control accuracy
22891 trade-off between time domain and frequency domain at every frequency sample.
22892 It can contain variables:
22893 @table @option
22894 @item frequency, freq, f
22895 the frequency where it is evaluated
22896 @item timeclamp, tc
22897 the value of @var{timeclamp} option.
22898 @end table
22899 Default value is @code{384*tc/(384+tc*f)}.
22900
22901 @item count
22902 Specify the transform count for every video frame. Default value is @code{6}.
22903 Acceptable range is @code{[1, 30]}.
22904
22905 @item fcount
22906 Specify the transform count for every single pixel. Default value is @code{0},
22907 which makes it computed automatically. Acceptable range is @code{[0, 10]}.
22908
22909 @item fontfile
22910 Specify font file for use with freetype to draw the axis. If not specified,
22911 use embedded font. Note that drawing with font file or embedded font is not
22912 implemented with custom @var{basefreq} and @var{endfreq}, use @var{axisfile}
22913 option instead.
22914
22915 @item font
22916 Specify fontconfig pattern. This has lower priority than @var{fontfile}. The
22917 @code{:} in the pattern may be replaced by @code{|} to avoid unnecessary
22918 escaping.
22919
22920 @item fontcolor
22921 Specify font color expression. This is arithmetic expression that should return
22922 integer value 0xRRGGBB. It can contain variables:
22923 @table @option
22924 @item frequency, freq, f
22925 the frequency where it is evaluated
22926 @item timeclamp, tc
22927 the value of @var{timeclamp} option
22928 @end table
22929 and functions:
22930 @table @option
22931 @item midi(f)
22932 midi number of frequency f, some midi numbers: E0(16), C1(24), C2(36), A4(69)
22933 @item r(x), g(x), b(x)
22934 red, green, and blue value of intensity x.
22935 @end table
22936 Default value is @code{st(0, (midi(f)-59.5)/12);
22937 st(1, if(between(ld(0),0,1), 0.5-0.5*cos(2*PI*ld(0)), 0));
22938 r(1-ld(1)) + b(ld(1))}.
22939
22940 @item axisfile
22941 Specify image file to draw the axis. This option override @var{fontfile} and
22942 @var{fontcolor} option.
22943
22944 @item axis, text
22945 Enable/disable drawing text to the axis. If it is set to @code{0}, drawing to
22946 the axis is disabled, ignoring @var{fontfile} and @var{axisfile} option.
22947 Default value is @code{1}.
22948
22949 @item csp
22950 Set colorspace. The accepted values are:
22951 @table @samp
22952 @item unspecified
22953 Unspecified (default)
22954
22955 @item bt709
22956 BT.709
22957
22958 @item fcc
22959 FCC
22960
22961 @item bt470bg
22962 BT.470BG or BT.601-6 625
22963
22964 @item smpte170m
22965 SMPTE-170M or BT.601-6 525
22966
22967 @item smpte240m
22968 SMPTE-240M
22969
22970 @item bt2020ncl
22971 BT.2020 with non-constant luminance
22972
22973 @end table
22974
22975 @item cscheme
22976 Set spectrogram color scheme. This is list of floating point values with format
22977 @code{left_r|left_g|left_b|right_r|right_g|right_b}.
22978 The default is @code{1|0.5|0|0|0.5|1}.
22979
22980 @end table
22981
22982 @subsection Examples
22983
22984 @itemize
22985 @item
22986 Playing audio while showing the spectrum:
22987 @example
22988 ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt [out0]'
22989 @end example
22990
22991 @item
22992 Same as above, but with frame rate 30 fps:
22993 @example
22994 ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt=fps=30:count=5 [out0]'
22995 @end example
22996
22997 @item
22998 Playing at 1280x720:
22999 @example
23000 ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt=s=1280x720:count=4 [out0]'
23001 @end example
23002
23003 @item
23004 Disable sonogram display:
23005 @example
23006 sono_h=0
23007 @end example
23008
23009 @item
23010 A1 and its harmonics: A1, A2, (near)E3, A3:
23011 @example
23012 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),
23013                  asplit[a][out1]; [a] showcqt [out0]'
23014 @end example
23015
23016 @item
23017 Same as above, but with more accuracy in frequency domain:
23018 @example
23019 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),
23020                  asplit[a][out1]; [a] showcqt=timeclamp=0.5 [out0]'
23021 @end example
23022
23023 @item
23024 Custom volume:
23025 @example
23026 bar_v=10:sono_v=bar_v*a_weighting(f)
23027 @end example
23028
23029 @item
23030 Custom gamma, now spectrum is linear to the amplitude.
23031 @example
23032 bar_g=2:sono_g=2
23033 @end example
23034
23035 @item
23036 Custom tlength equation:
23037 @example
23038 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)))'
23039 @end example
23040
23041 @item
23042 Custom fontcolor and fontfile, C-note is colored green, others are colored blue:
23043 @example
23044 fontcolor='if(mod(floor(midi(f)+0.5),12), 0x0000FF, g(1))':fontfile=myfont.ttf
23045 @end example
23046
23047 @item
23048 Custom font using fontconfig:
23049 @example
23050 font='Courier New,Monospace,mono|bold'
23051 @end example
23052
23053 @item
23054 Custom frequency range with custom axis using image file:
23055 @example
23056 axisfile=myaxis.png:basefreq=40:endfreq=10000
23057 @end example
23058 @end itemize
23059
23060 @section showfreqs
23061
23062 Convert input audio to video output representing the audio power spectrum.
23063 Audio amplitude is on Y-axis while frequency is on X-axis.
23064
23065 The filter accepts the following options:
23066
23067 @table @option
23068 @item size, s
23069 Specify size of video. For the syntax of this option, check the
23070 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
23071 Default is @code{1024x512}.
23072
23073 @item mode
23074 Set display mode.
23075 This set how each frequency bin will be represented.
23076
23077 It accepts the following values:
23078 @table @samp
23079 @item line
23080 @item bar
23081 @item dot
23082 @end table
23083 Default is @code{bar}.
23084
23085 @item ascale
23086 Set amplitude scale.
23087
23088 It accepts the following values:
23089 @table @samp
23090 @item lin
23091 Linear scale.
23092
23093 @item sqrt
23094 Square root scale.
23095
23096 @item cbrt
23097 Cubic root scale.
23098
23099 @item log
23100 Logarithmic scale.
23101 @end table
23102 Default is @code{log}.
23103
23104 @item fscale
23105 Set frequency scale.
23106
23107 It accepts the following values:
23108 @table @samp
23109 @item lin
23110 Linear scale.
23111
23112 @item log
23113 Logarithmic scale.
23114
23115 @item rlog
23116 Reverse logarithmic scale.
23117 @end table
23118 Default is @code{lin}.
23119
23120 @item win_size
23121 Set window size. Allowed range is from 16 to 65536.
23122
23123 Default is @code{2048}
23124
23125 @item win_func
23126 Set windowing function.
23127
23128 It accepts the following values:
23129 @table @samp
23130 @item rect
23131 @item bartlett
23132 @item hanning
23133 @item hamming
23134 @item blackman
23135 @item welch
23136 @item flattop
23137 @item bharris
23138 @item bnuttall
23139 @item bhann
23140 @item sine
23141 @item nuttall
23142 @item lanczos
23143 @item gauss
23144 @item tukey
23145 @item dolph
23146 @item cauchy
23147 @item parzen
23148 @item poisson
23149 @item bohman
23150 @end table
23151 Default is @code{hanning}.
23152
23153 @item overlap
23154 Set window overlap. In range @code{[0, 1]}. Default is @code{1},
23155 which means optimal overlap for selected window function will be picked.
23156
23157 @item averaging
23158 Set time averaging. Setting this to 0 will display current maximal peaks.
23159 Default is @code{1}, which means time averaging is disabled.
23160
23161 @item colors
23162 Specify list of colors separated by space or by '|' which will be used to
23163 draw channel frequencies. Unrecognized or missing colors will be replaced
23164 by white color.
23165
23166 @item cmode
23167 Set channel display mode.
23168
23169 It accepts the following values:
23170 @table @samp
23171 @item combined
23172 @item separate
23173 @end table
23174 Default is @code{combined}.
23175
23176 @item minamp
23177 Set minimum amplitude used in @code{log} amplitude scaler.
23178
23179 @end table
23180
23181 @section showspatial
23182
23183 Convert stereo input audio to a video output, representing the spatial relationship
23184 between two channels.
23185
23186 The filter accepts the following options:
23187
23188 @table @option
23189 @item size, s
23190 Specify the video size for the output. For the syntax of this option, check the
23191 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
23192 Default value is @code{512x512}.
23193
23194 @item win_size
23195 Set window size. Allowed range is from @var{1024} to @var{65536}. Default size is @var{4096}.
23196
23197 @item win_func
23198 Set window function.
23199
23200 It accepts the following values:
23201 @table @samp
23202 @item rect
23203 @item bartlett
23204 @item hann
23205 @item hanning
23206 @item hamming
23207 @item blackman
23208 @item welch
23209 @item flattop
23210 @item bharris
23211 @item bnuttall
23212 @item bhann
23213 @item sine
23214 @item nuttall
23215 @item lanczos
23216 @item gauss
23217 @item tukey
23218 @item dolph
23219 @item cauchy
23220 @item parzen
23221 @item poisson
23222 @item bohman
23223 @end table
23224
23225 Default value is @code{hann}.
23226
23227 @item overlap
23228 Set ratio of overlap window. Default value is @code{0.5}.
23229 When value is @code{1} overlap is set to recommended size for specific
23230 window function currently used.
23231 @end table
23232
23233 @anchor{showspectrum}
23234 @section showspectrum
23235
23236 Convert input audio to a video output, representing the audio frequency
23237 spectrum.
23238
23239 The filter accepts the following options:
23240
23241 @table @option
23242 @item size, s
23243 Specify the video size for the output. For the syntax of this option, check the
23244 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
23245 Default value is @code{640x512}.
23246
23247 @item slide
23248 Specify how the spectrum should slide along the window.
23249
23250 It accepts the following values:
23251 @table @samp
23252 @item replace
23253 the samples start again on the left when they reach the right
23254 @item scroll
23255 the samples scroll from right to left
23256 @item fullframe
23257 frames are only produced when the samples reach the right
23258 @item rscroll
23259 the samples scroll from left to right
23260 @end table
23261
23262 Default value is @code{replace}.
23263
23264 @item mode
23265 Specify display mode.
23266
23267 It accepts the following values:
23268 @table @samp
23269 @item combined
23270 all channels are displayed in the same row
23271 @item separate
23272 all channels are displayed in separate rows
23273 @end table
23274
23275 Default value is @samp{combined}.
23276
23277 @item color
23278 Specify display color mode.
23279
23280 It accepts the following values:
23281 @table @samp
23282 @item channel
23283 each channel is displayed in a separate color
23284 @item intensity
23285 each channel is displayed using the same color scheme
23286 @item rainbow
23287 each channel is displayed using the rainbow color scheme
23288 @item moreland
23289 each channel is displayed using the moreland color scheme
23290 @item nebulae
23291 each channel is displayed using the nebulae color scheme
23292 @item fire
23293 each channel is displayed using the fire color scheme
23294 @item fiery
23295 each channel is displayed using the fiery color scheme
23296 @item fruit
23297 each channel is displayed using the fruit color scheme
23298 @item cool
23299 each channel is displayed using the cool color scheme
23300 @item magma
23301 each channel is displayed using the magma color scheme
23302 @item green
23303 each channel is displayed using the green color scheme
23304 @item viridis
23305 each channel is displayed using the viridis color scheme
23306 @item plasma
23307 each channel is displayed using the plasma color scheme
23308 @item cividis
23309 each channel is displayed using the cividis color scheme
23310 @item terrain
23311 each channel is displayed using the terrain color scheme
23312 @end table
23313
23314 Default value is @samp{channel}.
23315
23316 @item scale
23317 Specify scale used for calculating intensity color values.
23318
23319 It accepts the following values:
23320 @table @samp
23321 @item lin
23322 linear
23323 @item sqrt
23324 square root, default
23325 @item cbrt
23326 cubic root
23327 @item log
23328 logarithmic
23329 @item 4thrt
23330 4th root
23331 @item 5thrt
23332 5th root
23333 @end table
23334
23335 Default value is @samp{sqrt}.
23336
23337 @item fscale
23338 Specify frequency scale.
23339
23340 It accepts the following values:
23341 @table @samp
23342 @item lin
23343 linear
23344 @item log
23345 logarithmic
23346 @end table
23347
23348 Default value is @samp{lin}.
23349
23350 @item saturation
23351 Set saturation modifier for displayed colors. Negative values provide
23352 alternative color scheme. @code{0} is no saturation at all.
23353 Saturation must be in [-10.0, 10.0] range.
23354 Default value is @code{1}.
23355
23356 @item win_func
23357 Set window function.
23358
23359 It accepts the following values:
23360 @table @samp
23361 @item rect
23362 @item bartlett
23363 @item hann
23364 @item hanning
23365 @item hamming
23366 @item blackman
23367 @item welch
23368 @item flattop
23369 @item bharris
23370 @item bnuttall
23371 @item bhann
23372 @item sine
23373 @item nuttall
23374 @item lanczos
23375 @item gauss
23376 @item tukey
23377 @item dolph
23378 @item cauchy
23379 @item parzen
23380 @item poisson
23381 @item bohman
23382 @end table
23383
23384 Default value is @code{hann}.
23385
23386 @item orientation
23387 Set orientation of time vs frequency axis. Can be @code{vertical} or
23388 @code{horizontal}. Default is @code{vertical}.
23389
23390 @item overlap
23391 Set ratio of overlap window. Default value is @code{0}.
23392 When value is @code{1} overlap is set to recommended size for specific
23393 window function currently used.
23394
23395 @item gain
23396 Set scale gain for calculating intensity color values.
23397 Default value is @code{1}.
23398
23399 @item data
23400 Set which data to display. Can be @code{magnitude}, default or @code{phase}.
23401
23402 @item rotation
23403 Set color rotation, must be in [-1.0, 1.0] range.
23404 Default value is @code{0}.
23405
23406 @item start
23407 Set start frequency from which to display spectrogram. Default is @code{0}.
23408
23409 @item stop
23410 Set stop frequency to which to display spectrogram. Default is @code{0}.
23411
23412 @item fps
23413 Set upper frame rate limit. Default is @code{auto}, unlimited.
23414
23415 @item legend
23416 Draw time and frequency axes and legends. Default is disabled.
23417 @end table
23418
23419 The usage is very similar to the showwaves filter; see the examples in that
23420 section.
23421
23422 @subsection Examples
23423
23424 @itemize
23425 @item
23426 Large window with logarithmic color scaling:
23427 @example
23428 showspectrum=s=1280x480:scale=log
23429 @end example
23430
23431 @item
23432 Complete example for a colored and sliding spectrum per channel using @command{ffplay}:
23433 @example
23434 ffplay -f lavfi 'amovie=input.mp3, asplit [a][out1];
23435              [a] showspectrum=mode=separate:color=intensity:slide=1:scale=cbrt [out0]'
23436 @end example
23437 @end itemize
23438
23439 @section showspectrumpic
23440
23441 Convert input audio to a single video frame, representing the audio frequency
23442 spectrum.
23443
23444 The filter accepts the following options:
23445
23446 @table @option
23447 @item size, s
23448 Specify the video size for the output. For the syntax of this option, check the
23449 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
23450 Default value is @code{4096x2048}.
23451
23452 @item mode
23453 Specify display mode.
23454
23455 It accepts the following values:
23456 @table @samp
23457 @item combined
23458 all channels are displayed in the same row
23459 @item separate
23460 all channels are displayed in separate rows
23461 @end table
23462 Default value is @samp{combined}.
23463
23464 @item color
23465 Specify display color mode.
23466
23467 It accepts the following values:
23468 @table @samp
23469 @item channel
23470 each channel is displayed in a separate color
23471 @item intensity
23472 each channel is displayed using the same color scheme
23473 @item rainbow
23474 each channel is displayed using the rainbow color scheme
23475 @item moreland
23476 each channel is displayed using the moreland color scheme
23477 @item nebulae
23478 each channel is displayed using the nebulae color scheme
23479 @item fire
23480 each channel is displayed using the fire color scheme
23481 @item fiery
23482 each channel is displayed using the fiery color scheme
23483 @item fruit
23484 each channel is displayed using the fruit color scheme
23485 @item cool
23486 each channel is displayed using the cool color scheme
23487 @item magma
23488 each channel is displayed using the magma color scheme
23489 @item green
23490 each channel is displayed using the green color scheme
23491 @item viridis
23492 each channel is displayed using the viridis color scheme
23493 @item plasma
23494 each channel is displayed using the plasma color scheme
23495 @item cividis
23496 each channel is displayed using the cividis color scheme
23497 @item terrain
23498 each channel is displayed using the terrain color scheme
23499 @end table
23500 Default value is @samp{intensity}.
23501
23502 @item scale
23503 Specify scale used for calculating intensity color values.
23504
23505 It accepts the following values:
23506 @table @samp
23507 @item lin
23508 linear
23509 @item sqrt
23510 square root, default
23511 @item cbrt
23512 cubic root
23513 @item log
23514 logarithmic
23515 @item 4thrt
23516 4th root
23517 @item 5thrt
23518 5th root
23519 @end table
23520 Default value is @samp{log}.
23521
23522 @item fscale
23523 Specify frequency scale.
23524
23525 It accepts the following values:
23526 @table @samp
23527 @item lin
23528 linear
23529 @item log
23530 logarithmic
23531 @end table
23532
23533 Default value is @samp{lin}.
23534
23535 @item saturation
23536 Set saturation modifier for displayed colors. Negative values provide
23537 alternative color scheme. @code{0} is no saturation at all.
23538 Saturation must be in [-10.0, 10.0] range.
23539 Default value is @code{1}.
23540
23541 @item win_func
23542 Set window function.
23543
23544 It accepts the following values:
23545 @table @samp
23546 @item rect
23547 @item bartlett
23548 @item hann
23549 @item hanning
23550 @item hamming
23551 @item blackman
23552 @item welch
23553 @item flattop
23554 @item bharris
23555 @item bnuttall
23556 @item bhann
23557 @item sine
23558 @item nuttall
23559 @item lanczos
23560 @item gauss
23561 @item tukey
23562 @item dolph
23563 @item cauchy
23564 @item parzen
23565 @item poisson
23566 @item bohman
23567 @end table
23568 Default value is @code{hann}.
23569
23570 @item orientation
23571 Set orientation of time vs frequency axis. Can be @code{vertical} or
23572 @code{horizontal}. Default is @code{vertical}.
23573
23574 @item gain
23575 Set scale gain for calculating intensity color values.
23576 Default value is @code{1}.
23577
23578 @item legend
23579 Draw time and frequency axes and legends. Default is enabled.
23580
23581 @item rotation
23582 Set color rotation, must be in [-1.0, 1.0] range.
23583 Default value is @code{0}.
23584
23585 @item start
23586 Set start frequency from which to display spectrogram. Default is @code{0}.
23587
23588 @item stop
23589 Set stop frequency to which to display spectrogram. Default is @code{0}.
23590 @end table
23591
23592 @subsection Examples
23593
23594 @itemize
23595 @item
23596 Extract an audio spectrogram of a whole audio track
23597 in a 1024x1024 picture using @command{ffmpeg}:
23598 @example
23599 ffmpeg -i audio.flac -lavfi showspectrumpic=s=1024x1024 spectrogram.png
23600 @end example
23601 @end itemize
23602
23603 @section showvolume
23604
23605 Convert input audio volume to a video output.
23606
23607 The filter accepts the following options:
23608
23609 @table @option
23610 @item rate, r
23611 Set video rate.
23612
23613 @item b
23614 Set border width, allowed range is [0, 5]. Default is 1.
23615
23616 @item w
23617 Set channel width, allowed range is [80, 8192]. Default is 400.
23618
23619 @item h
23620 Set channel height, allowed range is [1, 900]. Default is 20.
23621
23622 @item f
23623 Set fade, allowed range is [0, 1]. Default is 0.95.
23624
23625 @item c
23626 Set volume color expression.
23627
23628 The expression can use the following variables:
23629
23630 @table @option
23631 @item VOLUME
23632 Current max volume of channel in dB.
23633
23634 @item PEAK
23635 Current peak.
23636
23637 @item CHANNEL
23638 Current channel number, starting from 0.
23639 @end table
23640
23641 @item t
23642 If set, displays channel names. Default is enabled.
23643
23644 @item v
23645 If set, displays volume values. Default is enabled.
23646
23647 @item o
23648 Set orientation, can be horizontal: @code{h} or vertical: @code{v},
23649 default is @code{h}.
23650
23651 @item s
23652 Set step size, allowed range is [0, 5]. Default is 0, which means
23653 step is disabled.
23654
23655 @item p
23656 Set background opacity, allowed range is [0, 1]. Default is 0.
23657
23658 @item m
23659 Set metering mode, can be peak: @code{p} or rms: @code{r},
23660 default is @code{p}.
23661
23662 @item ds
23663 Set display scale, can be linear: @code{lin} or log: @code{log},
23664 default is @code{lin}.
23665
23666 @item dm
23667 In second.
23668 If set to > 0., display a line for the max level
23669 in the previous seconds.
23670 default is disabled: @code{0.}
23671
23672 @item dmc
23673 The color of the max line. Use when @code{dm} option is set to > 0.
23674 default is: @code{orange}
23675 @end table
23676
23677 @section showwaves
23678
23679 Convert input audio to a video output, representing the samples waves.
23680
23681 The filter accepts the following options:
23682
23683 @table @option
23684 @item size, s
23685 Specify the video size for the output. For the syntax of this option, check the
23686 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
23687 Default value is @code{600x240}.
23688
23689 @item mode
23690 Set display mode.
23691
23692 Available values are:
23693 @table @samp
23694 @item point
23695 Draw a point for each sample.
23696
23697 @item line
23698 Draw a vertical line for each sample.
23699
23700 @item p2p
23701 Draw a point for each sample and a line between them.
23702
23703 @item cline
23704 Draw a centered vertical line for each sample.
23705 @end table
23706
23707 Default value is @code{point}.
23708
23709 @item n
23710 Set the number of samples which are printed on the same column. A
23711 larger value will decrease the frame rate. Must be a positive
23712 integer. This option can be set only if the value for @var{rate}
23713 is not explicitly specified.
23714
23715 @item rate, r
23716 Set the (approximate) output frame rate. This is done by setting the
23717 option @var{n}. Default value is "25".
23718
23719 @item split_channels
23720 Set if channels should be drawn separately or overlap. Default value is 0.
23721
23722 @item colors
23723 Set colors separated by '|' which are going to be used for drawing of each channel.
23724
23725 @item scale
23726 Set amplitude scale.
23727
23728 Available values are:
23729 @table @samp
23730 @item lin
23731 Linear.
23732
23733 @item log
23734 Logarithmic.
23735
23736 @item sqrt
23737 Square root.
23738
23739 @item cbrt
23740 Cubic root.
23741 @end table
23742
23743 Default is linear.
23744
23745 @item draw
23746 Set the draw mode. This is mostly useful to set for high @var{n}.
23747
23748 Available values are:
23749 @table @samp
23750 @item scale
23751 Scale pixel values for each drawn sample.
23752
23753 @item full
23754 Draw every sample directly.
23755 @end table
23756
23757 Default value is @code{scale}.
23758 @end table
23759
23760 @subsection Examples
23761
23762 @itemize
23763 @item
23764 Output the input file audio and the corresponding video representation
23765 at the same time:
23766 @example
23767 amovie=a.mp3,asplit[out0],showwaves[out1]
23768 @end example
23769
23770 @item
23771 Create a synthetic signal and show it with showwaves, forcing a
23772 frame rate of 30 frames per second:
23773 @example
23774 aevalsrc=sin(1*2*PI*t)*sin(880*2*PI*t):cos(2*PI*200*t),asplit[out0],showwaves=r=30[out1]
23775 @end example
23776 @end itemize
23777
23778 @section showwavespic
23779
23780 Convert input audio to a single video frame, representing the samples waves.
23781
23782 The filter accepts the following options:
23783
23784 @table @option
23785 @item size, s
23786 Specify the video size for the output. For the syntax of this option, check the
23787 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
23788 Default value is @code{600x240}.
23789
23790 @item split_channels
23791 Set if channels should be drawn separately or overlap. Default value is 0.
23792
23793 @item colors
23794 Set colors separated by '|' which are going to be used for drawing of each channel.
23795
23796 @item scale
23797 Set amplitude scale.
23798
23799 Available values are:
23800 @table @samp
23801 @item lin
23802 Linear.
23803
23804 @item log
23805 Logarithmic.
23806
23807 @item sqrt
23808 Square root.
23809
23810 @item cbrt
23811 Cubic root.
23812 @end table
23813
23814 Default is linear.
23815
23816 @item draw
23817 Set the draw mode.
23818
23819 Available values are:
23820 @table @samp
23821 @item scale
23822 Scale pixel values for each drawn sample.
23823
23824 @item full
23825 Draw every sample directly.
23826 @end table
23827
23828 Default value is @code{scale}.
23829 @end table
23830
23831 @subsection Examples
23832
23833 @itemize
23834 @item
23835 Extract a channel split representation of the wave form of a whole audio track
23836 in a 1024x800 picture using @command{ffmpeg}:
23837 @example
23838 ffmpeg -i audio.flac -lavfi showwavespic=split_channels=1:s=1024x800 waveform.png
23839 @end example
23840 @end itemize
23841
23842 @section sidedata, asidedata
23843
23844 Delete frame side data, or select frames based on it.
23845
23846 This filter accepts the following options:
23847
23848 @table @option
23849 @item mode
23850 Set mode of operation of the filter.
23851
23852 Can be one of the following:
23853
23854 @table @samp
23855 @item select
23856 Select every frame with side data of @code{type}.
23857
23858 @item delete
23859 Delete side data of @code{type}. If @code{type} is not set, delete all side
23860 data in the frame.
23861
23862 @end table
23863
23864 @item type
23865 Set side data type used with all modes. Must be set for @code{select} mode. For
23866 the list of frame side data types, refer to the @code{AVFrameSideDataType} enum
23867 in @file{libavutil/frame.h}. For example, to choose
23868 @code{AV_FRAME_DATA_PANSCAN} side data, you must specify @code{PANSCAN}.
23869
23870 @end table
23871
23872 @section spectrumsynth
23873
23874 Synthesize audio from 2 input video spectrums, first input stream represents
23875 magnitude across time and second represents phase across time.
23876 The filter will transform from frequency domain as displayed in videos back
23877 to time domain as presented in audio output.
23878
23879 This filter is primarily created for reversing processed @ref{showspectrum}
23880 filter outputs, but can synthesize sound from other spectrograms too.
23881 But in such case results are going to be poor if the phase data is not
23882 available, because in such cases phase data need to be recreated, usually
23883 it's just recreated from random noise.
23884 For best results use gray only output (@code{channel} color mode in
23885 @ref{showspectrum} filter) and @code{log} scale for magnitude video and
23886 @code{lin} scale for phase video. To produce phase, for 2nd video, use
23887 @code{data} option. Inputs videos should generally use @code{fullframe}
23888 slide mode as that saves resources needed for decoding video.
23889
23890 The filter accepts the following options:
23891
23892 @table @option
23893 @item sample_rate
23894 Specify sample rate of output audio, the sample rate of audio from which
23895 spectrum was generated may differ.
23896
23897 @item channels
23898 Set number of channels represented in input video spectrums.
23899
23900 @item scale
23901 Set scale which was used when generating magnitude input spectrum.
23902 Can be @code{lin} or @code{log}. Default is @code{log}.
23903
23904 @item slide
23905 Set slide which was used when generating inputs spectrums.
23906 Can be @code{replace}, @code{scroll}, @code{fullframe} or @code{rscroll}.
23907 Default is @code{fullframe}.
23908
23909 @item win_func
23910 Set window function used for resynthesis.
23911
23912 @item overlap
23913 Set window overlap. In range @code{[0, 1]}. Default is @code{1},
23914 which means optimal overlap for selected window function will be picked.
23915
23916 @item orientation
23917 Set orientation of input videos. Can be @code{vertical} or @code{horizontal}.
23918 Default is @code{vertical}.
23919 @end table
23920
23921 @subsection Examples
23922
23923 @itemize
23924 @item
23925 First create magnitude and phase videos from audio, assuming audio is stereo with 44100 sample rate,
23926 then resynthesize videos back to audio with spectrumsynth:
23927 @example
23928 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
23929 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
23930 ffmpeg -i magnitude.nut -i phase.nut -lavfi spectrumsynth=channels=2:sample_rate=44100:win_func=hann:overlap=0.875:slide=fullframe output.flac
23931 @end example
23932 @end itemize
23933
23934 @section split, asplit
23935
23936 Split input into several identical outputs.
23937
23938 @code{asplit} works with audio input, @code{split} with video.
23939
23940 The filter accepts a single parameter which specifies the number of outputs. If
23941 unspecified, it defaults to 2.
23942
23943 @subsection Examples
23944
23945 @itemize
23946 @item
23947 Create two separate outputs from the same input:
23948 @example
23949 [in] split [out0][out1]
23950 @end example
23951
23952 @item
23953 To create 3 or more outputs, you need to specify the number of
23954 outputs, like in:
23955 @example
23956 [in] asplit=3 [out0][out1][out2]
23957 @end example
23958
23959 @item
23960 Create two separate outputs from the same input, one cropped and
23961 one padded:
23962 @example
23963 [in] split [splitout1][splitout2];
23964 [splitout1] crop=100:100:0:0    [cropout];
23965 [splitout2] pad=200:200:100:100 [padout];
23966 @end example
23967
23968 @item
23969 Create 5 copies of the input audio with @command{ffmpeg}:
23970 @example
23971 ffmpeg -i INPUT -filter_complex asplit=5 OUTPUT
23972 @end example
23973 @end itemize
23974
23975 @section zmq, azmq
23976
23977 Receive commands sent through a libzmq client, and forward them to
23978 filters in the filtergraph.
23979
23980 @code{zmq} and @code{azmq} work as a pass-through filters. @code{zmq}
23981 must be inserted between two video filters, @code{azmq} between two
23982 audio filters. Both are capable to send messages to any filter type.
23983
23984 To enable these filters you need to install the libzmq library and
23985 headers and configure FFmpeg with @code{--enable-libzmq}.
23986
23987 For more information about libzmq see:
23988 @url{http://www.zeromq.org/}
23989
23990 The @code{zmq} and @code{azmq} filters work as a libzmq server, which
23991 receives messages sent through a network interface defined by the
23992 @option{bind_address} (or the abbreviation "@option{b}") option.
23993 Default value of this option is @file{tcp://localhost:5555}. You may
23994 want to alter this value to your needs, but do not forget to escape any
23995 ':' signs (see @ref{filtergraph escaping}).
23996
23997 The received message must be in the form:
23998 @example
23999 @var{TARGET} @var{COMMAND} [@var{ARG}]
24000 @end example
24001
24002 @var{TARGET} specifies the target of the command, usually the name of
24003 the filter class or a specific filter instance name. The default
24004 filter instance name uses the pattern @samp{Parsed_<filter_name>_<index>},
24005 but you can override this by using the @samp{filter_name@@id} syntax
24006 (see @ref{Filtergraph syntax}).
24007
24008 @var{COMMAND} specifies the name of the command for the target filter.
24009
24010 @var{ARG} is optional and specifies the optional argument list for the
24011 given @var{COMMAND}.
24012
24013 Upon reception, the message is processed and the corresponding command
24014 is injected into the filtergraph. Depending on the result, the filter
24015 will send a reply to the client, adopting the format:
24016 @example
24017 @var{ERROR_CODE} @var{ERROR_REASON}
24018 @var{MESSAGE}
24019 @end example
24020
24021 @var{MESSAGE} is optional.
24022
24023 @subsection Examples
24024
24025 Look at @file{tools/zmqsend} for an example of a zmq client which can
24026 be used to send commands processed by these filters.
24027
24028 Consider the following filtergraph generated by @command{ffplay}.
24029 In this example the last overlay filter has an instance name. All other
24030 filters will have default instance names.
24031
24032 @example
24033 ffplay -dumpgraph 1 -f lavfi "
24034 color=s=100x100:c=red  [l];
24035 color=s=100x100:c=blue [r];
24036 nullsrc=s=200x100, zmq [bg];
24037 [bg][l]   overlay     [bg+l];
24038 [bg+l][r] overlay@@my=x=100 "
24039 @end example
24040
24041 To change the color of the left side of the video, the following
24042 command can be used:
24043 @example
24044 echo Parsed_color_0 c yellow | tools/zmqsend
24045 @end example
24046
24047 To change the right side:
24048 @example
24049 echo Parsed_color_1 c pink | tools/zmqsend
24050 @end example
24051
24052 To change the position of the right side:
24053 @example
24054 echo overlay@@my x 150 | tools/zmqsend
24055 @end example
24056
24057
24058 @c man end MULTIMEDIA FILTERS
24059
24060 @chapter Multimedia Sources
24061 @c man begin MULTIMEDIA SOURCES
24062
24063 Below is a description of the currently available multimedia sources.
24064
24065 @section amovie
24066
24067 This is the same as @ref{movie} source, except it selects an audio
24068 stream by default.
24069
24070 @anchor{movie}
24071 @section movie
24072
24073 Read audio and/or video stream(s) from a movie container.
24074
24075 It accepts the following parameters:
24076
24077 @table @option
24078 @item filename
24079 The name of the resource to read (not necessarily a file; it can also be a
24080 device or a stream accessed through some protocol).
24081
24082 @item format_name, f
24083 Specifies the format assumed for the movie to read, and can be either
24084 the name of a container or an input device. If not specified, the
24085 format is guessed from @var{movie_name} or by probing.
24086
24087 @item seek_point, sp
24088 Specifies the seek point in seconds. The frames will be output
24089 starting from this seek point. The parameter is evaluated with
24090 @code{av_strtod}, so the numerical value may be suffixed by an IS
24091 postfix. The default value is "0".
24092
24093 @item streams, s
24094 Specifies the streams to read. Several streams can be specified,
24095 separated by "+". The source will then have as many outputs, in the
24096 same order. The syntax is explained in the @ref{Stream specifiers,,"Stream specifiers"
24097 section in the ffmpeg manual,ffmpeg}. Two special names, "dv" and "da" specify
24098 respectively the default (best suited) video and audio stream. Default
24099 is "dv", or "da" if the filter is called as "amovie".
24100
24101 @item stream_index, si
24102 Specifies the index of the video stream to read. If the value is -1,
24103 the most suitable video stream will be automatically selected. The default
24104 value is "-1". Deprecated. If the filter is called "amovie", it will select
24105 audio instead of video.
24106
24107 @item loop
24108 Specifies how many times to read the stream in sequence.
24109 If the value is 0, the stream will be looped infinitely.
24110 Default value is "1".
24111
24112 Note that when the movie is looped the source timestamps are not
24113 changed, so it will generate non monotonically increasing timestamps.
24114
24115 @item discontinuity
24116 Specifies the time difference between frames above which the point is
24117 considered a timestamp discontinuity which is removed by adjusting the later
24118 timestamps.
24119 @end table
24120
24121 It allows overlaying a second video on top of the main input of
24122 a filtergraph, as shown in this graph:
24123 @example
24124 input -----------> deltapts0 --> overlay --> output
24125                                     ^
24126                                     |
24127 movie --> scale--> deltapts1 -------+
24128 @end example
24129 @subsection Examples
24130
24131 @itemize
24132 @item
24133 Skip 3.2 seconds from the start of the AVI file in.avi, and overlay it
24134 on top of the input labelled "in":
24135 @example
24136 movie=in.avi:seek_point=3.2, scale=180:-1, setpts=PTS-STARTPTS [over];
24137 [in] setpts=PTS-STARTPTS [main];
24138 [main][over] overlay=16:16 [out]
24139 @end example
24140
24141 @item
24142 Read from a video4linux2 device, and overlay it on top of the input
24143 labelled "in":
24144 @example
24145 movie=/dev/video0:f=video4linux2, scale=180:-1, setpts=PTS-STARTPTS [over];
24146 [in] setpts=PTS-STARTPTS [main];
24147 [main][over] overlay=16:16 [out]
24148 @end example
24149
24150 @item
24151 Read the first video stream and the audio stream with id 0x81 from
24152 dvd.vob; the video is connected to the pad named "video" and the audio is
24153 connected to the pad named "audio":
24154 @example
24155 movie=dvd.vob:s=v:0+#0x81 [video] [audio]
24156 @end example
24157 @end itemize
24158
24159 @subsection Commands
24160
24161 Both movie and amovie support the following commands:
24162 @table @option
24163 @item seek
24164 Perform seek using "av_seek_frame".
24165 The syntax is: seek @var{stream_index}|@var{timestamp}|@var{flags}
24166 @itemize
24167 @item
24168 @var{stream_index}: If stream_index is -1, a default
24169 stream is selected, and @var{timestamp} is automatically converted
24170 from AV_TIME_BASE units to the stream specific time_base.
24171 @item
24172 @var{timestamp}: Timestamp in AVStream.time_base units
24173 or, if no stream is specified, in AV_TIME_BASE units.
24174 @item
24175 @var{flags}: Flags which select direction and seeking mode.
24176 @end itemize
24177
24178 @item get_duration
24179 Get movie duration in AV_TIME_BASE units.
24180
24181 @end table
24182
24183 @c man end MULTIMEDIA SOURCES