]> git.sesse.net Git - ffmpeg/blob - doc/filters.texi
avfilter/vf_atadenoise: compensate for small overall brightness loss
[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 asetnsamples
2120
2121 Set the number of samples per each output audio frame.
2122
2123 The last output packet may contain a different number of samples, as
2124 the filter will flush all the remaining samples when the input audio
2125 signals its end.
2126
2127 The filter accepts the following options:
2128
2129 @table @option
2130
2131 @item nb_out_samples, n
2132 Set the number of frames per each output audio frame. The number is
2133 intended as the number of samples @emph{per each channel}.
2134 Default value is 1024.
2135
2136 @item pad, p
2137 If set to 1, the filter will pad the last audio frame with zeroes, so
2138 that the last frame will contain the same number of samples as the
2139 previous ones. Default value is 1.
2140 @end table
2141
2142 For example, to set the number of per-frame samples to 1234 and
2143 disable padding for the last frame, use:
2144 @example
2145 asetnsamples=n=1234:p=0
2146 @end example
2147
2148 @section asetrate
2149
2150 Set the sample rate without altering the PCM data.
2151 This will result in a change of speed and pitch.
2152
2153 The filter accepts the following options:
2154
2155 @table @option
2156 @item sample_rate, r
2157 Set the output sample rate. Default is 44100 Hz.
2158 @end table
2159
2160 @section ashowinfo
2161
2162 Show a line containing various information for each input audio frame.
2163 The input audio is not modified.
2164
2165 The shown line contains a sequence of key/value pairs of the form
2166 @var{key}:@var{value}.
2167
2168 The following values are shown in the output:
2169
2170 @table @option
2171 @item n
2172 The (sequential) number of the input frame, starting from 0.
2173
2174 @item pts
2175 The presentation timestamp of the input frame, in time base units; the time base
2176 depends on the filter input pad, and is usually 1/@var{sample_rate}.
2177
2178 @item pts_time
2179 The presentation timestamp of the input frame in seconds.
2180
2181 @item pos
2182 position of the frame in the input stream, -1 if this information in
2183 unavailable and/or meaningless (for example in case of synthetic audio)
2184
2185 @item fmt
2186 The sample format.
2187
2188 @item chlayout
2189 The channel layout.
2190
2191 @item rate
2192 The sample rate for the audio frame.
2193
2194 @item nb_samples
2195 The number of samples (per channel) in the frame.
2196
2197 @item checksum
2198 The Adler-32 checksum (printed in hexadecimal) of the audio data. For planar
2199 audio, the data is treated as if all the planes were concatenated.
2200
2201 @item plane_checksums
2202 A list of Adler-32 checksums for each data plane.
2203 @end table
2204
2205 @section asoftclip
2206 Apply audio soft clipping.
2207
2208 Soft clipping is a type of distortion effect where the amplitude of a signal is saturated
2209 along a smooth curve, rather than the abrupt shape of hard-clipping.
2210
2211 This filter accepts the following options:
2212
2213 @table @option
2214 @item type
2215 Set type of soft-clipping.
2216
2217 It accepts the following values:
2218 @table @option
2219 @item tanh
2220 @item atan
2221 @item cubic
2222 @item exp
2223 @item alg
2224 @item quintic
2225 @item sin
2226 @end table
2227
2228 @item param
2229 Set additional parameter which controls sigmoid function.
2230 @end table
2231
2232 @section asr
2233 Automatic Speech Recognition
2234
2235 This filter uses PocketSphinx for speech recognition. To enable
2236 compilation of this filter, you need to configure FFmpeg with
2237 @code{--enable-pocketsphinx}.
2238
2239 It accepts the following options:
2240
2241 @table @option
2242 @item rate
2243 Set sampling rate of input audio. Defaults is @code{16000}.
2244 This need to match speech models, otherwise one will get poor results.
2245
2246 @item hmm
2247 Set dictionary containing acoustic model files.
2248
2249 @item dict
2250 Set pronunciation dictionary.
2251
2252 @item lm
2253 Set language model file.
2254
2255 @item lmctl
2256 Set language model set.
2257
2258 @item lmname
2259 Set which language model to use.
2260
2261 @item logfn
2262 Set output for log messages.
2263 @end table
2264
2265 The filter exports recognized speech as the frame metadata @code{lavfi.asr.text}.
2266
2267 @anchor{astats}
2268 @section astats
2269
2270 Display time domain statistical information about the audio channels.
2271 Statistics are calculated and displayed for each audio channel and,
2272 where applicable, an overall figure is also given.
2273
2274 It accepts the following option:
2275 @table @option
2276 @item length
2277 Short window length in seconds, used for peak and trough RMS measurement.
2278 Default is @code{0.05} (50 milliseconds). Allowed range is @code{[0.01 - 10]}.
2279
2280 @item metadata
2281
2282 Set metadata injection. All the metadata keys are prefixed with @code{lavfi.astats.X},
2283 where @code{X} is channel number starting from 1 or string @code{Overall}. Default is
2284 disabled.
2285
2286 Available keys for each channel are:
2287 DC_offset
2288 Min_level
2289 Max_level
2290 Min_difference
2291 Max_difference
2292 Mean_difference
2293 RMS_difference
2294 Peak_level
2295 RMS_peak
2296 RMS_trough
2297 Crest_factor
2298 Flat_factor
2299 Peak_count
2300 Bit_depth
2301 Dynamic_range
2302 Zero_crossings
2303 Zero_crossings_rate
2304 Number_of_NaNs
2305 Number_of_Infs
2306 Number_of_denormals
2307
2308 and for Overall:
2309 DC_offset
2310 Min_level
2311 Max_level
2312 Min_difference
2313 Max_difference
2314 Mean_difference
2315 RMS_difference
2316 Peak_level
2317 RMS_level
2318 RMS_peak
2319 RMS_trough
2320 Flat_factor
2321 Peak_count
2322 Bit_depth
2323 Number_of_samples
2324 Number_of_NaNs
2325 Number_of_Infs
2326 Number_of_denormals
2327
2328 For example full key look like this @code{lavfi.astats.1.DC_offset} or
2329 this @code{lavfi.astats.Overall.Peak_count}.
2330
2331 For description what each key means read below.
2332
2333 @item reset
2334 Set number of frame after which stats are going to be recalculated.
2335 Default is disabled.
2336
2337 @item measure_perchannel
2338 Select the entries which need to be measured per channel. The metadata keys can
2339 be used as flags, default is @option{all} which measures everything.
2340 @option{none} disables all per channel measurement.
2341
2342 @item measure_overall
2343 Select the entries which need to be measured overall. The metadata keys can
2344 be used as flags, default is @option{all} which measures everything.
2345 @option{none} disables all overall measurement.
2346
2347 @end table
2348
2349 A description of each shown parameter follows:
2350
2351 @table @option
2352 @item DC offset
2353 Mean amplitude displacement from zero.
2354
2355 @item Min level
2356 Minimal sample level.
2357
2358 @item Max level
2359 Maximal sample level.
2360
2361 @item Min difference
2362 Minimal difference between two consecutive samples.
2363
2364 @item Max difference
2365 Maximal difference between two consecutive samples.
2366
2367 @item Mean difference
2368 Mean difference between two consecutive samples.
2369 The average of each difference between two consecutive samples.
2370
2371 @item RMS difference
2372 Root Mean Square difference between two consecutive samples.
2373
2374 @item Peak level dB
2375 @item RMS level dB
2376 Standard peak and RMS level measured in dBFS.
2377
2378 @item RMS peak dB
2379 @item RMS trough dB
2380 Peak and trough values for RMS level measured over a short window.
2381
2382 @item Crest factor
2383 Standard ratio of peak to RMS level (note: not in dB).
2384
2385 @item Flat factor
2386 Flatness (i.e. consecutive samples with the same value) of the signal at its peak levels
2387 (i.e. either @var{Min level} or @var{Max level}).
2388
2389 @item Peak count
2390 Number of occasions (not the number of samples) that the signal attained either
2391 @var{Min level} or @var{Max level}.
2392
2393 @item Bit depth
2394 Overall bit depth of audio. Number of bits used for each sample.
2395
2396 @item Dynamic range
2397 Measured dynamic range of audio in dB.
2398
2399 @item Zero crossings
2400 Number of points where the waveform crosses the zero level axis.
2401
2402 @item Zero crossings rate
2403 Rate of Zero crossings and number of audio samples.
2404 @end table
2405
2406 @section atempo
2407
2408 Adjust audio tempo.
2409
2410 The filter accepts exactly one parameter, the audio tempo. If not
2411 specified then the filter will assume nominal 1.0 tempo. Tempo must
2412 be in the [0.5, 100.0] range.
2413
2414 Note that tempo greater than 2 will skip some samples rather than
2415 blend them in.  If for any reason this is a concern it is always
2416 possible to daisy-chain several instances of atempo to achieve the
2417 desired product tempo.
2418
2419 @subsection Examples
2420
2421 @itemize
2422 @item
2423 Slow down audio to 80% tempo:
2424 @example
2425 atempo=0.8
2426 @end example
2427
2428 @item
2429 To speed up audio to 300% tempo:
2430 @example
2431 atempo=3
2432 @end example
2433
2434 @item
2435 To speed up audio to 300% tempo by daisy-chaining two atempo instances:
2436 @example
2437 atempo=sqrt(3),atempo=sqrt(3)
2438 @end example
2439 @end itemize
2440
2441 @subsection Commands
2442
2443 This filter supports the following commands:
2444 @table @option
2445 @item tempo
2446 Change filter tempo scale factor.
2447 Syntax for the command is : "@var{tempo}"
2448 @end table
2449
2450 @section atrim
2451
2452 Trim the input so that the output contains one continuous subpart of the input.
2453
2454 It accepts the following parameters:
2455 @table @option
2456 @item start
2457 Timestamp (in seconds) of the start of the section to keep. I.e. the audio
2458 sample with the timestamp @var{start} will be the first sample in the output.
2459
2460 @item end
2461 Specify time of the first audio sample that will be dropped, i.e. the
2462 audio sample immediately preceding the one with the timestamp @var{end} will be
2463 the last sample in the output.
2464
2465 @item start_pts
2466 Same as @var{start}, except this option sets the start timestamp in samples
2467 instead of seconds.
2468
2469 @item end_pts
2470 Same as @var{end}, except this option sets the end timestamp in samples instead
2471 of seconds.
2472
2473 @item duration
2474 The maximum duration of the output in seconds.
2475
2476 @item start_sample
2477 The number of the first sample that should be output.
2478
2479 @item end_sample
2480 The number of the first sample that should be dropped.
2481 @end table
2482
2483 @option{start}, @option{end}, and @option{duration} are expressed as time
2484 duration specifications; see
2485 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}.
2486
2487 Note that the first two sets of the start/end options and the @option{duration}
2488 option look at the frame timestamp, while the _sample options simply count the
2489 samples that pass through the filter. So start/end_pts and start/end_sample will
2490 give different results when the timestamps are wrong, inexact or do not start at
2491 zero. Also note that this filter does not modify the timestamps. If you wish
2492 to have the output timestamps start at zero, insert the asetpts filter after the
2493 atrim filter.
2494
2495 If multiple start or end options are set, this filter tries to be greedy and
2496 keep all samples that match at least one of the specified constraints. To keep
2497 only the part that matches all the constraints at once, chain multiple atrim
2498 filters.
2499
2500 The defaults are such that all the input is kept. So it is possible to set e.g.
2501 just the end values to keep everything before the specified time.
2502
2503 Examples:
2504 @itemize
2505 @item
2506 Drop everything except the second minute of input:
2507 @example
2508 ffmpeg -i INPUT -af atrim=60:120
2509 @end example
2510
2511 @item
2512 Keep only the first 1000 samples:
2513 @example
2514 ffmpeg -i INPUT -af atrim=end_sample=1000
2515 @end example
2516
2517 @end itemize
2518
2519 @section bandpass
2520
2521 Apply a two-pole Butterworth band-pass filter with central
2522 frequency @var{frequency}, and (3dB-point) band-width width.
2523 The @var{csg} option selects a constant skirt gain (peak gain = Q)
2524 instead of the default: constant 0dB peak gain.
2525 The filter roll off at 6dB per octave (20dB per decade).
2526
2527 The filter accepts the following options:
2528
2529 @table @option
2530 @item frequency, f
2531 Set the filter's central frequency. Default is @code{3000}.
2532
2533 @item csg
2534 Constant skirt gain if set to 1. Defaults to 0.
2535
2536 @item width_type, t
2537 Set method to specify band-width of filter.
2538 @table @option
2539 @item h
2540 Hz
2541 @item q
2542 Q-Factor
2543 @item o
2544 octave
2545 @item s
2546 slope
2547 @item k
2548 kHz
2549 @end table
2550
2551 @item width, w
2552 Specify the band-width of a filter in width_type units.
2553
2554 @item mix, m
2555 How much to use filtered signal in output. Default is 1.
2556 Range is between 0 and 1.
2557
2558 @item channels, c
2559 Specify which channels to filter, by default all available are filtered.
2560 @end table
2561
2562 @subsection Commands
2563
2564 This filter supports the following commands:
2565 @table @option
2566 @item frequency, f
2567 Change bandpass frequency.
2568 Syntax for the command is : "@var{frequency}"
2569
2570 @item width_type, t
2571 Change bandpass width_type.
2572 Syntax for the command is : "@var{width_type}"
2573
2574 @item width, w
2575 Change bandpass width.
2576 Syntax for the command is : "@var{width}"
2577
2578 @item mix, m
2579 Change bandpass mix.
2580 Syntax for the command is : "@var{mix}"
2581 @end table
2582
2583 @section bandreject
2584
2585 Apply a two-pole Butterworth band-reject filter with central
2586 frequency @var{frequency}, and (3dB-point) band-width @var{width}.
2587 The filter roll off at 6dB per octave (20dB per decade).
2588
2589 The filter accepts the following options:
2590
2591 @table @option
2592 @item frequency, f
2593 Set the filter's central frequency. Default is @code{3000}.
2594
2595 @item width_type, t
2596 Set method to specify band-width of filter.
2597 @table @option
2598 @item h
2599 Hz
2600 @item q
2601 Q-Factor
2602 @item o
2603 octave
2604 @item s
2605 slope
2606 @item k
2607 kHz
2608 @end table
2609
2610 @item width, w
2611 Specify the band-width of a filter in width_type units.
2612
2613 @item mix, m
2614 How much to use filtered signal in output. Default is 1.
2615 Range is between 0 and 1.
2616
2617 @item channels, c
2618 Specify which channels to filter, by default all available are filtered.
2619 @end table
2620
2621 @subsection Commands
2622
2623 This filter supports the following commands:
2624 @table @option
2625 @item frequency, f
2626 Change bandreject frequency.
2627 Syntax for the command is : "@var{frequency}"
2628
2629 @item width_type, t
2630 Change bandreject width_type.
2631 Syntax for the command is : "@var{width_type}"
2632
2633 @item width, w
2634 Change bandreject width.
2635 Syntax for the command is : "@var{width}"
2636
2637 @item mix, m
2638 Change bandreject mix.
2639 Syntax for the command is : "@var{mix}"
2640 @end table
2641
2642 @section bass, lowshelf
2643
2644 Boost or cut the bass (lower) frequencies of the audio using a two-pole
2645 shelving filter with a response similar to that of a standard
2646 hi-fi's tone-controls. This is also known as shelving equalisation (EQ).
2647
2648 The filter accepts the following options:
2649
2650 @table @option
2651 @item gain, g
2652 Give the gain at 0 Hz. Its useful range is about -20
2653 (for a large cut) to +20 (for a large boost).
2654 Beware of clipping when using a positive gain.
2655
2656 @item frequency, f
2657 Set the filter's central frequency and so can be used
2658 to extend or reduce the frequency range to be boosted or cut.
2659 The default value is @code{100} Hz.
2660
2661 @item width_type, t
2662 Set method to specify band-width of filter.
2663 @table @option
2664 @item h
2665 Hz
2666 @item q
2667 Q-Factor
2668 @item o
2669 octave
2670 @item s
2671 slope
2672 @item k
2673 kHz
2674 @end table
2675
2676 @item width, w
2677 Determine how steep is the filter's shelf transition.
2678
2679 @item mix, m
2680 How much to use filtered signal in output. Default is 1.
2681 Range is between 0 and 1.
2682
2683 @item channels, c
2684 Specify which channels to filter, by default all available are filtered.
2685 @end table
2686
2687 @subsection Commands
2688
2689 This filter supports the following commands:
2690 @table @option
2691 @item frequency, f
2692 Change bass frequency.
2693 Syntax for the command is : "@var{frequency}"
2694
2695 @item width_type, t
2696 Change bass width_type.
2697 Syntax for the command is : "@var{width_type}"
2698
2699 @item width, w
2700 Change bass width.
2701 Syntax for the command is : "@var{width}"
2702
2703 @item gain, g
2704 Change bass gain.
2705 Syntax for the command is : "@var{gain}"
2706
2707 @item mix, m
2708 Change bass mix.
2709 Syntax for the command is : "@var{mix}"
2710 @end table
2711
2712 @section biquad
2713
2714 Apply a biquad IIR filter with the given coefficients.
2715 Where @var{b0}, @var{b1}, @var{b2} and @var{a0}, @var{a1}, @var{a2}
2716 are the numerator and denominator coefficients respectively.
2717 and @var{channels}, @var{c} specify which channels to filter, by default all
2718 available are filtered.
2719
2720 @subsection Commands
2721
2722 This filter supports the following commands:
2723 @table @option
2724 @item a0
2725 @item a1
2726 @item a2
2727 @item b0
2728 @item b1
2729 @item b2
2730 Change biquad parameter.
2731 Syntax for the command is : "@var{value}"
2732
2733 @item mix, m
2734 How much to use filtered signal in output. Default is 1.
2735 Range is between 0 and 1.
2736 @end table
2737
2738 @section bs2b
2739 Bauer stereo to binaural transformation, which improves headphone listening of
2740 stereo audio records.
2741
2742 To enable compilation of this filter you need to configure FFmpeg with
2743 @code{--enable-libbs2b}.
2744
2745 It accepts the following parameters:
2746 @table @option
2747
2748 @item profile
2749 Pre-defined crossfeed level.
2750 @table @option
2751
2752 @item default
2753 Default level (fcut=700, feed=50).
2754
2755 @item cmoy
2756 Chu Moy circuit (fcut=700, feed=60).
2757
2758 @item jmeier
2759 Jan Meier circuit (fcut=650, feed=95).
2760
2761 @end table
2762
2763 @item fcut
2764 Cut frequency (in Hz).
2765
2766 @item feed
2767 Feed level (in Hz).
2768
2769 @end table
2770
2771 @section channelmap
2772
2773 Remap input channels to new locations.
2774
2775 It accepts the following parameters:
2776 @table @option
2777 @item map
2778 Map channels from input to output. The argument is a '|'-separated list of
2779 mappings, each in the @code{@var{in_channel}-@var{out_channel}} or
2780 @var{in_channel} form. @var{in_channel} can be either the name of the input
2781 channel (e.g. FL for front left) or its index in the input channel layout.
2782 @var{out_channel} is the name of the output channel or its index in the output
2783 channel layout. If @var{out_channel} is not given then it is implicitly an
2784 index, starting with zero and increasing by one for each mapping.
2785
2786 @item channel_layout
2787 The channel layout of the output stream.
2788 @end table
2789
2790 If no mapping is present, the filter will implicitly map input channels to
2791 output channels, preserving indices.
2792
2793 @subsection Examples
2794
2795 @itemize
2796 @item
2797 For example, assuming a 5.1+downmix input MOV file,
2798 @example
2799 ffmpeg -i in.mov -filter 'channelmap=map=DL-FL|DR-FR' out.wav
2800 @end example
2801 will create an output WAV file tagged as stereo from the downmix channels of
2802 the input.
2803
2804 @item
2805 To fix a 5.1 WAV improperly encoded in AAC's native channel order
2806 @example
2807 ffmpeg -i in.wav -filter 'channelmap=1|2|0|5|3|4:5.1' out.wav
2808 @end example
2809 @end itemize
2810
2811 @section channelsplit
2812
2813 Split each channel from an input audio stream into a separate output stream.
2814
2815 It accepts the following parameters:
2816 @table @option
2817 @item channel_layout
2818 The channel layout of the input stream. The default is "stereo".
2819 @item channels
2820 A channel layout describing the channels to be extracted as separate output streams
2821 or "all" to extract each input channel as a separate stream. The default is "all".
2822
2823 Choosing channels not present in channel layout in the input will result in an error.
2824 @end table
2825
2826 @subsection Examples
2827
2828 @itemize
2829 @item
2830 For example, assuming a stereo input MP3 file,
2831 @example
2832 ffmpeg -i in.mp3 -filter_complex channelsplit out.mkv
2833 @end example
2834 will create an output Matroska file with two audio streams, one containing only
2835 the left channel and the other the right channel.
2836
2837 @item
2838 Split a 5.1 WAV file into per-channel files:
2839 @example
2840 ffmpeg -i in.wav -filter_complex
2841 'channelsplit=channel_layout=5.1[FL][FR][FC][LFE][SL][SR]'
2842 -map '[FL]' front_left.wav -map '[FR]' front_right.wav -map '[FC]'
2843 front_center.wav -map '[LFE]' lfe.wav -map '[SL]' side_left.wav -map '[SR]'
2844 side_right.wav
2845 @end example
2846
2847 @item
2848 Extract only LFE from a 5.1 WAV file:
2849 @example
2850 ffmpeg -i in.wav -filter_complex 'channelsplit=channel_layout=5.1:channels=LFE[LFE]'
2851 -map '[LFE]' lfe.wav
2852 @end example
2853 @end itemize
2854
2855 @section chorus
2856 Add a chorus effect to the audio.
2857
2858 Can make a single vocal sound like a chorus, but can also be applied to instrumentation.
2859
2860 Chorus resembles an echo effect with a short delay, but whereas with echo the delay is
2861 constant, with chorus, it is varied using using sinusoidal or triangular modulation.
2862 The modulation depth defines the range the modulated delay is played before or after
2863 the delay. Hence the delayed sound will sound slower or faster, that is the delayed
2864 sound tuned around the original one, like in a chorus where some vocals are slightly
2865 off key.
2866
2867 It accepts the following parameters:
2868 @table @option
2869 @item in_gain
2870 Set input gain. Default is 0.4.
2871
2872 @item out_gain
2873 Set output gain. Default is 0.4.
2874
2875 @item delays
2876 Set delays. A typical delay is around 40ms to 60ms.
2877
2878 @item decays
2879 Set decays.
2880
2881 @item speeds
2882 Set speeds.
2883
2884 @item depths
2885 Set depths.
2886 @end table
2887
2888 @subsection Examples
2889
2890 @itemize
2891 @item
2892 A single delay:
2893 @example
2894 chorus=0.7:0.9:55:0.4:0.25:2
2895 @end example
2896
2897 @item
2898 Two delays:
2899 @example
2900 chorus=0.6:0.9:50|60:0.4|0.32:0.25|0.4:2|1.3
2901 @end example
2902
2903 @item
2904 Fuller sounding chorus with three delays:
2905 @example
2906 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
2907 @end example
2908 @end itemize
2909
2910 @section compand
2911 Compress or expand the audio's dynamic range.
2912
2913 It accepts the following parameters:
2914
2915 @table @option
2916
2917 @item attacks
2918 @item decays
2919 A list of times in seconds for each channel over which the instantaneous level
2920 of the input signal is averaged to determine its volume. @var{attacks} refers to
2921 increase of volume and @var{decays} refers to decrease of volume. For most
2922 situations, the attack time (response to the audio getting louder) should be
2923 shorter than the decay time, because the human ear is more sensitive to sudden
2924 loud audio than sudden soft audio. A typical value for attack is 0.3 seconds and
2925 a typical value for decay is 0.8 seconds.
2926 If specified number of attacks & decays is lower than number of channels, the last
2927 set attack/decay will be used for all remaining channels.
2928
2929 @item points
2930 A list of points for the transfer function, specified in dB relative to the
2931 maximum possible signal amplitude. Each key points list must be defined using
2932 the following syntax: @code{x0/y0|x1/y1|x2/y2|....} or
2933 @code{x0/y0 x1/y1 x2/y2 ....}
2934
2935 The input values must be in strictly increasing order but the transfer function
2936 does not have to be monotonically rising. The point @code{0/0} is assumed but
2937 may be overridden (by @code{0/out-dBn}). Typical values for the transfer
2938 function are @code{-70/-70|-60/-20|1/0}.
2939
2940 @item soft-knee
2941 Set the curve radius in dB for all joints. It defaults to 0.01.
2942
2943 @item gain
2944 Set the additional gain in dB to be applied at all points on the transfer
2945 function. This allows for easy adjustment of the overall gain.
2946 It defaults to 0.
2947
2948 @item volume
2949 Set an initial volume, in dB, to be assumed for each channel when filtering
2950 starts. This permits the user to supply a nominal level initially, so that, for
2951 example, a very large gain is not applied to initial signal levels before the
2952 companding has begun to operate. A typical value for audio which is initially
2953 quiet is -90 dB. It defaults to 0.
2954
2955 @item delay
2956 Set a delay, in seconds. The input audio is analyzed immediately, but audio is
2957 delayed before being fed to the volume adjuster. Specifying a delay
2958 approximately equal to the attack/decay times allows the filter to effectively
2959 operate in predictive rather than reactive mode. It defaults to 0.
2960
2961 @end table
2962
2963 @subsection Examples
2964
2965 @itemize
2966 @item
2967 Make music with both quiet and loud passages suitable for listening to in a
2968 noisy environment:
2969 @example
2970 compand=.3|.3:1|1:-90/-60|-60/-40|-40/-30|-20/-20:6:0:-90:0.2
2971 @end example
2972
2973 Another example for audio with whisper and explosion parts:
2974 @example
2975 compand=0|0:1|1:-90/-900|-70/-70|-30/-9|0/-3:6:0:0:0
2976 @end example
2977
2978 @item
2979 A noise gate for when the noise is at a lower level than the signal:
2980 @example
2981 compand=.1|.1:.2|.2:-900/-900|-50.1/-900|-50/-50:.01:0:-90:.1
2982 @end example
2983
2984 @item
2985 Here is another noise gate, this time for when the noise is at a higher level
2986 than the signal (making it, in some ways, similar to squelch):
2987 @example
2988 compand=.1|.1:.1|.1:-45.1/-45.1|-45/-900|0/-900:.01:45:-90:.1
2989 @end example
2990
2991 @item
2992 2:1 compression starting at -6dB:
2993 @example
2994 compand=points=-80/-80|-6/-6|0/-3.8|20/3.5
2995 @end example
2996
2997 @item
2998 2:1 compression starting at -9dB:
2999 @example
3000 compand=points=-80/-80|-9/-9|0/-5.3|20/2.9
3001 @end example
3002
3003 @item
3004 2:1 compression starting at -12dB:
3005 @example
3006 compand=points=-80/-80|-12/-12|0/-6.8|20/1.9
3007 @end example
3008
3009 @item
3010 2:1 compression starting at -18dB:
3011 @example
3012 compand=points=-80/-80|-18/-18|0/-9.8|20/0.7
3013 @end example
3014
3015 @item
3016 3:1 compression starting at -15dB:
3017 @example
3018 compand=points=-80/-80|-15/-15|0/-10.8|20/-5.2
3019 @end example
3020
3021 @item
3022 Compressor/Gate:
3023 @example
3024 compand=points=-80/-105|-62/-80|-15.4/-15.4|0/-12|20/-7.6
3025 @end example
3026
3027 @item
3028 Expander:
3029 @example
3030 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
3031 @end example
3032
3033 @item
3034 Hard limiter at -6dB:
3035 @example
3036 compand=attacks=0:points=-80/-80|-6/-6|20/-6
3037 @end example
3038
3039 @item
3040 Hard limiter at -12dB:
3041 @example
3042 compand=attacks=0:points=-80/-80|-12/-12|20/-12
3043 @end example
3044
3045 @item
3046 Hard noise gate at -35 dB:
3047 @example
3048 compand=attacks=0:points=-80/-115|-35.1/-80|-35/-35|20/20
3049 @end example
3050
3051 @item
3052 Soft limiter:
3053 @example
3054 compand=attacks=0:points=-80/-80|-12.4/-12.4|-6/-8|0/-6.8|20/-2.8
3055 @end example
3056 @end itemize
3057
3058 @section compensationdelay
3059
3060 Compensation Delay Line is a metric based delay to compensate differing
3061 positions of microphones or speakers.
3062
3063 For example, you have recorded guitar with two microphones placed in
3064 different locations. Because the front of sound wave has fixed speed in
3065 normal conditions, the phasing of microphones can vary and depends on
3066 their location and interposition. The best sound mix can be achieved when
3067 these microphones are in phase (synchronized). Note that a distance of
3068 ~30 cm between microphones makes one microphone capture the signal in
3069 antiphase to the other microphone. That makes the final mix sound moody.
3070 This filter helps to solve phasing problems by adding different delays
3071 to each microphone track and make them synchronized.
3072
3073 The best result can be reached when you take one track as base and
3074 synchronize other tracks one by one with it.
3075 Remember that synchronization/delay tolerance depends on sample rate, too.
3076 Higher sample rates will give more tolerance.
3077
3078 The filter accepts the following parameters:
3079
3080 @table @option
3081 @item mm
3082 Set millimeters distance. This is compensation distance for fine tuning.
3083 Default is 0.
3084
3085 @item cm
3086 Set cm distance. This is compensation distance for tightening distance setup.
3087 Default is 0.
3088
3089 @item m
3090 Set meters distance. This is compensation distance for hard distance setup.
3091 Default is 0.
3092
3093 @item dry
3094 Set dry amount. Amount of unprocessed (dry) signal.
3095 Default is 0.
3096
3097 @item wet
3098 Set wet amount. Amount of processed (wet) signal.
3099 Default is 1.
3100
3101 @item temp
3102 Set temperature in degrees Celsius. This is the temperature of the environment.
3103 Default is 20.
3104 @end table
3105
3106 @section crossfeed
3107 Apply headphone crossfeed filter.
3108
3109 Crossfeed is the process of blending the left and right channels of stereo
3110 audio recording.
3111 It is mainly used to reduce extreme stereo separation of low frequencies.
3112
3113 The intent is to produce more speaker like sound to the listener.
3114
3115 The filter accepts the following options:
3116
3117 @table @option
3118 @item strength
3119 Set strength of crossfeed. Default is 0.2. Allowed range is from 0 to 1.
3120 This sets gain of low shelf filter for side part of stereo image.
3121 Default is -6dB. Max allowed is -30db when strength is set to 1.
3122
3123 @item range
3124 Set soundstage wideness. Default is 0.5. Allowed range is from 0 to 1.
3125 This sets cut off frequency of low shelf filter. Default is cut off near
3126 1550 Hz. With range set to 1 cut off frequency is set to 2100 Hz.
3127
3128 @item level_in
3129 Set input gain. Default is 0.9.
3130
3131 @item level_out
3132 Set output gain. Default is 1.
3133 @end table
3134
3135 @section crystalizer
3136 Simple algorithm to expand audio dynamic range.
3137
3138 The filter accepts the following options:
3139
3140 @table @option
3141 @item i
3142 Sets the intensity of effect (default: 2.0). Must be in range between 0.0
3143 (unchanged sound) to 10.0 (maximum effect).
3144
3145 @item c
3146 Enable clipping. By default is enabled.
3147 @end table
3148
3149 @section dcshift
3150 Apply a DC shift to the audio.
3151
3152 This can be useful to remove a DC offset (caused perhaps by a hardware problem
3153 in the recording chain) from the audio. The effect of a DC offset is reduced
3154 headroom and hence volume. The @ref{astats} filter can be used to determine if
3155 a signal has a DC offset.
3156
3157 @table @option
3158 @item shift
3159 Set the DC shift, allowed range is [-1, 1]. It indicates the amount to shift
3160 the audio.
3161
3162 @item limitergain
3163 Optional. It should have a value much less than 1 (e.g. 0.05 or 0.02) and is
3164 used to prevent clipping.
3165 @end table
3166
3167 @section deesser
3168
3169 Apply de-essing to the audio samples.
3170
3171 @table @option
3172 @item i
3173 Set intensity for triggering de-essing. Allowed range is from 0 to 1.
3174 Default is 0.
3175
3176 @item m
3177 Set amount of ducking on treble part of sound. Allowed range is from 0 to 1.
3178 Default is 0.5.
3179
3180 @item f
3181 How much of original frequency content to keep when de-essing. Allowed range is from 0 to 1.
3182 Default is 0.5.
3183
3184 @item s
3185 Set the output mode.
3186
3187 It accepts the following values:
3188 @table @option
3189 @item i
3190 Pass input unchanged.
3191
3192 @item o
3193 Pass ess filtered out.
3194
3195 @item e
3196 Pass only ess.
3197
3198 Default value is @var{o}.
3199 @end table
3200
3201 @end table
3202
3203 @section drmeter
3204 Measure audio dynamic range.
3205
3206 DR values of 14 and higher is found in very dynamic material. DR of 8 to 13
3207 is found in transition material. And anything less that 8 have very poor dynamics
3208 and is very compressed.
3209
3210 The filter accepts the following options:
3211
3212 @table @option
3213 @item length
3214 Set window length in seconds used to split audio into segments of equal length.
3215 Default is 3 seconds.
3216 @end table
3217
3218 @section dynaudnorm
3219 Dynamic Audio Normalizer.
3220
3221 This filter applies a certain amount of gain to the input audio in order
3222 to bring its peak magnitude to a target level (e.g. 0 dBFS). However, in
3223 contrast to more "simple" normalization algorithms, the Dynamic Audio
3224 Normalizer *dynamically* re-adjusts the gain factor to the input audio.
3225 This allows for applying extra gain to the "quiet" sections of the audio
3226 while avoiding distortions or clipping the "loud" sections. In other words:
3227 The Dynamic Audio Normalizer will "even out" the volume of quiet and loud
3228 sections, in the sense that the volume of each section is brought to the
3229 same target level. Note, however, that the Dynamic Audio Normalizer achieves
3230 this goal *without* applying "dynamic range compressing". It will retain 100%
3231 of the dynamic range *within* each section of the audio file.
3232
3233 @table @option
3234 @item framelen, f
3235 Set the frame length in milliseconds. In range from 10 to 8000 milliseconds.
3236 Default is 500 milliseconds.
3237 The Dynamic Audio Normalizer processes the input audio in small chunks,
3238 referred to as frames. This is required, because a peak magnitude has no
3239 meaning for just a single sample value. Instead, we need to determine the
3240 peak magnitude for a contiguous sequence of sample values. While a "standard"
3241 normalizer would simply use the peak magnitude of the complete file, the
3242 Dynamic Audio Normalizer determines the peak magnitude individually for each
3243 frame. The length of a frame is specified in milliseconds. By default, the
3244 Dynamic Audio Normalizer uses a frame length of 500 milliseconds, which has
3245 been found to give good results with most files.
3246 Note that the exact frame length, in number of samples, will be determined
3247 automatically, based on the sampling rate of the individual input audio file.
3248
3249 @item gausssize, g
3250 Set the Gaussian filter window size. In range from 3 to 301, must be odd
3251 number. Default is 31.
3252 Probably the most important parameter of the Dynamic Audio Normalizer is the
3253 @code{window size} of the Gaussian smoothing filter. The filter's window size
3254 is specified in frames, centered around the current frame. For the sake of
3255 simplicity, this must be an odd number. Consequently, the default value of 31
3256 takes into account the current frame, as well as the 15 preceding frames and
3257 the 15 subsequent frames. Using a larger window results in a stronger
3258 smoothing effect and thus in less gain variation, i.e. slower gain
3259 adaptation. Conversely, using a smaller window results in a weaker smoothing
3260 effect and thus in more gain variation, i.e. faster gain adaptation.
3261 In other words, the more you increase this value, the more the Dynamic Audio
3262 Normalizer will behave like a "traditional" normalization filter. On the
3263 contrary, the more you decrease this value, the more the Dynamic Audio
3264 Normalizer will behave like a dynamic range compressor.
3265
3266 @item peak, p
3267 Set the target peak value. This specifies the highest permissible magnitude
3268 level for the normalized audio input. This filter will try to approach the
3269 target peak magnitude as closely as possible, but at the same time it also
3270 makes sure that the normalized signal will never exceed the peak magnitude.
3271 A frame's maximum local gain factor is imposed directly by the target peak
3272 magnitude. The default value is 0.95 and thus leaves a headroom of 5%*.
3273 It is not recommended to go above this value.
3274
3275 @item maxgain, m
3276 Set the maximum gain factor. In range from 1.0 to 100.0. Default is 10.0.
3277 The Dynamic Audio Normalizer determines the maximum possible (local) gain
3278 factor for each input frame, i.e. the maximum gain factor that does not
3279 result in clipping or distortion. The maximum gain factor is determined by
3280 the frame's highest magnitude sample. However, the Dynamic Audio Normalizer
3281 additionally bounds the frame's maximum gain factor by a predetermined
3282 (global) maximum gain factor. This is done in order to avoid excessive gain
3283 factors in "silent" or almost silent frames. By default, the maximum gain
3284 factor is 10.0, For most inputs the default value should be sufficient and
3285 it usually is not recommended to increase this value. Though, for input
3286 with an extremely low overall volume level, it may be necessary to allow even
3287 higher gain factors. Note, however, that the Dynamic Audio Normalizer does
3288 not simply apply a "hard" threshold (i.e. cut off values above the threshold).
3289 Instead, a "sigmoid" threshold function will be applied. This way, the
3290 gain factors will smoothly approach the threshold value, but never exceed that
3291 value.
3292
3293 @item targetrms, r
3294 Set the target RMS. In range from 0.0 to 1.0. Default is 0.0 - disabled.
3295 By default, the Dynamic Audio Normalizer performs "peak" normalization.
3296 This means that the maximum local gain factor for each frame is defined
3297 (only) by the frame's highest magnitude sample. This way, the samples can
3298 be amplified as much as possible without exceeding the maximum signal
3299 level, i.e. without clipping. Optionally, however, the Dynamic Audio
3300 Normalizer can also take into account the frame's root mean square,
3301 abbreviated RMS. In electrical engineering, the RMS is commonly used to
3302 determine the power of a time-varying signal. It is therefore considered
3303 that the RMS is a better approximation of the "perceived loudness" than
3304 just looking at the signal's peak magnitude. Consequently, by adjusting all
3305 frames to a constant RMS value, a uniform "perceived loudness" can be
3306 established. If a target RMS value has been specified, a frame's local gain
3307 factor is defined as the factor that would result in exactly that RMS value.
3308 Note, however, that the maximum local gain factor is still restricted by the
3309 frame's highest magnitude sample, in order to prevent clipping.
3310
3311 @item coupling, n
3312 Enable channels coupling. By default is enabled.
3313 By default, the Dynamic Audio Normalizer will amplify all channels by the same
3314 amount. This means the same gain factor will be applied to all channels, i.e.
3315 the maximum possible gain factor is determined by the "loudest" channel.
3316 However, in some recordings, it may happen that the volume of the different
3317 channels is uneven, e.g. one channel may be "quieter" than the other one(s).
3318 In this case, this option can be used to disable the channel coupling. This way,
3319 the gain factor will be determined independently for each channel, depending
3320 only on the individual channel's highest magnitude sample. This allows for
3321 harmonizing the volume of the different channels.
3322
3323 @item correctdc, c
3324 Enable DC bias correction. By default is disabled.
3325 An audio signal (in the time domain) is a sequence of sample values.
3326 In the Dynamic Audio Normalizer these sample values are represented in the
3327 -1.0 to 1.0 range, regardless of the original input format. Normally, the
3328 audio signal, or "waveform", should be centered around the zero point.
3329 That means if we calculate the mean value of all samples in a file, or in a
3330 single frame, then the result should be 0.0 or at least very close to that
3331 value. If, however, there is a significant deviation of the mean value from
3332 0.0, in either positive or negative direction, this is referred to as a
3333 DC bias or DC offset. Since a DC bias is clearly undesirable, the Dynamic
3334 Audio Normalizer provides optional DC bias correction.
3335 With DC bias correction enabled, the Dynamic Audio Normalizer will determine
3336 the mean value, or "DC correction" offset, of each input frame and subtract
3337 that value from all of the frame's sample values which ensures those samples
3338 are centered around 0.0 again. Also, in order to avoid "gaps" at the frame
3339 boundaries, the DC correction offset values will be interpolated smoothly
3340 between neighbouring frames.
3341
3342 @item altboundary, b
3343 Enable alternative boundary mode. By default is disabled.
3344 The Dynamic Audio Normalizer takes into account a certain neighbourhood
3345 around each frame. This includes the preceding frames as well as the
3346 subsequent frames. However, for the "boundary" frames, located at the very
3347 beginning and at the very end of the audio file, not all neighbouring
3348 frames are available. In particular, for the first few frames in the audio
3349 file, the preceding frames are not known. And, similarly, for the last few
3350 frames in the audio file, the subsequent frames are not known. Thus, the
3351 question arises which gain factors should be assumed for the missing frames
3352 in the "boundary" region. The Dynamic Audio Normalizer implements two modes
3353 to deal with this situation. The default boundary mode assumes a gain factor
3354 of exactly 1.0 for the missing frames, resulting in a smooth "fade in" and
3355 "fade out" at the beginning and at the end of the input, respectively.
3356
3357 @item compress, s
3358 Set the compress factor. In range from 0.0 to 30.0. Default is 0.0.
3359 By default, the Dynamic Audio Normalizer does not apply "traditional"
3360 compression. This means that signal peaks will not be pruned and thus the
3361 full dynamic range will be retained within each local neighbourhood. However,
3362 in some cases it may be desirable to combine the Dynamic Audio Normalizer's
3363 normalization algorithm with a more "traditional" compression.
3364 For this purpose, the Dynamic Audio Normalizer provides an optional compression
3365 (thresholding) function. If (and only if) the compression feature is enabled,
3366 all input frames will be processed by a soft knee thresholding function prior
3367 to the actual normalization process. Put simply, the thresholding function is
3368 going to prune all samples whose magnitude exceeds a certain threshold value.
3369 However, the Dynamic Audio Normalizer does not simply apply a fixed threshold
3370 value. Instead, the threshold value will be adjusted for each individual
3371 frame.
3372 In general, smaller parameters result in stronger compression, and vice versa.
3373 Values below 3.0 are not recommended, because audible distortion may appear.
3374 @end table
3375
3376 @section earwax
3377
3378 Make audio easier to listen to on headphones.
3379
3380 This filter adds `cues' to 44.1kHz stereo (i.e. audio CD format) audio
3381 so that when listened to on headphones the stereo image is moved from
3382 inside your head (standard for headphones) to outside and in front of
3383 the listener (standard for speakers).
3384
3385 Ported from SoX.
3386
3387 @section equalizer
3388
3389 Apply a two-pole peaking equalisation (EQ) filter. With this
3390 filter, the signal-level at and around a selected frequency can
3391 be increased or decreased, whilst (unlike bandpass and bandreject
3392 filters) that at all other frequencies is unchanged.
3393
3394 In order to produce complex equalisation curves, this filter can
3395 be given several times, each with a different central frequency.
3396
3397 The filter accepts the following options:
3398
3399 @table @option
3400 @item frequency, f
3401 Set the filter's central frequency in Hz.
3402
3403 @item width_type, t
3404 Set method to specify band-width of filter.
3405 @table @option
3406 @item h
3407 Hz
3408 @item q
3409 Q-Factor
3410 @item o
3411 octave
3412 @item s
3413 slope
3414 @item k
3415 kHz
3416 @end table
3417
3418 @item width, w
3419 Specify the band-width of a filter in width_type units.
3420
3421 @item gain, g
3422 Set the required gain or attenuation in dB.
3423 Beware of clipping when using a positive gain.
3424
3425 @item mix, m
3426 How much to use filtered signal in output. Default is 1.
3427 Range is between 0 and 1.
3428
3429 @item channels, c
3430 Specify which channels to filter, by default all available are filtered.
3431 @end table
3432
3433 @subsection Examples
3434 @itemize
3435 @item
3436 Attenuate 10 dB at 1000 Hz, with a bandwidth of 200 Hz:
3437 @example
3438 equalizer=f=1000:t=h:width=200:g=-10
3439 @end example
3440
3441 @item
3442 Apply 2 dB gain at 1000 Hz with Q 1 and attenuate 5 dB at 100 Hz with Q 2:
3443 @example
3444 equalizer=f=1000:t=q:w=1:g=2,equalizer=f=100:t=q:w=2:g=-5
3445 @end example
3446 @end itemize
3447
3448 @subsection Commands
3449
3450 This filter supports the following commands:
3451 @table @option
3452 @item frequency, f
3453 Change equalizer frequency.
3454 Syntax for the command is : "@var{frequency}"
3455
3456 @item width_type, t
3457 Change equalizer width_type.
3458 Syntax for the command is : "@var{width_type}"
3459
3460 @item width, w
3461 Change equalizer width.
3462 Syntax for the command is : "@var{width}"
3463
3464 @item gain, g
3465 Change equalizer gain.
3466 Syntax for the command is : "@var{gain}"
3467
3468 @item mix, m
3469 Change equalizer mix.
3470 Syntax for the command is : "@var{mix}"
3471 @end table
3472
3473 @section extrastereo
3474
3475 Linearly increases the difference between left and right channels which
3476 adds some sort of "live" effect to playback.
3477
3478 The filter accepts the following options:
3479
3480 @table @option
3481 @item m
3482 Sets the difference coefficient (default: 2.5). 0.0 means mono sound
3483 (average of both channels), with 1.0 sound will be unchanged, with
3484 -1.0 left and right channels will be swapped.
3485
3486 @item c
3487 Enable clipping. By default is enabled.
3488 @end table
3489
3490 @section firequalizer
3491 Apply FIR Equalization using arbitrary frequency response.
3492
3493 The filter accepts the following option:
3494
3495 @table @option
3496 @item gain
3497 Set gain curve equation (in dB). The expression can contain variables:
3498 @table @option
3499 @item f
3500 the evaluated frequency
3501 @item sr
3502 sample rate
3503 @item ch
3504 channel number, set to 0 when multichannels evaluation is disabled
3505 @item chid
3506 channel id, see libavutil/channel_layout.h, set to the first channel id when
3507 multichannels evaluation is disabled
3508 @item chs
3509 number of channels
3510 @item chlayout
3511 channel_layout, see libavutil/channel_layout.h
3512
3513 @end table
3514 and functions:
3515 @table @option
3516 @item gain_interpolate(f)
3517 interpolate gain on frequency f based on gain_entry
3518 @item cubic_interpolate(f)
3519 same as gain_interpolate, but smoother
3520 @end table
3521 This option is also available as command. Default is @code{gain_interpolate(f)}.
3522
3523 @item gain_entry
3524 Set gain entry for gain_interpolate function. The expression can
3525 contain functions:
3526 @table @option
3527 @item entry(f, g)
3528 store gain entry at frequency f with value g
3529 @end table
3530 This option is also available as command.
3531
3532 @item delay
3533 Set filter delay in seconds. Higher value means more accurate.
3534 Default is @code{0.01}.
3535
3536 @item accuracy
3537 Set filter accuracy in Hz. Lower value means more accurate.
3538 Default is @code{5}.
3539
3540 @item wfunc
3541 Set window function. Acceptable values are:
3542 @table @option
3543 @item rectangular
3544 rectangular window, useful when gain curve is already smooth
3545 @item hann
3546 hann window (default)
3547 @item hamming
3548 hamming window
3549 @item blackman
3550 blackman window
3551 @item nuttall3
3552 3-terms continuous 1st derivative nuttall window
3553 @item mnuttall3
3554 minimum 3-terms discontinuous nuttall window
3555 @item nuttall
3556 4-terms continuous 1st derivative nuttall window
3557 @item bnuttall
3558 minimum 4-terms discontinuous nuttall (blackman-nuttall) window
3559 @item bharris
3560 blackman-harris window
3561 @item tukey
3562 tukey window
3563 @end table
3564
3565 @item fixed
3566 If enabled, use fixed number of audio samples. This improves speed when
3567 filtering with large delay. Default is disabled.
3568
3569 @item multi
3570 Enable multichannels evaluation on gain. Default is disabled.
3571
3572 @item zero_phase
3573 Enable zero phase mode by subtracting timestamp to compensate delay.
3574 Default is disabled.
3575
3576 @item scale
3577 Set scale used by gain. Acceptable values are:
3578 @table @option
3579 @item linlin
3580 linear frequency, linear gain
3581 @item linlog
3582 linear frequency, logarithmic (in dB) gain (default)
3583 @item loglin
3584 logarithmic (in octave scale where 20 Hz is 0) frequency, linear gain
3585 @item loglog
3586 logarithmic frequency, logarithmic gain
3587 @end table
3588
3589 @item dumpfile
3590 Set file for dumping, suitable for gnuplot.
3591
3592 @item dumpscale
3593 Set scale for dumpfile. Acceptable values are same with scale option.
3594 Default is linlog.
3595
3596 @item fft2
3597 Enable 2-channel convolution using complex FFT. This improves speed significantly.
3598 Default is disabled.
3599
3600 @item min_phase
3601 Enable minimum phase impulse response. Default is disabled.
3602 @end table
3603
3604 @subsection Examples
3605 @itemize
3606 @item
3607 lowpass at 1000 Hz:
3608 @example
3609 firequalizer=gain='if(lt(f,1000), 0, -INF)'
3610 @end example
3611 @item
3612 lowpass at 1000 Hz with gain_entry:
3613 @example
3614 firequalizer=gain_entry='entry(1000,0); entry(1001, -INF)'
3615 @end example
3616 @item
3617 custom equalization:
3618 @example
3619 firequalizer=gain_entry='entry(100,0); entry(400, -4); entry(1000, -6); entry(2000, 0)'
3620 @end example
3621 @item
3622 higher delay with zero phase to compensate delay:
3623 @example
3624 firequalizer=delay=0.1:fixed=on:zero_phase=on
3625 @end example
3626 @item
3627 lowpass on left channel, highpass on right channel:
3628 @example
3629 firequalizer=gain='if(eq(chid,1), gain_interpolate(f), if(eq(chid,2), gain_interpolate(1e6+f), 0))'
3630 :gain_entry='entry(1000, 0); entry(1001,-INF); entry(1e6+1000,0)':multi=on
3631 @end example
3632 @end itemize
3633
3634 @section flanger
3635 Apply a flanging effect to the audio.
3636
3637 The filter accepts the following options:
3638
3639 @table @option
3640 @item delay
3641 Set base delay in milliseconds. Range from 0 to 30. Default value is 0.
3642
3643 @item depth
3644 Set added sweep delay in milliseconds. Range from 0 to 10. Default value is 2.
3645
3646 @item regen
3647 Set percentage regeneration (delayed signal feedback). Range from -95 to 95.
3648 Default value is 0.
3649
3650 @item width
3651 Set percentage of delayed signal mixed with original. Range from 0 to 100.
3652 Default value is 71.
3653
3654 @item speed
3655 Set sweeps per second (Hz). Range from 0.1 to 10. Default value is 0.5.
3656
3657 @item shape
3658 Set swept wave shape, can be @var{triangular} or @var{sinusoidal}.
3659 Default value is @var{sinusoidal}.
3660
3661 @item phase
3662 Set swept wave percentage-shift for multi channel. Range from 0 to 100.
3663 Default value is 25.
3664
3665 @item interp
3666 Set delay-line interpolation, @var{linear} or @var{quadratic}.
3667 Default is @var{linear}.
3668 @end table
3669
3670 @section haas
3671 Apply Haas effect to audio.
3672
3673 Note that this makes most sense to apply on mono signals.
3674 With this filter applied to mono signals it give some directionality and
3675 stretches its stereo image.
3676
3677 The filter accepts the following options:
3678
3679 @table @option
3680 @item level_in
3681 Set input level. By default is @var{1}, or 0dB
3682
3683 @item level_out
3684 Set output level. By default is @var{1}, or 0dB.
3685
3686 @item side_gain
3687 Set gain applied to side part of signal. By default is @var{1}.
3688
3689 @item middle_source
3690 Set kind of middle source. Can be one of the following:
3691
3692 @table @samp
3693 @item left
3694 Pick left channel.
3695
3696 @item right
3697 Pick right channel.
3698
3699 @item mid
3700 Pick middle part signal of stereo image.
3701
3702 @item side
3703 Pick side part signal of stereo image.
3704 @end table
3705
3706 @item middle_phase
3707 Change middle phase. By default is disabled.
3708
3709 @item left_delay
3710 Set left channel delay. By default is @var{2.05} milliseconds.
3711
3712 @item left_balance
3713 Set left channel balance. By default is @var{-1}.
3714
3715 @item left_gain
3716 Set left channel gain. By default is @var{1}.
3717
3718 @item left_phase
3719 Change left phase. By default is disabled.
3720
3721 @item right_delay
3722 Set right channel delay. By defaults is @var{2.12} milliseconds.
3723
3724 @item right_balance
3725 Set right channel balance. By default is @var{1}.
3726
3727 @item right_gain
3728 Set right channel gain. By default is @var{1}.
3729
3730 @item right_phase
3731 Change right phase. By default is enabled.
3732 @end table
3733
3734 @section hdcd
3735
3736 Decodes High Definition Compatible Digital (HDCD) data. A 16-bit PCM stream with
3737 embedded HDCD codes is expanded into a 20-bit PCM stream.
3738
3739 The filter supports the Peak Extend and Low-level Gain Adjustment features
3740 of HDCD, and detects the Transient Filter flag.
3741
3742 @example
3743 ffmpeg -i HDCD16.flac -af hdcd OUT24.flac
3744 @end example
3745
3746 When using the filter with wav, note the default encoding for wav is 16-bit,
3747 so the resulting 20-bit stream will be truncated back to 16-bit. Use something
3748 like @command{-acodec pcm_s24le} after the filter to get 24-bit PCM output.
3749 @example
3750 ffmpeg -i HDCD16.wav -af hdcd OUT16.wav
3751 ffmpeg -i HDCD16.wav -af hdcd -c:a pcm_s24le OUT24.wav
3752 @end example
3753
3754 The filter accepts the following options:
3755
3756 @table @option
3757 @item disable_autoconvert
3758 Disable any automatic format conversion or resampling in the filter graph.
3759
3760 @item process_stereo
3761 Process the stereo channels together. If target_gain does not match between
3762 channels, consider it invalid and use the last valid target_gain.
3763
3764 @item cdt_ms
3765 Set the code detect timer period in ms.
3766
3767 @item force_pe
3768 Always extend peaks above -3dBFS even if PE isn't signaled.
3769
3770 @item analyze_mode
3771 Replace audio with a solid tone and adjust the amplitude to signal some
3772 specific aspect of the decoding process. The output file can be loaded in
3773 an audio editor alongside the original to aid analysis.
3774
3775 @code{analyze_mode=pe:force_pe=true} can be used to see all samples above the PE level.
3776
3777 Modes are:
3778 @table @samp
3779 @item 0, off
3780 Disabled
3781 @item 1, lle
3782 Gain adjustment level at each sample
3783 @item 2, pe
3784 Samples where peak extend occurs
3785 @item 3, cdt
3786 Samples where the code detect timer is active
3787 @item 4, tgm
3788 Samples where the target gain does not match between channels
3789 @end table
3790 @end table
3791
3792 @section headphone
3793
3794 Apply head-related transfer functions (HRTFs) to create virtual
3795 loudspeakers around the user for binaural listening via headphones.
3796 The HRIRs are provided via additional streams, for each channel
3797 one stereo input stream is needed.
3798
3799 The filter accepts the following options:
3800
3801 @table @option
3802 @item map
3803 Set mapping of input streams for convolution.
3804 The argument is a '|'-separated list of channel names in order as they
3805 are given as additional stream inputs for filter.
3806 This also specify number of input streams. Number of input streams
3807 must be not less than number of channels in first stream plus one.
3808
3809 @item gain
3810 Set gain applied to audio. Value is in dB. Default is 0.
3811
3812 @item type
3813 Set processing type. Can be @var{time} or @var{freq}. @var{time} is
3814 processing audio in time domain which is slow.
3815 @var{freq} is processing audio in frequency domain which is fast.
3816 Default is @var{freq}.
3817
3818 @item lfe
3819 Set custom gain for LFE channels. Value is in dB. Default is 0.
3820
3821 @item size
3822 Set size of frame in number of samples which will be processed at once.
3823 Default value is @var{1024}. Allowed range is from 1024 to 96000.
3824
3825 @item hrir
3826 Set format of hrir stream.
3827 Default value is @var{stereo}. Alternative value is @var{multich}.
3828 If value is set to @var{stereo}, number of additional streams should
3829 be greater or equal to number of input channels in first input stream.
3830 Also each additional stream should have stereo number of channels.
3831 If value is set to @var{multich}, number of additional streams should
3832 be exactly one. Also number of input channels of additional stream
3833 should be equal or greater than twice number of channels of first input
3834 stream.
3835 @end table
3836
3837 @subsection Examples
3838
3839 @itemize
3840 @item
3841 Full example using wav files as coefficients with amovie filters for 7.1 downmix,
3842 each amovie filter use stereo file with IR coefficients as input.
3843 The files give coefficients for each position of virtual loudspeaker:
3844 @example
3845 ffmpeg -i input.wav
3846 -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"
3847 output.wav
3848 @end example
3849
3850 @item
3851 Full example using wav files as coefficients with amovie filters for 7.1 downmix,
3852 but now in @var{multich} @var{hrir} format.
3853 @example
3854 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"
3855 output.wav
3856 @end example
3857 @end itemize
3858
3859 @section highpass
3860
3861 Apply a high-pass filter with 3dB point frequency.
3862 The filter can be either single-pole, or double-pole (the default).
3863 The filter roll off at 6dB per pole per octave (20dB per pole per decade).
3864
3865 The filter accepts the following options:
3866
3867 @table @option
3868 @item frequency, f
3869 Set frequency in Hz. Default is 3000.
3870
3871 @item poles, p
3872 Set number of poles. Default is 2.
3873
3874 @item width_type, t
3875 Set method to specify band-width of filter.
3876 @table @option
3877 @item h
3878 Hz
3879 @item q
3880 Q-Factor
3881 @item o
3882 octave
3883 @item s
3884 slope
3885 @item k
3886 kHz
3887 @end table
3888
3889 @item width, w
3890 Specify the band-width of a filter in width_type units.
3891 Applies only to double-pole filter.
3892 The default is 0.707q and gives a Butterworth response.
3893
3894 @item mix, m
3895 How much to use filtered signal in output. Default is 1.
3896 Range is between 0 and 1.
3897
3898 @item channels, c
3899 Specify which channels to filter, by default all available are filtered.
3900 @end table
3901
3902 @subsection Commands
3903
3904 This filter supports the following commands:
3905 @table @option
3906 @item frequency, f
3907 Change highpass frequency.
3908 Syntax for the command is : "@var{frequency}"
3909
3910 @item width_type, t
3911 Change highpass width_type.
3912 Syntax for the command is : "@var{width_type}"
3913
3914 @item width, w
3915 Change highpass width.
3916 Syntax for the command is : "@var{width}"
3917
3918 @item mix, m
3919 Change highpass mix.
3920 Syntax for the command is : "@var{mix}"
3921 @end table
3922
3923 @section join
3924
3925 Join multiple input streams into one multi-channel stream.
3926
3927 It accepts the following parameters:
3928 @table @option
3929
3930 @item inputs
3931 The number of input streams. It defaults to 2.
3932
3933 @item channel_layout
3934 The desired output channel layout. It defaults to stereo.
3935
3936 @item map
3937 Map channels from inputs to output. The argument is a '|'-separated list of
3938 mappings, each in the @code{@var{input_idx}.@var{in_channel}-@var{out_channel}}
3939 form. @var{input_idx} is the 0-based index of the input stream. @var{in_channel}
3940 can be either the name of the input channel (e.g. FL for front left) or its
3941 index in the specified input stream. @var{out_channel} is the name of the output
3942 channel.
3943 @end table
3944
3945 The filter will attempt to guess the mappings when they are not specified
3946 explicitly. It does so by first trying to find an unused matching input channel
3947 and if that fails it picks the first unused input channel.
3948
3949 Join 3 inputs (with properly set channel layouts):
3950 @example
3951 ffmpeg -i INPUT1 -i INPUT2 -i INPUT3 -filter_complex join=inputs=3 OUTPUT
3952 @end example
3953
3954 Build a 5.1 output from 6 single-channel streams:
3955 @example
3956 ffmpeg -i fl -i fr -i fc -i sl -i sr -i lfe -filter_complex
3957 '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'
3958 out
3959 @end example
3960
3961 @section ladspa
3962
3963 Load a LADSPA (Linux Audio Developer's Simple Plugin API) plugin.
3964
3965 To enable compilation of this filter you need to configure FFmpeg with
3966 @code{--enable-ladspa}.
3967
3968 @table @option
3969 @item file, f
3970 Specifies the name of LADSPA plugin library to load. If the environment
3971 variable @env{LADSPA_PATH} is defined, the LADSPA plugin is searched in
3972 each one of the directories specified by the colon separated list in
3973 @env{LADSPA_PATH}, otherwise in the standard LADSPA paths, which are in
3974 this order: @file{HOME/.ladspa/lib/}, @file{/usr/local/lib/ladspa/},
3975 @file{/usr/lib/ladspa/}.
3976
3977 @item plugin, p
3978 Specifies the plugin within the library. Some libraries contain only
3979 one plugin, but others contain many of them. If this is not set filter
3980 will list all available plugins within the specified library.
3981
3982 @item controls, c
3983 Set the '|' separated list of controls which are zero or more floating point
3984 values that determine the behavior of the loaded plugin (for example delay,
3985 threshold or gain).
3986 Controls need to be defined using the following syntax:
3987 c0=@var{value0}|c1=@var{value1}|c2=@var{value2}|..., where
3988 @var{valuei} is the value set on the @var{i}-th control.
3989 Alternatively they can be also defined using the following syntax:
3990 @var{value0}|@var{value1}|@var{value2}|..., where
3991 @var{valuei} is the value set on the @var{i}-th control.
3992 If @option{controls} is set to @code{help}, all available controls and
3993 their valid ranges are printed.
3994
3995 @item sample_rate, s
3996 Specify the sample rate, default to 44100. Only used if plugin have
3997 zero inputs.
3998
3999 @item nb_samples, n
4000 Set the number of samples per channel per each output frame, default
4001 is 1024. Only used if plugin have zero inputs.
4002
4003 @item duration, d
4004 Set the minimum duration of the sourced audio. See
4005 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
4006 for the accepted syntax.
4007 Note that the resulting duration may be greater than the specified duration,
4008 as the generated audio is always cut at the end of a complete frame.
4009 If not specified, or the expressed duration is negative, the audio is
4010 supposed to be generated forever.
4011 Only used if plugin have zero inputs.
4012
4013 @end table
4014
4015 @subsection Examples
4016
4017 @itemize
4018 @item
4019 List all available plugins within amp (LADSPA example plugin) library:
4020 @example
4021 ladspa=file=amp
4022 @end example
4023
4024 @item
4025 List all available controls and their valid ranges for @code{vcf_notch}
4026 plugin from @code{VCF} library:
4027 @example
4028 ladspa=f=vcf:p=vcf_notch:c=help
4029 @end example
4030
4031 @item
4032 Simulate low quality audio equipment using @code{Computer Music Toolkit} (CMT)
4033 plugin library:
4034 @example
4035 ladspa=file=cmt:plugin=lofi:controls=c0=22|c1=12|c2=12
4036 @end example
4037
4038 @item
4039 Add reverberation to the audio using TAP-plugins
4040 (Tom's Audio Processing plugins):
4041 @example
4042 ladspa=file=tap_reverb:tap_reverb
4043 @end example
4044
4045 @item
4046 Generate white noise, with 0.2 amplitude:
4047 @example
4048 ladspa=file=cmt:noise_source_white:c=c0=.2
4049 @end example
4050
4051 @item
4052 Generate 20 bpm clicks using plugin @code{C* Click - Metronome} from the
4053 @code{C* Audio Plugin Suite} (CAPS) library:
4054 @example
4055 ladspa=file=caps:Click:c=c1=20'
4056 @end example
4057
4058 @item
4059 Apply @code{C* Eq10X2 - Stereo 10-band equaliser} effect:
4060 @example
4061 ladspa=caps:Eq10X2:c=c0=-48|c9=-24|c3=12|c4=2
4062 @end example
4063
4064 @item
4065 Increase volume by 20dB using fast lookahead limiter from Steve Harris
4066 @code{SWH Plugins} collection:
4067 @example
4068 ladspa=fast_lookahead_limiter_1913:fastLookaheadLimiter:20|0|2
4069 @end example
4070
4071 @item
4072 Attenuate low frequencies using Multiband EQ from Steve Harris
4073 @code{SWH Plugins} collection:
4074 @example
4075 ladspa=mbeq_1197:mbeq:-24|-24|-24|0|0|0|0|0|0|0|0|0|0|0|0
4076 @end example
4077
4078 @item
4079 Reduce stereo image using @code{Narrower} from the @code{C* Audio Plugin Suite}
4080 (CAPS) library:
4081 @example
4082 ladspa=caps:Narrower
4083 @end example
4084
4085 @item
4086 Another white noise, now using @code{C* Audio Plugin Suite} (CAPS) library:
4087 @example
4088 ladspa=caps:White:.2
4089 @end example
4090
4091 @item
4092 Some fractal noise, using @code{C* Audio Plugin Suite} (CAPS) library:
4093 @example
4094 ladspa=caps:Fractal:c=c1=1
4095 @end example
4096
4097 @item
4098 Dynamic volume normalization using @code{VLevel} plugin:
4099 @example
4100 ladspa=vlevel-ladspa:vlevel_mono
4101 @end example
4102 @end itemize
4103
4104 @subsection Commands
4105
4106 This filter supports the following commands:
4107 @table @option
4108 @item cN
4109 Modify the @var{N}-th control value.
4110
4111 If the specified value is not valid, it is ignored and prior one is kept.
4112 @end table
4113
4114 @section loudnorm
4115
4116 EBU R128 loudness normalization. Includes both dynamic and linear normalization modes.
4117 Support for both single pass (livestreams, files) and double pass (files) modes.
4118 This algorithm can target IL, LRA, and maximum true peak. To accurately detect true peaks,
4119 the audio stream will be upsampled to 192 kHz unless the normalization mode is linear.
4120 Use the @code{-ar} option or @code{aresample} filter to explicitly set an output sample rate.
4121
4122 The filter accepts the following options:
4123
4124 @table @option
4125 @item I, i
4126 Set integrated loudness target.
4127 Range is -70.0 - -5.0. Default value is -24.0.
4128
4129 @item LRA, lra
4130 Set loudness range target.
4131 Range is 1.0 - 20.0. Default value is 7.0.
4132
4133 @item TP, tp
4134 Set maximum true peak.
4135 Range is -9.0 - +0.0. Default value is -2.0.
4136
4137 @item measured_I, measured_i
4138 Measured IL of input file.
4139 Range is -99.0 - +0.0.
4140
4141 @item measured_LRA, measured_lra
4142 Measured LRA of input file.
4143 Range is  0.0 - 99.0.
4144
4145 @item measured_TP, measured_tp
4146 Measured true peak of input file.
4147 Range is  -99.0 - +99.0.
4148
4149 @item measured_thresh
4150 Measured threshold of input file.
4151 Range is -99.0 - +0.0.
4152
4153 @item offset
4154 Set offset gain. Gain is applied before the true-peak limiter.
4155 Range is  -99.0 - +99.0. Default is +0.0.
4156
4157 @item linear
4158 Normalize linearly if possible.
4159 measured_I, measured_LRA, measured_TP, and measured_thresh must also
4160 to be specified in order to use this mode.
4161 Options are true or false. Default is true.
4162
4163 @item dual_mono
4164 Treat mono input files as "dual-mono". If a mono file is intended for playback
4165 on a stereo system, its EBU R128 measurement will be perceptually incorrect.
4166 If set to @code{true}, this option will compensate for this effect.
4167 Multi-channel input files are not affected by this option.
4168 Options are true or false. Default is false.
4169
4170 @item print_format
4171 Set print format for stats. Options are summary, json, or none.
4172 Default value is none.
4173 @end table
4174
4175 @section lowpass
4176
4177 Apply a low-pass filter with 3dB point frequency.
4178 The filter can be either single-pole or double-pole (the default).
4179 The filter roll off at 6dB per pole per octave (20dB per pole per decade).
4180
4181 The filter accepts the following options:
4182
4183 @table @option
4184 @item frequency, f
4185 Set frequency in Hz. Default is 500.
4186
4187 @item poles, p
4188 Set number of poles. Default is 2.
4189
4190 @item width_type, t
4191 Set method to specify band-width of filter.
4192 @table @option
4193 @item h
4194 Hz
4195 @item q
4196 Q-Factor
4197 @item o
4198 octave
4199 @item s
4200 slope
4201 @item k
4202 kHz
4203 @end table
4204
4205 @item width, w
4206 Specify the band-width of a filter in width_type units.
4207 Applies only to double-pole filter.
4208 The default is 0.707q and gives a Butterworth response.
4209
4210 @item mix, m
4211 How much to use filtered signal in output. Default is 1.
4212 Range is between 0 and 1.
4213
4214 @item channels, c
4215 Specify which channels to filter, by default all available are filtered.
4216 @end table
4217
4218 @subsection Examples
4219 @itemize
4220 @item
4221 Lowpass only LFE channel, it LFE is not present it does nothing:
4222 @example
4223 lowpass=c=LFE
4224 @end example
4225 @end itemize
4226
4227 @subsection Commands
4228
4229 This filter supports the following commands:
4230 @table @option
4231 @item frequency, f
4232 Change lowpass frequency.
4233 Syntax for the command is : "@var{frequency}"
4234
4235 @item width_type, t
4236 Change lowpass width_type.
4237 Syntax for the command is : "@var{width_type}"
4238
4239 @item width, w
4240 Change lowpass width.
4241 Syntax for the command is : "@var{width}"
4242
4243 @item mix, m
4244 Change lowpass mix.
4245 Syntax for the command is : "@var{mix}"
4246 @end table
4247
4248 @section lv2
4249
4250 Load a LV2 (LADSPA Version 2) plugin.
4251
4252 To enable compilation of this filter you need to configure FFmpeg with
4253 @code{--enable-lv2}.
4254
4255 @table @option
4256 @item plugin, p
4257 Specifies the plugin URI. You may need to escape ':'.
4258
4259 @item controls, c
4260 Set the '|' separated list of controls which are zero or more floating point
4261 values that determine the behavior of the loaded plugin (for example delay,
4262 threshold or gain).
4263 If @option{controls} is set to @code{help}, all available controls and
4264 their valid ranges are printed.
4265
4266 @item sample_rate, s
4267 Specify the sample rate, default to 44100. Only used if plugin have
4268 zero inputs.
4269
4270 @item nb_samples, n
4271 Set the number of samples per channel per each output frame, default
4272 is 1024. Only used if plugin have zero inputs.
4273
4274 @item duration, d
4275 Set the minimum duration of the sourced audio. See
4276 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
4277 for the accepted syntax.
4278 Note that the resulting duration may be greater than the specified duration,
4279 as the generated audio is always cut at the end of a complete frame.
4280 If not specified, or the expressed duration is negative, the audio is
4281 supposed to be generated forever.
4282 Only used if plugin have zero inputs.
4283 @end table
4284
4285 @subsection Examples
4286
4287 @itemize
4288 @item
4289 Apply bass enhancer plugin from Calf:
4290 @example
4291 lv2=p=http\\\\://calf.sourceforge.net/plugins/BassEnhancer:c=amount=2
4292 @end example
4293
4294 @item
4295 Apply vinyl plugin from Calf:
4296 @example
4297 lv2=p=http\\\\://calf.sourceforge.net/plugins/Vinyl:c=drone=0.2|aging=0.5
4298 @end example
4299
4300 @item
4301 Apply bit crusher plugin from ArtyFX:
4302 @example
4303 lv2=p=http\\\\://www.openavproductions.com/artyfx#bitta:c=crush=0.3
4304 @end example
4305 @end itemize
4306
4307 @section mcompand
4308 Multiband Compress or expand the audio's dynamic range.
4309
4310 The input audio is divided into bands using 4th order Linkwitz-Riley IIRs.
4311 This is akin to the crossover of a loudspeaker, and results in flat frequency
4312 response when absent compander action.
4313
4314 It accepts the following parameters:
4315
4316 @table @option
4317 @item args
4318 This option syntax is:
4319 attack,decay,[attack,decay..] soft-knee points crossover_frequency [delay [initial_volume [gain]]] | attack,decay ...
4320 For explanation of each item refer to compand filter documentation.
4321 @end table
4322
4323 @anchor{pan}
4324 @section pan
4325
4326 Mix channels with specific gain levels. The filter accepts the output
4327 channel layout followed by a set of channels definitions.
4328
4329 This filter is also designed to efficiently remap the channels of an audio
4330 stream.
4331
4332 The filter accepts parameters of the form:
4333 "@var{l}|@var{outdef}|@var{outdef}|..."
4334
4335 @table @option
4336 @item l
4337 output channel layout or number of channels
4338
4339 @item outdef
4340 output channel specification, of the form:
4341 "@var{out_name}=[@var{gain}*]@var{in_name}[(+-)[@var{gain}*]@var{in_name}...]"
4342
4343 @item out_name
4344 output channel to define, either a channel name (FL, FR, etc.) or a channel
4345 number (c0, c1, etc.)
4346
4347 @item gain
4348 multiplicative coefficient for the channel, 1 leaving the volume unchanged
4349
4350 @item in_name
4351 input channel to use, see out_name for details; it is not possible to mix
4352 named and numbered input channels
4353 @end table
4354
4355 If the `=' in a channel specification is replaced by `<', then the gains for
4356 that specification will be renormalized so that the total is 1, thus
4357 avoiding clipping noise.
4358
4359 @subsection Mixing examples
4360
4361 For example, if you want to down-mix from stereo to mono, but with a bigger
4362 factor for the left channel:
4363 @example
4364 pan=1c|c0=0.9*c0+0.1*c1
4365 @end example
4366
4367 A customized down-mix to stereo that works automatically for 3-, 4-, 5- and
4368 7-channels surround:
4369 @example
4370 pan=stereo| FL < FL + 0.5*FC + 0.6*BL + 0.6*SL | FR < FR + 0.5*FC + 0.6*BR + 0.6*SR
4371 @end example
4372
4373 Note that @command{ffmpeg} integrates a default down-mix (and up-mix) system
4374 that should be preferred (see "-ac" option) unless you have very specific
4375 needs.
4376
4377 @subsection Remapping examples
4378
4379 The channel remapping will be effective if, and only if:
4380
4381 @itemize
4382 @item gain coefficients are zeroes or ones,
4383 @item only one input per channel output,
4384 @end itemize
4385
4386 If all these conditions are satisfied, the filter will notify the user ("Pure
4387 channel mapping detected"), and use an optimized and lossless method to do the
4388 remapping.
4389
4390 For example, if you have a 5.1 source and want a stereo audio stream by
4391 dropping the extra channels:
4392 @example
4393 pan="stereo| c0=FL | c1=FR"
4394 @end example
4395
4396 Given the same source, you can also switch front left and front right channels
4397 and keep the input channel layout:
4398 @example
4399 pan="5.1| c0=c1 | c1=c0 | c2=c2 | c3=c3 | c4=c4 | c5=c5"
4400 @end example
4401
4402 If the input is a stereo audio stream, you can mute the front left channel (and
4403 still keep the stereo channel layout) with:
4404 @example
4405 pan="stereo|c1=c1"
4406 @end example
4407
4408 Still with a stereo audio stream input, you can copy the right channel in both
4409 front left and right:
4410 @example
4411 pan="stereo| c0=FR | c1=FR"
4412 @end example
4413
4414 @section replaygain
4415
4416 ReplayGain scanner filter. This filter takes an audio stream as an input and
4417 outputs it unchanged.
4418 At end of filtering it displays @code{track_gain} and @code{track_peak}.
4419
4420 @section resample
4421
4422 Convert the audio sample format, sample rate and channel layout. It is
4423 not meant to be used directly.
4424
4425 @section rubberband
4426 Apply time-stretching and pitch-shifting with librubberband.
4427
4428 To enable compilation of this filter, you need to configure FFmpeg with
4429 @code{--enable-librubberband}.
4430
4431 The filter accepts the following options:
4432
4433 @table @option
4434 @item tempo
4435 Set tempo scale factor.
4436
4437 @item pitch
4438 Set pitch scale factor.
4439
4440 @item transients
4441 Set transients detector.
4442 Possible values are:
4443 @table @var
4444 @item crisp
4445 @item mixed
4446 @item smooth
4447 @end table
4448
4449 @item detector
4450 Set detector.
4451 Possible values are:
4452 @table @var
4453 @item compound
4454 @item percussive
4455 @item soft
4456 @end table
4457
4458 @item phase
4459 Set phase.
4460 Possible values are:
4461 @table @var
4462 @item laminar
4463 @item independent
4464 @end table
4465
4466 @item window
4467 Set processing window size.
4468 Possible values are:
4469 @table @var
4470 @item standard
4471 @item short
4472 @item long
4473 @end table
4474
4475 @item smoothing
4476 Set smoothing.
4477 Possible values are:
4478 @table @var
4479 @item off
4480 @item on
4481 @end table
4482
4483 @item formant
4484 Enable formant preservation when shift pitching.
4485 Possible values are:
4486 @table @var
4487 @item shifted
4488 @item preserved
4489 @end table
4490
4491 @item pitchq
4492 Set pitch quality.
4493 Possible values are:
4494 @table @var
4495 @item quality
4496 @item speed
4497 @item consistency
4498 @end table
4499
4500 @item channels
4501 Set channels.
4502 Possible values are:
4503 @table @var
4504 @item apart
4505 @item together
4506 @end table
4507 @end table
4508
4509 @subsection Commands
4510
4511 This filter supports the following commands:
4512 @table @option
4513 @item tempo
4514 Change filter tempo scale factor.
4515 Syntax for the command is : "@var{tempo}"
4516
4517 @item pitch
4518 Change filter pitch scale factor.
4519 Syntax for the command is : "@var{pitch}"
4520 @end table
4521
4522 @section sidechaincompress
4523
4524 This filter acts like normal compressor but has the ability to compress
4525 detected signal using second input signal.
4526 It needs two input streams and returns one output stream.
4527 First input stream will be processed depending on second stream signal.
4528 The filtered signal then can be filtered with other filters in later stages of
4529 processing. See @ref{pan} and @ref{amerge} filter.
4530
4531 The filter accepts the following options:
4532
4533 @table @option
4534 @item level_in
4535 Set input gain. Default is 1. Range is between 0.015625 and 64.
4536
4537 @item mode
4538 Set mode of compressor operation. Can be @code{upward} or @code{downward}.
4539 Default is @code{downward}.
4540
4541 @item threshold
4542 If a signal of second stream raises above this level it will affect the gain
4543 reduction of first stream.
4544 By default is 0.125. Range is between 0.00097563 and 1.
4545
4546 @item ratio
4547 Set a ratio about which the signal is reduced. 1:2 means that if the level
4548 raised 4dB above the threshold, it will be only 2dB above after the reduction.
4549 Default is 2. Range is between 1 and 20.
4550
4551 @item attack
4552 Amount of milliseconds the signal has to rise above the threshold before gain
4553 reduction starts. Default is 20. Range is between 0.01 and 2000.
4554
4555 @item release
4556 Amount of milliseconds the signal has to fall below the threshold before
4557 reduction is decreased again. Default is 250. Range is between 0.01 and 9000.
4558
4559 @item makeup
4560 Set the amount by how much signal will be amplified after processing.
4561 Default is 1. Range is from 1 to 64.
4562
4563 @item knee
4564 Curve the sharp knee around the threshold to enter gain reduction more softly.
4565 Default is 2.82843. Range is between 1 and 8.
4566
4567 @item link
4568 Choose if the @code{average} level between all channels of side-chain stream
4569 or the louder(@code{maximum}) channel of side-chain stream affects the
4570 reduction. Default is @code{average}.
4571
4572 @item detection
4573 Should the exact signal be taken in case of @code{peak} or an RMS one in case
4574 of @code{rms}. Default is @code{rms} which is mainly smoother.
4575
4576 @item level_sc
4577 Set sidechain gain. Default is 1. Range is between 0.015625 and 64.
4578
4579 @item mix
4580 How much to use compressed signal in output. Default is 1.
4581 Range is between 0 and 1.
4582 @end table
4583
4584 @subsection Examples
4585
4586 @itemize
4587 @item
4588 Full ffmpeg example taking 2 audio inputs, 1st input to be compressed
4589 depending on the signal of 2nd input and later compressed signal to be
4590 merged with 2nd input:
4591 @example
4592 ffmpeg -i main.flac -i sidechain.flac -filter_complex "[1:a]asplit=2[sc][mix];[0:a][sc]sidechaincompress[compr];[compr][mix]amerge"
4593 @end example
4594 @end itemize
4595
4596 @section sidechaingate
4597
4598 A sidechain gate acts like a normal (wideband) gate but has the ability to
4599 filter the detected signal before sending it to the gain reduction stage.
4600 Normally a gate uses the full range signal to detect a level above the
4601 threshold.
4602 For example: If you cut all lower frequencies from your sidechain signal
4603 the gate will decrease the volume of your track only if not enough highs
4604 appear. With this technique you are able to reduce the resonation of a
4605 natural drum or remove "rumbling" of muted strokes from a heavily distorted
4606 guitar.
4607 It needs two input streams and returns one output stream.
4608 First input stream will be processed depending on second stream signal.
4609
4610 The filter accepts the following options:
4611
4612 @table @option
4613 @item level_in
4614 Set input level before filtering.
4615 Default is 1. Allowed range is from 0.015625 to 64.
4616
4617 @item mode
4618 Set the mode of operation. Can be @code{upward} or @code{downward}.
4619 Default is @code{downward}. If set to @code{upward} mode, higher parts of signal
4620 will be amplified, expanding dynamic range in upward direction.
4621 Otherwise, in case of @code{downward} lower parts of signal will be reduced.
4622
4623 @item range
4624 Set the level of gain reduction when the signal is below the threshold.
4625 Default is 0.06125. Allowed range is from 0 to 1.
4626 Setting this to 0 disables reduction and then filter behaves like expander.
4627
4628 @item threshold
4629 If a signal rises above this level the gain reduction is released.
4630 Default is 0.125. Allowed range is from 0 to 1.
4631
4632 @item ratio
4633 Set a ratio about which the signal is reduced.
4634 Default is 2. Allowed range is from 1 to 9000.
4635
4636 @item attack
4637 Amount of milliseconds the signal has to rise above the threshold before gain
4638 reduction stops.
4639 Default is 20 milliseconds. Allowed range is from 0.01 to 9000.
4640
4641 @item release
4642 Amount of milliseconds the signal has to fall below the threshold before the
4643 reduction is increased again. Default is 250 milliseconds.
4644 Allowed range is from 0.01 to 9000.
4645
4646 @item makeup
4647 Set amount of amplification of signal after processing.
4648 Default is 1. Allowed range is from 1 to 64.
4649
4650 @item knee
4651 Curve the sharp knee around the threshold to enter gain reduction more softly.
4652 Default is 2.828427125. Allowed range is from 1 to 8.
4653
4654 @item detection
4655 Choose if exact signal should be taken for detection or an RMS like one.
4656 Default is rms. Can be peak or rms.
4657
4658 @item link
4659 Choose if the average level between all channels or the louder channel affects
4660 the reduction.
4661 Default is average. Can be average or maximum.
4662
4663 @item level_sc
4664 Set sidechain gain. Default is 1. Range is from 0.015625 to 64.
4665 @end table
4666
4667 @section silencedetect
4668
4669 Detect silence in an audio stream.
4670
4671 This filter logs a message when it detects that the input audio volume is less
4672 or equal to a noise tolerance value for a duration greater or equal to the
4673 minimum detected noise duration.
4674
4675 The printed times and duration are expressed in seconds.
4676
4677 The filter accepts the following options:
4678
4679 @table @option
4680 @item noise, n
4681 Set noise tolerance. Can be specified in dB (in case "dB" is appended to the
4682 specified value) or amplitude ratio. Default is -60dB, or 0.001.
4683
4684 @item duration, d
4685 Set silence duration until notification (default is 2 seconds).
4686
4687 @item mono, m
4688 Process each channel separately, instead of combined. By default is disabled.
4689 @end table
4690
4691 @subsection Examples
4692
4693 @itemize
4694 @item
4695 Detect 5 seconds of silence with -50dB noise tolerance:
4696 @example
4697 silencedetect=n=-50dB:d=5
4698 @end example
4699
4700 @item
4701 Complete example with @command{ffmpeg} to detect silence with 0.0001 noise
4702 tolerance in @file{silence.mp3}:
4703 @example
4704 ffmpeg -i silence.mp3 -af silencedetect=noise=0.0001 -f null -
4705 @end example
4706 @end itemize
4707
4708 @section silenceremove
4709
4710 Remove silence from the beginning, middle or end of the audio.
4711
4712 The filter accepts the following options:
4713
4714 @table @option
4715 @item start_periods
4716 This value is used to indicate if audio should be trimmed at beginning of
4717 the audio. A value of zero indicates no silence should be trimmed from the
4718 beginning. When specifying a non-zero value, it trims audio up until it
4719 finds non-silence. Normally, when trimming silence from beginning of audio
4720 the @var{start_periods} will be @code{1} but it can be increased to higher
4721 values to trim all audio up to specific count of non-silence periods.
4722 Default value is @code{0}.
4723
4724 @item start_duration
4725 Specify the amount of time that non-silence must be detected before it stops
4726 trimming audio. By increasing the duration, bursts of noises can be treated
4727 as silence and trimmed off. Default value is @code{0}.
4728
4729 @item start_threshold
4730 This indicates what sample value should be treated as silence. For digital
4731 audio, a value of @code{0} may be fine but for audio recorded from analog,
4732 you may wish to increase the value to account for background noise.
4733 Can be specified in dB (in case "dB" is appended to the specified value)
4734 or amplitude ratio. Default value is @code{0}.
4735
4736 @item start_silence
4737 Specify max duration of silence at beginning that will be kept after
4738 trimming. Default is 0, which is equal to trimming all samples detected
4739 as silence.
4740
4741 @item start_mode
4742 Specify mode of detection of silence end in start of multi-channel audio.
4743 Can be @var{any} or @var{all}. Default is @var{any}.
4744 With @var{any}, any sample that is detected as non-silence will cause
4745 stopped trimming of silence.
4746 With @var{all}, only if all channels are detected as non-silence will cause
4747 stopped trimming of silence.
4748
4749 @item stop_periods
4750 Set the count for trimming silence from the end of audio.
4751 To remove silence from the middle of a file, specify a @var{stop_periods}
4752 that is negative. This value is then treated as a positive value and is
4753 used to indicate the effect should restart processing as specified by
4754 @var{start_periods}, making it suitable for removing periods of silence
4755 in the middle of the audio.
4756 Default value is @code{0}.
4757
4758 @item stop_duration
4759 Specify a duration of silence that must exist before audio is not copied any
4760 more. By specifying a higher duration, silence that is wanted can be left in
4761 the audio.
4762 Default value is @code{0}.
4763
4764 @item stop_threshold
4765 This is the same as @option{start_threshold} but for trimming silence from
4766 the end of audio.
4767 Can be specified in dB (in case "dB" is appended to the specified value)
4768 or amplitude ratio. Default value is @code{0}.
4769
4770 @item stop_silence
4771 Specify max duration of silence at end that will be kept after
4772 trimming. Default is 0, which is equal to trimming all samples detected
4773 as silence.
4774
4775 @item stop_mode
4776 Specify mode of detection of silence start in end of multi-channel audio.
4777 Can be @var{any} or @var{all}. Default is @var{any}.
4778 With @var{any}, any sample that is detected as non-silence will cause
4779 stopped trimming of silence.
4780 With @var{all}, only if all channels are detected as non-silence will cause
4781 stopped trimming of silence.
4782
4783 @item detection
4784 Set how is silence detected. Can be @code{rms} or @code{peak}. Second is faster
4785 and works better with digital silence which is exactly 0.
4786 Default value is @code{rms}.
4787
4788 @item window
4789 Set duration in number of seconds used to calculate size of window in number
4790 of samples for detecting silence.
4791 Default value is @code{0.02}. Allowed range is from @code{0} to @code{10}.
4792 @end table
4793
4794 @subsection Examples
4795
4796 @itemize
4797 @item
4798 The following example shows how this filter can be used to start a recording
4799 that does not contain the delay at the start which usually occurs between
4800 pressing the record button and the start of the performance:
4801 @example
4802 silenceremove=start_periods=1:start_duration=5:start_threshold=0.02
4803 @end example
4804
4805 @item
4806 Trim all silence encountered from beginning to end where there is more than 1
4807 second of silence in audio:
4808 @example
4809 silenceremove=stop_periods=-1:stop_duration=1:stop_threshold=-90dB
4810 @end example
4811
4812 @item
4813 Trim all digital silence samples, using peak detection, from beginning to end
4814 where there is more than 0 samples of digital silence in audio and digital
4815 silence is detected in all channels at same positions in stream:
4816 @example
4817 silenceremove=window=0:detection=peak:stop_mode=all:start_mode=all:stop_periods=-1:stop_threshold=0
4818 @end example
4819 @end itemize
4820
4821 @section sofalizer
4822
4823 SOFAlizer uses head-related transfer functions (HRTFs) to create virtual
4824 loudspeakers around the user for binaural listening via headphones (audio
4825 formats up to 9 channels supported).
4826 The HRTFs are stored in SOFA files (see @url{http://www.sofacoustics.org/} for a database).
4827 SOFAlizer is developed at the Acoustics Research Institute (ARI) of the
4828 Austrian Academy of Sciences.
4829
4830 To enable compilation of this filter you need to configure FFmpeg with
4831 @code{--enable-libmysofa}.
4832
4833 The filter accepts the following options:
4834
4835 @table @option
4836 @item sofa
4837 Set the SOFA file used for rendering.
4838
4839 @item gain
4840 Set gain applied to audio. Value is in dB. Default is 0.
4841
4842 @item rotation
4843 Set rotation of virtual loudspeakers in deg. Default is 0.
4844
4845 @item elevation
4846 Set elevation of virtual speakers in deg. Default is 0.
4847
4848 @item radius
4849 Set distance in meters between loudspeakers and the listener with near-field
4850 HRTFs. Default is 1.
4851
4852 @item type
4853 Set processing type. Can be @var{time} or @var{freq}. @var{time} is
4854 processing audio in time domain which is slow.
4855 @var{freq} is processing audio in frequency domain which is fast.
4856 Default is @var{freq}.
4857
4858 @item speakers
4859 Set custom positions of virtual loudspeakers. Syntax for this option is:
4860 <CH> <AZIM> <ELEV>[|<CH> <AZIM> <ELEV>|...].
4861 Each virtual loudspeaker is described with short channel name following with
4862 azimuth and elevation in degrees.
4863 Each virtual loudspeaker description is separated by '|'.
4864 For example to override front left and front right channel positions use:
4865 'speakers=FL 45 15|FR 345 15'.
4866 Descriptions with unrecognised channel names are ignored.
4867
4868 @item lfegain
4869 Set custom gain for LFE channels. Value is in dB. Default is 0.
4870
4871 @item framesize
4872 Set custom frame size in number of samples. Default is 1024.
4873 Allowed range is from 1024 to 96000. Only used if option @samp{type}
4874 is set to @var{freq}.
4875
4876 @item normalize
4877 Should all IRs be normalized upon importing SOFA file.
4878 By default is enabled.
4879
4880 @item interpolate
4881 Should nearest IRs be interpolated with neighbor IRs if exact position
4882 does not match. By default is disabled.
4883
4884 @item minphase
4885 Minphase all IRs upon loading of SOFA file. By default is disabled.
4886
4887 @item anglestep
4888 Set neighbor search angle step. Only used if option @var{interpolate} is enabled.
4889
4890 @item radstep
4891 Set neighbor search radius step. Only used if option @var{interpolate} is enabled.
4892 @end table
4893
4894 @subsection Examples
4895
4896 @itemize
4897 @item
4898 Using ClubFritz6 sofa file:
4899 @example
4900 sofalizer=sofa=/path/to/ClubFritz6.sofa:type=freq:radius=1
4901 @end example
4902
4903 @item
4904 Using ClubFritz12 sofa file and bigger radius with small rotation:
4905 @example
4906 sofalizer=sofa=/path/to/ClubFritz12.sofa:type=freq:radius=2:rotation=5
4907 @end example
4908
4909 @item
4910 Similar as above but with custom speaker positions for front left, front right, back left and back right
4911 and also with custom gain:
4912 @example
4913 "sofalizer=sofa=/path/to/ClubFritz6.sofa:type=freq:radius=2:speakers=FL 45|FR 315|BL 135|BR 225:gain=28"
4914 @end example
4915 @end itemize
4916
4917 @section stereotools
4918
4919 This filter has some handy utilities to manage stereo signals, for converting
4920 M/S stereo recordings to L/R signal while having control over the parameters
4921 or spreading the stereo image of master track.
4922
4923 The filter accepts the following options:
4924
4925 @table @option
4926 @item level_in
4927 Set input level before filtering for both channels. Defaults is 1.
4928 Allowed range is from 0.015625 to 64.
4929
4930 @item level_out
4931 Set output level after filtering for both channels. Defaults is 1.
4932 Allowed range is from 0.015625 to 64.
4933
4934 @item balance_in
4935 Set input balance between both channels. Default is 0.
4936 Allowed range is from -1 to 1.
4937
4938 @item balance_out
4939 Set output balance between both channels. Default is 0.
4940 Allowed range is from -1 to 1.
4941
4942 @item softclip
4943 Enable softclipping. Results in analog distortion instead of harsh digital 0dB
4944 clipping. Disabled by default.
4945
4946 @item mutel
4947 Mute the left channel. Disabled by default.
4948
4949 @item muter
4950 Mute the right channel. Disabled by default.
4951
4952 @item phasel
4953 Change the phase of the left channel. Disabled by default.
4954
4955 @item phaser
4956 Change the phase of the right channel. Disabled by default.
4957
4958 @item mode
4959 Set stereo mode. Available values are:
4960
4961 @table @samp
4962 @item lr>lr
4963 Left/Right to Left/Right, this is default.
4964
4965 @item lr>ms
4966 Left/Right to Mid/Side.
4967
4968 @item ms>lr
4969 Mid/Side to Left/Right.
4970
4971 @item lr>ll
4972 Left/Right to Left/Left.
4973
4974 @item lr>rr
4975 Left/Right to Right/Right.
4976
4977 @item lr>l+r
4978 Left/Right to Left + Right.
4979
4980 @item lr>rl
4981 Left/Right to Right/Left.
4982
4983 @item ms>ll
4984 Mid/Side to Left/Left.
4985
4986 @item ms>rr
4987 Mid/Side to Right/Right.
4988 @end table
4989
4990 @item slev
4991 Set level of side signal. Default is 1.
4992 Allowed range is from 0.015625 to 64.
4993
4994 @item sbal
4995 Set balance of side signal. Default is 0.
4996 Allowed range is from -1 to 1.
4997
4998 @item mlev
4999 Set level of the middle signal. Default is 1.
5000 Allowed range is from 0.015625 to 64.
5001
5002 @item mpan
5003 Set middle signal pan. Default is 0. Allowed range is from -1 to 1.
5004
5005 @item base
5006 Set stereo base between mono and inversed channels. Default is 0.
5007 Allowed range is from -1 to 1.
5008
5009 @item delay
5010 Set delay in milliseconds how much to delay left from right channel and
5011 vice versa. Default is 0. Allowed range is from -20 to 20.
5012
5013 @item sclevel
5014 Set S/C level. Default is 1. Allowed range is from 1 to 100.
5015
5016 @item phase
5017 Set the stereo phase in degrees. Default is 0. Allowed range is from 0 to 360.
5018
5019 @item bmode_in, bmode_out
5020 Set balance mode for balance_in/balance_out option.
5021
5022 Can be one of the following:
5023
5024 @table @samp
5025 @item balance
5026 Classic balance mode. Attenuate one channel at time.
5027 Gain is raised up to 1.
5028
5029 @item amplitude
5030 Similar as classic mode above but gain is raised up to 2.
5031
5032 @item power
5033 Equal power distribution, from -6dB to +6dB range.
5034 @end table
5035 @end table
5036
5037 @subsection Examples
5038
5039 @itemize
5040 @item
5041 Apply karaoke like effect:
5042 @example
5043 stereotools=mlev=0.015625
5044 @end example
5045
5046 @item
5047 Convert M/S signal to L/R:
5048 @example
5049 "stereotools=mode=ms>lr"
5050 @end example
5051 @end itemize
5052
5053 @section stereowiden
5054
5055 This filter enhance the stereo effect by suppressing signal common to both
5056 channels and by delaying the signal of left into right and vice versa,
5057 thereby widening the stereo effect.
5058
5059 The filter accepts the following options:
5060
5061 @table @option
5062 @item delay
5063 Time in milliseconds of the delay of left signal into right and vice versa.
5064 Default is 20 milliseconds.
5065
5066 @item feedback
5067 Amount of gain in delayed signal into right and vice versa. Gives a delay
5068 effect of left signal in right output and vice versa which gives widening
5069 effect. Default is 0.3.
5070
5071 @item crossfeed
5072 Cross feed of left into right with inverted phase. This helps in suppressing
5073 the mono. If the value is 1 it will cancel all the signal common to both
5074 channels. Default is 0.3.
5075
5076 @item drymix
5077 Set level of input signal of original channel. Default is 0.8.
5078 @end table
5079
5080 @section superequalizer
5081 Apply 18 band equalizer.
5082
5083 The filter accepts the following options:
5084 @table @option
5085 @item 1b
5086 Set 65Hz band gain.
5087 @item 2b
5088 Set 92Hz band gain.
5089 @item 3b
5090 Set 131Hz band gain.
5091 @item 4b
5092 Set 185Hz band gain.
5093 @item 5b
5094 Set 262Hz band gain.
5095 @item 6b
5096 Set 370Hz band gain.
5097 @item 7b
5098 Set 523Hz band gain.
5099 @item 8b
5100 Set 740Hz band gain.
5101 @item 9b
5102 Set 1047Hz band gain.
5103 @item 10b
5104 Set 1480Hz band gain.
5105 @item 11b
5106 Set 2093Hz band gain.
5107 @item 12b
5108 Set 2960Hz band gain.
5109 @item 13b
5110 Set 4186Hz band gain.
5111 @item 14b
5112 Set 5920Hz band gain.
5113 @item 15b
5114 Set 8372Hz band gain.
5115 @item 16b
5116 Set 11840Hz band gain.
5117 @item 17b
5118 Set 16744Hz band gain.
5119 @item 18b
5120 Set 20000Hz band gain.
5121 @end table
5122
5123 @section surround
5124 Apply audio surround upmix filter.
5125
5126 This filter allows to produce multichannel output from audio stream.
5127
5128 The filter accepts the following options:
5129
5130 @table @option
5131 @item chl_out
5132 Set output channel layout. By default, this is @var{5.1}.
5133
5134 See @ref{channel layout syntax,,the Channel Layout section in the ffmpeg-utils(1) manual,ffmpeg-utils}
5135 for the required syntax.
5136
5137 @item chl_in
5138 Set input channel layout. By default, this is @var{stereo}.
5139
5140 See @ref{channel layout syntax,,the Channel Layout section in the ffmpeg-utils(1) manual,ffmpeg-utils}
5141 for the required syntax.
5142
5143 @item level_in
5144 Set input volume level. By default, this is @var{1}.
5145
5146 @item level_out
5147 Set output volume level. By default, this is @var{1}.
5148
5149 @item lfe
5150 Enable LFE channel output if output channel layout has it. By default, this is enabled.
5151
5152 @item lfe_low
5153 Set LFE low cut off frequency. By default, this is @var{128} Hz.
5154
5155 @item lfe_high
5156 Set LFE high cut off frequency. By default, this is @var{256} Hz.
5157
5158 @item lfe_mode
5159 Set LFE mode, can be @var{add} or @var{sub}. Default is @var{add}.
5160 In @var{add} mode, LFE channel is created from input audio and added to output.
5161 In @var{sub} mode, LFE channel is created from input audio and added to output but
5162 also all non-LFE output channels are subtracted with output LFE channel.
5163
5164 @item angle
5165 Set angle of stereo surround transform, Allowed range is from @var{0} to @var{360}.
5166 Default is @var{90}.
5167
5168 @item fc_in
5169 Set front center input volume. By default, this is @var{1}.
5170
5171 @item fc_out
5172 Set front center output volume. By default, this is @var{1}.
5173
5174 @item fl_in
5175 Set front left input volume. By default, this is @var{1}.
5176
5177 @item fl_out
5178 Set front left output volume. By default, this is @var{1}.
5179
5180 @item fr_in
5181 Set front right input volume. By default, this is @var{1}.
5182
5183 @item fr_out
5184 Set front right output volume. By default, this is @var{1}.
5185
5186 @item sl_in
5187 Set side left input volume. By default, this is @var{1}.
5188
5189 @item sl_out
5190 Set side left output volume. By default, this is @var{1}.
5191
5192 @item sr_in
5193 Set side right input volume. By default, this is @var{1}.
5194
5195 @item sr_out
5196 Set side right output volume. By default, this is @var{1}.
5197
5198 @item bl_in
5199 Set back left input volume. By default, this is @var{1}.
5200
5201 @item bl_out
5202 Set back left output volume. By default, this is @var{1}.
5203
5204 @item br_in
5205 Set back right input volume. By default, this is @var{1}.
5206
5207 @item br_out
5208 Set back right output volume. By default, this is @var{1}.
5209
5210 @item bc_in
5211 Set back center input volume. By default, this is @var{1}.
5212
5213 @item bc_out
5214 Set back center output volume. By default, this is @var{1}.
5215
5216 @item lfe_in
5217 Set LFE input volume. By default, this is @var{1}.
5218
5219 @item lfe_out
5220 Set LFE output volume. By default, this is @var{1}.
5221
5222 @item allx
5223 Set spread usage of stereo image across X axis for all channels.
5224
5225 @item ally
5226 Set spread usage of stereo image across Y axis for all channels.
5227
5228 @item fcx, flx, frx, blx, brx, slx, srx, bcx
5229 Set spread usage of stereo image across X axis for each channel.
5230
5231 @item fcy, fly, fry, bly, bry, sly, sry, bcy
5232 Set spread usage of stereo image across Y axis for each channel.
5233
5234 @item win_size
5235 Set window size. Allowed range is from @var{1024} to @var{65536}. Default size is @var{4096}.
5236
5237 @item win_func
5238 Set window function.
5239
5240 It accepts the following values:
5241 @table @samp
5242 @item rect
5243 @item bartlett
5244 @item hann, hanning
5245 @item hamming
5246 @item blackman
5247 @item welch
5248 @item flattop
5249 @item bharris
5250 @item bnuttall
5251 @item bhann
5252 @item sine
5253 @item nuttall
5254 @item lanczos
5255 @item gauss
5256 @item tukey
5257 @item dolph
5258 @item cauchy
5259 @item parzen
5260 @item poisson
5261 @item bohman
5262 @end table
5263 Default is @code{hann}.
5264
5265 @item overlap
5266 Set window overlap. If set to 1, the recommended overlap for selected
5267 window function will be picked. Default is @code{0.5}.
5268 @end table
5269
5270 @section treble, highshelf
5271
5272 Boost or cut treble (upper) frequencies of the audio using a two-pole
5273 shelving filter with a response similar to that of a standard
5274 hi-fi's tone-controls. This is also known as shelving equalisation (EQ).
5275
5276 The filter accepts the following options:
5277
5278 @table @option
5279 @item gain, g
5280 Give the gain at whichever is the lower of ~22 kHz and the
5281 Nyquist frequency. Its useful range is about -20 (for a large cut)
5282 to +20 (for a large boost). Beware of clipping when using a positive gain.
5283
5284 @item frequency, f
5285 Set the filter's central frequency and so can be used
5286 to extend or reduce the frequency range to be boosted or cut.
5287 The default value is @code{3000} Hz.
5288
5289 @item width_type, t
5290 Set method to specify band-width of filter.
5291 @table @option
5292 @item h
5293 Hz
5294 @item q
5295 Q-Factor
5296 @item o
5297 octave
5298 @item s
5299 slope
5300 @item k
5301 kHz
5302 @end table
5303
5304 @item width, w
5305 Determine how steep is the filter's shelf transition.
5306
5307 @item mix, m
5308 How much to use filtered signal in output. Default is 1.
5309 Range is between 0 and 1.
5310
5311 @item channels, c
5312 Specify which channels to filter, by default all available are filtered.
5313 @end table
5314
5315 @subsection Commands
5316
5317 This filter supports the following commands:
5318 @table @option
5319 @item frequency, f
5320 Change treble frequency.
5321 Syntax for the command is : "@var{frequency}"
5322
5323 @item width_type, t
5324 Change treble width_type.
5325 Syntax for the command is : "@var{width_type}"
5326
5327 @item width, w
5328 Change treble width.
5329 Syntax for the command is : "@var{width}"
5330
5331 @item gain, g
5332 Change treble gain.
5333 Syntax for the command is : "@var{gain}"
5334
5335 @item mix, m
5336 Change treble mix.
5337 Syntax for the command is : "@var{mix}"
5338 @end table
5339
5340 @section tremolo
5341
5342 Sinusoidal amplitude modulation.
5343
5344 The filter accepts the following options:
5345
5346 @table @option
5347 @item f
5348 Modulation frequency in Hertz. Modulation frequencies in the subharmonic range
5349 (20 Hz or lower) will result in a tremolo effect.
5350 This filter may also be used as a ring modulator by specifying
5351 a modulation frequency higher than 20 Hz.
5352 Range is 0.1 - 20000.0. Default value is 5.0 Hz.
5353
5354 @item d
5355 Depth of modulation as a percentage. Range is 0.0 - 1.0.
5356 Default value is 0.5.
5357 @end table
5358
5359 @section vibrato
5360
5361 Sinusoidal phase modulation.
5362
5363 The filter accepts the following options:
5364
5365 @table @option
5366 @item f
5367 Modulation frequency in Hertz.
5368 Range is 0.1 - 20000.0. Default value is 5.0 Hz.
5369
5370 @item d
5371 Depth of modulation as a percentage. Range is 0.0 - 1.0.
5372 Default value is 0.5.
5373 @end table
5374
5375 @section volume
5376
5377 Adjust the input audio volume.
5378
5379 It accepts the following parameters:
5380 @table @option
5381
5382 @item volume
5383 Set audio volume expression.
5384
5385 Output values are clipped to the maximum value.
5386
5387 The output audio volume is given by the relation:
5388 @example
5389 @var{output_volume} = @var{volume} * @var{input_volume}
5390 @end example
5391
5392 The default value for @var{volume} is "1.0".
5393
5394 @item precision
5395 This parameter represents the mathematical precision.
5396
5397 It determines which input sample formats will be allowed, which affects the
5398 precision of the volume scaling.
5399
5400 @table @option
5401 @item fixed
5402 8-bit fixed-point; this limits input sample format to U8, S16, and S32.
5403 @item float
5404 32-bit floating-point; this limits input sample format to FLT. (default)
5405 @item double
5406 64-bit floating-point; this limits input sample format to DBL.
5407 @end table
5408
5409 @item replaygain
5410 Choose the behaviour on encountering ReplayGain side data in input frames.
5411
5412 @table @option
5413 @item drop
5414 Remove ReplayGain side data, ignoring its contents (the default).
5415
5416 @item ignore
5417 Ignore ReplayGain side data, but leave it in the frame.
5418
5419 @item track
5420 Prefer the track gain, if present.
5421
5422 @item album
5423 Prefer the album gain, if present.
5424 @end table
5425
5426 @item replaygain_preamp
5427 Pre-amplification gain in dB to apply to the selected replaygain gain.
5428
5429 Default value for @var{replaygain_preamp} is 0.0.
5430
5431 @item eval
5432 Set when the volume expression is evaluated.
5433
5434 It accepts the following values:
5435 @table @samp
5436 @item once
5437 only evaluate expression once during the filter initialization, or
5438 when the @samp{volume} command is sent
5439
5440 @item frame
5441 evaluate expression for each incoming frame
5442 @end table
5443
5444 Default value is @samp{once}.
5445 @end table
5446
5447 The volume expression can contain the following parameters.
5448
5449 @table @option
5450 @item n
5451 frame number (starting at zero)
5452 @item nb_channels
5453 number of channels
5454 @item nb_consumed_samples
5455 number of samples consumed by the filter
5456 @item nb_samples
5457 number of samples in the current frame
5458 @item pos
5459 original frame position in the file
5460 @item pts
5461 frame PTS
5462 @item sample_rate
5463 sample rate
5464 @item startpts
5465 PTS at start of stream
5466 @item startt
5467 time at start of stream
5468 @item t
5469 frame time
5470 @item tb
5471 timestamp timebase
5472 @item volume
5473 last set volume value
5474 @end table
5475
5476 Note that when @option{eval} is set to @samp{once} only the
5477 @var{sample_rate} and @var{tb} variables are available, all other
5478 variables will evaluate to NAN.
5479
5480 @subsection Commands
5481
5482 This filter supports the following commands:
5483 @table @option
5484 @item volume
5485 Modify the volume expression.
5486 The command accepts the same syntax of the corresponding option.
5487
5488 If the specified expression is not valid, it is kept at its current
5489 value.
5490 @item replaygain_noclip
5491 Prevent clipping by limiting the gain applied.
5492
5493 Default value for @var{replaygain_noclip} is 1.
5494
5495 @end table
5496
5497 @subsection Examples
5498
5499 @itemize
5500 @item
5501 Halve the input audio volume:
5502 @example
5503 volume=volume=0.5
5504 volume=volume=1/2
5505 volume=volume=-6.0206dB
5506 @end example
5507
5508 In all the above example the named key for @option{volume} can be
5509 omitted, for example like in:
5510 @example
5511 volume=0.5
5512 @end example
5513
5514 @item
5515 Increase input audio power by 6 decibels using fixed-point precision:
5516 @example
5517 volume=volume=6dB:precision=fixed
5518 @end example
5519
5520 @item
5521 Fade volume after time 10 with an annihilation period of 5 seconds:
5522 @example
5523 volume='if(lt(t,10),1,max(1-(t-10)/5,0))':eval=frame
5524 @end example
5525 @end itemize
5526
5527 @section volumedetect
5528
5529 Detect the volume of the input video.
5530
5531 The filter has no parameters. The input is not modified. Statistics about
5532 the volume will be printed in the log when the input stream end is reached.
5533
5534 In particular it will show the mean volume (root mean square), maximum
5535 volume (on a per-sample basis), and the beginning of a histogram of the
5536 registered volume values (from the maximum value to a cumulated 1/1000 of
5537 the samples).
5538
5539 All volumes are in decibels relative to the maximum PCM value.
5540
5541 @subsection Examples
5542
5543 Here is an excerpt of the output:
5544 @example
5545 [Parsed_volumedetect_0 @ 0xa23120] mean_volume: -27 dB
5546 [Parsed_volumedetect_0 @ 0xa23120] max_volume: -4 dB
5547 [Parsed_volumedetect_0 @ 0xa23120] histogram_4db: 6
5548 [Parsed_volumedetect_0 @ 0xa23120] histogram_5db: 62
5549 [Parsed_volumedetect_0 @ 0xa23120] histogram_6db: 286
5550 [Parsed_volumedetect_0 @ 0xa23120] histogram_7db: 1042
5551 [Parsed_volumedetect_0 @ 0xa23120] histogram_8db: 2551
5552 [Parsed_volumedetect_0 @ 0xa23120] histogram_9db: 4609
5553 [Parsed_volumedetect_0 @ 0xa23120] histogram_10db: 8409
5554 @end example
5555
5556 It means that:
5557 @itemize
5558 @item
5559 The mean square energy is approximately -27 dB, or 10^-2.7.
5560 @item
5561 The largest sample is at -4 dB, or more precisely between -4 dB and -5 dB.
5562 @item
5563 There are 6 samples at -4 dB, 62 at -5 dB, 286 at -6 dB, etc.
5564 @end itemize
5565
5566 In other words, raising the volume by +4 dB does not cause any clipping,
5567 raising it by +5 dB causes clipping for 6 samples, etc.
5568
5569 @c man end AUDIO FILTERS
5570
5571 @chapter Audio Sources
5572 @c man begin AUDIO SOURCES
5573
5574 Below is a description of the currently available audio sources.
5575
5576 @section abuffer
5577
5578 Buffer audio frames, and make them available to the filter chain.
5579
5580 This source is mainly intended for a programmatic use, in particular
5581 through the interface defined in @file{libavfilter/asrc_abuffer.h}.
5582
5583 It accepts the following parameters:
5584 @table @option
5585
5586 @item time_base
5587 The timebase which will be used for timestamps of submitted frames. It must be
5588 either a floating-point number or in @var{numerator}/@var{denominator} form.
5589
5590 @item sample_rate
5591 The sample rate of the incoming audio buffers.
5592
5593 @item sample_fmt
5594 The sample format of the incoming audio buffers.
5595 Either a sample format name or its corresponding integer representation from
5596 the enum AVSampleFormat in @file{libavutil/samplefmt.h}
5597
5598 @item channel_layout
5599 The channel layout of the incoming audio buffers.
5600 Either a channel layout name from channel_layout_map in
5601 @file{libavutil/channel_layout.c} or its corresponding integer representation
5602 from the AV_CH_LAYOUT_* macros in @file{libavutil/channel_layout.h}
5603
5604 @item channels
5605 The number of channels of the incoming audio buffers.
5606 If both @var{channels} and @var{channel_layout} are specified, then they
5607 must be consistent.
5608
5609 @end table
5610
5611 @subsection Examples
5612
5613 @example
5614 abuffer=sample_rate=44100:sample_fmt=s16p:channel_layout=stereo
5615 @end example
5616
5617 will instruct the source to accept planar 16bit signed stereo at 44100Hz.
5618 Since the sample format with name "s16p" corresponds to the number
5619 6 and the "stereo" channel layout corresponds to the value 0x3, this is
5620 equivalent to:
5621 @example
5622 abuffer=sample_rate=44100:sample_fmt=6:channel_layout=0x3
5623 @end example
5624
5625 @section aevalsrc
5626
5627 Generate an audio signal specified by an expression.
5628
5629 This source accepts in input one or more expressions (one for each
5630 channel), which are evaluated and used to generate a corresponding
5631 audio signal.
5632
5633 This source accepts the following options:
5634
5635 @table @option
5636 @item exprs
5637 Set the '|'-separated expressions list for each separate channel. In case the
5638 @option{channel_layout} option is not specified, the selected channel layout
5639 depends on the number of provided expressions. Otherwise the last
5640 specified expression is applied to the remaining output channels.
5641
5642 @item channel_layout, c
5643 Set the channel layout. The number of channels in the specified layout
5644 must be equal to the number of specified expressions.
5645
5646 @item duration, d
5647 Set the minimum duration of the sourced audio. See
5648 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
5649 for the accepted syntax.
5650 Note that the resulting duration may be greater than the specified
5651 duration, as the generated audio is always cut at the end of a
5652 complete frame.
5653
5654 If not specified, or the expressed duration is negative, the audio is
5655 supposed to be generated forever.
5656
5657 @item nb_samples, n
5658 Set the number of samples per channel per each output frame,
5659 default to 1024.
5660
5661 @item sample_rate, s
5662 Specify the sample rate, default to 44100.
5663 @end table
5664
5665 Each expression in @var{exprs} can contain the following constants:
5666
5667 @table @option
5668 @item n
5669 number of the evaluated sample, starting from 0
5670
5671 @item t
5672 time of the evaluated sample expressed in seconds, starting from 0
5673
5674 @item s
5675 sample rate
5676
5677 @end table
5678
5679 @subsection Examples
5680
5681 @itemize
5682 @item
5683 Generate silence:
5684 @example
5685 aevalsrc=0
5686 @end example
5687
5688 @item
5689 Generate a sin signal with frequency of 440 Hz, set sample rate to
5690 8000 Hz:
5691 @example
5692 aevalsrc="sin(440*2*PI*t):s=8000"
5693 @end example
5694
5695 @item
5696 Generate a two channels signal, specify the channel layout (Front
5697 Center + Back Center) explicitly:
5698 @example
5699 aevalsrc="sin(420*2*PI*t)|cos(430*2*PI*t):c=FC|BC"
5700 @end example
5701
5702 @item
5703 Generate white noise:
5704 @example
5705 aevalsrc="-2+random(0)"
5706 @end example
5707
5708 @item
5709 Generate an amplitude modulated signal:
5710 @example
5711 aevalsrc="sin(10*2*PI*t)*sin(880*2*PI*t)"
5712 @end example
5713
5714 @item
5715 Generate 2.5 Hz binaural beats on a 360 Hz carrier:
5716 @example
5717 aevalsrc="0.1*sin(2*PI*(360-2.5/2)*t) | 0.1*sin(2*PI*(360+2.5/2)*t)"
5718 @end example
5719
5720 @end itemize
5721
5722 @section anullsrc
5723
5724 The null audio source, return unprocessed audio frames. It is mainly useful
5725 as a template and to be employed in analysis / debugging tools, or as
5726 the source for filters which ignore the input data (for example the sox
5727 synth filter).
5728
5729 This source accepts the following options:
5730
5731 @table @option
5732
5733 @item channel_layout, cl
5734
5735 Specifies the channel layout, and can be either an integer or a string
5736 representing a channel layout. The default value of @var{channel_layout}
5737 is "stereo".
5738
5739 Check the channel_layout_map definition in
5740 @file{libavutil/channel_layout.c} for the mapping between strings and
5741 channel layout values.
5742
5743 @item sample_rate, r
5744 Specifies the sample rate, and defaults to 44100.
5745
5746 @item nb_samples, n
5747 Set the number of samples per requested frames.
5748
5749 @end table
5750
5751 @subsection Examples
5752
5753 @itemize
5754 @item
5755 Set the sample rate to 48000 Hz and the channel layout to AV_CH_LAYOUT_MONO.
5756 @example
5757 anullsrc=r=48000:cl=4
5758 @end example
5759
5760 @item
5761 Do the same operation with a more obvious syntax:
5762 @example
5763 anullsrc=r=48000:cl=mono
5764 @end example
5765 @end itemize
5766
5767 All the parameters need to be explicitly defined.
5768
5769 @section flite
5770
5771 Synthesize a voice utterance using the libflite library.
5772
5773 To enable compilation of this filter you need to configure FFmpeg with
5774 @code{--enable-libflite}.
5775
5776 Note that versions of the flite library prior to 2.0 are not thread-safe.
5777
5778 The filter accepts the following options:
5779
5780 @table @option
5781
5782 @item list_voices
5783 If set to 1, list the names of the available voices and exit
5784 immediately. Default value is 0.
5785
5786 @item nb_samples, n
5787 Set the maximum number of samples per frame. Default value is 512.
5788
5789 @item textfile
5790 Set the filename containing the text to speak.
5791
5792 @item text
5793 Set the text to speak.
5794
5795 @item voice, v
5796 Set the voice to use for the speech synthesis. Default value is
5797 @code{kal}. See also the @var{list_voices} option.
5798 @end table
5799
5800 @subsection Examples
5801
5802 @itemize
5803 @item
5804 Read from file @file{speech.txt}, and synthesize the text using the
5805 standard flite voice:
5806 @example
5807 flite=textfile=speech.txt
5808 @end example
5809
5810 @item
5811 Read the specified text selecting the @code{slt} voice:
5812 @example
5813 flite=text='So fare thee well, poor devil of a Sub-Sub, whose commentator I am':voice=slt
5814 @end example
5815
5816 @item
5817 Input text to ffmpeg:
5818 @example
5819 ffmpeg -f lavfi -i flite=text='So fare thee well, poor devil of a Sub-Sub, whose commentator I am':voice=slt
5820 @end example
5821
5822 @item
5823 Make @file{ffplay} speak the specified text, using @code{flite} and
5824 the @code{lavfi} device:
5825 @example
5826 ffplay -f lavfi flite=text='No more be grieved for which that thou hast done.'
5827 @end example
5828 @end itemize
5829
5830 For more information about libflite, check:
5831 @url{http://www.festvox.org/flite/}
5832
5833 @section anoisesrc
5834
5835 Generate a noise audio signal.
5836
5837 The filter accepts the following options:
5838
5839 @table @option
5840 @item sample_rate, r
5841 Specify the sample rate. Default value is 48000 Hz.
5842
5843 @item amplitude, a
5844 Specify the amplitude (0.0 - 1.0) of the generated audio stream. Default value
5845 is 1.0.
5846
5847 @item duration, d
5848 Specify the duration of the generated audio stream. Not specifying this option
5849 results in noise with an infinite length.
5850
5851 @item color, colour, c
5852 Specify the color of noise. Available noise colors are white, pink, brown,
5853 blue and violet. Default color is white.
5854
5855 @item seed, s
5856 Specify a value used to seed the PRNG.
5857
5858 @item nb_samples, n
5859 Set the number of samples per each output frame, default is 1024.
5860 @end table
5861
5862 @subsection Examples
5863
5864 @itemize
5865
5866 @item
5867 Generate 60 seconds of pink noise, with a 44.1 kHz sampling rate and an amplitude of 0.5:
5868 @example
5869 anoisesrc=d=60:c=pink:r=44100:a=0.5
5870 @end example
5871 @end itemize
5872
5873 @section hilbert
5874
5875 Generate odd-tap Hilbert transform FIR coefficients.
5876
5877 The resulting stream can be used with @ref{afir} filter for phase-shifting
5878 the signal by 90 degrees.
5879
5880 This is used in many matrix coding schemes and for analytic signal generation.
5881 The process is often written as a multiplication by i (or j), the imaginary unit.
5882
5883 The filter accepts the following options:
5884
5885 @table @option
5886
5887 @item sample_rate, s
5888 Set sample rate, default is 44100.
5889
5890 @item taps, t
5891 Set length of FIR filter, default is 22051.
5892
5893 @item nb_samples, n
5894 Set number of samples per each frame.
5895
5896 @item win_func, w
5897 Set window function to be used when generating FIR coefficients.
5898 @end table
5899
5900 @section sinc
5901
5902 Generate a sinc kaiser-windowed low-pass, high-pass, band-pass, or band-reject FIR coefficients.
5903
5904 The resulting stream can be used with @ref{afir} filter for filtering the audio signal.
5905
5906 The filter accepts the following options:
5907
5908 @table @option
5909 @item sample_rate, r
5910 Set sample rate, default is 44100.
5911
5912 @item nb_samples, n
5913 Set number of samples per each frame. Default is 1024.
5914
5915 @item hp
5916 Set high-pass frequency. Default is 0.
5917
5918 @item lp
5919 Set low-pass frequency. Default is 0.
5920 If high-pass frequency is lower than low-pass frequency and low-pass frequency
5921 is higher than 0 then filter will create band-pass filter coefficients,
5922 otherwise band-reject filter coefficients.
5923
5924 @item phase
5925 Set filter phase response. Default is 50. Allowed range is from 0 to 100.
5926
5927 @item beta
5928 Set Kaiser window beta.
5929
5930 @item att
5931 Set stop-band attenuation. Default is 120dB, allowed range is from 40 to 180 dB.
5932
5933 @item round
5934 Enable rounding, by default is disabled.
5935
5936 @item hptaps
5937 Set number of taps for high-pass filter.
5938
5939 @item lptaps
5940 Set number of taps for low-pass filter.
5941 @end table
5942
5943 @section sine
5944
5945 Generate an audio signal made of a sine wave with amplitude 1/8.
5946
5947 The audio signal is bit-exact.
5948
5949 The filter accepts the following options:
5950
5951 @table @option
5952
5953 @item frequency, f
5954 Set the carrier frequency. Default is 440 Hz.
5955
5956 @item beep_factor, b
5957 Enable a periodic beep every second with frequency @var{beep_factor} times
5958 the carrier frequency. Default is 0, meaning the beep is disabled.
5959
5960 @item sample_rate, r
5961 Specify the sample rate, default is 44100.
5962
5963 @item duration, d
5964 Specify the duration of the generated audio stream.
5965
5966 @item samples_per_frame
5967 Set the number of samples per output frame.
5968
5969 The expression can contain the following constants:
5970
5971 @table @option
5972 @item n
5973 The (sequential) number of the output audio frame, starting from 0.
5974
5975 @item pts
5976 The PTS (Presentation TimeStamp) of the output audio frame,
5977 expressed in @var{TB} units.
5978
5979 @item t
5980 The PTS of the output audio frame, expressed in seconds.
5981
5982 @item TB
5983 The timebase of the output audio frames.
5984 @end table
5985
5986 Default is @code{1024}.
5987 @end table
5988
5989 @subsection Examples
5990
5991 @itemize
5992
5993 @item
5994 Generate a simple 440 Hz sine wave:
5995 @example
5996 sine
5997 @end example
5998
5999 @item
6000 Generate a 220 Hz sine wave with a 880 Hz beep each second, for 5 seconds:
6001 @example
6002 sine=220:4:d=5
6003 sine=f=220:b=4:d=5
6004 sine=frequency=220:beep_factor=4:duration=5
6005 @end example
6006
6007 @item
6008 Generate a 1 kHz sine wave following @code{1602,1601,1602,1601,1602} NTSC
6009 pattern:
6010 @example
6011 sine=1000:samples_per_frame='st(0,mod(n,5)); 1602-not(not(eq(ld(0),1)+eq(ld(0),3)))'
6012 @end example
6013 @end itemize
6014
6015 @c man end AUDIO SOURCES
6016
6017 @chapter Audio Sinks
6018 @c man begin AUDIO SINKS
6019
6020 Below is a description of the currently available audio sinks.
6021
6022 @section abuffersink
6023
6024 Buffer audio frames, and make them available to the end of filter chain.
6025
6026 This sink is mainly intended for programmatic use, in particular
6027 through the interface defined in @file{libavfilter/buffersink.h}
6028 or the options system.
6029
6030 It accepts a pointer to an AVABufferSinkContext structure, which
6031 defines the incoming buffers' formats, to be passed as the opaque
6032 parameter to @code{avfilter_init_filter} for initialization.
6033 @section anullsink
6034
6035 Null audio sink; do absolutely nothing with the input audio. It is
6036 mainly useful as a template and for use in analysis / debugging
6037 tools.
6038
6039 @c man end AUDIO SINKS
6040
6041 @chapter Video Filters
6042 @c man begin VIDEO FILTERS
6043
6044 When you configure your FFmpeg build, you can disable any of the
6045 existing filters using @code{--disable-filters}.
6046 The configure output will show the video filters included in your
6047 build.
6048
6049 Below is a description of the currently available video filters.
6050
6051 @section addroi
6052
6053 Mark a region of interest in a video frame.
6054
6055 The frame data is passed through unchanged, but metadata is attached
6056 to the frame indicating regions of interest which can affect the
6057 behaviour of later encoding.  Multiple regions can be marked by
6058 applying the filter multiple times.
6059
6060 @table @option
6061 @item x
6062 Region distance in pixels from the left edge of the frame.
6063 @item y
6064 Region distance in pixels from the top edge of the frame.
6065 @item w
6066 Region width in pixels.
6067 @item h
6068 Region height in pixels.
6069
6070 The parameters @var{x}, @var{y}, @var{w} and @var{h} are expressions,
6071 and may contain the following variables:
6072 @table @option
6073 @item iw
6074 Width of the input frame.
6075 @item ih
6076 Height of the input frame.
6077 @end table
6078
6079 @item qoffset
6080 Quantisation offset to apply within the region.
6081
6082 This must be a real value in the range -1 to +1.  A value of zero
6083 indicates no quality change.  A negative value asks for better quality
6084 (less quantisation), while a positive value asks for worse quality
6085 (greater quantisation).
6086
6087 The range is calibrated so that the extreme values indicate the
6088 largest possible offset - if the rest of the frame is encoded with the
6089 worst possible quality, an offset of -1 indicates that this region
6090 should be encoded with the best possible quality anyway.  Intermediate
6091 values are then interpolated in some codec-dependent way.
6092
6093 For example, in 10-bit H.264 the quantisation parameter varies between
6094 -12 and 51.  A typical qoffset value of -1/10 therefore indicates that
6095 this region should be encoded with a QP around one-tenth of the full
6096 range better than the rest of the frame.  So, if most of the frame
6097 were to be encoded with a QP of around 30, this region would get a QP
6098 of around 24 (an offset of approximately -1/10 * (51 - -12) = -6.3).
6099 An extreme value of -1 would indicate that this region should be
6100 encoded with the best possible quality regardless of the treatment of
6101 the rest of the frame - that is, should be encoded at a QP of -12.
6102 @item clear
6103 If set to true, remove any existing regions of interest marked on the
6104 frame before adding the new one.
6105 @end table
6106
6107 @subsection Examples
6108
6109 @itemize
6110 @item
6111 Mark the centre quarter of the frame as interesting.
6112 @example
6113 addroi=iw/4:ih/4:iw/2:ih/2:-1/10
6114 @end example
6115 @item
6116 Mark the 100-pixel-wide region on the left edge of the frame as very
6117 uninteresting (to be encoded at much lower quality than the rest of
6118 the frame).
6119 @example
6120 addroi=0:0:100:ih:+1/5
6121 @end example
6122 @end itemize
6123
6124 @section alphaextract
6125
6126 Extract the alpha component from the input as a grayscale video. This
6127 is especially useful with the @var{alphamerge} filter.
6128
6129 @section alphamerge
6130
6131 Add or replace the alpha component of the primary input with the
6132 grayscale value of a second input. This is intended for use with
6133 @var{alphaextract} to allow the transmission or storage of frame
6134 sequences that have alpha in a format that doesn't support an alpha
6135 channel.
6136
6137 For example, to reconstruct full frames from a normal YUV-encoded video
6138 and a separate video created with @var{alphaextract}, you might use:
6139 @example
6140 movie=in_alpha.mkv [alpha]; [in][alpha] alphamerge [out]
6141 @end example
6142
6143 Since this filter is designed for reconstruction, it operates on frame
6144 sequences without considering timestamps, and terminates when either
6145 input reaches end of stream. This will cause problems if your encoding
6146 pipeline drops frames. If you're trying to apply an image as an
6147 overlay to a video stream, consider the @var{overlay} filter instead.
6148
6149 @section amplify
6150
6151 Amplify differences between current pixel and pixels of adjacent frames in
6152 same pixel location.
6153
6154 This filter accepts the following options:
6155
6156 @table @option
6157 @item radius
6158 Set frame radius. Default is 2. Allowed range is from 1 to 63.
6159 For example radius of 3 will instruct filter to calculate average of 7 frames.
6160
6161 @item factor
6162 Set factor to amplify difference. Default is 2. Allowed range is from 0 to 65535.
6163
6164 @item threshold
6165 Set threshold for difference amplification. Any difference greater or equal to
6166 this value will not alter source pixel. Default is 10.
6167 Allowed range is from 0 to 65535.
6168
6169 @item tolerance
6170 Set tolerance for difference amplification. Any difference lower to
6171 this value will not alter source pixel. Default is 0.
6172 Allowed range is from 0 to 65535.
6173
6174 @item low
6175 Set lower limit for changing source pixel. Default is 65535. Allowed range is from 0 to 65535.
6176 This option controls maximum possible value that will decrease source pixel value.
6177
6178 @item high
6179 Set high limit for changing source pixel. Default is 65535. Allowed range is from 0 to 65535.
6180 This option controls maximum possible value that will increase source pixel value.
6181
6182 @item planes
6183 Set which planes to filter. Default is all. Allowed range is from 0 to 15.
6184 @end table
6185
6186 @subsection Commands
6187
6188 This filter supports the following @ref{commands} that corresponds to option of same name:
6189 @table @option
6190 @item factor
6191 @item threshold
6192 @item tolerance
6193 @item low
6194 @item high
6195 @item planes
6196 @end table
6197
6198 @section ass
6199
6200 Same as the @ref{subtitles} filter, except that it doesn't require libavcodec
6201 and libavformat to work. On the other hand, it is limited to ASS (Advanced
6202 Substation Alpha) subtitles files.
6203
6204 This filter accepts the following option in addition to the common options from
6205 the @ref{subtitles} filter:
6206
6207 @table @option
6208 @item shaping
6209 Set the shaping engine
6210
6211 Available values are:
6212 @table @samp
6213 @item auto
6214 The default libass shaping engine, which is the best available.
6215 @item simple
6216 Fast, font-agnostic shaper that can do only substitutions
6217 @item complex
6218 Slower shaper using OpenType for substitutions and positioning
6219 @end table
6220
6221 The default is @code{auto}.
6222 @end table
6223
6224 @section atadenoise
6225 Apply an Adaptive Temporal Averaging Denoiser to the video input.
6226
6227 The filter accepts the following options:
6228
6229 @table @option
6230 @item 0a
6231 Set threshold A for 1st plane. Default is 0.02.
6232 Valid range is 0 to 0.3.
6233
6234 @item 0b
6235 Set threshold B for 1st plane. Default is 0.04.
6236 Valid range is 0 to 5.
6237
6238 @item 1a
6239 Set threshold A for 2nd plane. Default is 0.02.
6240 Valid range is 0 to 0.3.
6241
6242 @item 1b
6243 Set threshold B for 2nd plane. Default is 0.04.
6244 Valid range is 0 to 5.
6245
6246 @item 2a
6247 Set threshold A for 3rd plane. Default is 0.02.
6248 Valid range is 0 to 0.3.
6249
6250 @item 2b
6251 Set threshold B for 3rd plane. Default is 0.04.
6252 Valid range is 0 to 5.
6253
6254 Threshold A is designed to react on abrupt changes in the input signal and
6255 threshold B is designed to react on continuous changes in the input signal.
6256
6257 @item s
6258 Set number of frames filter will use for averaging. Default is 9. Must be odd
6259 number in range [5, 129].
6260
6261 @item p
6262 Set what planes of frame filter will use for averaging. Default is all.
6263 @end table
6264
6265 @section avgblur
6266
6267 Apply average blur filter.
6268
6269 The filter accepts the following options:
6270
6271 @table @option
6272 @item sizeX
6273 Set horizontal radius size.
6274
6275 @item planes
6276 Set which planes to filter. By default all planes are filtered.
6277
6278 @item sizeY
6279 Set vertical radius size, if zero it will be same as @code{sizeX}.
6280 Default is @code{0}.
6281 @end table
6282
6283 @subsection Commands
6284 This filter supports same commands as options.
6285 The command accepts the same syntax of the corresponding option.
6286
6287 If the specified expression is not valid, it is kept at its current
6288 value.
6289
6290 @section bbox
6291
6292 Compute the bounding box for the non-black pixels in the input frame
6293 luminance plane.
6294
6295 This filter computes the bounding box containing all the pixels with a
6296 luminance value greater than the minimum allowed value.
6297 The parameters describing the bounding box are printed on the filter
6298 log.
6299
6300 The filter accepts the following option:
6301
6302 @table @option
6303 @item min_val
6304 Set the minimal luminance value. Default is @code{16}.
6305 @end table
6306
6307 @section bitplanenoise
6308
6309 Show and measure bit plane noise.
6310
6311 The filter accepts the following options:
6312
6313 @table @option
6314 @item bitplane
6315 Set which plane to analyze. Default is @code{1}.
6316
6317 @item filter
6318 Filter out noisy pixels from @code{bitplane} set above.
6319 Default is disabled.
6320 @end table
6321
6322 @section blackdetect
6323
6324 Detect video intervals that are (almost) completely black. Can be
6325 useful to detect chapter transitions, commercials, or invalid
6326 recordings. Output lines contains the time for the start, end and
6327 duration of the detected black interval expressed in seconds.
6328
6329 In order to display the output lines, you need to set the loglevel at
6330 least to the AV_LOG_INFO value.
6331
6332 The filter accepts the following options:
6333
6334 @table @option
6335 @item black_min_duration, d
6336 Set the minimum detected black duration expressed in seconds. It must
6337 be a non-negative floating point number.
6338
6339 Default value is 2.0.
6340
6341 @item picture_black_ratio_th, pic_th
6342 Set the threshold for considering a picture "black".
6343 Express the minimum value for the ratio:
6344 @example
6345 @var{nb_black_pixels} / @var{nb_pixels}
6346 @end example
6347
6348 for which a picture is considered black.
6349 Default value is 0.98.
6350
6351 @item pixel_black_th, pix_th
6352 Set the threshold for considering a pixel "black".
6353
6354 The threshold expresses the maximum pixel luminance value for which a
6355 pixel is considered "black". The provided value is scaled according to
6356 the following equation:
6357 @example
6358 @var{absolute_threshold} = @var{luminance_minimum_value} + @var{pixel_black_th} * @var{luminance_range_size}
6359 @end example
6360
6361 @var{luminance_range_size} and @var{luminance_minimum_value} depend on
6362 the input video format, the range is [0-255] for YUV full-range
6363 formats and [16-235] for YUV non full-range formats.
6364
6365 Default value is 0.10.
6366 @end table
6367
6368 The following example sets the maximum pixel threshold to the minimum
6369 value, and detects only black intervals of 2 or more seconds:
6370 @example
6371 blackdetect=d=2:pix_th=0.00
6372 @end example
6373
6374 @section blackframe
6375
6376 Detect frames that are (almost) completely black. Can be useful to
6377 detect chapter transitions or commercials. Output lines consist of
6378 the frame number of the detected frame, the percentage of blackness,
6379 the position in the file if known or -1 and the timestamp in seconds.
6380
6381 In order to display the output lines, you need to set the loglevel at
6382 least to the AV_LOG_INFO value.
6383
6384 This filter exports frame metadata @code{lavfi.blackframe.pblack}.
6385 The value represents the percentage of pixels in the picture that
6386 are below the threshold value.
6387
6388 It accepts the following parameters:
6389
6390 @table @option
6391
6392 @item amount
6393 The percentage of the pixels that have to be below the threshold; it defaults to
6394 @code{98}.
6395
6396 @item threshold, thresh
6397 The threshold below which a pixel value is considered black; it defaults to
6398 @code{32}.
6399
6400 @end table
6401
6402 @section blend, tblend
6403
6404 Blend two video frames into each other.
6405
6406 The @code{blend} filter takes two input streams and outputs one
6407 stream, the first input is the "top" layer and second input is
6408 "bottom" layer.  By default, the output terminates when the longest input terminates.
6409
6410 The @code{tblend} (time blend) filter takes two consecutive frames
6411 from one single stream, and outputs the result obtained by blending
6412 the new frame on top of the old frame.
6413
6414 A description of the accepted options follows.
6415
6416 @table @option
6417 @item c0_mode
6418 @item c1_mode
6419 @item c2_mode
6420 @item c3_mode
6421 @item all_mode
6422 Set blend mode for specific pixel component or all pixel components in case
6423 of @var{all_mode}. Default value is @code{normal}.
6424
6425 Available values for component modes are:
6426 @table @samp
6427 @item addition
6428 @item grainmerge
6429 @item and
6430 @item average
6431 @item burn
6432 @item darken
6433 @item difference
6434 @item grainextract
6435 @item divide
6436 @item dodge
6437 @item freeze
6438 @item exclusion
6439 @item extremity
6440 @item glow
6441 @item hardlight
6442 @item hardmix
6443 @item heat
6444 @item lighten
6445 @item linearlight
6446 @item multiply
6447 @item multiply128
6448 @item negation
6449 @item normal
6450 @item or
6451 @item overlay
6452 @item phoenix
6453 @item pinlight
6454 @item reflect
6455 @item screen
6456 @item softlight
6457 @item subtract
6458 @item vividlight
6459 @item xor
6460 @end table
6461
6462 @item c0_opacity
6463 @item c1_opacity
6464 @item c2_opacity
6465 @item c3_opacity
6466 @item all_opacity
6467 Set blend opacity for specific pixel component or all pixel components in case
6468 of @var{all_opacity}. Only used in combination with pixel component blend modes.
6469
6470 @item c0_expr
6471 @item c1_expr
6472 @item c2_expr
6473 @item c3_expr
6474 @item all_expr
6475 Set blend expression for specific pixel component or all pixel components in case
6476 of @var{all_expr}. Note that related mode options will be ignored if those are set.
6477
6478 The expressions can use the following variables:
6479
6480 @table @option
6481 @item N
6482 The sequential number of the filtered frame, starting from @code{0}.
6483
6484 @item X
6485 @item Y
6486 the coordinates of the current sample
6487
6488 @item W
6489 @item H
6490 the width and height of currently filtered plane
6491
6492 @item SW
6493 @item SH
6494 Width and height scale for the plane being filtered. It is the
6495 ratio between the dimensions of the current plane to the luma plane,
6496 e.g. for a @code{yuv420p} frame, the values are @code{1,1} for
6497 the luma plane and @code{0.5,0.5} for the chroma planes.
6498
6499 @item T
6500 Time of the current frame, expressed in seconds.
6501
6502 @item TOP, A
6503 Value of pixel component at current location for first video frame (top layer).
6504
6505 @item BOTTOM, B
6506 Value of pixel component at current location for second video frame (bottom layer).
6507 @end table
6508 @end table
6509
6510 The @code{blend} filter also supports the @ref{framesync} options.
6511
6512 @subsection Examples
6513
6514 @itemize
6515 @item
6516 Apply transition from bottom layer to top layer in first 10 seconds:
6517 @example
6518 blend=all_expr='A*(if(gte(T,10),1,T/10))+B*(1-(if(gte(T,10),1,T/10)))'
6519 @end example
6520
6521 @item
6522 Apply linear horizontal transition from top layer to bottom layer:
6523 @example
6524 blend=all_expr='A*(X/W)+B*(1-X/W)'
6525 @end example
6526
6527 @item
6528 Apply 1x1 checkerboard effect:
6529 @example
6530 blend=all_expr='if(eq(mod(X,2),mod(Y,2)),A,B)'
6531 @end example
6532
6533 @item
6534 Apply uncover left effect:
6535 @example
6536 blend=all_expr='if(gte(N*SW+X,W),A,B)'
6537 @end example
6538
6539 @item
6540 Apply uncover down effect:
6541 @example
6542 blend=all_expr='if(gte(Y-N*SH,0),A,B)'
6543 @end example
6544
6545 @item
6546 Apply uncover up-left effect:
6547 @example
6548 blend=all_expr='if(gte(T*SH*40+Y,H)*gte((T*40*SW+X)*W/H,W),A,B)'
6549 @end example
6550
6551 @item
6552 Split diagonally video and shows top and bottom layer on each side:
6553 @example
6554 blend=all_expr='if(gt(X,Y*(W/H)),A,B)'
6555 @end example
6556
6557 @item
6558 Display differences between the current and the previous frame:
6559 @example
6560 tblend=all_mode=grainextract
6561 @end example
6562 @end itemize
6563
6564 @section bm3d
6565
6566 Denoise frames using Block-Matching 3D algorithm.
6567
6568 The filter accepts the following options.
6569
6570 @table @option
6571 @item sigma
6572 Set denoising strength. Default value is 1.
6573 Allowed range is from 0 to 999.9.
6574 The denoising algorithm is very sensitive to sigma, so adjust it
6575 according to the source.
6576
6577 @item block
6578 Set local patch size. This sets dimensions in 2D.
6579
6580 @item bstep
6581 Set sliding step for processing blocks. Default value is 4.
6582 Allowed range is from 1 to 64.
6583 Smaller values allows processing more reference blocks and is slower.
6584
6585 @item group
6586 Set maximal number of similar blocks for 3rd dimension. Default value is 1.
6587 When set to 1, no block matching is done. Larger values allows more blocks
6588 in single group.
6589 Allowed range is from 1 to 256.
6590
6591 @item range
6592 Set radius for search block matching. Default is 9.
6593 Allowed range is from 1 to INT32_MAX.
6594
6595 @item mstep
6596 Set step between two search locations for block matching. Default is 1.
6597 Allowed range is from 1 to 64. Smaller is slower.
6598
6599 @item thmse
6600 Set threshold of mean square error for block matching. Valid range is 0 to
6601 INT32_MAX.
6602
6603 @item hdthr
6604 Set thresholding parameter for hard thresholding in 3D transformed domain.
6605 Larger values results in stronger hard-thresholding filtering in frequency
6606 domain.
6607
6608 @item estim
6609 Set filtering estimation mode. Can be @code{basic} or @code{final}.
6610 Default is @code{basic}.
6611
6612 @item ref
6613 If enabled, filter will use 2nd stream for block matching.
6614 Default is disabled for @code{basic} value of @var{estim} option,
6615 and always enabled if value of @var{estim} is @code{final}.
6616
6617 @item planes
6618 Set planes to filter. Default is all available except alpha.
6619 @end table
6620
6621 @subsection Examples
6622
6623 @itemize
6624 @item
6625 Basic filtering with bm3d:
6626 @example
6627 bm3d=sigma=3:block=4:bstep=2:group=1:estim=basic
6628 @end example
6629
6630 @item
6631 Same as above, but filtering only luma:
6632 @example
6633 bm3d=sigma=3:block=4:bstep=2:group=1:estim=basic:planes=1
6634 @end example
6635
6636 @item
6637 Same as above, but with both estimation modes:
6638 @example
6639 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
6640 @end example
6641
6642 @item
6643 Same as above, but prefilter with @ref{nlmeans} filter instead:
6644 @example
6645 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
6646 @end example
6647 @end itemize
6648
6649 @section boxblur
6650
6651 Apply a boxblur algorithm to the input video.
6652
6653 It accepts the following parameters:
6654
6655 @table @option
6656
6657 @item luma_radius, lr
6658 @item luma_power, lp
6659 @item chroma_radius, cr
6660 @item chroma_power, cp
6661 @item alpha_radius, ar
6662 @item alpha_power, ap
6663
6664 @end table
6665
6666 A description of the accepted options follows.
6667
6668 @table @option
6669 @item luma_radius, lr
6670 @item chroma_radius, cr
6671 @item alpha_radius, ar
6672 Set an expression for the box radius in pixels used for blurring the
6673 corresponding input plane.
6674
6675 The radius value must be a non-negative number, and must not be
6676 greater than the value of the expression @code{min(w,h)/2} for the
6677 luma and alpha planes, and of @code{min(cw,ch)/2} for the chroma
6678 planes.
6679
6680 Default value for @option{luma_radius} is "2". If not specified,
6681 @option{chroma_radius} and @option{alpha_radius} default to the
6682 corresponding value set for @option{luma_radius}.
6683
6684 The expressions can contain the following constants:
6685 @table @option
6686 @item w
6687 @item h
6688 The input width and height in pixels.
6689
6690 @item cw
6691 @item ch
6692 The input chroma image width and height in pixels.
6693
6694 @item hsub
6695 @item vsub
6696 The horizontal and vertical chroma subsample values. For example, for the
6697 pixel format "yuv422p", @var{hsub} is 2 and @var{vsub} is 1.
6698 @end table
6699
6700 @item luma_power, lp
6701 @item chroma_power, cp
6702 @item alpha_power, ap
6703 Specify how many times the boxblur filter is applied to the
6704 corresponding plane.
6705
6706 Default value for @option{luma_power} is 2. If not specified,
6707 @option{chroma_power} and @option{alpha_power} default to the
6708 corresponding value set for @option{luma_power}.
6709
6710 A value of 0 will disable the effect.
6711 @end table
6712
6713 @subsection Examples
6714
6715 @itemize
6716 @item
6717 Apply a boxblur filter with the luma, chroma, and alpha radii
6718 set to 2:
6719 @example
6720 boxblur=luma_radius=2:luma_power=1
6721 boxblur=2:1
6722 @end example
6723
6724 @item
6725 Set the luma radius to 2, and alpha and chroma radius to 0:
6726 @example
6727 boxblur=2:1:cr=0:ar=0
6728 @end example
6729
6730 @item
6731 Set the luma and chroma radii to a fraction of the video dimension:
6732 @example
6733 boxblur=luma_radius=min(h\,w)/10:luma_power=1:chroma_radius=min(cw\,ch)/10:chroma_power=1
6734 @end example
6735 @end itemize
6736
6737 @section bwdif
6738
6739 Deinterlace the input video ("bwdif" stands for "Bob Weaver
6740 Deinterlacing Filter").
6741
6742 Motion adaptive deinterlacing based on yadif with the use of w3fdif and cubic
6743 interpolation algorithms.
6744 It accepts the following parameters:
6745
6746 @table @option
6747 @item mode
6748 The interlacing mode to adopt. It accepts one of the following values:
6749
6750 @table @option
6751 @item 0, send_frame
6752 Output one frame for each frame.
6753 @item 1, send_field
6754 Output one frame for each field.
6755 @end table
6756
6757 The default value is @code{send_field}.
6758
6759 @item parity
6760 The picture field parity assumed for the input interlaced video. It accepts one
6761 of the following values:
6762
6763 @table @option
6764 @item 0, tff
6765 Assume the top field is first.
6766 @item 1, bff
6767 Assume the bottom field is first.
6768 @item -1, auto
6769 Enable automatic detection of field parity.
6770 @end table
6771
6772 The default value is @code{auto}.
6773 If the interlacing is unknown or the decoder does not export this information,
6774 top field first will be assumed.
6775
6776 @item deint
6777 Specify which frames to deinterlace. Accepts one of the following
6778 values:
6779
6780 @table @option
6781 @item 0, all
6782 Deinterlace all frames.
6783 @item 1, interlaced
6784 Only deinterlace frames marked as interlaced.
6785 @end table
6786
6787 The default value is @code{all}.
6788 @end table
6789
6790 @section chromahold
6791 Remove all color information for all colors except for certain one.
6792
6793 The filter accepts the following options:
6794
6795 @table @option
6796 @item color
6797 The color which will not be replaced with neutral chroma.
6798
6799 @item similarity
6800 Similarity percentage with the above color.
6801 0.01 matches only the exact key color, while 1.0 matches everything.
6802
6803 @item blend
6804 Blend percentage.
6805 0.0 makes pixels either fully gray, or not gray at all.
6806 Higher values result in more preserved color.
6807
6808 @item yuv
6809 Signals that the color passed is already in YUV instead of RGB.
6810
6811 Literal colors like "green" or "red" don't make sense with this enabled anymore.
6812 This can be used to pass exact YUV values as hexadecimal numbers.
6813 @end table
6814
6815 @section chromakey
6816 YUV colorspace color/chroma keying.
6817
6818 The filter accepts the following options:
6819
6820 @table @option
6821 @item color
6822 The color which will be replaced with transparency.
6823
6824 @item similarity
6825 Similarity percentage with the key color.
6826
6827 0.01 matches only the exact key color, while 1.0 matches everything.
6828
6829 @item blend
6830 Blend percentage.
6831
6832 0.0 makes pixels either fully transparent, or not transparent at all.
6833
6834 Higher values result in semi-transparent pixels, with a higher transparency
6835 the more similar the pixels color is to the key color.
6836
6837 @item yuv
6838 Signals that the color passed is already in YUV instead of RGB.
6839
6840 Literal colors like "green" or "red" don't make sense with this enabled anymore.
6841 This can be used to pass exact YUV values as hexadecimal numbers.
6842 @end table
6843
6844 @subsection Examples
6845
6846 @itemize
6847 @item
6848 Make every green pixel in the input image transparent:
6849 @example
6850 ffmpeg -i input.png -vf chromakey=green out.png
6851 @end example
6852
6853 @item
6854 Overlay a greenscreen-video on top of a static black background.
6855 @example
6856 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
6857 @end example
6858 @end itemize
6859
6860 @section chromashift
6861 Shift chroma pixels horizontally and/or vertically.
6862
6863 The filter accepts the following options:
6864 @table @option
6865 @item cbh
6866 Set amount to shift chroma-blue horizontally.
6867 @item cbv
6868 Set amount to shift chroma-blue vertically.
6869 @item crh
6870 Set amount to shift chroma-red horizontally.
6871 @item crv
6872 Set amount to shift chroma-red vertically.
6873 @item edge
6874 Set edge mode, can be @var{smear}, default, or @var{warp}.
6875 @end table
6876
6877 @section ciescope
6878
6879 Display CIE color diagram with pixels overlaid onto it.
6880
6881 The filter accepts the following options:
6882
6883 @table @option
6884 @item system
6885 Set color system.
6886
6887 @table @samp
6888 @item ntsc, 470m
6889 @item ebu, 470bg
6890 @item smpte
6891 @item 240m
6892 @item apple
6893 @item widergb
6894 @item cie1931
6895 @item rec709, hdtv
6896 @item uhdtv, rec2020
6897 @item dcip3
6898 @end table
6899
6900 @item cie
6901 Set CIE system.
6902
6903 @table @samp
6904 @item xyy
6905 @item ucs
6906 @item luv
6907 @end table
6908
6909 @item gamuts
6910 Set what gamuts to draw.
6911
6912 See @code{system} option for available values.
6913
6914 @item size, s
6915 Set ciescope size, by default set to 512.
6916
6917 @item intensity, i
6918 Set intensity used to map input pixel values to CIE diagram.
6919
6920 @item contrast
6921 Set contrast used to draw tongue colors that are out of active color system gamut.
6922
6923 @item corrgamma
6924 Correct gamma displayed on scope, by default enabled.
6925
6926 @item showwhite
6927 Show white point on CIE diagram, by default disabled.
6928
6929 @item gamma
6930 Set input gamma. Used only with XYZ input color space.
6931 @end table
6932
6933 @section codecview
6934
6935 Visualize information exported by some codecs.
6936
6937 Some codecs can export information through frames using side-data or other
6938 means. For example, some MPEG based codecs export motion vectors through the
6939 @var{export_mvs} flag in the codec @option{flags2} option.
6940
6941 The filter accepts the following option:
6942
6943 @table @option
6944 @item mv
6945 Set motion vectors to visualize.
6946
6947 Available flags for @var{mv} are:
6948
6949 @table @samp
6950 @item pf
6951 forward predicted MVs of P-frames
6952 @item bf
6953 forward predicted MVs of B-frames
6954 @item bb
6955 backward predicted MVs of B-frames
6956 @end table
6957
6958 @item qp
6959 Display quantization parameters using the chroma planes.
6960
6961 @item mv_type, mvt
6962 Set motion vectors type to visualize. Includes MVs from all frames unless specified by @var{frame_type} option.
6963
6964 Available flags for @var{mv_type} are:
6965
6966 @table @samp
6967 @item fp
6968 forward predicted MVs
6969 @item bp
6970 backward predicted MVs
6971 @end table
6972
6973 @item frame_type, ft
6974 Set frame type to visualize motion vectors of.
6975
6976 Available flags for @var{frame_type} are:
6977
6978 @table @samp
6979 @item if
6980 intra-coded frames (I-frames)
6981 @item pf
6982 predicted frames (P-frames)
6983 @item bf
6984 bi-directionally predicted frames (B-frames)
6985 @end table
6986 @end table
6987
6988 @subsection Examples
6989
6990 @itemize
6991 @item
6992 Visualize forward predicted MVs of all frames using @command{ffplay}:
6993 @example
6994 ffplay -flags2 +export_mvs input.mp4 -vf codecview=mv_type=fp
6995 @end example
6996
6997 @item
6998 Visualize multi-directionals MVs of P and B-Frames using @command{ffplay}:
6999 @example
7000 ffplay -flags2 +export_mvs input.mp4 -vf codecview=mv=pf+bf+bb
7001 @end example
7002 @end itemize
7003
7004 @section colorbalance
7005 Modify intensity of primary colors (red, green and blue) of input frames.
7006
7007 The filter allows an input frame to be adjusted in the shadows, midtones or highlights
7008 regions for the red-cyan, green-magenta or blue-yellow balance.
7009
7010 A positive adjustment value shifts the balance towards the primary color, a negative
7011 value towards the complementary color.
7012
7013 The filter accepts the following options:
7014
7015 @table @option
7016 @item rs
7017 @item gs
7018 @item bs
7019 Adjust red, green and blue shadows (darkest pixels).
7020
7021 @item rm
7022 @item gm
7023 @item bm
7024 Adjust red, green and blue midtones (medium pixels).
7025
7026 @item rh
7027 @item gh
7028 @item bh
7029 Adjust red, green and blue highlights (brightest pixels).
7030
7031 Allowed ranges for options are @code{[-1.0, 1.0]}. Defaults are @code{0}.
7032 @end table
7033
7034 @subsection Examples
7035
7036 @itemize
7037 @item
7038 Add red color cast to shadows:
7039 @example
7040 colorbalance=rs=.3
7041 @end example
7042 @end itemize
7043
7044 @section colorchannelmixer
7045
7046 Adjust video input frames by re-mixing color channels.
7047
7048 This filter modifies a color channel by adding the values associated to
7049 the other channels of the same pixels. For example if the value to
7050 modify is red, the output value will be:
7051 @example
7052 @var{red}=@var{red}*@var{rr} + @var{blue}*@var{rb} + @var{green}*@var{rg} + @var{alpha}*@var{ra}
7053 @end example
7054
7055 The filter accepts the following options:
7056
7057 @table @option
7058 @item rr
7059 @item rg
7060 @item rb
7061 @item ra
7062 Adjust contribution of input red, green, blue and alpha channels for output red channel.
7063 Default is @code{1} for @var{rr}, and @code{0} for @var{rg}, @var{rb} and @var{ra}.
7064
7065 @item gr
7066 @item gg
7067 @item gb
7068 @item ga
7069 Adjust contribution of input red, green, blue and alpha channels for output green channel.
7070 Default is @code{1} for @var{gg}, and @code{0} for @var{gr}, @var{gb} and @var{ga}.
7071
7072 @item br
7073 @item bg
7074 @item bb
7075 @item ba
7076 Adjust contribution of input red, green, blue and alpha channels for output blue channel.
7077 Default is @code{1} for @var{bb}, and @code{0} for @var{br}, @var{bg} and @var{ba}.
7078
7079 @item ar
7080 @item ag
7081 @item ab
7082 @item aa
7083 Adjust contribution of input red, green, blue and alpha channels for output alpha channel.
7084 Default is @code{1} for @var{aa}, and @code{0} for @var{ar}, @var{ag} and @var{ab}.
7085
7086 Allowed ranges for options are @code{[-2.0, 2.0]}.
7087 @end table
7088
7089 @subsection Examples
7090
7091 @itemize
7092 @item
7093 Convert source to grayscale:
7094 @example
7095 colorchannelmixer=.3:.4:.3:0:.3:.4:.3:0:.3:.4:.3
7096 @end example
7097 @item
7098 Simulate sepia tones:
7099 @example
7100 colorchannelmixer=.393:.769:.189:0:.349:.686:.168:0:.272:.534:.131
7101 @end example
7102 @end itemize
7103
7104 @subsection Commands
7105
7106 This filter supports the all above options as @ref{commands}.
7107
7108 @section colorkey
7109 RGB colorspace color keying.
7110
7111 The filter accepts the following options:
7112
7113 @table @option
7114 @item color
7115 The color which will be replaced with transparency.
7116
7117 @item similarity
7118 Similarity percentage with the key color.
7119
7120 0.01 matches only the exact key color, while 1.0 matches everything.
7121
7122 @item blend
7123 Blend percentage.
7124
7125 0.0 makes pixels either fully transparent, or not transparent at all.
7126
7127 Higher values result in semi-transparent pixels, with a higher transparency
7128 the more similar the pixels color is to the key color.
7129 @end table
7130
7131 @subsection Examples
7132
7133 @itemize
7134 @item
7135 Make every green pixel in the input image transparent:
7136 @example
7137 ffmpeg -i input.png -vf colorkey=green out.png
7138 @end example
7139
7140 @item
7141 Overlay a greenscreen-video on top of a static background image.
7142 @example
7143 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
7144 @end example
7145 @end itemize
7146
7147 @section colorhold
7148 Remove all color information for all RGB colors except for certain one.
7149
7150 The filter accepts the following options:
7151
7152 @table @option
7153 @item color
7154 The color which will not be replaced with neutral gray.
7155
7156 @item similarity
7157 Similarity percentage with the above color.
7158 0.01 matches only the exact key color, while 1.0 matches everything.
7159
7160 @item blend
7161 Blend percentage. 0.0 makes pixels fully gray.
7162 Higher values result in more preserved color.
7163 @end table
7164
7165 @section colorlevels
7166
7167 Adjust video input frames using levels.
7168
7169 The filter accepts the following options:
7170
7171 @table @option
7172 @item rimin
7173 @item gimin
7174 @item bimin
7175 @item aimin
7176 Adjust red, green, blue and alpha input black point.
7177 Allowed ranges for options are @code{[-1.0, 1.0]}. Defaults are @code{0}.
7178
7179 @item rimax
7180 @item gimax
7181 @item bimax
7182 @item aimax
7183 Adjust red, green, blue and alpha input white point.
7184 Allowed ranges for options are @code{[-1.0, 1.0]}. Defaults are @code{1}.
7185
7186 Input levels are used to lighten highlights (bright tones), darken shadows
7187 (dark tones), change the balance of bright and dark tones.
7188
7189 @item romin
7190 @item gomin
7191 @item bomin
7192 @item aomin
7193 Adjust red, green, blue and alpha output black point.
7194 Allowed ranges for options are @code{[0, 1.0]}. Defaults are @code{0}.
7195
7196 @item romax
7197 @item gomax
7198 @item bomax
7199 @item aomax
7200 Adjust red, green, blue and alpha output white point.
7201 Allowed ranges for options are @code{[0, 1.0]}. Defaults are @code{1}.
7202
7203 Output levels allows manual selection of a constrained output level range.
7204 @end table
7205
7206 @subsection Examples
7207
7208 @itemize
7209 @item
7210 Make video output darker:
7211 @example
7212 colorlevels=rimin=0.058:gimin=0.058:bimin=0.058
7213 @end example
7214
7215 @item
7216 Increase contrast:
7217 @example
7218 colorlevels=rimin=0.039:gimin=0.039:bimin=0.039:rimax=0.96:gimax=0.96:bimax=0.96
7219 @end example
7220
7221 @item
7222 Make video output lighter:
7223 @example
7224 colorlevels=rimax=0.902:gimax=0.902:bimax=0.902
7225 @end example
7226
7227 @item
7228 Increase brightness:
7229 @example
7230 colorlevels=romin=0.5:gomin=0.5:bomin=0.5
7231 @end example
7232 @end itemize
7233
7234 @section colormatrix
7235
7236 Convert color matrix.
7237
7238 The filter accepts the following options:
7239
7240 @table @option
7241 @item src
7242 @item dst
7243 Specify the source and destination color matrix. Both values must be
7244 specified.
7245
7246 The accepted values are:
7247 @table @samp
7248 @item bt709
7249 BT.709
7250
7251 @item fcc
7252 FCC
7253
7254 @item bt601
7255 BT.601
7256
7257 @item bt470
7258 BT.470
7259
7260 @item bt470bg
7261 BT.470BG
7262
7263 @item smpte170m
7264 SMPTE-170M
7265
7266 @item smpte240m
7267 SMPTE-240M
7268
7269 @item bt2020
7270 BT.2020
7271 @end table
7272 @end table
7273
7274 For example to convert from BT.601 to SMPTE-240M, use the command:
7275 @example
7276 colormatrix=bt601:smpte240m
7277 @end example
7278
7279 @section colorspace
7280
7281 Convert colorspace, transfer characteristics or color primaries.
7282 Input video needs to have an even size.
7283
7284 The filter accepts the following options:
7285
7286 @table @option
7287 @anchor{all}
7288 @item all
7289 Specify all color properties at once.
7290
7291 The accepted values are:
7292 @table @samp
7293 @item bt470m
7294 BT.470M
7295
7296 @item bt470bg
7297 BT.470BG
7298
7299 @item bt601-6-525
7300 BT.601-6 525
7301
7302 @item bt601-6-625
7303 BT.601-6 625
7304
7305 @item bt709
7306 BT.709
7307
7308 @item smpte170m
7309 SMPTE-170M
7310
7311 @item smpte240m
7312 SMPTE-240M
7313
7314 @item bt2020
7315 BT.2020
7316
7317 @end table
7318
7319 @anchor{space}
7320 @item space
7321 Specify output colorspace.
7322
7323 The accepted values are:
7324 @table @samp
7325 @item bt709
7326 BT.709
7327
7328 @item fcc
7329 FCC
7330
7331 @item bt470bg
7332 BT.470BG or BT.601-6 625
7333
7334 @item smpte170m
7335 SMPTE-170M or BT.601-6 525
7336
7337 @item smpte240m
7338 SMPTE-240M
7339
7340 @item ycgco
7341 YCgCo
7342
7343 @item bt2020ncl
7344 BT.2020 with non-constant luminance
7345
7346 @end table
7347
7348 @anchor{trc}
7349 @item trc
7350 Specify output transfer characteristics.
7351
7352 The accepted values are:
7353 @table @samp
7354 @item bt709
7355 BT.709
7356
7357 @item bt470m
7358 BT.470M
7359
7360 @item bt470bg
7361 BT.470BG
7362
7363 @item gamma22
7364 Constant gamma of 2.2
7365
7366 @item gamma28
7367 Constant gamma of 2.8
7368
7369 @item smpte170m
7370 SMPTE-170M, BT.601-6 625 or BT.601-6 525
7371
7372 @item smpte240m
7373 SMPTE-240M
7374
7375 @item srgb
7376 SRGB
7377
7378 @item iec61966-2-1
7379 iec61966-2-1
7380
7381 @item iec61966-2-4
7382 iec61966-2-4
7383
7384 @item xvycc
7385 xvycc
7386
7387 @item bt2020-10
7388 BT.2020 for 10-bits content
7389
7390 @item bt2020-12
7391 BT.2020 for 12-bits content
7392
7393 @end table
7394
7395 @anchor{primaries}
7396 @item primaries
7397 Specify output color primaries.
7398
7399 The accepted values are:
7400 @table @samp
7401 @item bt709
7402 BT.709
7403
7404 @item bt470m
7405 BT.470M
7406
7407 @item bt470bg
7408 BT.470BG or BT.601-6 625
7409
7410 @item smpte170m
7411 SMPTE-170M or BT.601-6 525
7412
7413 @item smpte240m
7414 SMPTE-240M
7415
7416 @item film
7417 film
7418
7419 @item smpte431
7420 SMPTE-431
7421
7422 @item smpte432
7423 SMPTE-432
7424
7425 @item bt2020
7426 BT.2020
7427
7428 @item jedec-p22
7429 JEDEC P22 phosphors
7430
7431 @end table
7432
7433 @anchor{range}
7434 @item range
7435 Specify output color range.
7436
7437 The accepted values are:
7438 @table @samp
7439 @item tv
7440 TV (restricted) range
7441
7442 @item mpeg
7443 MPEG (restricted) range
7444
7445 @item pc
7446 PC (full) range
7447
7448 @item jpeg
7449 JPEG (full) range
7450
7451 @end table
7452
7453 @item format
7454 Specify output color format.
7455
7456 The accepted values are:
7457 @table @samp
7458 @item yuv420p
7459 YUV 4:2:0 planar 8-bits
7460
7461 @item yuv420p10
7462 YUV 4:2:0 planar 10-bits
7463
7464 @item yuv420p12
7465 YUV 4:2:0 planar 12-bits
7466
7467 @item yuv422p
7468 YUV 4:2:2 planar 8-bits
7469
7470 @item yuv422p10
7471 YUV 4:2:2 planar 10-bits
7472
7473 @item yuv422p12
7474 YUV 4:2:2 planar 12-bits
7475
7476 @item yuv444p
7477 YUV 4:4:4 planar 8-bits
7478
7479 @item yuv444p10
7480 YUV 4:4:4 planar 10-bits
7481
7482 @item yuv444p12
7483 YUV 4:4:4 planar 12-bits
7484
7485 @end table
7486
7487 @item fast
7488 Do a fast conversion, which skips gamma/primary correction. This will take
7489 significantly less CPU, but will be mathematically incorrect. To get output
7490 compatible with that produced by the colormatrix filter, use fast=1.
7491
7492 @item dither
7493 Specify dithering mode.
7494
7495 The accepted values are:
7496 @table @samp
7497 @item none
7498 No dithering
7499
7500 @item fsb
7501 Floyd-Steinberg dithering
7502 @end table
7503
7504 @item wpadapt
7505 Whitepoint adaptation mode.
7506
7507 The accepted values are:
7508 @table @samp
7509 @item bradford
7510 Bradford whitepoint adaptation
7511
7512 @item vonkries
7513 von Kries whitepoint adaptation
7514
7515 @item identity
7516 identity whitepoint adaptation (i.e. no whitepoint adaptation)
7517 @end table
7518
7519 @item iall
7520 Override all input properties at once. Same accepted values as @ref{all}.
7521
7522 @item ispace
7523 Override input colorspace. Same accepted values as @ref{space}.
7524
7525 @item iprimaries
7526 Override input color primaries. Same accepted values as @ref{primaries}.
7527
7528 @item itrc
7529 Override input transfer characteristics. Same accepted values as @ref{trc}.
7530
7531 @item irange
7532 Override input color range. Same accepted values as @ref{range}.
7533
7534 @end table
7535
7536 The filter converts the transfer characteristics, color space and color
7537 primaries to the specified user values. The output value, if not specified,
7538 is set to a default value based on the "all" property. If that property is
7539 also not specified, the filter will log an error. The output color range and
7540 format default to the same value as the input color range and format. The
7541 input transfer characteristics, color space, color primaries and color range
7542 should be set on the input data. If any of these are missing, the filter will
7543 log an error and no conversion will take place.
7544
7545 For example to convert the input to SMPTE-240M, use the command:
7546 @example
7547 colorspace=smpte240m
7548 @end example
7549
7550 @section convolution
7551
7552 Apply convolution of 3x3, 5x5, 7x7 or horizontal/vertical up to 49 elements.
7553
7554 The filter accepts the following options:
7555
7556 @table @option
7557 @item 0m
7558 @item 1m
7559 @item 2m
7560 @item 3m
7561 Set matrix for each plane.
7562 Matrix is sequence of 9, 25 or 49 signed integers in @var{square} mode,
7563 and from 1 to 49 odd number of signed integers in @var{row} mode.
7564
7565 @item 0rdiv
7566 @item 1rdiv
7567 @item 2rdiv
7568 @item 3rdiv
7569 Set multiplier for calculated value for each plane.
7570 If unset or 0, it will be sum of all matrix elements.
7571
7572 @item 0bias
7573 @item 1bias
7574 @item 2bias
7575 @item 3bias
7576 Set bias for each plane. This value is added to the result of the multiplication.
7577 Useful for making the overall image brighter or darker. Default is 0.0.
7578
7579 @item 0mode
7580 @item 1mode
7581 @item 2mode
7582 @item 3mode
7583 Set matrix mode for each plane. Can be @var{square}, @var{row} or @var{column}.
7584 Default is @var{square}.
7585 @end table
7586
7587 @subsection Examples
7588
7589 @itemize
7590 @item
7591 Apply sharpen:
7592 @example
7593 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"
7594 @end example
7595
7596 @item
7597 Apply blur:
7598 @example
7599 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"
7600 @end example
7601
7602 @item
7603 Apply edge enhance:
7604 @example
7605 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"
7606 @end example
7607
7608 @item
7609 Apply edge detect:
7610 @example
7611 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"
7612 @end example
7613
7614 @item
7615 Apply laplacian edge detector which includes diagonals:
7616 @example
7617 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"
7618 @end example
7619
7620 @item
7621 Apply emboss:
7622 @example
7623 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"
7624 @end example
7625 @end itemize
7626
7627 @section convolve
7628
7629 Apply 2D convolution of video stream in frequency domain using second stream
7630 as impulse.
7631
7632 The filter accepts the following options:
7633
7634 @table @option
7635 @item planes
7636 Set which planes to process.
7637
7638 @item impulse
7639 Set which impulse video frames will be processed, can be @var{first}
7640 or @var{all}. Default is @var{all}.
7641 @end table
7642
7643 The @code{convolve} filter also supports the @ref{framesync} options.
7644
7645 @section copy
7646
7647 Copy the input video source unchanged to the output. This is mainly useful for
7648 testing purposes.
7649
7650 @anchor{coreimage}
7651 @section coreimage
7652 Video filtering on GPU using Apple's CoreImage API on OSX.
7653
7654 Hardware acceleration is based on an OpenGL context. Usually, this means it is
7655 processed by video hardware. However, software-based OpenGL implementations
7656 exist which means there is no guarantee for hardware processing. It depends on
7657 the respective OSX.
7658
7659 There are many filters and image generators provided by Apple that come with a
7660 large variety of options. The filter has to be referenced by its name along
7661 with its options.
7662
7663 The coreimage filter accepts the following options:
7664 @table @option
7665 @item list_filters
7666 List all available filters and generators along with all their respective
7667 options as well as possible minimum and maximum values along with the default
7668 values.
7669 @example
7670 list_filters=true
7671 @end example
7672
7673 @item filter
7674 Specify all filters by their respective name and options.
7675 Use @var{list_filters} to determine all valid filter names and options.
7676 Numerical options are specified by a float value and are automatically clamped
7677 to their respective value range.  Vector and color options have to be specified
7678 by a list of space separated float values. Character escaping has to be done.
7679 A special option name @code{default} is available to use default options for a
7680 filter.
7681
7682 It is required to specify either @code{default} or at least one of the filter options.
7683 All omitted options are used with their default values.
7684 The syntax of the filter string is as follows:
7685 @example
7686 filter=<NAME>@@<OPTION>=<VALUE>[@@<OPTION>=<VALUE>][@@...][#<NAME>@@<OPTION>=<VALUE>[@@<OPTION>=<VALUE>][@@...]][#...]
7687 @end example
7688
7689 @item output_rect
7690 Specify a rectangle where the output of the filter chain is copied into the
7691 input image. It is given by a list of space separated float values:
7692 @example
7693 output_rect=x\ y\ width\ height
7694 @end example
7695 If not given, the output rectangle equals the dimensions of the input image.
7696 The output rectangle is automatically cropped at the borders of the input
7697 image. Negative values are valid for each component.
7698 @example
7699 output_rect=25\ 25\ 100\ 100
7700 @end example
7701 @end table
7702
7703 Several filters can be chained for successive processing without GPU-HOST
7704 transfers allowing for fast processing of complex filter chains.
7705 Currently, only filters with zero (generators) or exactly one (filters) input
7706 image and one output image are supported. Also, transition filters are not yet
7707 usable as intended.
7708
7709 Some filters generate output images with additional padding depending on the
7710 respective filter kernel. The padding is automatically removed to ensure the
7711 filter output has the same size as the input image.
7712
7713 For image generators, the size of the output image is determined by the
7714 previous output image of the filter chain or the input image of the whole
7715 filterchain, respectively. The generators do not use the pixel information of
7716 this image to generate their output. However, the generated output is
7717 blended onto this image, resulting in partial or complete coverage of the
7718 output image.
7719
7720 The @ref{coreimagesrc} video source can be used for generating input images
7721 which are directly fed into the filter chain. By using it, providing input
7722 images by another video source or an input video is not required.
7723
7724 @subsection Examples
7725
7726 @itemize
7727
7728 @item
7729 List all filters available:
7730 @example
7731 coreimage=list_filters=true
7732 @end example
7733
7734 @item
7735 Use the CIBoxBlur filter with default options to blur an image:
7736 @example
7737 coreimage=filter=CIBoxBlur@@default
7738 @end example
7739
7740 @item
7741 Use a filter chain with CISepiaTone at default values and CIVignetteEffect with
7742 its center at 100x100 and a radius of 50 pixels:
7743 @example
7744 coreimage=filter=CIBoxBlur@@default#CIVignetteEffect@@inputCenter=100\ 100@@inputRadius=50
7745 @end example
7746
7747 @item
7748 Use nullsrc and CIQRCodeGenerator to create a QR code for the FFmpeg homepage,
7749 given as complete and escaped command-line for Apple's standard bash shell:
7750 @example
7751 ffmpeg -f lavfi -i nullsrc=s=100x100,coreimage=filter=CIQRCodeGenerator@@inputMessage=https\\\\\://FFmpeg.org/@@inputCorrectionLevel=H -frames:v 1 QRCode.png
7752 @end example
7753 @end itemize
7754
7755 @section cover_rect
7756
7757 Cover a rectangular object
7758
7759 It accepts the following options:
7760
7761 @table @option
7762 @item cover
7763 Filepath of the optional cover image, needs to be in yuv420.
7764
7765 @item mode
7766 Set covering mode.
7767
7768 It accepts the following values:
7769 @table @samp
7770 @item cover
7771 cover it by the supplied image
7772 @item blur
7773 cover it by interpolating the surrounding pixels
7774 @end table
7775
7776 Default value is @var{blur}.
7777 @end table
7778
7779 @subsection Examples
7780
7781 @itemize
7782 @item
7783 Cover a rectangular object by the supplied image of a given video using @command{ffmpeg}:
7784 @example
7785 ffmpeg -i file.ts -vf find_rect=newref.pgm,cover_rect=cover.jpg:mode=cover new.mkv
7786 @end example
7787 @end itemize
7788
7789 @section crop
7790
7791 Crop the input video to given dimensions.
7792
7793 It accepts the following parameters:
7794
7795 @table @option
7796 @item w, out_w
7797 The width of the output video. It defaults to @code{iw}.
7798 This expression is evaluated only once during the filter
7799 configuration, or when the @samp{w} or @samp{out_w} command is sent.
7800
7801 @item h, out_h
7802 The height of the output video. It defaults to @code{ih}.
7803 This expression is evaluated only once during the filter
7804 configuration, or when the @samp{h} or @samp{out_h} command is sent.
7805
7806 @item x
7807 The horizontal position, in the input video, of the left edge of the output
7808 video. It defaults to @code{(in_w-out_w)/2}.
7809 This expression is evaluated per-frame.
7810
7811 @item y
7812 The vertical position, in the input video, of the top edge of the output video.
7813 It defaults to @code{(in_h-out_h)/2}.
7814 This expression is evaluated per-frame.
7815
7816 @item keep_aspect
7817 If set to 1 will force the output display aspect ratio
7818 to be the same of the input, by changing the output sample aspect
7819 ratio. It defaults to 0.
7820
7821 @item exact
7822 Enable exact cropping. If enabled, subsampled videos will be cropped at exact
7823 width/height/x/y as specified and will not be rounded to nearest smaller value.
7824 It defaults to 0.
7825 @end table
7826
7827 The @var{out_w}, @var{out_h}, @var{x}, @var{y} parameters are
7828 expressions containing the following constants:
7829
7830 @table @option
7831 @item x
7832 @item y
7833 The computed values for @var{x} and @var{y}. They are evaluated for
7834 each new frame.
7835
7836 @item in_w
7837 @item in_h
7838 The input width and height.
7839
7840 @item iw
7841 @item ih
7842 These are the same as @var{in_w} and @var{in_h}.
7843
7844 @item out_w
7845 @item out_h
7846 The output (cropped) width and height.
7847
7848 @item ow
7849 @item oh
7850 These are the same as @var{out_w} and @var{out_h}.
7851
7852 @item a
7853 same as @var{iw} / @var{ih}
7854
7855 @item sar
7856 input sample aspect ratio
7857
7858 @item dar
7859 input display aspect ratio, it is the same as (@var{iw} / @var{ih}) * @var{sar}
7860
7861 @item hsub
7862 @item vsub
7863 horizontal and vertical chroma subsample values. For example for the
7864 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
7865
7866 @item n
7867 The number of the input frame, starting from 0.
7868
7869 @item pos
7870 the position in the file of the input frame, NAN if unknown
7871
7872 @item t
7873 The timestamp expressed in seconds. It's NAN if the input timestamp is unknown.
7874
7875 @end table
7876
7877 The expression for @var{out_w} may depend on the value of @var{out_h},
7878 and the expression for @var{out_h} may depend on @var{out_w}, but they
7879 cannot depend on @var{x} and @var{y}, as @var{x} and @var{y} are
7880 evaluated after @var{out_w} and @var{out_h}.
7881
7882 The @var{x} and @var{y} parameters specify the expressions for the
7883 position of the top-left corner of the output (non-cropped) area. They
7884 are evaluated for each frame. If the evaluated value is not valid, it
7885 is approximated to the nearest valid value.
7886
7887 The expression for @var{x} may depend on @var{y}, and the expression
7888 for @var{y} may depend on @var{x}.
7889
7890 @subsection Examples
7891
7892 @itemize
7893 @item
7894 Crop area with size 100x100 at position (12,34).
7895 @example
7896 crop=100:100:12:34
7897 @end example
7898
7899 Using named options, the example above becomes:
7900 @example
7901 crop=w=100:h=100:x=12:y=34
7902 @end example
7903
7904 @item
7905 Crop the central input area with size 100x100:
7906 @example
7907 crop=100:100
7908 @end example
7909
7910 @item
7911 Crop the central input area with size 2/3 of the input video:
7912 @example
7913 crop=2/3*in_w:2/3*in_h
7914 @end example
7915
7916 @item
7917 Crop the input video central square:
7918 @example
7919 crop=out_w=in_h
7920 crop=in_h
7921 @end example
7922
7923 @item
7924 Delimit the rectangle with the top-left corner placed at position
7925 100:100 and the right-bottom corner corresponding to the right-bottom
7926 corner of the input image.
7927 @example
7928 crop=in_w-100:in_h-100:100:100
7929 @end example
7930
7931 @item
7932 Crop 10 pixels from the left and right borders, and 20 pixels from
7933 the top and bottom borders
7934 @example
7935 crop=in_w-2*10:in_h-2*20
7936 @end example
7937
7938 @item
7939 Keep only the bottom right quarter of the input image:
7940 @example
7941 crop=in_w/2:in_h/2:in_w/2:in_h/2
7942 @end example
7943
7944 @item
7945 Crop height for getting Greek harmony:
7946 @example
7947 crop=in_w:1/PHI*in_w
7948 @end example
7949
7950 @item
7951 Apply trembling effect:
7952 @example
7953 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)
7954 @end example
7955
7956 @item
7957 Apply erratic camera effect depending on timestamp:
7958 @example
7959 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)"
7960 @end example
7961
7962 @item
7963 Set x depending on the value of y:
7964 @example
7965 crop=in_w/2:in_h/2:y:10+10*sin(n/10)
7966 @end example
7967 @end itemize
7968
7969 @subsection Commands
7970
7971 This filter supports the following commands:
7972 @table @option
7973 @item w, out_w
7974 @item h, out_h
7975 @item x
7976 @item y
7977 Set width/height of the output video and the horizontal/vertical position
7978 in the input video.
7979 The command accepts the same syntax of the corresponding option.
7980
7981 If the specified expression is not valid, it is kept at its current
7982 value.
7983 @end table
7984
7985 @section cropdetect
7986
7987 Auto-detect the crop size.
7988
7989 It calculates the necessary cropping parameters and prints the
7990 recommended parameters via the logging system. The detected dimensions
7991 correspond to the non-black area of the input video.
7992
7993 It accepts the following parameters:
7994
7995 @table @option
7996
7997 @item limit
7998 Set higher black value threshold, which can be optionally specified
7999 from nothing (0) to everything (255 for 8-bit based formats). An intensity
8000 value greater to the set value is considered non-black. It defaults to 24.
8001 You can also specify a value between 0.0 and 1.0 which will be scaled depending
8002 on the bitdepth of the pixel format.
8003
8004 @item round
8005 The value which the width/height should be divisible by. It defaults to
8006 16. The offset is automatically adjusted to center the video. Use 2 to
8007 get only even dimensions (needed for 4:2:2 video). 16 is best when
8008 encoding to most video codecs.
8009
8010 @item reset_count, reset
8011 Set the counter that determines after how many frames cropdetect will
8012 reset the previously detected largest video area and start over to
8013 detect the current optimal crop area. Default value is 0.
8014
8015 This can be useful when channel logos distort the video area. 0
8016 indicates 'never reset', and returns the largest area encountered during
8017 playback.
8018 @end table
8019
8020 @anchor{cue}
8021 @section cue
8022
8023 Delay video filtering until a given wallclock timestamp. The filter first
8024 passes on @option{preroll} amount of frames, then it buffers at most
8025 @option{buffer} amount of frames and waits for the cue. After reaching the cue
8026 it forwards the buffered frames and also any subsequent frames coming in its
8027 input.
8028
8029 The filter can be used synchronize the output of multiple ffmpeg processes for
8030 realtime output devices like decklink. By putting the delay in the filtering
8031 chain and pre-buffering frames the process can pass on data to output almost
8032 immediately after the target wallclock timestamp is reached.
8033
8034 Perfect frame accuracy cannot be guaranteed, but the result is good enough for
8035 some use cases.
8036
8037 @table @option
8038
8039 @item cue
8040 The cue timestamp expressed in a UNIX timestamp in microseconds. Default is 0.
8041
8042 @item preroll
8043 The duration of content to pass on as preroll expressed in seconds. Default is 0.
8044
8045 @item buffer
8046 The maximum duration of content to buffer before waiting for the cue expressed
8047 in seconds. Default is 0.
8048
8049 @end table
8050
8051 @anchor{curves}
8052 @section curves
8053
8054 Apply color adjustments using curves.
8055
8056 This filter is similar to the Adobe Photoshop and GIMP curves tools. Each
8057 component (red, green and blue) has its values defined by @var{N} key points
8058 tied from each other using a smooth curve. The x-axis represents the pixel
8059 values from the input frame, and the y-axis the new pixel values to be set for
8060 the output frame.
8061
8062 By default, a component curve is defined by the two points @var{(0;0)} and
8063 @var{(1;1)}. This creates a straight line where each original pixel value is
8064 "adjusted" to its own value, which means no change to the image.
8065
8066 The filter allows you to redefine these two points and add some more. A new
8067 curve (using a natural cubic spline interpolation) will be define to pass
8068 smoothly through all these new coordinates. The new defined points needs to be
8069 strictly increasing over the x-axis, and their @var{x} and @var{y} values must
8070 be in the @var{[0;1]} interval.  If the computed curves happened to go outside
8071 the vector spaces, the values will be clipped accordingly.
8072
8073 The filter accepts the following options:
8074
8075 @table @option
8076 @item preset
8077 Select one of the available color presets. This option can be used in addition
8078 to the @option{r}, @option{g}, @option{b} parameters; in this case, the later
8079 options takes priority on the preset values.
8080 Available presets are:
8081 @table @samp
8082 @item none
8083 @item color_negative
8084 @item cross_process
8085 @item darker
8086 @item increase_contrast
8087 @item lighter
8088 @item linear_contrast
8089 @item medium_contrast
8090 @item negative
8091 @item strong_contrast
8092 @item vintage
8093 @end table
8094 Default is @code{none}.
8095 @item master, m
8096 Set the master key points. These points will define a second pass mapping. It
8097 is sometimes called a "luminance" or "value" mapping. It can be used with
8098 @option{r}, @option{g}, @option{b} or @option{all} since it acts like a
8099 post-processing LUT.
8100 @item red, r
8101 Set the key points for the red component.
8102 @item green, g
8103 Set the key points for the green component.
8104 @item blue, b
8105 Set the key points for the blue component.
8106 @item all
8107 Set the key points for all components (not including master).
8108 Can be used in addition to the other key points component
8109 options. In this case, the unset component(s) will fallback on this
8110 @option{all} setting.
8111 @item psfile
8112 Specify a Photoshop curves file (@code{.acv}) to import the settings from.
8113 @item plot
8114 Save Gnuplot script of the curves in specified file.
8115 @end table
8116
8117 To avoid some filtergraph syntax conflicts, each key points list need to be
8118 defined using the following syntax: @code{x0/y0 x1/y1 x2/y2 ...}.
8119
8120 @subsection Examples
8121
8122 @itemize
8123 @item
8124 Increase slightly the middle level of blue:
8125 @example
8126 curves=blue='0/0 0.5/0.58 1/1'
8127 @end example
8128
8129 @item
8130 Vintage effect:
8131 @example
8132 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'
8133 @end example
8134 Here we obtain the following coordinates for each components:
8135 @table @var
8136 @item red
8137 @code{(0;0.11) (0.42;0.51) (1;0.95)}
8138 @item green
8139 @code{(0;0) (0.50;0.48) (1;1)}
8140 @item blue
8141 @code{(0;0.22) (0.49;0.44) (1;0.80)}
8142 @end table
8143
8144 @item
8145 The previous example can also be achieved with the associated built-in preset:
8146 @example
8147 curves=preset=vintage
8148 @end example
8149
8150 @item
8151 Or simply:
8152 @example
8153 curves=vintage
8154 @end example
8155
8156 @item
8157 Use a Photoshop preset and redefine the points of the green component:
8158 @example
8159 curves=psfile='MyCurvesPresets/purple.acv':green='0/0 0.45/0.53 1/1'
8160 @end example
8161
8162 @item
8163 Check out the curves of the @code{cross_process} profile using @command{ffmpeg}
8164 and @command{gnuplot}:
8165 @example
8166 ffmpeg -f lavfi -i color -vf curves=cross_process:plot=/tmp/curves.plt -frames:v 1 -f null -
8167 gnuplot -p /tmp/curves.plt
8168 @end example
8169 @end itemize
8170
8171 @section datascope
8172
8173 Video data analysis filter.
8174
8175 This filter shows hexadecimal pixel values of part of video.
8176
8177 The filter accepts the following options:
8178
8179 @table @option
8180 @item size, s
8181 Set output video size.
8182
8183 @item x
8184 Set x offset from where to pick pixels.
8185
8186 @item y
8187 Set y offset from where to pick pixels.
8188
8189 @item mode
8190 Set scope mode, can be one of the following:
8191 @table @samp
8192 @item mono
8193 Draw hexadecimal pixel values with white color on black background.
8194
8195 @item color
8196 Draw hexadecimal pixel values with input video pixel color on black
8197 background.
8198
8199 @item color2
8200 Draw hexadecimal pixel values on color background picked from input video,
8201 the text color is picked in such way so its always visible.
8202 @end table
8203
8204 @item axis
8205 Draw rows and columns numbers on left and top of video.
8206
8207 @item opacity
8208 Set background opacity.
8209 @end table
8210
8211 @section dctdnoiz
8212
8213 Denoise frames using 2D DCT (frequency domain filtering).
8214
8215 This filter is not designed for real time.
8216
8217 The filter accepts the following options:
8218
8219 @table @option
8220 @item sigma, s
8221 Set the noise sigma constant.
8222
8223 This @var{sigma} defines a hard threshold of @code{3 * sigma}; every DCT
8224 coefficient (absolute value) below this threshold with be dropped.
8225
8226 If you need a more advanced filtering, see @option{expr}.
8227
8228 Default is @code{0}.
8229
8230 @item overlap
8231 Set number overlapping pixels for each block. Since the filter can be slow, you
8232 may want to reduce this value, at the cost of a less effective filter and the
8233 risk of various artefacts.
8234
8235 If the overlapping value doesn't permit processing the whole input width or
8236 height, a warning will be displayed and according borders won't be denoised.
8237
8238 Default value is @var{blocksize}-1, which is the best possible setting.
8239
8240 @item expr, e
8241 Set the coefficient factor expression.
8242
8243 For each coefficient of a DCT block, this expression will be evaluated as a
8244 multiplier value for the coefficient.
8245
8246 If this is option is set, the @option{sigma} option will be ignored.
8247
8248 The absolute value of the coefficient can be accessed through the @var{c}
8249 variable.
8250
8251 @item n
8252 Set the @var{blocksize} using the number of bits. @code{1<<@var{n}} defines the
8253 @var{blocksize}, which is the width and height of the processed blocks.
8254
8255 The default value is @var{3} (8x8) and can be raised to @var{4} for a
8256 @var{blocksize} of 16x16. Note that changing this setting has huge consequences
8257 on the speed processing. Also, a larger block size does not necessarily means a
8258 better de-noising.
8259 @end table
8260
8261 @subsection Examples
8262
8263 Apply a denoise with a @option{sigma} of @code{4.5}:
8264 @example
8265 dctdnoiz=4.5
8266 @end example
8267
8268 The same operation can be achieved using the expression system:
8269 @example
8270 dctdnoiz=e='gte(c, 4.5*3)'
8271 @end example
8272
8273 Violent denoise using a block size of @code{16x16}:
8274 @example
8275 dctdnoiz=15:n=4
8276 @end example
8277
8278 @section deband
8279
8280 Remove banding artifacts from input video.
8281 It works by replacing banded pixels with average value of referenced pixels.
8282
8283 The filter accepts the following options:
8284
8285 @table @option
8286 @item 1thr
8287 @item 2thr
8288 @item 3thr
8289 @item 4thr
8290 Set banding detection threshold for each plane. Default is 0.02.
8291 Valid range is 0.00003 to 0.5.
8292 If difference between current pixel and reference pixel is less than threshold,
8293 it will be considered as banded.
8294
8295 @item range, r
8296 Banding detection range in pixels. Default is 16. If positive, random number
8297 in range 0 to set value will be used. If negative, exact absolute value
8298 will be used.
8299 The range defines square of four pixels around current pixel.
8300
8301 @item direction, d
8302 Set direction in radians from which four pixel will be compared. If positive,
8303 random direction from 0 to set direction will be picked. If negative, exact of
8304 absolute value will be picked. For example direction 0, -PI or -2*PI radians
8305 will pick only pixels on same row and -PI/2 will pick only pixels on same
8306 column.
8307
8308 @item blur, b
8309 If enabled, current pixel is compared with average value of all four
8310 surrounding pixels. The default is enabled. If disabled current pixel is
8311 compared with all four surrounding pixels. The pixel is considered banded
8312 if only all four differences with surrounding pixels are less than threshold.
8313
8314 @item coupling, c
8315 If enabled, current pixel is changed if and only if all pixel components are banded,
8316 e.g. banding detection threshold is triggered for all color components.
8317 The default is disabled.
8318 @end table
8319
8320 @section deblock
8321
8322 Remove blocking artifacts from input video.
8323
8324 The filter accepts the following options:
8325
8326 @table @option
8327 @item filter
8328 Set filter type, can be @var{weak} or @var{strong}. Default is @var{strong}.
8329 This controls what kind of deblocking is applied.
8330
8331 @item block
8332 Set size of block, allowed range is from 4 to 512. Default is @var{8}.
8333
8334 @item alpha
8335 @item beta
8336 @item gamma
8337 @item delta
8338 Set blocking detection thresholds. Allowed range is 0 to 1.
8339 Defaults are: @var{0.098} for @var{alpha} and @var{0.05} for the rest.
8340 Using higher threshold gives more deblocking strength.
8341 Setting @var{alpha} controls threshold detection at exact edge of block.
8342 Remaining options controls threshold detection near the edge. Each one for
8343 below/above or left/right. Setting any of those to @var{0} disables
8344 deblocking.
8345
8346 @item planes
8347 Set planes to filter. Default is to filter all available planes.
8348 @end table
8349
8350 @subsection Examples
8351
8352 @itemize
8353 @item
8354 Deblock using weak filter and block size of 4 pixels.
8355 @example
8356 deblock=filter=weak:block=4
8357 @end example
8358
8359 @item
8360 Deblock using strong filter, block size of 4 pixels and custom thresholds for
8361 deblocking more edges.
8362 @example
8363 deblock=filter=strong:block=4:alpha=0.12:beta=0.07:gamma=0.06:delta=0.05
8364 @end example
8365
8366 @item
8367 Similar as above, but filter only first plane.
8368 @example
8369 deblock=filter=strong:block=4:alpha=0.12:beta=0.07:gamma=0.06:delta=0.05:planes=1
8370 @end example
8371
8372 @item
8373 Similar as above, but filter only second and third plane.
8374 @example
8375 deblock=filter=strong:block=4:alpha=0.12:beta=0.07:gamma=0.06:delta=0.05:planes=6
8376 @end example
8377 @end itemize
8378
8379 @anchor{decimate}
8380 @section decimate
8381
8382 Drop duplicated frames at regular intervals.
8383
8384 The filter accepts the following options:
8385
8386 @table @option
8387 @item cycle
8388 Set the number of frames from which one will be dropped. Setting this to
8389 @var{N} means one frame in every batch of @var{N} frames will be dropped.
8390 Default is @code{5}.
8391
8392 @item dupthresh
8393 Set the threshold for duplicate detection. If the difference metric for a frame
8394 is less than or equal to this value, then it is declared as duplicate. Default
8395 is @code{1.1}
8396
8397 @item scthresh
8398 Set scene change threshold. Default is @code{15}.
8399
8400 @item blockx
8401 @item blocky
8402 Set the size of the x and y-axis blocks used during metric calculations.
8403 Larger blocks give better noise suppression, but also give worse detection of
8404 small movements. Must be a power of two. Default is @code{32}.
8405
8406 @item ppsrc
8407 Mark main input as a pre-processed input and activate clean source input
8408 stream. This allows the input to be pre-processed with various filters to help
8409 the metrics calculation while keeping the frame selection lossless. When set to
8410 @code{1}, the first stream is for the pre-processed input, and the second
8411 stream is the clean source from where the kept frames are chosen. Default is
8412 @code{0}.
8413
8414 @item chroma
8415 Set whether or not chroma is considered in the metric calculations. Default is
8416 @code{1}.
8417 @end table
8418
8419 @section deconvolve
8420
8421 Apply 2D deconvolution of video stream in frequency domain using second stream
8422 as impulse.
8423
8424 The filter accepts the following options:
8425
8426 @table @option
8427 @item planes
8428 Set which planes to process.
8429
8430 @item impulse
8431 Set which impulse video frames will be processed, can be @var{first}
8432 or @var{all}. Default is @var{all}.
8433
8434 @item noise
8435 Set noise when doing divisions. Default is @var{0.0000001}. Useful when width
8436 and height are not same and not power of 2 or if stream prior to convolving
8437 had noise.
8438 @end table
8439
8440 The @code{deconvolve} filter also supports the @ref{framesync} options.
8441
8442 @section dedot
8443
8444 Reduce cross-luminance (dot-crawl) and cross-color (rainbows) from video.
8445
8446 It accepts the following options:
8447
8448 @table @option
8449 @item m
8450 Set mode of operation. Can be combination of @var{dotcrawl} for cross-luminance reduction and/or
8451 @var{rainbows} for cross-color reduction.
8452
8453 @item lt
8454 Set spatial luma threshold. Lower values increases reduction of cross-luminance.
8455
8456 @item tl
8457 Set tolerance for temporal luma. Higher values increases reduction of cross-luminance.
8458
8459 @item tc
8460 Set tolerance for chroma temporal variation. Higher values increases reduction of cross-color.
8461
8462 @item ct
8463 Set temporal chroma threshold. Lower values increases reduction of cross-color.
8464 @end table
8465
8466 @section deflate
8467
8468 Apply deflate effect to the video.
8469
8470 This filter replaces the pixel by the local(3x3) average by taking into account
8471 only values lower than the pixel.
8472
8473 It accepts the following options:
8474
8475 @table @option
8476 @item threshold0
8477 @item threshold1
8478 @item threshold2
8479 @item threshold3
8480 Limit the maximum change for each plane, default is 65535.
8481 If 0, plane will remain unchanged.
8482 @end table
8483
8484 @section deflicker
8485
8486 Remove temporal frame luminance variations.
8487
8488 It accepts the following options:
8489
8490 @table @option
8491 @item size, s
8492 Set moving-average filter size in frames. Default is 5. Allowed range is 2 - 129.
8493
8494 @item mode, m
8495 Set averaging mode to smooth temporal luminance variations.
8496
8497 Available values are:
8498 @table @samp
8499 @item am
8500 Arithmetic mean
8501
8502 @item gm
8503 Geometric mean
8504
8505 @item hm
8506 Harmonic mean
8507
8508 @item qm
8509 Quadratic mean
8510
8511 @item cm
8512 Cubic mean
8513
8514 @item pm
8515 Power mean
8516
8517 @item median
8518 Median
8519 @end table
8520
8521 @item bypass
8522 Do not actually modify frame. Useful when one only wants metadata.
8523 @end table
8524
8525 @section dejudder
8526
8527 Remove judder produced by partially interlaced telecined content.
8528
8529 Judder can be introduced, for instance, by @ref{pullup} filter. If the original
8530 source was partially telecined content then the output of @code{pullup,dejudder}
8531 will have a variable frame rate. May change the recorded frame rate of the
8532 container. Aside from that change, this filter will not affect constant frame
8533 rate video.
8534
8535 The option available in this filter is:
8536 @table @option
8537
8538 @item cycle
8539 Specify the length of the window over which the judder repeats.
8540
8541 Accepts any integer greater than 1. Useful values are:
8542 @table @samp
8543
8544 @item 4
8545 If the original was telecined from 24 to 30 fps (Film to NTSC).
8546
8547 @item 5
8548 If the original was telecined from 25 to 30 fps (PAL to NTSC).
8549
8550 @item 20
8551 If a mixture of the two.
8552 @end table
8553
8554 The default is @samp{4}.
8555 @end table
8556
8557 @section delogo
8558
8559 Suppress a TV station logo by a simple interpolation of the surrounding
8560 pixels. Just set a rectangle covering the logo and watch it disappear
8561 (and sometimes something even uglier appear - your mileage may vary).
8562
8563 It accepts the following parameters:
8564 @table @option
8565
8566 @item x
8567 @item y
8568 Specify the top left corner coordinates of the logo. They must be
8569 specified.
8570
8571 @item w
8572 @item h
8573 Specify the width and height of the logo to clear. They must be
8574 specified.
8575
8576 @item band, t
8577 Specify the thickness of the fuzzy edge of the rectangle (added to
8578 @var{w} and @var{h}). The default value is 1. This option is
8579 deprecated, setting higher values should no longer be necessary and
8580 is not recommended.
8581
8582 @item show
8583 When set to 1, a green rectangle is drawn on the screen to simplify
8584 finding the right @var{x}, @var{y}, @var{w}, and @var{h} parameters.
8585 The default value is 0.
8586
8587 The rectangle is drawn on the outermost pixels which will be (partly)
8588 replaced with interpolated values. The values of the next pixels
8589 immediately outside this rectangle in each direction will be used to
8590 compute the interpolated pixel values inside the rectangle.
8591
8592 @end table
8593
8594 @subsection Examples
8595
8596 @itemize
8597 @item
8598 Set a rectangle covering the area with top left corner coordinates 0,0
8599 and size 100x77, and a band of size 10:
8600 @example
8601 delogo=x=0:y=0:w=100:h=77:band=10
8602 @end example
8603
8604 @end itemize
8605
8606 @section derain
8607
8608 Remove the rain in the input image/video by applying the derain methods based on
8609 convolutional neural networks. Supported models:
8610
8611 @itemize
8612 @item
8613 Recurrent Squeeze-and-Excitation Context Aggregation Net (RESCAN).
8614 See @url{http://openaccess.thecvf.com/content_ECCV_2018/papers/Xia_Li_Recurrent_Squeeze-and-Excitation_Context_ECCV_2018_paper.pdf}.
8615 @end itemize
8616
8617 Training as well as model generation scripts are provided in
8618 the repository at @url{https://github.com/XueweiMeng/derain_filter.git}.
8619
8620 Native model files (.model) can be generated from TensorFlow model
8621 files (.pb) by using tools/python/convert.py
8622
8623 The filter accepts the following options:
8624
8625 @table @option
8626 @item filter_type
8627 Specify which filter to use. This option accepts the following values:
8628
8629 @table @samp
8630 @item derain
8631 Derain filter. To conduct derain filter, you need to use a derain model.
8632
8633 @item dehaze
8634 Dehaze filter. To conduct dehaze filter, you need to use a dehaze model.
8635 @end table
8636 Default value is @samp{derain}.
8637
8638 @item dnn_backend
8639 Specify which DNN backend to use for model loading and execution. This option accepts
8640 the following values:
8641
8642 @table @samp
8643 @item native
8644 Native implementation of DNN loading and execution.
8645
8646 @item tensorflow
8647 TensorFlow backend. To enable this backend you
8648 need to install the TensorFlow for C library (see
8649 @url{https://www.tensorflow.org/install/install_c}) and configure FFmpeg with
8650 @code{--enable-libtensorflow}
8651 @end table
8652 Default value is @samp{native}.
8653
8654 @item model
8655 Set path to model file specifying network architecture and its parameters.
8656 Note that different backends use different file formats. TensorFlow and native
8657 backend can load files for only its format.
8658 @end table
8659
8660 @section deshake
8661
8662 Attempt to fix small changes in horizontal and/or vertical shift. This
8663 filter helps remove camera shake from hand-holding a camera, bumping a
8664 tripod, moving on a vehicle, etc.
8665
8666 The filter accepts the following options:
8667
8668 @table @option
8669
8670 @item x
8671 @item y
8672 @item w
8673 @item h
8674 Specify a rectangular area where to limit the search for motion
8675 vectors.
8676 If desired the search for motion vectors can be limited to a
8677 rectangular area of the frame defined by its top left corner, width
8678 and height. These parameters have the same meaning as the drawbox
8679 filter which can be used to visualise the position of the bounding
8680 box.
8681
8682 This is useful when simultaneous movement of subjects within the frame
8683 might be confused for camera motion by the motion vector search.
8684
8685 If any or all of @var{x}, @var{y}, @var{w} and @var{h} are set to -1
8686 then the full frame is used. This allows later options to be set
8687 without specifying the bounding box for the motion vector search.
8688
8689 Default - search the whole frame.
8690
8691 @item rx
8692 @item ry
8693 Specify the maximum extent of movement in x and y directions in the
8694 range 0-64 pixels. Default 16.
8695
8696 @item edge
8697 Specify how to generate pixels to fill blanks at the edge of the
8698 frame. Available values are:
8699 @table @samp
8700 @item blank, 0
8701 Fill zeroes at blank locations
8702 @item original, 1
8703 Original image at blank locations
8704 @item clamp, 2
8705 Extruded edge value at blank locations
8706 @item mirror, 3
8707 Mirrored edge at blank locations
8708 @end table
8709 Default value is @samp{mirror}.
8710
8711 @item blocksize
8712 Specify the blocksize to use for motion search. Range 4-128 pixels,
8713 default 8.
8714
8715 @item contrast
8716 Specify the contrast threshold for blocks. Only blocks with more than
8717 the specified contrast (difference between darkest and lightest
8718 pixels) will be considered. Range 1-255, default 125.
8719
8720 @item search
8721 Specify the search strategy. Available values are:
8722 @table @samp
8723 @item exhaustive, 0
8724 Set exhaustive search
8725 @item less, 1
8726 Set less exhaustive search.
8727 @end table
8728 Default value is @samp{exhaustive}.
8729
8730 @item filename
8731 If set then a detailed log of the motion search is written to the
8732 specified file.
8733
8734 @end table
8735
8736 @section despill
8737
8738 Remove unwanted contamination of foreground colors, caused by reflected color of
8739 greenscreen or bluescreen.
8740
8741 This filter accepts the following options:
8742
8743 @table @option
8744 @item type
8745 Set what type of despill to use.
8746
8747 @item mix
8748 Set how spillmap will be generated.
8749
8750 @item expand
8751 Set how much to get rid of still remaining spill.
8752
8753 @item red
8754 Controls amount of red in spill area.
8755
8756 @item green
8757 Controls amount of green in spill area.
8758 Should be -1 for greenscreen.
8759
8760 @item blue
8761 Controls amount of blue in spill area.
8762 Should be -1 for bluescreen.
8763
8764 @item brightness
8765 Controls brightness of spill area, preserving colors.
8766
8767 @item alpha
8768 Modify alpha from generated spillmap.
8769 @end table
8770
8771 @section detelecine
8772
8773 Apply an exact inverse of the telecine operation. It requires a predefined
8774 pattern specified using the pattern option which must be the same as that passed
8775 to the telecine filter.
8776
8777 This filter accepts the following options:
8778
8779 @table @option
8780 @item first_field
8781 @table @samp
8782 @item top, t
8783 top field first
8784 @item bottom, b
8785 bottom field first
8786 The default value is @code{top}.
8787 @end table
8788
8789 @item pattern
8790 A string of numbers representing the pulldown pattern you wish to apply.
8791 The default value is @code{23}.
8792
8793 @item start_frame
8794 A number representing position of the first frame with respect to the telecine
8795 pattern. This is to be used if the stream is cut. The default value is @code{0}.
8796 @end table
8797
8798 @section dilation
8799
8800 Apply dilation effect to the video.
8801
8802 This filter replaces the pixel by the local(3x3) maximum.
8803
8804 It accepts the following options:
8805
8806 @table @option
8807 @item threshold0
8808 @item threshold1
8809 @item threshold2
8810 @item threshold3
8811 Limit the maximum change for each plane, default is 65535.
8812 If 0, plane will remain unchanged.
8813
8814 @item coordinates
8815 Flag which specifies the pixel to refer to. Default is 255 i.e. all eight
8816 pixels are used.
8817
8818 Flags to local 3x3 coordinates maps like this:
8819
8820     1 2 3
8821     4   5
8822     6 7 8
8823 @end table
8824
8825 @section displace
8826
8827 Displace pixels as indicated by second and third input stream.
8828
8829 It takes three input streams and outputs one stream, the first input is the
8830 source, and second and third input are displacement maps.
8831
8832 The second input specifies how much to displace pixels along the
8833 x-axis, while the third input specifies how much to displace pixels
8834 along the y-axis.
8835 If one of displacement map streams terminates, last frame from that
8836 displacement map will be used.
8837
8838 Note that once generated, displacements maps can be reused over and over again.
8839
8840 A description of the accepted options follows.
8841
8842 @table @option
8843 @item edge
8844 Set displace behavior for pixels that are out of range.
8845
8846 Available values are:
8847 @table @samp
8848 @item blank
8849 Missing pixels are replaced by black pixels.
8850
8851 @item smear
8852 Adjacent pixels will spread out to replace missing pixels.
8853
8854 @item wrap
8855 Out of range pixels are wrapped so they point to pixels of other side.
8856
8857 @item mirror
8858 Out of range pixels will be replaced with mirrored pixels.
8859 @end table
8860 Default is @samp{smear}.
8861
8862 @end table
8863
8864 @subsection Examples
8865
8866 @itemize
8867 @item
8868 Add ripple effect to rgb input of video size hd720:
8869 @example
8870 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
8871 @end example
8872
8873 @item
8874 Add wave effect to rgb input of video size hd720:
8875 @example
8876 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
8877 @end example
8878 @end itemize
8879
8880 @section drawbox
8881
8882 Draw a colored box on the input image.
8883
8884 It accepts the following parameters:
8885
8886 @table @option
8887 @item x
8888 @item y
8889 The expressions which specify the top left corner coordinates of the box. It defaults to 0.
8890
8891 @item width, w
8892 @item height, h
8893 The expressions which specify the width and height of the box; if 0 they are interpreted as
8894 the input width and height. It defaults to 0.
8895
8896 @item color, c
8897 Specify the color of the box to write. For the general syntax of this option,
8898 check the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}. If the special
8899 value @code{invert} is used, the box edge color is the same as the
8900 video with inverted luma.
8901
8902 @item thickness, t
8903 The expression which sets the thickness of the box edge.
8904 A value of @code{fill} will create a filled box. Default value is @code{3}.
8905
8906 See below for the list of accepted constants.
8907
8908 @item replace
8909 Applicable if the input has alpha. With value @code{1}, the pixels of the painted box
8910 will overwrite the video's color and alpha pixels.
8911 Default is @code{0}, which composites the box onto the input, leaving the video's alpha intact.
8912 @end table
8913
8914 The parameters for @var{x}, @var{y}, @var{w} and @var{h} and @var{t} are expressions containing the
8915 following constants:
8916
8917 @table @option
8918 @item dar
8919 The input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}.
8920
8921 @item hsub
8922 @item vsub
8923 horizontal and vertical chroma subsample values. For example for the
8924 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
8925
8926 @item in_h, ih
8927 @item in_w, iw
8928 The input width and height.
8929
8930 @item sar
8931 The input sample aspect ratio.
8932
8933 @item x
8934 @item y
8935 The x and y offset coordinates where the box is drawn.
8936
8937 @item w
8938 @item h
8939 The width and height of the drawn box.
8940
8941 @item t
8942 The thickness of the drawn box.
8943
8944 These constants allow the @var{x}, @var{y}, @var{w}, @var{h} and @var{t} expressions to refer to
8945 each other, so you may for example specify @code{y=x/dar} or @code{h=w/dar}.
8946
8947 @end table
8948
8949 @subsection Examples
8950
8951 @itemize
8952 @item
8953 Draw a black box around the edge of the input image:
8954 @example
8955 drawbox
8956 @end example
8957
8958 @item
8959 Draw a box with color red and an opacity of 50%:
8960 @example
8961 drawbox=10:20:200:60:red@@0.5
8962 @end example
8963
8964 The previous example can be specified as:
8965 @example
8966 drawbox=x=10:y=20:w=200:h=60:color=red@@0.5
8967 @end example
8968
8969 @item
8970 Fill the box with pink color:
8971 @example
8972 drawbox=x=10:y=10:w=100:h=100:color=pink@@0.5:t=fill
8973 @end example
8974
8975 @item
8976 Draw a 2-pixel red 2.40:1 mask:
8977 @example
8978 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
8979 @end example
8980 @end itemize
8981
8982 @subsection Commands
8983 This filter supports same commands as options.
8984 The command accepts the same syntax of the corresponding option.
8985
8986 If the specified expression is not valid, it is kept at its current
8987 value.
8988
8989 @section drawgrid
8990
8991 Draw a grid on the input image.
8992
8993 It accepts the following parameters:
8994
8995 @table @option
8996 @item x
8997 @item y
8998 The expressions which specify the coordinates of some point of grid intersection (meant to configure offset). Both default to 0.
8999
9000 @item width, w
9001 @item height, h
9002 The expressions which specify the width and height of the grid cell, if 0 they are interpreted as the
9003 input width and height, respectively, minus @code{thickness}, so image gets
9004 framed. Default to 0.
9005
9006 @item color, c
9007 Specify the color of the grid. For the general syntax of this option,
9008 check the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}. If the special
9009 value @code{invert} is used, the grid color is the same as the
9010 video with inverted luma.
9011
9012 @item thickness, t
9013 The expression which sets the thickness of the grid line. Default value is @code{1}.
9014
9015 See below for the list of accepted constants.
9016
9017 @item replace
9018 Applicable if the input has alpha. With @code{1} the pixels of the painted grid
9019 will overwrite the video's color and alpha pixels.
9020 Default is @code{0}, which composites the grid onto the input, leaving the video's alpha intact.
9021 @end table
9022
9023 The parameters for @var{x}, @var{y}, @var{w} and @var{h} and @var{t} are expressions containing the
9024 following constants:
9025
9026 @table @option
9027 @item dar
9028 The input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}.
9029
9030 @item hsub
9031 @item vsub
9032 horizontal and vertical chroma subsample values. For example for the
9033 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
9034
9035 @item in_h, ih
9036 @item in_w, iw
9037 The input grid cell width and height.
9038
9039 @item sar
9040 The input sample aspect ratio.
9041
9042 @item x
9043 @item y
9044 The x and y coordinates of some point of grid intersection (meant to configure offset).
9045
9046 @item w
9047 @item h
9048 The width and height of the drawn cell.
9049
9050 @item t
9051 The thickness of the drawn cell.
9052
9053 These constants allow the @var{x}, @var{y}, @var{w}, @var{h} and @var{t} expressions to refer to
9054 each other, so you may for example specify @code{y=x/dar} or @code{h=w/dar}.
9055
9056 @end table
9057
9058 @subsection Examples
9059
9060 @itemize
9061 @item
9062 Draw a grid with cell 100x100 pixels, thickness 2 pixels, with color red and an opacity of 50%:
9063 @example
9064 drawgrid=width=100:height=100:thickness=2:color=red@@0.5
9065 @end example
9066
9067 @item
9068 Draw a white 3x3 grid with an opacity of 50%:
9069 @example
9070 drawgrid=w=iw/3:h=ih/3:t=2:c=white@@0.5
9071 @end example
9072 @end itemize
9073
9074 @subsection Commands
9075 This filter supports same commands as options.
9076 The command accepts the same syntax of the corresponding option.
9077
9078 If the specified expression is not valid, it is kept at its current
9079 value.
9080
9081 @anchor{drawtext}
9082 @section drawtext
9083
9084 Draw a text string or text from a specified file on top of a video, using the
9085 libfreetype library.
9086
9087 To enable compilation of this filter, you need to configure FFmpeg with
9088 @code{--enable-libfreetype}.
9089 To enable default font fallback and the @var{font} option you need to
9090 configure FFmpeg with @code{--enable-libfontconfig}.
9091 To enable the @var{text_shaping} option, you need to configure FFmpeg with
9092 @code{--enable-libfribidi}.
9093
9094 @subsection Syntax
9095
9096 It accepts the following parameters:
9097
9098 @table @option
9099
9100 @item box
9101 Used to draw a box around text using the background color.
9102 The value must be either 1 (enable) or 0 (disable).
9103 The default value of @var{box} is 0.
9104
9105 @item boxborderw
9106 Set the width of the border to be drawn around the box using @var{boxcolor}.
9107 The default value of @var{boxborderw} is 0.
9108
9109 @item boxcolor
9110 The color to be used for drawing box around text. For the syntax of this
9111 option, check the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
9112
9113 The default value of @var{boxcolor} is "white".
9114
9115 @item line_spacing
9116 Set the line spacing in pixels of the border to be drawn around the box using @var{box}.
9117 The default value of @var{line_spacing} is 0.
9118
9119 @item borderw
9120 Set the width of the border to be drawn around the text using @var{bordercolor}.
9121 The default value of @var{borderw} is 0.
9122
9123 @item bordercolor
9124 Set the color to be used for drawing border around text. For the syntax of this
9125 option, check the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
9126
9127 The default value of @var{bordercolor} is "black".
9128
9129 @item expansion
9130 Select how the @var{text} is expanded. Can be either @code{none},
9131 @code{strftime} (deprecated) or
9132 @code{normal} (default). See the @ref{drawtext_expansion, Text expansion} section
9133 below for details.
9134
9135 @item basetime
9136 Set a start time for the count. Value is in microseconds. Only applied
9137 in the deprecated strftime expansion mode. To emulate in normal expansion
9138 mode use the @code{pts} function, supplying the start time (in seconds)
9139 as the second argument.
9140
9141 @item fix_bounds
9142 If true, check and fix text coords to avoid clipping.
9143
9144 @item fontcolor
9145 The color to be used for drawing fonts. For the syntax of this option, check
9146 the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
9147
9148 The default value of @var{fontcolor} is "black".
9149
9150 @item fontcolor_expr
9151 String which is expanded the same way as @var{text} to obtain dynamic
9152 @var{fontcolor} value. By default this option has empty value and is not
9153 processed. When this option is set, it overrides @var{fontcolor} option.
9154
9155 @item font
9156 The font family to be used for drawing text. By default Sans.
9157
9158 @item fontfile
9159 The font file to be used for drawing text. The path must be included.
9160 This parameter is mandatory if the fontconfig support is disabled.
9161
9162 @item alpha
9163 Draw the text applying alpha blending. The value can
9164 be a number between 0.0 and 1.0.
9165 The expression accepts the same variables @var{x, y} as well.
9166 The default value is 1.
9167 Please see @var{fontcolor_expr}.
9168
9169 @item fontsize
9170 The font size to be used for drawing text.
9171 The default value of @var{fontsize} is 16.
9172
9173 @item text_shaping
9174 If set to 1, attempt to shape the text (for example, reverse the order of
9175 right-to-left text and join Arabic characters) before drawing it.
9176 Otherwise, just draw the text exactly as given.
9177 By default 1 (if supported).
9178
9179 @item ft_load_flags
9180 The flags to be used for loading the fonts.
9181
9182 The flags map the corresponding flags supported by libfreetype, and are
9183 a combination of the following values:
9184 @table @var
9185 @item default
9186 @item no_scale
9187 @item no_hinting
9188 @item render
9189 @item no_bitmap
9190 @item vertical_layout
9191 @item force_autohint
9192 @item crop_bitmap
9193 @item pedantic
9194 @item ignore_global_advance_width
9195 @item no_recurse
9196 @item ignore_transform
9197 @item monochrome
9198 @item linear_design
9199 @item no_autohint
9200 @end table
9201
9202 Default value is "default".
9203
9204 For more information consult the documentation for the FT_LOAD_*
9205 libfreetype flags.
9206
9207 @item shadowcolor
9208 The color to be used for drawing a shadow behind the drawn text. For the
9209 syntax of this option, check the @ref{color syntax,,"Color" section in the
9210 ffmpeg-utils manual,ffmpeg-utils}.
9211
9212 The default value of @var{shadowcolor} is "black".
9213
9214 @item shadowx
9215 @item shadowy
9216 The x and y offsets for the text shadow position with respect to the
9217 position of the text. They can be either positive or negative
9218 values. The default value for both is "0".
9219
9220 @item start_number
9221 The starting frame number for the n/frame_num variable. The default value
9222 is "0".
9223
9224 @item tabsize
9225 The size in number of spaces to use for rendering the tab.
9226 Default value is 4.
9227
9228 @item timecode
9229 Set the initial timecode representation in "hh:mm:ss[:;.]ff"
9230 format. It can be used with or without text parameter. @var{timecode_rate}
9231 option must be specified.
9232
9233 @item timecode_rate, rate, r
9234 Set the timecode frame rate (timecode only). Value will be rounded to nearest
9235 integer. Minimum value is "1".
9236 Drop-frame timecode is supported for frame rates 30 & 60.
9237
9238 @item tc24hmax
9239 If set to 1, the output of the timecode option will wrap around at 24 hours.
9240 Default is 0 (disabled).
9241
9242 @item text
9243 The text string to be drawn. The text must be a sequence of UTF-8
9244 encoded characters.
9245 This parameter is mandatory if no file is specified with the parameter
9246 @var{textfile}.
9247
9248 @item textfile
9249 A text file containing text to be drawn. The text must be a sequence
9250 of UTF-8 encoded characters.
9251
9252 This parameter is mandatory if no text string is specified with the
9253 parameter @var{text}.
9254
9255 If both @var{text} and @var{textfile} are specified, an error is thrown.
9256
9257 @item reload
9258 If set to 1, the @var{textfile} will be reloaded before each frame.
9259 Be sure to update it atomically, or it may be read partially, or even fail.
9260
9261 @item x
9262 @item y
9263 The expressions which specify the offsets where text will be drawn
9264 within the video frame. They are relative to the top/left border of the
9265 output image.
9266
9267 The default value of @var{x} and @var{y} is "0".
9268
9269 See below for the list of accepted constants and functions.
9270 @end table
9271
9272 The parameters for @var{x} and @var{y} are expressions containing the
9273 following constants and functions:
9274
9275 @table @option
9276 @item dar
9277 input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}
9278
9279 @item hsub
9280 @item vsub
9281 horizontal and vertical chroma subsample values. For example for the
9282 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
9283
9284 @item line_h, lh
9285 the height of each text line
9286
9287 @item main_h, h, H
9288 the input height
9289
9290 @item main_w, w, W
9291 the input width
9292
9293 @item max_glyph_a, ascent
9294 the maximum distance from the baseline to the highest/upper grid
9295 coordinate used to place a glyph outline point, for all the rendered
9296 glyphs.
9297 It is a positive value, due to the grid's orientation with the Y axis
9298 upwards.
9299
9300 @item max_glyph_d, descent
9301 the maximum distance from the baseline to the lowest grid coordinate
9302 used to place a glyph outline point, for all the rendered glyphs.
9303 This is a negative value, due to the grid's orientation, with the Y axis
9304 upwards.
9305
9306 @item max_glyph_h
9307 maximum glyph height, that is the maximum height for all the glyphs
9308 contained in the rendered text, it is equivalent to @var{ascent} -
9309 @var{descent}.
9310
9311 @item max_glyph_w
9312 maximum glyph width, that is the maximum width for all the glyphs
9313 contained in the rendered text
9314
9315 @item n
9316 the number of input frame, starting from 0
9317
9318 @item rand(min, max)
9319 return a random number included between @var{min} and @var{max}
9320
9321 @item sar
9322 The input sample aspect ratio.
9323
9324 @item t
9325 timestamp expressed in seconds, NAN if the input timestamp is unknown
9326
9327 @item text_h, th
9328 the height of the rendered text
9329
9330 @item text_w, tw
9331 the width of the rendered text
9332
9333 @item x
9334 @item y
9335 the x and y offset coordinates where the text is drawn.
9336
9337 These parameters allow the @var{x} and @var{y} expressions to refer
9338 to each other, so you can for example specify @code{y=x/dar}.
9339
9340 @item pict_type
9341 A one character description of the current frame's picture type.
9342
9343 @item pkt_pos
9344 The current packet's position in the input file or stream
9345 (in bytes, from the start of the input). A value of -1 indicates
9346 this info is not available.
9347
9348 @item pkt_duration
9349 The current packet's duration, in seconds.
9350
9351 @item pkt_size
9352 The current packet's size (in bytes).
9353 @end table
9354
9355 @anchor{drawtext_expansion}
9356 @subsection Text expansion
9357
9358 If @option{expansion} is set to @code{strftime},
9359 the filter recognizes strftime() sequences in the provided text and
9360 expands them accordingly. Check the documentation of strftime(). This
9361 feature is deprecated.
9362
9363 If @option{expansion} is set to @code{none}, the text is printed verbatim.
9364
9365 If @option{expansion} is set to @code{normal} (which is the default),
9366 the following expansion mechanism is used.
9367
9368 The backslash character @samp{\}, followed by any character, always expands to
9369 the second character.
9370
9371 Sequences of the form @code{%@{...@}} are expanded. The text between the
9372 braces is a function name, possibly followed by arguments separated by ':'.
9373 If the arguments contain special characters or delimiters (':' or '@}'),
9374 they should be escaped.
9375
9376 Note that they probably must also be escaped as the value for the
9377 @option{text} option in the filter argument string and as the filter
9378 argument in the filtergraph description, and possibly also for the shell,
9379 that makes up to four levels of escaping; using a text file avoids these
9380 problems.
9381
9382 The following functions are available:
9383
9384 @table @command
9385
9386 @item expr, e
9387 The expression evaluation result.
9388
9389 It must take one argument specifying the expression to be evaluated,
9390 which accepts the same constants and functions as the @var{x} and
9391 @var{y} values. Note that not all constants should be used, for
9392 example the text size is not known when evaluating the expression, so
9393 the constants @var{text_w} and @var{text_h} will have an undefined
9394 value.
9395
9396 @item expr_int_format, eif
9397 Evaluate the expression's value and output as formatted integer.
9398
9399 The first argument is the expression to be evaluated, just as for the @var{expr} function.
9400 The second argument specifies the output format. Allowed values are @samp{x},
9401 @samp{X}, @samp{d} and @samp{u}. They are treated exactly as in the
9402 @code{printf} function.
9403 The third parameter is optional and sets the number of positions taken by the output.
9404 It can be used to add padding with zeros from the left.
9405
9406 @item gmtime
9407 The time at which the filter is running, expressed in UTC.
9408 It can accept an argument: a strftime() format string.
9409
9410 @item localtime
9411 The time at which the filter is running, expressed in the local time zone.
9412 It can accept an argument: a strftime() format string.
9413
9414 @item metadata
9415 Frame metadata. Takes one or two arguments.
9416
9417 The first argument is mandatory and specifies the metadata key.
9418
9419 The second argument is optional and specifies a default value, used when the
9420 metadata key is not found or empty.
9421
9422 Available metadata can be identified by inspecting entries
9423 starting with TAG included within each frame section
9424 printed by running @code{ffprobe -show_frames}.
9425
9426 String metadata generated in filters leading to
9427 the drawtext filter are also available.
9428
9429 @item n, frame_num
9430 The frame number, starting from 0.
9431
9432 @item pict_type
9433 A one character description of the current picture type.
9434
9435 @item pts
9436 The timestamp of the current frame.
9437 It can take up to three arguments.
9438
9439 The first argument is the format of the timestamp; it defaults to @code{flt}
9440 for seconds as a decimal number with microsecond accuracy; @code{hms} stands
9441 for a formatted @var{[-]HH:MM:SS.mmm} timestamp with millisecond accuracy.
9442 @code{gmtime} stands for the timestamp of the frame formatted as UTC time;
9443 @code{localtime} stands for the timestamp of the frame formatted as
9444 local time zone time.
9445
9446 The second argument is an offset added to the timestamp.
9447
9448 If the format is set to @code{hms}, a third argument @code{24HH} may be
9449 supplied to present the hour part of the formatted timestamp in 24h format
9450 (00-23).
9451
9452 If the format is set to @code{localtime} or @code{gmtime},
9453 a third argument may be supplied: a strftime() format string.
9454 By default, @var{YYYY-MM-DD HH:MM:SS} format will be used.
9455 @end table
9456
9457 @subsection Commands
9458
9459 This filter supports altering parameters via commands:
9460 @table @option
9461 @item reinit
9462 Alter existing filter parameters.
9463
9464 Syntax for the argument is the same as for filter invocation, e.g.
9465
9466 @example
9467 fontsize=56:fontcolor=green:text='Hello World'
9468 @end example
9469
9470 Full filter invocation with sendcmd would look like this:
9471
9472 @example
9473 sendcmd=c='56.0 drawtext reinit fontsize=56\:fontcolor=green\:text=Hello\\ World'
9474 @end example
9475 @end table
9476
9477 If the entire argument can't be parsed or applied as valid values then the filter will
9478 continue with its existing parameters.
9479
9480 @subsection Examples
9481
9482 @itemize
9483 @item
9484 Draw "Test Text" with font FreeSerif, using the default values for the
9485 optional parameters.
9486
9487 @example
9488 drawtext="fontfile=/usr/share/fonts/truetype/freefont/FreeSerif.ttf: text='Test Text'"
9489 @end example
9490
9491 @item
9492 Draw 'Test Text' with font FreeSerif of size 24 at position x=100
9493 and y=50 (counting from the top-left corner of the screen), text is
9494 yellow with a red box around it. Both the text and the box have an
9495 opacity of 20%.
9496
9497 @example
9498 drawtext="fontfile=/usr/share/fonts/truetype/freefont/FreeSerif.ttf: text='Test Text':\
9499           x=100: y=50: fontsize=24: fontcolor=yellow@@0.2: box=1: boxcolor=red@@0.2"
9500 @end example
9501
9502 Note that the double quotes are not necessary if spaces are not used
9503 within the parameter list.
9504
9505 @item
9506 Show the text at the center of the video frame:
9507 @example
9508 drawtext="fontsize=30:fontfile=FreeSerif.ttf:text='hello world':x=(w-text_w)/2:y=(h-text_h)/2"
9509 @end example
9510
9511 @item
9512 Show the text at a random position, switching to a new position every 30 seconds:
9513 @example
9514 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)"
9515 @end example
9516
9517 @item
9518 Show a text line sliding from right to left in the last row of the video
9519 frame. The file @file{LONG_LINE} is assumed to contain a single line
9520 with no newlines.
9521 @example
9522 drawtext="fontsize=15:fontfile=FreeSerif.ttf:text=LONG_LINE:y=h-line_h:x=-50*t"
9523 @end example
9524
9525 @item
9526 Show the content of file @file{CREDITS} off the bottom of the frame and scroll up.
9527 @example
9528 drawtext="fontsize=20:fontfile=FreeSerif.ttf:textfile=CREDITS:y=h-20*t"
9529 @end example
9530
9531 @item
9532 Draw a single green letter "g", at the center of the input video.
9533 The glyph baseline is placed at half screen height.
9534 @example
9535 drawtext="fontsize=60:fontfile=FreeSerif.ttf:fontcolor=green:text=g:x=(w-max_glyph_w)/2:y=h/2-ascent"
9536 @end example
9537
9538 @item
9539 Show text for 1 second every 3 seconds:
9540 @example
9541 drawtext="fontfile=FreeSerif.ttf:fontcolor=white:x=100:y=x/dar:enable=lt(mod(t\,3)\,1):text='blink'"
9542 @end example
9543
9544 @item
9545 Use fontconfig to set the font. Note that the colons need to be escaped.
9546 @example
9547 drawtext='fontfile=Linux Libertine O-40\:style=Semibold:text=FFmpeg'
9548 @end example
9549
9550 @item
9551 Print the date of a real-time encoding (see strftime(3)):
9552 @example
9553 drawtext='fontfile=FreeSans.ttf:text=%@{localtime\:%a %b %d %Y@}'
9554 @end example
9555
9556 @item
9557 Show text fading in and out (appearing/disappearing):
9558 @example
9559 #!/bin/sh
9560 DS=1.0 # display start
9561 DE=10.0 # display end
9562 FID=1.5 # fade in duration
9563 FOD=5 # fade out duration
9564 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 @}"
9565 @end example
9566
9567 @item
9568 Horizontally align multiple separate texts. Note that @option{max_glyph_a}
9569 and the @option{fontsize} value are included in the @option{y} offset.
9570 @example
9571 drawtext=fontfile=FreeSans.ttf:text=DOG:fontsize=24:x=10:y=20+24-max_glyph_a,
9572 drawtext=fontfile=FreeSans.ttf:text=cow:fontsize=24:x=80:y=20+24-max_glyph_a
9573 @end example
9574
9575 @end itemize
9576
9577 For more information about libfreetype, check:
9578 @url{http://www.freetype.org/}.
9579
9580 For more information about fontconfig, check:
9581 @url{http://freedesktop.org/software/fontconfig/fontconfig-user.html}.
9582
9583 For more information about libfribidi, check:
9584 @url{http://fribidi.org/}.
9585
9586 @section edgedetect
9587
9588 Detect and draw edges. The filter uses the Canny Edge Detection algorithm.
9589
9590 The filter accepts the following options:
9591
9592 @table @option
9593 @item low
9594 @item high
9595 Set low and high threshold values used by the Canny thresholding
9596 algorithm.
9597
9598 The high threshold selects the "strong" edge pixels, which are then
9599 connected through 8-connectivity with the "weak" edge pixels selected
9600 by the low threshold.
9601
9602 @var{low} and @var{high} threshold values must be chosen in the range
9603 [0,1], and @var{low} should be lesser or equal to @var{high}.
9604
9605 Default value for @var{low} is @code{20/255}, and default value for @var{high}
9606 is @code{50/255}.
9607
9608 @item mode
9609 Define the drawing mode.
9610
9611 @table @samp
9612 @item wires
9613 Draw white/gray wires on black background.
9614
9615 @item colormix
9616 Mix the colors to create a paint/cartoon effect.
9617
9618 @item canny
9619 Apply Canny edge detector on all selected planes.
9620 @end table
9621 Default value is @var{wires}.
9622
9623 @item planes
9624 Select planes for filtering. By default all available planes are filtered.
9625 @end table
9626
9627 @subsection Examples
9628
9629 @itemize
9630 @item
9631 Standard edge detection with custom values for the hysteresis thresholding:
9632 @example
9633 edgedetect=low=0.1:high=0.4
9634 @end example
9635
9636 @item
9637 Painting effect without thresholding:
9638 @example
9639 edgedetect=mode=colormix:high=0
9640 @end example
9641 @end itemize
9642
9643 @section elbg
9644
9645 Apply a posterize effect using the ELBG (Enhanced LBG) algorithm.
9646
9647 For each input image, the filter will compute the optimal mapping from
9648 the input to the output given the codebook length, that is the number
9649 of distinct output colors.
9650
9651 This filter accepts the following options.
9652
9653 @table @option
9654 @item codebook_length, l
9655 Set codebook length. The value must be a positive integer, and
9656 represents the number of distinct output colors. Default value is 256.
9657
9658 @item nb_steps, n
9659 Set the maximum number of iterations to apply for computing the optimal
9660 mapping. The higher the value the better the result and the higher the
9661 computation time. Default value is 1.
9662
9663 @item seed, s
9664 Set a random seed, must be an integer included between 0 and
9665 UINT32_MAX. If not specified, or if explicitly set to -1, the filter
9666 will try to use a good random seed on a best effort basis.
9667
9668 @item pal8
9669 Set pal8 output pixel format. This option does not work with codebook
9670 length greater than 256.
9671 @end table
9672
9673 @section entropy
9674
9675 Measure graylevel entropy in histogram of color channels of video frames.
9676
9677 It accepts the following parameters:
9678
9679 @table @option
9680 @item mode
9681 Can be either @var{normal} or @var{diff}. Default is @var{normal}.
9682
9683 @var{diff} mode measures entropy of histogram delta values, absolute differences
9684 between neighbour histogram values.
9685 @end table
9686
9687 @section eq
9688 Set brightness, contrast, saturation and approximate gamma adjustment.
9689
9690 The filter accepts the following options:
9691
9692 @table @option
9693 @item contrast
9694 Set the contrast expression. The value must be a float value in range
9695 @code{-1000.0} to @code{1000.0}. The default value is "1".
9696
9697 @item brightness
9698 Set the brightness expression. The value must be a float value in
9699 range @code{-1.0} to @code{1.0}. The default value is "0".
9700
9701 @item saturation
9702 Set the saturation expression. The value must be a float in
9703 range @code{0.0} to @code{3.0}. The default value is "1".
9704
9705 @item gamma
9706 Set the gamma expression. The value must be a float in range
9707 @code{0.1} to @code{10.0}.  The default value is "1".
9708
9709 @item gamma_r
9710 Set the gamma expression for red. The value must be a float in
9711 range @code{0.1} to @code{10.0}. The default value is "1".
9712
9713 @item gamma_g
9714 Set the gamma expression for green. The value must be a float in range
9715 @code{0.1} to @code{10.0}. The default value is "1".
9716
9717 @item gamma_b
9718 Set the gamma expression for blue. The value must be a float in range
9719 @code{0.1} to @code{10.0}. The default value is "1".
9720
9721 @item gamma_weight
9722 Set the gamma weight expression. It can be used to reduce the effect
9723 of a high gamma value on bright image areas, e.g. keep them from
9724 getting overamplified and just plain white. The value must be a float
9725 in range @code{0.0} to @code{1.0}. A value of @code{0.0} turns the
9726 gamma correction all the way down while @code{1.0} leaves it at its
9727 full strength. Default is "1".
9728
9729 @item eval
9730 Set when the expressions for brightness, contrast, saturation and
9731 gamma expressions are evaluated.
9732
9733 It accepts the following values:
9734 @table @samp
9735 @item init
9736 only evaluate expressions once during the filter initialization or
9737 when a command is processed
9738
9739 @item frame
9740 evaluate expressions for each incoming frame
9741 @end table
9742
9743 Default value is @samp{init}.
9744 @end table
9745
9746 The expressions accept the following parameters:
9747 @table @option
9748 @item n
9749 frame count of the input frame starting from 0
9750
9751 @item pos
9752 byte position of the corresponding packet in the input file, NAN if
9753 unspecified
9754
9755 @item r
9756 frame rate of the input video, NAN if the input frame rate is unknown
9757
9758 @item t
9759 timestamp expressed in seconds, NAN if the input timestamp is unknown
9760 @end table
9761
9762 @subsection Commands
9763 The filter supports the following commands:
9764
9765 @table @option
9766 @item contrast
9767 Set the contrast expression.
9768
9769 @item brightness
9770 Set the brightness expression.
9771
9772 @item saturation
9773 Set the saturation expression.
9774
9775 @item gamma
9776 Set the gamma expression.
9777
9778 @item gamma_r
9779 Set the gamma_r expression.
9780
9781 @item gamma_g
9782 Set gamma_g expression.
9783
9784 @item gamma_b
9785 Set gamma_b expression.
9786
9787 @item gamma_weight
9788 Set gamma_weight expression.
9789
9790 The command accepts the same syntax of the corresponding option.
9791
9792 If the specified expression is not valid, it is kept at its current
9793 value.
9794
9795 @end table
9796
9797 @section erosion
9798
9799 Apply erosion effect to the video.
9800
9801 This filter replaces the pixel by the local(3x3) minimum.
9802
9803 It accepts the following options:
9804
9805 @table @option
9806 @item threshold0
9807 @item threshold1
9808 @item threshold2
9809 @item threshold3
9810 Limit the maximum change for each plane, default is 65535.
9811 If 0, plane will remain unchanged.
9812
9813 @item coordinates
9814 Flag which specifies the pixel to refer to. Default is 255 i.e. all eight
9815 pixels are used.
9816
9817 Flags to local 3x3 coordinates maps like this:
9818
9819     1 2 3
9820     4   5
9821     6 7 8
9822 @end table
9823
9824 @section extractplanes
9825
9826 Extract color channel components from input video stream into
9827 separate grayscale video streams.
9828
9829 The filter accepts the following option:
9830
9831 @table @option
9832 @item planes
9833 Set plane(s) to extract.
9834
9835 Available values for planes are:
9836 @table @samp
9837 @item y
9838 @item u
9839 @item v
9840 @item a
9841 @item r
9842 @item g
9843 @item b
9844 @end table
9845
9846 Choosing planes not available in the input will result in an error.
9847 That means you cannot select @code{r}, @code{g}, @code{b} planes
9848 with @code{y}, @code{u}, @code{v} planes at same time.
9849 @end table
9850
9851 @subsection Examples
9852
9853 @itemize
9854 @item
9855 Extract luma, u and v color channel component from input video frame
9856 into 3 grayscale outputs:
9857 @example
9858 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
9859 @end example
9860 @end itemize
9861
9862 @section fade
9863
9864 Apply a fade-in/out effect to the input video.
9865
9866 It accepts the following parameters:
9867
9868 @table @option
9869 @item type, t
9870 The effect type can be either "in" for a fade-in, or "out" for a fade-out
9871 effect.
9872 Default is @code{in}.
9873
9874 @item start_frame, s
9875 Specify the number of the frame to start applying the fade
9876 effect at. Default is 0.
9877
9878 @item nb_frames, n
9879 The number of frames that the fade effect lasts. At the end of the
9880 fade-in effect, the output video will have the same intensity as the input video.
9881 At the end of the fade-out transition, the output video will be filled with the
9882 selected @option{color}.
9883 Default is 25.
9884
9885 @item alpha
9886 If set to 1, fade only alpha channel, if one exists on the input.
9887 Default value is 0.
9888
9889 @item start_time, st
9890 Specify the timestamp (in seconds) of the frame to start to apply the fade
9891 effect. If both start_frame and start_time are specified, the fade will start at
9892 whichever comes last.  Default is 0.
9893
9894 @item duration, d
9895 The number of seconds for which the fade effect has to last. At the end of the
9896 fade-in effect the output video will have the same intensity as the input video,
9897 at the end of the fade-out transition the output video will be filled with the
9898 selected @option{color}.
9899 If both duration and nb_frames are specified, duration is used. Default is 0
9900 (nb_frames is used by default).
9901
9902 @item color, c
9903 Specify the color of the fade. Default is "black".
9904 @end table
9905
9906 @subsection Examples
9907
9908 @itemize
9909 @item
9910 Fade in the first 30 frames of video:
9911 @example
9912 fade=in:0:30
9913 @end example
9914
9915 The command above is equivalent to:
9916 @example
9917 fade=t=in:s=0:n=30
9918 @end example
9919
9920 @item
9921 Fade out the last 45 frames of a 200-frame video:
9922 @example
9923 fade=out:155:45
9924 fade=type=out:start_frame=155:nb_frames=45
9925 @end example
9926
9927 @item
9928 Fade in the first 25 frames and fade out the last 25 frames of a 1000-frame video:
9929 @example
9930 fade=in:0:25, fade=out:975:25
9931 @end example
9932
9933 @item
9934 Make the first 5 frames yellow, then fade in from frame 5-24:
9935 @example
9936 fade=in:5:20:color=yellow
9937 @end example
9938
9939 @item
9940 Fade in alpha over first 25 frames of video:
9941 @example
9942 fade=in:0:25:alpha=1
9943 @end example
9944
9945 @item
9946 Make the first 5.5 seconds black, then fade in for 0.5 seconds:
9947 @example
9948 fade=t=in:st=5.5:d=0.5
9949 @end example
9950
9951 @end itemize
9952
9953 @section fftdnoiz
9954 Denoise frames using 3D FFT (frequency domain filtering).
9955
9956 The filter accepts the following options:
9957
9958 @table @option
9959 @item sigma
9960 Set the noise sigma constant. This sets denoising strength.
9961 Default value is 1. Allowed range is from 0 to 30.
9962 Using very high sigma with low overlap may give blocking artifacts.
9963
9964 @item amount
9965 Set amount of denoising. By default all detected noise is reduced.
9966 Default value is 1. Allowed range is from 0 to 1.
9967
9968 @item block
9969 Set size of block, Default is 4, can be 3, 4, 5 or 6.
9970 Actual size of block in pixels is 2 to power of @var{block}, so by default
9971 block size in pixels is 2^4 which is 16.
9972
9973 @item overlap
9974 Set block overlap. Default is 0.5. Allowed range is from 0.2 to 0.8.
9975
9976 @item prev
9977 Set number of previous frames to use for denoising. By default is set to 0.
9978
9979 @item next
9980 Set number of next frames to to use for denoising. By default is set to 0.
9981
9982 @item planes
9983 Set planes which will be filtered, by default are all available filtered
9984 except alpha.
9985 @end table
9986
9987 @section fftfilt
9988 Apply arbitrary expressions to samples in frequency domain
9989
9990 @table @option
9991 @item dc_Y
9992 Adjust the dc value (gain) of the luma plane of the image. The filter
9993 accepts an integer value in range @code{0} to @code{1000}. The default
9994 value is set to @code{0}.
9995
9996 @item dc_U
9997 Adjust the dc value (gain) of the 1st chroma plane of the image. The
9998 filter accepts an integer value in range @code{0} to @code{1000}. The
9999 default value is set to @code{0}.
10000
10001 @item dc_V
10002 Adjust the dc value (gain) of the 2nd chroma plane of the image. The
10003 filter accepts an integer value in range @code{0} to @code{1000}. The
10004 default value is set to @code{0}.
10005
10006 @item weight_Y
10007 Set the frequency domain weight expression for the luma plane.
10008
10009 @item weight_U
10010 Set the frequency domain weight expression for the 1st chroma plane.
10011
10012 @item weight_V
10013 Set the frequency domain weight expression for the 2nd chroma plane.
10014
10015 @item eval
10016 Set when the expressions are evaluated.
10017
10018 It accepts the following values:
10019 @table @samp
10020 @item init
10021 Only evaluate expressions once during the filter initialization.
10022
10023 @item frame
10024 Evaluate expressions for each incoming frame.
10025 @end table
10026
10027 Default value is @samp{init}.
10028
10029 The filter accepts the following variables:
10030 @item X
10031 @item Y
10032 The coordinates of the current sample.
10033
10034 @item W
10035 @item H
10036 The width and height of the image.
10037
10038 @item N
10039 The number of input frame, starting from 0.
10040 @end table
10041
10042 @subsection Examples
10043
10044 @itemize
10045 @item
10046 High-pass:
10047 @example
10048 fftfilt=dc_Y=128:weight_Y='squish(1-(Y+X)/100)'
10049 @end example
10050
10051 @item
10052 Low-pass:
10053 @example
10054 fftfilt=dc_Y=0:weight_Y='squish((Y+X)/100-1)'
10055 @end example
10056
10057 @item
10058 Sharpen:
10059 @example
10060 fftfilt=dc_Y=0:weight_Y='1+squish(1-(Y+X)/100)'
10061 @end example
10062
10063 @item
10064 Blur:
10065 @example
10066 fftfilt=dc_Y=0:weight_Y='exp(-4 * ((Y+X)/(W+H)))'
10067 @end example
10068
10069 @end itemize
10070
10071 @section field
10072
10073 Extract a single field from an interlaced image using stride
10074 arithmetic to avoid wasting CPU time. The output frames are marked as
10075 non-interlaced.
10076
10077 The filter accepts the following options:
10078
10079 @table @option
10080 @item type
10081 Specify whether to extract the top (if the value is @code{0} or
10082 @code{top}) or the bottom field (if the value is @code{1} or
10083 @code{bottom}).
10084 @end table
10085
10086 @section fieldhint
10087
10088 Create new frames by copying the top and bottom fields from surrounding frames
10089 supplied as numbers by the hint file.
10090
10091 @table @option
10092 @item hint
10093 Set file containing hints: absolute/relative frame numbers.
10094
10095 There must be one line for each frame in a clip. Each line must contain two
10096 numbers separated by the comma, optionally followed by @code{-} or @code{+}.
10097 Numbers supplied on each line of file can not be out of [N-1,N+1] where N
10098 is current frame number for @code{absolute} mode or out of [-1, 1] range
10099 for @code{relative} mode. First number tells from which frame to pick up top
10100 field and second number tells from which frame to pick up bottom field.
10101
10102 If optionally followed by @code{+} output frame will be marked as interlaced,
10103 else if followed by @code{-} output frame will be marked as progressive, else
10104 it will be marked same as input frame.
10105 If line starts with @code{#} or @code{;} that line is skipped.
10106
10107 @item mode
10108 Can be item @code{absolute} or @code{relative}. Default is @code{absolute}.
10109 @end table
10110
10111 Example of first several lines of @code{hint} file for @code{relative} mode:
10112 @example
10113 0,0 - # first frame
10114 1,0 - # second frame, use third's frame top field and second's frame bottom field
10115 1,0 - # third frame, use fourth's frame top field and third's frame bottom field
10116 1,0 -
10117 0,0 -
10118 0,0 -
10119 1,0 -
10120 1,0 -
10121 1,0 -
10122 0,0 -
10123 0,0 -
10124 1,0 -
10125 1,0 -
10126 1,0 -
10127 0,0 -
10128 @end example
10129
10130 @section fieldmatch
10131
10132 Field matching filter for inverse telecine. It is meant to reconstruct the
10133 progressive frames from a telecined stream. The filter does not drop duplicated
10134 frames, so to achieve a complete inverse telecine @code{fieldmatch} needs to be
10135 followed by a decimation filter such as @ref{decimate} in the filtergraph.
10136
10137 The separation of the field matching and the decimation is notably motivated by
10138 the possibility of inserting a de-interlacing filter fallback between the two.
10139 If the source has mixed telecined and real interlaced content,
10140 @code{fieldmatch} will not be able to match fields for the interlaced parts.
10141 But these remaining combed frames will be marked as interlaced, and thus can be
10142 de-interlaced by a later filter such as @ref{yadif} before decimation.
10143
10144 In addition to the various configuration options, @code{fieldmatch} can take an
10145 optional second stream, activated through the @option{ppsrc} option. If
10146 enabled, the frames reconstruction will be based on the fields and frames from
10147 this second stream. This allows the first input to be pre-processed in order to
10148 help the various algorithms of the filter, while keeping the output lossless
10149 (assuming the fields are matched properly). Typically, a field-aware denoiser,
10150 or brightness/contrast adjustments can help.
10151
10152 Note that this filter uses the same algorithms as TIVTC/TFM (AviSynth project)
10153 and VIVTC/VFM (VapourSynth project). The later is a light clone of TFM from
10154 which @code{fieldmatch} is based on. While the semantic and usage are very
10155 close, some behaviour and options names can differ.
10156
10157 The @ref{decimate} filter currently only works for constant frame rate input.
10158 If your input has mixed telecined (30fps) and progressive content with a lower
10159 framerate like 24fps use the following filterchain to produce the necessary cfr
10160 stream: @code{dejudder,fps=30000/1001,fieldmatch,decimate}.
10161
10162 The filter accepts the following options:
10163
10164 @table @option
10165 @item order
10166 Specify the assumed field order of the input stream. Available values are:
10167
10168 @table @samp
10169 @item auto
10170 Auto detect parity (use FFmpeg's internal parity value).
10171 @item bff
10172 Assume bottom field first.
10173 @item tff
10174 Assume top field first.
10175 @end table
10176
10177 Note that it is sometimes recommended not to trust the parity announced by the
10178 stream.
10179
10180 Default value is @var{auto}.
10181
10182 @item mode
10183 Set the matching mode or strategy to use. @option{pc} mode is the safest in the
10184 sense that it won't risk creating jerkiness due to duplicate frames when
10185 possible, but if there are bad edits or blended fields it will end up
10186 outputting combed frames when a good match might actually exist. On the other
10187 hand, @option{pcn_ub} mode is the most risky in terms of creating jerkiness,
10188 but will almost always find a good frame if there is one. The other values are
10189 all somewhere in between @option{pc} and @option{pcn_ub} in terms of risking
10190 jerkiness and creating duplicate frames versus finding good matches in sections
10191 with bad edits, orphaned fields, blended fields, etc.
10192
10193 More details about p/c/n/u/b are available in @ref{p/c/n/u/b meaning} section.
10194
10195 Available values are:
10196
10197 @table @samp
10198 @item pc
10199 2-way matching (p/c)
10200 @item pc_n
10201 2-way matching, and trying 3rd match if still combed (p/c + n)
10202 @item pc_u
10203 2-way matching, and trying 3rd match (same order) if still combed (p/c + u)
10204 @item pc_n_ub
10205 2-way matching, trying 3rd match if still combed, and trying 4th/5th matches if
10206 still combed (p/c + n + u/b)
10207 @item pcn
10208 3-way matching (p/c/n)
10209 @item pcn_ub
10210 3-way matching, and trying 4th/5th matches if all 3 of the original matches are
10211 detected as combed (p/c/n + u/b)
10212 @end table
10213
10214 The parenthesis at the end indicate the matches that would be used for that
10215 mode assuming @option{order}=@var{tff} (and @option{field} on @var{auto} or
10216 @var{top}).
10217
10218 In terms of speed @option{pc} mode is by far the fastest and @option{pcn_ub} is
10219 the slowest.
10220
10221 Default value is @var{pc_n}.
10222
10223 @item ppsrc
10224 Mark the main input stream as a pre-processed input, and enable the secondary
10225 input stream as the clean source to pick the fields from. See the filter
10226 introduction for more details. It is similar to the @option{clip2} feature from
10227 VFM/TFM.
10228
10229 Default value is @code{0} (disabled).
10230
10231 @item field
10232 Set the field to match from. It is recommended to set this to the same value as
10233 @option{order} unless you experience matching failures with that setting. In
10234 certain circumstances changing the field that is used to match from can have a
10235 large impact on matching performance. Available values are:
10236
10237 @table @samp
10238 @item auto
10239 Automatic (same value as @option{order}).
10240 @item bottom
10241 Match from the bottom field.
10242 @item top
10243 Match from the top field.
10244 @end table
10245
10246 Default value is @var{auto}.
10247
10248 @item mchroma
10249 Set whether or not chroma is included during the match comparisons. In most
10250 cases it is recommended to leave this enabled. You should set this to @code{0}
10251 only if your clip has bad chroma problems such as heavy rainbowing or other
10252 artifacts. Setting this to @code{0} could also be used to speed things up at
10253 the cost of some accuracy.
10254
10255 Default value is @code{1}.
10256
10257 @item y0
10258 @item y1
10259 These define an exclusion band which excludes the lines between @option{y0} and
10260 @option{y1} from being included in the field matching decision. An exclusion
10261 band can be used to ignore subtitles, a logo, or other things that may
10262 interfere with the matching. @option{y0} sets the starting scan line and
10263 @option{y1} sets the ending line; all lines in between @option{y0} and
10264 @option{y1} (including @option{y0} and @option{y1}) will be ignored. Setting
10265 @option{y0} and @option{y1} to the same value will disable the feature.
10266 @option{y0} and @option{y1} defaults to @code{0}.
10267
10268 @item scthresh
10269 Set the scene change detection threshold as a percentage of maximum change on
10270 the luma plane. Good values are in the @code{[8.0, 14.0]} range. Scene change
10271 detection is only relevant in case @option{combmatch}=@var{sc}.  The range for
10272 @option{scthresh} is @code{[0.0, 100.0]}.
10273
10274 Default value is @code{12.0}.
10275
10276 @item combmatch
10277 When @option{combatch} is not @var{none}, @code{fieldmatch} will take into
10278 account the combed scores of matches when deciding what match to use as the
10279 final match. Available values are:
10280
10281 @table @samp
10282 @item none
10283 No final matching based on combed scores.
10284 @item sc
10285 Combed scores are only used when a scene change is detected.
10286 @item full
10287 Use combed scores all the time.
10288 @end table
10289
10290 Default is @var{sc}.
10291
10292 @item combdbg
10293 Force @code{fieldmatch} to calculate the combed metrics for certain matches and
10294 print them. This setting is known as @option{micout} in TFM/VFM vocabulary.
10295 Available values are:
10296
10297 @table @samp
10298 @item none
10299 No forced calculation.
10300 @item pcn
10301 Force p/c/n calculations.
10302 @item pcnub
10303 Force p/c/n/u/b calculations.
10304 @end table
10305
10306 Default value is @var{none}.
10307
10308 @item cthresh
10309 This is the area combing threshold used for combed frame detection. This
10310 essentially controls how "strong" or "visible" combing must be to be detected.
10311 Larger values mean combing must be more visible and smaller values mean combing
10312 can be less visible or strong and still be detected. Valid settings are from
10313 @code{-1} (every pixel will be detected as combed) to @code{255} (no pixel will
10314 be detected as combed). This is basically a pixel difference value. A good
10315 range is @code{[8, 12]}.
10316
10317 Default value is @code{9}.
10318
10319 @item chroma
10320 Sets whether or not chroma is considered in the combed frame decision.  Only
10321 disable this if your source has chroma problems (rainbowing, etc.) that are
10322 causing problems for the combed frame detection with chroma enabled. Actually,
10323 using @option{chroma}=@var{0} is usually more reliable, except for the case
10324 where there is chroma only combing in the source.
10325
10326 Default value is @code{0}.
10327
10328 @item blockx
10329 @item blocky
10330 Respectively set the x-axis and y-axis size of the window used during combed
10331 frame detection. This has to do with the size of the area in which
10332 @option{combpel} pixels are required to be detected as combed for a frame to be
10333 declared combed. See the @option{combpel} parameter description for more info.
10334 Possible values are any number that is a power of 2 starting at 4 and going up
10335 to 512.
10336
10337 Default value is @code{16}.
10338
10339 @item combpel
10340 The number of combed pixels inside any of the @option{blocky} by
10341 @option{blockx} size blocks on the frame for the frame to be detected as
10342 combed. While @option{cthresh} controls how "visible" the combing must be, this
10343 setting controls "how much" combing there must be in any localized area (a
10344 window defined by the @option{blockx} and @option{blocky} settings) on the
10345 frame. Minimum value is @code{0} and maximum is @code{blocky x blockx} (at
10346 which point no frames will ever be detected as combed). This setting is known
10347 as @option{MI} in TFM/VFM vocabulary.
10348
10349 Default value is @code{80}.
10350 @end table
10351
10352 @anchor{p/c/n/u/b meaning}
10353 @subsection p/c/n/u/b meaning
10354
10355 @subsubsection p/c/n
10356
10357 We assume the following telecined stream:
10358
10359 @example
10360 Top fields:     1 2 2 3 4
10361 Bottom fields:  1 2 3 4 4
10362 @end example
10363
10364 The numbers correspond to the progressive frame the fields relate to. Here, the
10365 first two frames are progressive, the 3rd and 4th are combed, and so on.
10366
10367 When @code{fieldmatch} is configured to run a matching from bottom
10368 (@option{field}=@var{bottom}) this is how this input stream get transformed:
10369
10370 @example
10371 Input stream:
10372                 T     1 2 2 3 4
10373                 B     1 2 3 4 4   <-- matching reference
10374
10375 Matches:              c c n n c
10376
10377 Output stream:
10378                 T     1 2 3 4 4
10379                 B     1 2 3 4 4
10380 @end example
10381
10382 As a result of the field matching, we can see that some frames get duplicated.
10383 To perform a complete inverse telecine, you need to rely on a decimation filter
10384 after this operation. See for instance the @ref{decimate} filter.
10385
10386 The same operation now matching from top fields (@option{field}=@var{top})
10387 looks like this:
10388
10389 @example
10390 Input stream:
10391                 T     1 2 2 3 4   <-- matching reference
10392                 B     1 2 3 4 4
10393
10394 Matches:              c c p p c
10395
10396 Output stream:
10397                 T     1 2 2 3 4
10398                 B     1 2 2 3 4
10399 @end example
10400
10401 In these examples, we can see what @var{p}, @var{c} and @var{n} mean;
10402 basically, they refer to the frame and field of the opposite parity:
10403
10404 @itemize
10405 @item @var{p} matches the field of the opposite parity in the previous frame
10406 @item @var{c} matches the field of the opposite parity in the current frame
10407 @item @var{n} matches the field of the opposite parity in the next frame
10408 @end itemize
10409
10410 @subsubsection u/b
10411
10412 The @var{u} and @var{b} matching are a bit special in the sense that they match
10413 from the opposite parity flag. In the following examples, we assume that we are
10414 currently matching the 2nd frame (Top:2, bottom:2). According to the match, a
10415 'x' is placed above and below each matched fields.
10416
10417 With bottom matching (@option{field}=@var{bottom}):
10418 @example
10419 Match:           c         p           n          b          u
10420
10421                  x       x               x        x          x
10422   Top          1 2 2     1 2 2       1 2 2      1 2 2      1 2 2
10423   Bottom       1 2 3     1 2 3       1 2 3      1 2 3      1 2 3
10424                  x         x           x        x              x
10425
10426 Output frames:
10427                  2          1          2          2          2
10428                  2          2          2          1          3
10429 @end example
10430
10431 With top matching (@option{field}=@var{top}):
10432 @example
10433 Match:           c         p           n          b          u
10434
10435                  x         x           x        x              x
10436   Top          1 2 2     1 2 2       1 2 2      1 2 2      1 2 2
10437   Bottom       1 2 3     1 2 3       1 2 3      1 2 3      1 2 3
10438                  x       x               x        x          x
10439
10440 Output frames:
10441                  2          2          2          1          2
10442                  2          1          3          2          2
10443 @end example
10444
10445 @subsection Examples
10446
10447 Simple IVTC of a top field first telecined stream:
10448 @example
10449 fieldmatch=order=tff:combmatch=none, decimate
10450 @end example
10451
10452 Advanced IVTC, with fallback on @ref{yadif} for still combed frames:
10453 @example
10454 fieldmatch=order=tff:combmatch=full, yadif=deint=interlaced, decimate
10455 @end example
10456
10457 @section fieldorder
10458
10459 Transform the field order of the input video.
10460
10461 It accepts the following parameters:
10462
10463 @table @option
10464
10465 @item order
10466 The output field order. Valid values are @var{tff} for top field first or @var{bff}
10467 for bottom field first.
10468 @end table
10469
10470 The default value is @samp{tff}.
10471
10472 The transformation is done by shifting the picture content up or down
10473 by one line, and filling the remaining line with appropriate picture content.
10474 This method is consistent with most broadcast field order converters.
10475
10476 If the input video is not flagged as being interlaced, or it is already
10477 flagged as being of the required output field order, then this filter does
10478 not alter the incoming video.
10479
10480 It is very useful when converting to or from PAL DV material,
10481 which is bottom field first.
10482
10483 For example:
10484 @example
10485 ffmpeg -i in.vob -vf "fieldorder=bff" out.dv
10486 @end example
10487
10488 @section fifo, afifo
10489
10490 Buffer input images and send them when they are requested.
10491
10492 It is mainly useful when auto-inserted by the libavfilter
10493 framework.
10494
10495 It does not take parameters.
10496
10497 @section fillborders
10498
10499 Fill borders of the input video, without changing video stream dimensions.
10500 Sometimes video can have garbage at the four edges and you may not want to
10501 crop video input to keep size multiple of some number.
10502
10503 This filter accepts the following options:
10504
10505 @table @option
10506 @item left
10507 Number of pixels to fill from left border.
10508
10509 @item right
10510 Number of pixels to fill from right border.
10511
10512 @item top
10513 Number of pixels to fill from top border.
10514
10515 @item bottom
10516 Number of pixels to fill from bottom border.
10517
10518 @item mode
10519 Set fill mode.
10520
10521 It accepts the following values:
10522 @table @samp
10523 @item smear
10524 fill pixels using outermost pixels
10525
10526 @item mirror
10527 fill pixels using mirroring
10528
10529 @item fixed
10530 fill pixels with constant value
10531 @end table
10532
10533 Default is @var{smear}.
10534
10535 @item color
10536 Set color for pixels in fixed mode. Default is @var{black}.
10537 @end table
10538
10539 @section find_rect
10540
10541 Find a rectangular object
10542
10543 It accepts the following options:
10544
10545 @table @option
10546 @item object
10547 Filepath of the object image, needs to be in gray8.
10548
10549 @item threshold
10550 Detection threshold, default is 0.5.
10551
10552 @item mipmaps
10553 Number of mipmaps, default is 3.
10554
10555 @item xmin, ymin, xmax, ymax
10556 Specifies the rectangle in which to search.
10557 @end table
10558
10559 @subsection Examples
10560
10561 @itemize
10562 @item
10563 Cover a rectangular object by the supplied image of a given video using @command{ffmpeg}:
10564 @example
10565 ffmpeg -i file.ts -vf find_rect=newref.pgm,cover_rect=cover.jpg:mode=cover new.mkv
10566 @end example
10567 @end itemize
10568
10569 @section floodfill
10570
10571 Flood area with values of same pixel components with another values.
10572
10573 It accepts the following options:
10574 @table @option
10575 @item x
10576 Set pixel x coordinate.
10577
10578 @item y
10579 Set pixel y coordinate.
10580
10581 @item s0
10582 Set source #0 component value.
10583
10584 @item s1
10585 Set source #1 component value.
10586
10587 @item s2
10588 Set source #2 component value.
10589
10590 @item s3
10591 Set source #3 component value.
10592
10593 @item d0
10594 Set destination #0 component value.
10595
10596 @item d1
10597 Set destination #1 component value.
10598
10599 @item d2
10600 Set destination #2 component value.
10601
10602 @item d3
10603 Set destination #3 component value.
10604 @end table
10605
10606 @anchor{format}
10607 @section format
10608
10609 Convert the input video to one of the specified pixel formats.
10610 Libavfilter will try to pick one that is suitable as input to
10611 the next filter.
10612
10613 It accepts the following parameters:
10614 @table @option
10615
10616 @item pix_fmts
10617 A '|'-separated list of pixel format names, such as
10618 "pix_fmts=yuv420p|monow|rgb24".
10619
10620 @end table
10621
10622 @subsection Examples
10623
10624 @itemize
10625 @item
10626 Convert the input video to the @var{yuv420p} format
10627 @example
10628 format=pix_fmts=yuv420p
10629 @end example
10630
10631 Convert the input video to any of the formats in the list
10632 @example
10633 format=pix_fmts=yuv420p|yuv444p|yuv410p
10634 @end example
10635 @end itemize
10636
10637 @anchor{fps}
10638 @section fps
10639
10640 Convert the video to specified constant frame rate by duplicating or dropping
10641 frames as necessary.
10642
10643 It accepts the following parameters:
10644 @table @option
10645
10646 @item fps
10647 The desired output frame rate. The default is @code{25}.
10648
10649 @item start_time
10650 Assume the first PTS should be the given value, in seconds. This allows for
10651 padding/trimming at the start of stream. By default, no assumption is made
10652 about the first frame's expected PTS, so no padding or trimming is done.
10653 For example, this could be set to 0 to pad the beginning with duplicates of
10654 the first frame if a video stream starts after the audio stream or to trim any
10655 frames with a negative PTS.
10656
10657 @item round
10658 Timestamp (PTS) rounding method.
10659
10660 Possible values are:
10661 @table @option
10662 @item zero
10663 round towards 0
10664 @item inf
10665 round away from 0
10666 @item down
10667 round towards -infinity
10668 @item up
10669 round towards +infinity
10670 @item near
10671 round to nearest
10672 @end table
10673 The default is @code{near}.
10674
10675 @item eof_action
10676 Action performed when reading the last frame.
10677
10678 Possible values are:
10679 @table @option
10680 @item round
10681 Use same timestamp rounding method as used for other frames.
10682 @item pass
10683 Pass through last frame if input duration has not been reached yet.
10684 @end table
10685 The default is @code{round}.
10686
10687 @end table
10688
10689 Alternatively, the options can be specified as a flat string:
10690 @var{fps}[:@var{start_time}[:@var{round}]].
10691
10692 See also the @ref{setpts} filter.
10693
10694 @subsection Examples
10695
10696 @itemize
10697 @item
10698 A typical usage in order to set the fps to 25:
10699 @example
10700 fps=fps=25
10701 @end example
10702
10703 @item
10704 Sets the fps to 24, using abbreviation and rounding method to round to nearest:
10705 @example
10706 fps=fps=film:round=near
10707 @end example
10708 @end itemize
10709
10710 @section framepack
10711
10712 Pack two different video streams into a stereoscopic video, setting proper
10713 metadata on supported codecs. The two views should have the same size and
10714 framerate and processing will stop when the shorter video ends. Please note
10715 that you may conveniently adjust view properties with the @ref{scale} and
10716 @ref{fps} filters.
10717
10718 It accepts the following parameters:
10719 @table @option
10720
10721 @item format
10722 The desired packing format. Supported values are:
10723
10724 @table @option
10725
10726 @item sbs
10727 The views are next to each other (default).
10728
10729 @item tab
10730 The views are on top of each other.
10731
10732 @item lines
10733 The views are packed by line.
10734
10735 @item columns
10736 The views are packed by column.
10737
10738 @item frameseq
10739 The views are temporally interleaved.
10740
10741 @end table
10742
10743 @end table
10744
10745 Some examples:
10746
10747 @example
10748 # Convert left and right views into a frame-sequential video
10749 ffmpeg -i LEFT -i RIGHT -filter_complex framepack=frameseq OUTPUT
10750
10751 # Convert views into a side-by-side video with the same output resolution as the input
10752 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
10753 @end example
10754
10755 @section framerate
10756
10757 Change the frame rate by interpolating new video output frames from the source
10758 frames.
10759
10760 This filter is not designed to function correctly with interlaced media. If
10761 you wish to change the frame rate of interlaced media then you are required
10762 to deinterlace before this filter and re-interlace after this filter.
10763
10764 A description of the accepted options follows.
10765
10766 @table @option
10767 @item fps
10768 Specify the output frames per second. This option can also be specified
10769 as a value alone. The default is @code{50}.
10770
10771 @item interp_start
10772 Specify the start of a range where the output frame will be created as a
10773 linear interpolation of two frames. The range is [@code{0}-@code{255}],
10774 the default is @code{15}.
10775
10776 @item interp_end
10777 Specify the end of a range where the output frame will be created as a
10778 linear interpolation of two frames. The range is [@code{0}-@code{255}],
10779 the default is @code{240}.
10780
10781 @item scene
10782 Specify the level at which a scene change is detected as a value between
10783 0 and 100 to indicate a new scene; a low value reflects a low
10784 probability for the current frame to introduce a new scene, while a higher
10785 value means the current frame is more likely to be one.
10786 The default is @code{8.2}.
10787
10788 @item flags
10789 Specify flags influencing the filter process.
10790
10791 Available value for @var{flags} is:
10792
10793 @table @option
10794 @item scene_change_detect, scd
10795 Enable scene change detection using the value of the option @var{scene}.
10796 This flag is enabled by default.
10797 @end table
10798 @end table
10799
10800 @section framestep
10801
10802 Select one frame every N-th frame.
10803
10804 This filter accepts the following option:
10805 @table @option
10806 @item step
10807 Select frame after every @code{step} frames.
10808 Allowed values are positive integers higher than 0. Default value is @code{1}.
10809 @end table
10810
10811 @section freezedetect
10812
10813 Detect frozen video.
10814
10815 This filter logs a message and sets frame metadata when it detects that the
10816 input video has no significant change in content during a specified duration.
10817 Video freeze detection calculates the mean average absolute difference of all
10818 the components of video frames and compares it to a noise floor.
10819
10820 The printed times and duration are expressed in seconds. The
10821 @code{lavfi.freezedetect.freeze_start} metadata key is set on the first frame
10822 whose timestamp equals or exceeds the detection duration and it contains the
10823 timestamp of the first frame of the freeze. The
10824 @code{lavfi.freezedetect.freeze_duration} and
10825 @code{lavfi.freezedetect.freeze_end} metadata keys are set on the first frame
10826 after the freeze.
10827
10828 The filter accepts the following options:
10829
10830 @table @option
10831 @item noise, n
10832 Set noise tolerance. Can be specified in dB (in case "dB" is appended to the
10833 specified value) or as a difference ratio between 0 and 1. Default is -60dB, or
10834 0.001.
10835
10836 @item duration, d
10837 Set freeze duration until notification (default is 2 seconds).
10838 @end table
10839
10840 @anchor{frei0r}
10841 @section frei0r
10842
10843 Apply a frei0r effect to the input video.
10844
10845 To enable the compilation of this filter, you need to install the frei0r
10846 header and configure FFmpeg with @code{--enable-frei0r}.
10847
10848 It accepts the following parameters:
10849
10850 @table @option
10851
10852 @item filter_name
10853 The name of the frei0r effect to load. If the environment variable
10854 @env{FREI0R_PATH} is defined, the frei0r effect is searched for in each of the
10855 directories specified by the colon-separated list in @env{FREI0R_PATH}.
10856 Otherwise, the standard frei0r paths are searched, in this order:
10857 @file{HOME/.frei0r-1/lib/}, @file{/usr/local/lib/frei0r-1/},
10858 @file{/usr/lib/frei0r-1/}.
10859
10860 @item filter_params
10861 A '|'-separated list of parameters to pass to the frei0r effect.
10862
10863 @end table
10864
10865 A frei0r effect parameter can be a boolean (its value is either
10866 "y" or "n"), a double, a color (specified as
10867 @var{R}/@var{G}/@var{B}, where @var{R}, @var{G}, and @var{B} are floating point
10868 numbers between 0.0 and 1.0, inclusive) or a color description as specified in the
10869 @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils},
10870 a position (specified as @var{X}/@var{Y}, where
10871 @var{X} and @var{Y} are floating point numbers) and/or a string.
10872
10873 The number and types of parameters depend on the loaded effect. If an
10874 effect parameter is not specified, the default value is set.
10875
10876 @subsection Examples
10877
10878 @itemize
10879 @item
10880 Apply the distort0r effect, setting the first two double parameters:
10881 @example
10882 frei0r=filter_name=distort0r:filter_params=0.5|0.01
10883 @end example
10884
10885 @item
10886 Apply the colordistance effect, taking a color as the first parameter:
10887 @example
10888 frei0r=colordistance:0.2/0.3/0.4
10889 frei0r=colordistance:violet
10890 frei0r=colordistance:0x112233
10891 @end example
10892
10893 @item
10894 Apply the perspective effect, specifying the top left and top right image
10895 positions:
10896 @example
10897 frei0r=perspective:0.2/0.2|0.8/0.2
10898 @end example
10899 @end itemize
10900
10901 For more information, see
10902 @url{http://frei0r.dyne.org}
10903
10904 @section fspp
10905
10906 Apply fast and simple postprocessing. It is a faster version of @ref{spp}.
10907
10908 It splits (I)DCT into horizontal/vertical passes. Unlike the simple post-
10909 processing filter, one of them is performed once per block, not per pixel.
10910 This allows for much higher speed.
10911
10912 The filter accepts the following options:
10913
10914 @table @option
10915 @item quality
10916 Set quality. This option defines the number of levels for averaging. It accepts
10917 an integer in the range 4-5. Default value is @code{4}.
10918
10919 @item qp
10920 Force a constant quantization parameter. It accepts an integer in range 0-63.
10921 If not set, the filter will use the QP from the video stream (if available).
10922
10923 @item strength
10924 Set filter strength. It accepts an integer in range -15 to 32. Lower values mean
10925 more details but also more artifacts, while higher values make the image smoother
10926 but also blurrier. Default value is @code{0} âˆ’ PSNR optimal.
10927
10928 @item use_bframe_qp
10929 Enable the use of the QP from the B-Frames if set to @code{1}. Using this
10930 option may cause flicker since the B-Frames have often larger QP. Default is
10931 @code{0} (not enabled).
10932
10933 @end table
10934
10935 @section gblur
10936
10937 Apply Gaussian blur filter.
10938
10939 The filter accepts the following options:
10940
10941 @table @option
10942 @item sigma
10943 Set horizontal sigma, standard deviation of Gaussian blur. Default is @code{0.5}.
10944
10945 @item steps
10946 Set number of steps for Gaussian approximation. Default is @code{1}.
10947
10948 @item planes
10949 Set which planes to filter. By default all planes are filtered.
10950
10951 @item sigmaV
10952 Set vertical sigma, if negative it will be same as @code{sigma}.
10953 Default is @code{-1}.
10954 @end table
10955
10956 @subsection Commands
10957 This filter supports same commands as options.
10958 The command accepts the same syntax of the corresponding option.
10959
10960 If the specified expression is not valid, it is kept at its current
10961 value.
10962
10963 @section geq
10964
10965 Apply generic equation to each pixel.
10966
10967 The filter accepts the following options:
10968
10969 @table @option
10970 @item lum_expr, lum
10971 Set the luminance expression.
10972 @item cb_expr, cb
10973 Set the chrominance blue expression.
10974 @item cr_expr, cr
10975 Set the chrominance red expression.
10976 @item alpha_expr, a
10977 Set the alpha expression.
10978 @item red_expr, r
10979 Set the red expression.
10980 @item green_expr, g
10981 Set the green expression.
10982 @item blue_expr, b
10983 Set the blue expression.
10984 @end table
10985
10986 The colorspace is selected according to the specified options. If one
10987 of the @option{lum_expr}, @option{cb_expr}, or @option{cr_expr}
10988 options is specified, the filter will automatically select a YCbCr
10989 colorspace. If one of the @option{red_expr}, @option{green_expr}, or
10990 @option{blue_expr} options is specified, it will select an RGB
10991 colorspace.
10992
10993 If one of the chrominance expression is not defined, it falls back on the other
10994 one. If no alpha expression is specified it will evaluate to opaque value.
10995 If none of chrominance expressions are specified, they will evaluate
10996 to the luminance expression.
10997
10998 The expressions can use the following variables and functions:
10999
11000 @table @option
11001 @item N
11002 The sequential number of the filtered frame, starting from @code{0}.
11003
11004 @item X
11005 @item Y
11006 The coordinates of the current sample.
11007
11008 @item W
11009 @item H
11010 The width and height of the image.
11011
11012 @item SW
11013 @item SH
11014 Width and height scale depending on the currently filtered plane. It is the
11015 ratio between the corresponding luma plane number of pixels and the current
11016 plane ones. E.g. for YUV4:2:0 the values are @code{1,1} for the luma plane, and
11017 @code{0.5,0.5} for chroma planes.
11018
11019 @item T
11020 Time of the current frame, expressed in seconds.
11021
11022 @item p(x, y)
11023 Return the value of the pixel at location (@var{x},@var{y}) of the current
11024 plane.
11025
11026 @item lum(x, y)
11027 Return the value of the pixel at location (@var{x},@var{y}) of the luminance
11028 plane.
11029
11030 @item cb(x, y)
11031 Return the value of the pixel at location (@var{x},@var{y}) of the
11032 blue-difference chroma plane. Return 0 if there is no such plane.
11033
11034 @item cr(x, y)
11035 Return the value of the pixel at location (@var{x},@var{y}) of the
11036 red-difference chroma plane. Return 0 if there is no such plane.
11037
11038 @item r(x, y)
11039 @item g(x, y)
11040 @item b(x, y)
11041 Return the value of the pixel at location (@var{x},@var{y}) of the
11042 red/green/blue component. Return 0 if there is no such component.
11043
11044 @item alpha(x, y)
11045 Return the value of the pixel at location (@var{x},@var{y}) of the alpha
11046 plane. Return 0 if there is no such plane.
11047
11048 @item interpolation
11049 Set one of interpolation methods:
11050 @table @option
11051 @item nearest, n
11052 @item bilinear, b
11053 @end table
11054 Default is bilinear.
11055 @end table
11056
11057 For functions, if @var{x} and @var{y} are outside the area, the value will be
11058 automatically clipped to the closer edge.
11059
11060 @subsection Examples
11061
11062 @itemize
11063 @item
11064 Flip the image horizontally:
11065 @example
11066 geq=p(W-X\,Y)
11067 @end example
11068
11069 @item
11070 Generate a bidimensional sine wave, with angle @code{PI/3} and a
11071 wavelength of 100 pixels:
11072 @example
11073 geq=128 + 100*sin(2*(PI/100)*(cos(PI/3)*(X-50*T) + sin(PI/3)*Y)):128:128
11074 @end example
11075
11076 @item
11077 Generate a fancy enigmatic moving light:
11078 @example
11079 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
11080 @end example
11081
11082 @item
11083 Generate a quick emboss effect:
11084 @example
11085 format=gray,geq=lum_expr='(p(X,Y)+(256-p(X-4,Y-4)))/2'
11086 @end example
11087
11088 @item
11089 Modify RGB components depending on pixel position:
11090 @example
11091 geq=r='X/W*r(X,Y)':g='(1-X/W)*g(X,Y)':b='(H-Y)/H*b(X,Y)'
11092 @end example
11093
11094 @item
11095 Create a radial gradient that is the same size as the input (also see
11096 the @ref{vignette} filter):
11097 @example
11098 geq=lum=255*gauss((X/W-0.5)*3)*gauss((Y/H-0.5)*3)/gauss(0)/gauss(0),format=gray
11099 @end example
11100 @end itemize
11101
11102 @section gradfun
11103
11104 Fix the banding artifacts that are sometimes introduced into nearly flat
11105 regions by truncation to 8-bit color depth.
11106 Interpolate the gradients that should go where the bands are, and
11107 dither them.
11108
11109 It is designed for playback only.  Do not use it prior to
11110 lossy compression, because compression tends to lose the dither and
11111 bring back the bands.
11112
11113 It accepts the following parameters:
11114
11115 @table @option
11116
11117 @item strength
11118 The maximum amount by which the filter will change any one pixel. This is also
11119 the threshold for detecting nearly flat regions. Acceptable values range from
11120 .51 to 64; the default value is 1.2. Out-of-range values will be clipped to the
11121 valid range.
11122
11123 @item radius
11124 The neighborhood to fit the gradient to. A larger radius makes for smoother
11125 gradients, but also prevents the filter from modifying the pixels near detailed
11126 regions. Acceptable values are 8-32; the default value is 16. Out-of-range
11127 values will be clipped to the valid range.
11128
11129 @end table
11130
11131 Alternatively, the options can be specified as a flat string:
11132 @var{strength}[:@var{radius}]
11133
11134 @subsection Examples
11135
11136 @itemize
11137 @item
11138 Apply the filter with a @code{3.5} strength and radius of @code{8}:
11139 @example
11140 gradfun=3.5:8
11141 @end example
11142
11143 @item
11144 Specify radius, omitting the strength (which will fall-back to the default
11145 value):
11146 @example
11147 gradfun=radius=8
11148 @end example
11149
11150 @end itemize
11151
11152 @section graphmonitor, agraphmonitor
11153 Show various filtergraph stats.
11154
11155 With this filter one can debug complete filtergraph.
11156 Especially issues with links filling with queued frames.
11157
11158 The filter accepts the following options:
11159
11160 @table @option
11161 @item size, s
11162 Set video output size. Default is @var{hd720}.
11163
11164 @item opacity, o
11165 Set video opacity. Default is @var{0.9}. Allowed range is from @var{0} to @var{1}.
11166
11167 @item mode, m
11168 Set output mode, can be @var{fulll} or @var{compact}.
11169 In @var{compact} mode only filters with some queued frames have displayed stats.
11170
11171 @item flags, f
11172 Set flags which enable which stats are shown in video.
11173
11174 Available values for flags are:
11175 @table @samp
11176 @item queue
11177 Display number of queued frames in each link.
11178
11179 @item frame_count_in
11180 Display number of frames taken from filter.
11181
11182 @item frame_count_out
11183 Display number of frames given out from filter.
11184
11185 @item pts
11186 Display current filtered frame pts.
11187
11188 @item time
11189 Display current filtered frame time.
11190
11191 @item timebase
11192 Display time base for filter link.
11193
11194 @item format
11195 Display used format for filter link.
11196
11197 @item size
11198 Display video size or number of audio channels in case of audio used by filter link.
11199
11200 @item rate
11201 Display video frame rate or sample rate in case of audio used by filter link.
11202 @end table
11203
11204 @item rate, r
11205 Set upper limit for video rate of output stream, Default value is @var{25}.
11206 This guarantee that output video frame rate will not be higher than this value.
11207 @end table
11208
11209 @section greyedge
11210 A color constancy variation filter which estimates scene illumination via grey edge algorithm
11211 and corrects the scene colors accordingly.
11212
11213 See: @url{https://staff.science.uva.nl/th.gevers/pub/GeversTIP07.pdf}
11214
11215 The filter accepts the following options:
11216
11217 @table @option
11218 @item difford
11219 The order of differentiation to be applied on the scene. Must be chosen in the range
11220 [0,2] and default value is 1.
11221
11222 @item minknorm
11223 The Minkowski parameter to be used for calculating the Minkowski distance. Must
11224 be chosen in the range [0,20] and default value is 1. Set to 0 for getting
11225 max value instead of calculating Minkowski distance.
11226
11227 @item sigma
11228 The standard deviation of Gaussian blur to be applied on the scene. Must be
11229 chosen in the range [0,1024.0] and default value = 1. floor( @var{sigma} * break_off_sigma(3) )
11230 can't be equal to 0 if @var{difford} is greater than 0.
11231 @end table
11232
11233 @subsection Examples
11234 @itemize
11235
11236 @item
11237 Grey Edge:
11238 @example
11239 greyedge=difford=1:minknorm=5:sigma=2
11240 @end example
11241
11242 @item
11243 Max Edge:
11244 @example
11245 greyedge=difford=1:minknorm=0:sigma=2
11246 @end example
11247
11248 @end itemize
11249
11250 @anchor{haldclut}
11251 @section haldclut
11252
11253 Apply a Hald CLUT to a video stream.
11254
11255 First input is the video stream to process, and second one is the Hald CLUT.
11256 The Hald CLUT input can be a simple picture or a complete video stream.
11257
11258 The filter accepts the following options:
11259
11260 @table @option
11261 @item shortest
11262 Force termination when the shortest input terminates. Default is @code{0}.
11263 @item repeatlast
11264 Continue applying the last CLUT after the end of the stream. A value of
11265 @code{0} disable the filter after the last frame of the CLUT is reached.
11266 Default is @code{1}.
11267 @end table
11268
11269 @code{haldclut} also has the same interpolation options as @ref{lut3d} (both
11270 filters share the same internals).
11271
11272 This filter also supports the @ref{framesync} options.
11273
11274 More information about the Hald CLUT can be found on Eskil Steenberg's website
11275 (Hald CLUT author) at @url{http://www.quelsolaar.com/technology/clut.html}.
11276
11277 @subsection Workflow examples
11278
11279 @subsubsection Hald CLUT video stream
11280
11281 Generate an identity Hald CLUT stream altered with various effects:
11282 @example
11283 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
11284 @end example
11285
11286 Note: make sure you use a lossless codec.
11287
11288 Then use it with @code{haldclut} to apply it on some random stream:
11289 @example
11290 ffmpeg -f lavfi -i mandelbrot -i clut.nut -filter_complex '[0][1] haldclut' -t 20 mandelclut.mkv
11291 @end example
11292
11293 The Hald CLUT will be applied to the 10 first seconds (duration of
11294 @file{clut.nut}), then the latest picture of that CLUT stream will be applied
11295 to the remaining frames of the @code{mandelbrot} stream.
11296
11297 @subsubsection Hald CLUT with preview
11298
11299 A Hald CLUT is supposed to be a squared image of @code{Level*Level*Level} by
11300 @code{Level*Level*Level} pixels. For a given Hald CLUT, FFmpeg will select the
11301 biggest possible square starting at the top left of the picture. The remaining
11302 padding pixels (bottom or right) will be ignored. This area can be used to add
11303 a preview of the Hald CLUT.
11304
11305 Typically, the following generated Hald CLUT will be supported by the
11306 @code{haldclut} filter:
11307
11308 @example
11309 ffmpeg -f lavfi -i @ref{haldclutsrc}=8 -vf "
11310    pad=iw+320 [padded_clut];
11311    smptebars=s=320x256, split [a][b];
11312    [padded_clut][a] overlay=W-320:h, curves=color_negative [main];
11313    [main][b] overlay=W-320" -frames:v 1 clut.png
11314 @end example
11315
11316 It contains the original and a preview of the effect of the CLUT: SMPTE color
11317 bars are displayed on the right-top, and below the same color bars processed by
11318 the color changes.
11319
11320 Then, the effect of this Hald CLUT can be visualized with:
11321 @example
11322 ffplay input.mkv -vf "movie=clut.png, [in] haldclut"
11323 @end example
11324
11325 @section hflip
11326
11327 Flip the input video horizontally.
11328
11329 For example, to horizontally flip the input video with @command{ffmpeg}:
11330 @example
11331 ffmpeg -i in.avi -vf "hflip" out.avi
11332 @end example
11333
11334 @section histeq
11335 This filter applies a global color histogram equalization on a
11336 per-frame basis.
11337
11338 It can be used to correct video that has a compressed range of pixel
11339 intensities.  The filter redistributes the pixel intensities to
11340 equalize their distribution across the intensity range. It may be
11341 viewed as an "automatically adjusting contrast filter". This filter is
11342 useful only for correcting degraded or poorly captured source
11343 video.
11344
11345 The filter accepts the following options:
11346
11347 @table @option
11348 @item strength
11349 Determine the amount of equalization to be applied.  As the strength
11350 is reduced, the distribution of pixel intensities more-and-more
11351 approaches that of the input frame. The value must be a float number
11352 in the range [0,1] and defaults to 0.200.
11353
11354 @item intensity
11355 Set the maximum intensity that can generated and scale the output
11356 values appropriately.  The strength should be set as desired and then
11357 the intensity can be limited if needed to avoid washing-out. The value
11358 must be a float number in the range [0,1] and defaults to 0.210.
11359
11360 @item antibanding
11361 Set the antibanding level. If enabled the filter will randomly vary
11362 the luminance of output pixels by a small amount to avoid banding of
11363 the histogram. Possible values are @code{none}, @code{weak} or
11364 @code{strong}. It defaults to @code{none}.
11365 @end table
11366
11367 @section histogram
11368
11369 Compute and draw a color distribution histogram for the input video.
11370
11371 The computed histogram is a representation of the color component
11372 distribution in an image.
11373
11374 Standard histogram displays the color components distribution in an image.
11375 Displays color graph for each color component. Shows distribution of
11376 the Y, U, V, A or R, G, B components, depending on input format, in the
11377 current frame. Below each graph a color component scale meter is shown.
11378
11379 The filter accepts the following options:
11380
11381 @table @option
11382 @item level_height
11383 Set height of level. Default value is @code{200}.
11384 Allowed range is [50, 2048].
11385
11386 @item scale_height
11387 Set height of color scale. Default value is @code{12}.
11388 Allowed range is [0, 40].
11389
11390 @item display_mode
11391 Set display mode.
11392 It accepts the following values:
11393 @table @samp
11394 @item stack
11395 Per color component graphs are placed below each other.
11396
11397 @item parade
11398 Per color component graphs are placed side by side.
11399
11400 @item overlay
11401 Presents information identical to that in the @code{parade}, except
11402 that the graphs representing color components are superimposed directly
11403 over one another.
11404 @end table
11405 Default is @code{stack}.
11406
11407 @item levels_mode
11408 Set mode. Can be either @code{linear}, or @code{logarithmic}.
11409 Default is @code{linear}.
11410
11411 @item components
11412 Set what color components to display.
11413 Default is @code{7}.
11414
11415 @item fgopacity
11416 Set foreground opacity. Default is @code{0.7}.
11417
11418 @item bgopacity
11419 Set background opacity. Default is @code{0.5}.
11420 @end table
11421
11422 @subsection Examples
11423
11424 @itemize
11425
11426 @item
11427 Calculate and draw histogram:
11428 @example
11429 ffplay -i input -vf histogram
11430 @end example
11431
11432 @end itemize
11433
11434 @anchor{hqdn3d}
11435 @section hqdn3d
11436
11437 This is a high precision/quality 3d denoise filter. It aims to reduce
11438 image noise, producing smooth images and making still images really
11439 still. It should enhance compressibility.
11440
11441 It accepts the following optional parameters:
11442
11443 @table @option
11444 @item luma_spatial
11445 A non-negative floating point number which specifies spatial luma strength.
11446 It defaults to 4.0.
11447
11448 @item chroma_spatial
11449 A non-negative floating point number which specifies spatial chroma strength.
11450 It defaults to 3.0*@var{luma_spatial}/4.0.
11451
11452 @item luma_tmp
11453 A floating point number which specifies luma temporal strength. It defaults to
11454 6.0*@var{luma_spatial}/4.0.
11455
11456 @item chroma_tmp
11457 A floating point number which specifies chroma temporal strength. It defaults to
11458 @var{luma_tmp}*@var{chroma_spatial}/@var{luma_spatial}.
11459 @end table
11460
11461 @anchor{hwdownload}
11462 @section hwdownload
11463
11464 Download hardware frames to system memory.
11465
11466 The input must be in hardware frames, and the output a non-hardware format.
11467 Not all formats will be supported on the output - it may be necessary to insert
11468 an additional @option{format} filter immediately following in the graph to get
11469 the output in a supported format.
11470
11471 @section hwmap
11472
11473 Map hardware frames to system memory or to another device.
11474
11475 This filter has several different modes of operation; which one is used depends
11476 on the input and output formats:
11477 @itemize
11478 @item
11479 Hardware frame input, normal frame output
11480
11481 Map the input frames to system memory and pass them to the output.  If the
11482 original hardware frame is later required (for example, after overlaying
11483 something else on part of it), the @option{hwmap} filter can be used again
11484 in the next mode to retrieve it.
11485 @item
11486 Normal frame input, hardware frame output
11487
11488 If the input is actually a software-mapped hardware frame, then unmap it -
11489 that is, return the original hardware frame.
11490
11491 Otherwise, a device must be provided.  Create new hardware surfaces on that
11492 device for the output, then map them back to the software format at the input
11493 and give those frames to the preceding filter.  This will then act like the
11494 @option{hwupload} filter, but may be able to avoid an additional copy when
11495 the input is already in a compatible format.
11496 @item
11497 Hardware frame input and output
11498
11499 A device must be supplied for the output, either directly or with the
11500 @option{derive_device} option.  The input and output devices must be of
11501 different types and compatible - the exact meaning of this is
11502 system-dependent, but typically it means that they must refer to the same
11503 underlying hardware context (for example, refer to the same graphics card).
11504
11505 If the input frames were originally created on the output device, then unmap
11506 to retrieve the original frames.
11507
11508 Otherwise, map the frames to the output device - create new hardware frames
11509 on the output corresponding to the frames on the input.
11510 @end itemize
11511
11512 The following additional parameters are accepted:
11513
11514 @table @option
11515 @item mode
11516 Set the frame mapping mode.  Some combination of:
11517 @table @var
11518 @item read
11519 The mapped frame should be readable.
11520 @item write
11521 The mapped frame should be writeable.
11522 @item overwrite
11523 The mapping will always overwrite the entire frame.
11524
11525 This may improve performance in some cases, as the original contents of the
11526 frame need not be loaded.
11527 @item direct
11528 The mapping must not involve any copying.
11529
11530 Indirect mappings to copies of frames are created in some cases where either
11531 direct mapping is not possible or it would have unexpected properties.
11532 Setting this flag ensures that the mapping is direct and will fail if that is
11533 not possible.
11534 @end table
11535 Defaults to @var{read+write} if not specified.
11536
11537 @item derive_device @var{type}
11538 Rather than using the device supplied at initialisation, instead derive a new
11539 device of type @var{type} from the device the input frames exist on.
11540
11541 @item reverse
11542 In a hardware to hardware mapping, map in reverse - create frames in the sink
11543 and map them back to the source.  This may be necessary in some cases where
11544 a mapping in one direction is required but only the opposite direction is
11545 supported by the devices being used.
11546
11547 This option is dangerous - it may break the preceding filter in undefined
11548 ways if there are any additional constraints on that filter's output.
11549 Do not use it without fully understanding the implications of its use.
11550 @end table
11551
11552 @anchor{hwupload}
11553 @section hwupload
11554
11555 Upload system memory frames to hardware surfaces.
11556
11557 The device to upload to must be supplied when the filter is initialised.  If
11558 using ffmpeg, select the appropriate device with the @option{-filter_hw_device}
11559 option.
11560
11561 @anchor{hwupload_cuda}
11562 @section hwupload_cuda
11563
11564 Upload system memory frames to a CUDA device.
11565
11566 It accepts the following optional parameters:
11567
11568 @table @option
11569 @item device
11570 The number of the CUDA device to use
11571 @end table
11572
11573 @section hqx
11574
11575 Apply a high-quality magnification filter designed for pixel art. This filter
11576 was originally created by Maxim Stepin.
11577
11578 It accepts the following option:
11579
11580 @table @option
11581 @item n
11582 Set the scaling dimension: @code{2} for @code{hq2x}, @code{3} for
11583 @code{hq3x} and @code{4} for @code{hq4x}.
11584 Default is @code{3}.
11585 @end table
11586
11587 @section hstack
11588 Stack input videos horizontally.
11589
11590 All streams must be of same pixel format and of same height.
11591
11592 Note that this filter is faster than using @ref{overlay} and @ref{pad} filter
11593 to create same output.
11594
11595 The filter accepts the following option:
11596
11597 @table @option
11598 @item inputs
11599 Set number of input streams. Default is 2.
11600
11601 @item shortest
11602 If set to 1, force the output to terminate when the shortest input
11603 terminates. Default value is 0.
11604 @end table
11605
11606 @section hue
11607
11608 Modify the hue and/or the saturation of the input.
11609
11610 It accepts the following parameters:
11611
11612 @table @option
11613 @item h
11614 Specify the hue angle as a number of degrees. It accepts an expression,
11615 and defaults to "0".
11616
11617 @item s
11618 Specify the saturation in the [-10,10] range. It accepts an expression and
11619 defaults to "1".
11620
11621 @item H
11622 Specify the hue angle as a number of radians. It accepts an
11623 expression, and defaults to "0".
11624
11625 @item b
11626 Specify the brightness in the [-10,10] range. It accepts an expression and
11627 defaults to "0".
11628 @end table
11629
11630 @option{h} and @option{H} are mutually exclusive, and can't be
11631 specified at the same time.
11632
11633 The @option{b}, @option{h}, @option{H} and @option{s} option values are
11634 expressions containing the following constants:
11635
11636 @table @option
11637 @item n
11638 frame count of the input frame starting from 0
11639
11640 @item pts
11641 presentation timestamp of the input frame expressed in time base units
11642
11643 @item r
11644 frame rate of the input video, NAN if the input frame rate is unknown
11645
11646 @item t
11647 timestamp expressed in seconds, NAN if the input timestamp is unknown
11648
11649 @item tb
11650 time base of the input video
11651 @end table
11652
11653 @subsection Examples
11654
11655 @itemize
11656 @item
11657 Set the hue to 90 degrees and the saturation to 1.0:
11658 @example
11659 hue=h=90:s=1
11660 @end example
11661
11662 @item
11663 Same command but expressing the hue in radians:
11664 @example
11665 hue=H=PI/2:s=1
11666 @end example
11667
11668 @item
11669 Rotate hue and make the saturation swing between 0
11670 and 2 over a period of 1 second:
11671 @example
11672 hue="H=2*PI*t: s=sin(2*PI*t)+1"
11673 @end example
11674
11675 @item
11676 Apply a 3 seconds saturation fade-in effect starting at 0:
11677 @example
11678 hue="s=min(t/3\,1)"
11679 @end example
11680
11681 The general fade-in expression can be written as:
11682 @example
11683 hue="s=min(0\, max((t-START)/DURATION\, 1))"
11684 @end example
11685
11686 @item
11687 Apply a 3 seconds saturation fade-out effect starting at 5 seconds:
11688 @example
11689 hue="s=max(0\, min(1\, (8-t)/3))"
11690 @end example
11691
11692 The general fade-out expression can be written as:
11693 @example
11694 hue="s=max(0\, min(1\, (START+DURATION-t)/DURATION))"
11695 @end example
11696
11697 @end itemize
11698
11699 @subsection Commands
11700
11701 This filter supports the following commands:
11702 @table @option
11703 @item b
11704 @item s
11705 @item h
11706 @item H
11707 Modify the hue and/or the saturation and/or brightness of the input video.
11708 The command accepts the same syntax of the corresponding option.
11709
11710 If the specified expression is not valid, it is kept at its current
11711 value.
11712 @end table
11713
11714 @section hysteresis
11715
11716 Grow first stream into second stream by connecting components.
11717 This makes it possible to build more robust edge masks.
11718
11719 This filter accepts the following options:
11720
11721 @table @option
11722 @item planes
11723 Set which planes will be processed as bitmap, unprocessed planes will be
11724 copied from first stream.
11725 By default value 0xf, all planes will be processed.
11726
11727 @item threshold
11728 Set threshold which is used in filtering. If pixel component value is higher than
11729 this value filter algorithm for connecting components is activated.
11730 By default value is 0.
11731 @end table
11732
11733 @section idet
11734
11735 Detect video interlacing type.
11736
11737 This filter tries to detect if the input frames are interlaced, progressive,
11738 top or bottom field first. It will also try to detect fields that are
11739 repeated between adjacent frames (a sign of telecine).
11740
11741 Single frame detection considers only immediately adjacent frames when classifying each frame.
11742 Multiple frame detection incorporates the classification history of previous frames.
11743
11744 The filter will log these metadata values:
11745
11746 @table @option
11747 @item single.current_frame
11748 Detected type of current frame using single-frame detection. One of:
11749 ``tff'' (top field first), ``bff'' (bottom field first),
11750 ``progressive'', or ``undetermined''
11751
11752 @item single.tff
11753 Cumulative number of frames detected as top field first using single-frame detection.
11754
11755 @item multiple.tff
11756 Cumulative number of frames detected as top field first using multiple-frame detection.
11757
11758 @item single.bff
11759 Cumulative number of frames detected as bottom field first using single-frame detection.
11760
11761 @item multiple.current_frame
11762 Detected type of current frame using multiple-frame detection. One of:
11763 ``tff'' (top field first), ``bff'' (bottom field first),
11764 ``progressive'', or ``undetermined''
11765
11766 @item multiple.bff
11767 Cumulative number of frames detected as bottom field first using multiple-frame detection.
11768
11769 @item single.progressive
11770 Cumulative number of frames detected as progressive using single-frame detection.
11771
11772 @item multiple.progressive
11773 Cumulative number of frames detected as progressive using multiple-frame detection.
11774
11775 @item single.undetermined
11776 Cumulative number of frames that could not be classified using single-frame detection.
11777
11778 @item multiple.undetermined
11779 Cumulative number of frames that could not be classified using multiple-frame detection.
11780
11781 @item repeated.current_frame
11782 Which field in the current frame is repeated from the last. One of ``neither'', ``top'', or ``bottom''.
11783
11784 @item repeated.neither
11785 Cumulative number of frames with no repeated field.
11786
11787 @item repeated.top
11788 Cumulative number of frames with the top field repeated from the previous frame's top field.
11789
11790 @item repeated.bottom
11791 Cumulative number of frames with the bottom field repeated from the previous frame's bottom field.
11792 @end table
11793
11794 The filter accepts the following options:
11795
11796 @table @option
11797 @item intl_thres
11798 Set interlacing threshold.
11799 @item prog_thres
11800 Set progressive threshold.
11801 @item rep_thres
11802 Threshold for repeated field detection.
11803 @item half_life
11804 Number of frames after which a given frame's contribution to the
11805 statistics is halved (i.e., it contributes only 0.5 to its
11806 classification). The default of 0 means that all frames seen are given
11807 full weight of 1.0 forever.
11808 @item analyze_interlaced_flag
11809 When this is not 0 then idet will use the specified number of frames to determine
11810 if the interlaced flag is accurate, it will not count undetermined frames.
11811 If the flag is found to be accurate it will be used without any further
11812 computations, if it is found to be inaccurate it will be cleared without any
11813 further computations. This allows inserting the idet filter as a low computational
11814 method to clean up the interlaced flag
11815 @end table
11816
11817 @section il
11818
11819 Deinterleave or interleave fields.
11820
11821 This filter allows one to process interlaced images fields without
11822 deinterlacing them. Deinterleaving splits the input frame into 2
11823 fields (so called half pictures). Odd lines are moved to the top
11824 half of the output image, even lines to the bottom half.
11825 You can process (filter) them independently and then re-interleave them.
11826
11827 The filter accepts the following options:
11828
11829 @table @option
11830 @item luma_mode, l
11831 @item chroma_mode, c
11832 @item alpha_mode, a
11833 Available values for @var{luma_mode}, @var{chroma_mode} and
11834 @var{alpha_mode} are:
11835
11836 @table @samp
11837 @item none
11838 Do nothing.
11839
11840 @item deinterleave, d
11841 Deinterleave fields, placing one above the other.
11842
11843 @item interleave, i
11844 Interleave fields. Reverse the effect of deinterleaving.
11845 @end table
11846 Default value is @code{none}.
11847
11848 @item luma_swap, ls
11849 @item chroma_swap, cs
11850 @item alpha_swap, as
11851 Swap luma/chroma/alpha fields. Exchange even & odd lines. Default value is @code{0}.
11852 @end table
11853
11854 @section inflate
11855
11856 Apply inflate effect to the video.
11857
11858 This filter replaces the pixel by the local(3x3) average by taking into account
11859 only values higher than the pixel.
11860
11861 It accepts the following options:
11862
11863 @table @option
11864 @item threshold0
11865 @item threshold1
11866 @item threshold2
11867 @item threshold3
11868 Limit the maximum change for each plane, default is 65535.
11869 If 0, plane will remain unchanged.
11870 @end table
11871
11872 @section interlace
11873
11874 Simple interlacing filter from progressive contents. This interleaves upper (or
11875 lower) lines from odd frames with lower (or upper) lines from even frames,
11876 halving the frame rate and preserving image height.
11877
11878 @example
11879    Original        Original             New Frame
11880    Frame 'j'      Frame 'j+1'             (tff)
11881   ==========      ===========       ==================
11882     Line 0  -------------------->    Frame 'j' Line 0
11883     Line 1          Line 1  ---->   Frame 'j+1' Line 1
11884     Line 2 --------------------->    Frame 'j' Line 2
11885     Line 3          Line 3  ---->   Frame 'j+1' Line 3
11886      ...             ...                   ...
11887 New Frame + 1 will be generated by Frame 'j+2' and Frame 'j+3' and so on
11888 @end example
11889
11890 It accepts the following optional parameters:
11891
11892 @table @option
11893 @item scan
11894 This determines whether the interlaced frame is taken from the even
11895 (tff - default) or odd (bff) lines of the progressive frame.
11896
11897 @item lowpass
11898 Vertical lowpass filter to avoid twitter interlacing and
11899 reduce moire patterns.
11900
11901 @table @samp
11902 @item 0, off
11903 Disable vertical lowpass filter
11904
11905 @item 1, linear
11906 Enable linear filter (default)
11907
11908 @item 2, complex
11909 Enable complex filter. This will slightly less reduce twitter and moire
11910 but better retain detail and subjective sharpness impression.
11911
11912 @end table
11913 @end table
11914
11915 @section kerndeint
11916
11917 Deinterlace input video by applying Donald Graft's adaptive kernel
11918 deinterling. Work on interlaced parts of a video to produce
11919 progressive frames.
11920
11921 The description of the accepted parameters follows.
11922
11923 @table @option
11924 @item thresh
11925 Set the threshold which affects the filter's tolerance when
11926 determining if a pixel line must be processed. It must be an integer
11927 in the range [0,255] and defaults to 10. A value of 0 will result in
11928 applying the process on every pixels.
11929
11930 @item map
11931 Paint pixels exceeding the threshold value to white if set to 1.
11932 Default is 0.
11933
11934 @item order
11935 Set the fields order. Swap fields if set to 1, leave fields alone if
11936 0. Default is 0.
11937
11938 @item sharp
11939 Enable additional sharpening if set to 1. Default is 0.
11940
11941 @item twoway
11942 Enable twoway sharpening if set to 1. Default is 0.
11943 @end table
11944
11945 @subsection Examples
11946
11947 @itemize
11948 @item
11949 Apply default values:
11950 @example
11951 kerndeint=thresh=10:map=0:order=0:sharp=0:twoway=0
11952 @end example
11953
11954 @item
11955 Enable additional sharpening:
11956 @example
11957 kerndeint=sharp=1
11958 @end example
11959
11960 @item
11961 Paint processed pixels in white:
11962 @example
11963 kerndeint=map=1
11964 @end example
11965 @end itemize
11966
11967 @section lagfun
11968
11969 Slowly update darker pixels.
11970
11971 This filter makes short flashes of light appear longer.
11972 This filter accepts the following options:
11973
11974 @table @option
11975 @item decay
11976 Set factor for decaying. Default is .95. Allowed range is from 0 to 1.
11977
11978 @item planes
11979 Set which planes to filter. Default is all. Allowed range is from 0 to 15.
11980 @end table
11981
11982 @section lenscorrection
11983
11984 Correct radial lens distortion
11985
11986 This filter can be used to correct for radial distortion as can result from the use
11987 of wide angle lenses, and thereby re-rectify the image. To find the right parameters
11988 one can use tools available for example as part of opencv or simply trial-and-error.
11989 To use opencv use the calibration sample (under samples/cpp) from the opencv sources
11990 and extract the k1 and k2 coefficients from the resulting matrix.
11991
11992 Note that effectively the same filter is available in the open-source tools Krita and
11993 Digikam from the KDE project.
11994
11995 In contrast to the @ref{vignette} filter, which can also be used to compensate lens errors,
11996 this filter corrects the distortion of the image, whereas @ref{vignette} corrects the
11997 brightness distribution, so you may want to use both filters together in certain
11998 cases, though you will have to take care of ordering, i.e. whether vignetting should
11999 be applied before or after lens correction.
12000
12001 @subsection Options
12002
12003 The filter accepts the following options:
12004
12005 @table @option
12006 @item cx
12007 Relative x-coordinate of the focal point of the image, and thereby the center of the
12008 distortion. This value has a range [0,1] and is expressed as fractions of the image
12009 width. Default is 0.5.
12010 @item cy
12011 Relative y-coordinate of the focal point of the image, and thereby the center of the
12012 distortion. This value has a range [0,1] and is expressed as fractions of the image
12013 height. Default is 0.5.
12014 @item k1
12015 Coefficient of the quadratic correction term. This value has a range [-1,1]. 0 means
12016 no correction. Default is 0.
12017 @item k2
12018 Coefficient of the double quadratic correction term. This value has a range [-1,1].
12019 0 means no correction. Default is 0.
12020 @end table
12021
12022 The formula that generates the correction is:
12023
12024 @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)
12025
12026 where @var{r_0} is halve of the image diagonal and @var{r_src} and @var{r_tgt} are the
12027 distances from the focal point in the source and target images, respectively.
12028
12029 @section lensfun
12030
12031 Apply lens correction via the lensfun library (@url{http://lensfun.sourceforge.net/}).
12032
12033 The @code{lensfun} filter requires the camera make, camera model, and lens model
12034 to apply the lens correction. The filter will load the lensfun database and
12035 query it to find the corresponding camera and lens entries in the database. As
12036 long as these entries can be found with the given options, the filter can
12037 perform corrections on frames. Note that incomplete strings will result in the
12038 filter choosing the best match with the given options, and the filter will
12039 output the chosen camera and lens models (logged with level "info"). You must
12040 provide the make, camera model, and lens model as they are required.
12041
12042 The filter accepts the following options:
12043
12044 @table @option
12045 @item make
12046 The make of the camera (for example, "Canon"). This option is required.
12047
12048 @item model
12049 The model of the camera (for example, "Canon EOS 100D"). This option is
12050 required.
12051
12052 @item lens_model
12053 The model of the lens (for example, "Canon EF-S 18-55mm f/3.5-5.6 IS STM"). This
12054 option is required.
12055
12056 @item mode
12057 The type of correction to apply. The following values are valid options:
12058
12059 @table @samp
12060 @item vignetting
12061 Enables fixing lens vignetting.
12062
12063 @item geometry
12064 Enables fixing lens geometry. This is the default.
12065
12066 @item subpixel
12067 Enables fixing chromatic aberrations.
12068
12069 @item vig_geo
12070 Enables fixing lens vignetting and lens geometry.
12071
12072 @item vig_subpixel
12073 Enables fixing lens vignetting and chromatic aberrations.
12074
12075 @item distortion
12076 Enables fixing both lens geometry and chromatic aberrations.
12077
12078 @item all
12079 Enables all possible corrections.
12080
12081 @end table
12082 @item focal_length
12083 The focal length of the image/video (zoom; expected constant for video). For
12084 example, a 18--55mm lens has focal length range of [18--55], so a value in that
12085 range should be chosen when using that lens. Default 18.
12086
12087 @item aperture
12088 The aperture of the image/video (expected constant for video). Note that
12089 aperture is only used for vignetting correction. Default 3.5.
12090
12091 @item focus_distance
12092 The focus distance of the image/video (expected constant for video). Note that
12093 focus distance is only used for vignetting and only slightly affects the
12094 vignetting correction process. If unknown, leave it at the default value (which
12095 is 1000).
12096
12097 @item scale
12098 The scale factor which is applied after transformation. After correction the
12099 video is no longer necessarily rectangular. This parameter controls how much of
12100 the resulting image is visible. The value 0 means that a value will be chosen
12101 automatically such that there is little or no unmapped area in the output
12102 image. 1.0 means that no additional scaling is done. Lower values may result
12103 in more of the corrected image being visible, while higher values may avoid
12104 unmapped areas in the output.
12105
12106 @item target_geometry
12107 The target geometry of the output image/video. The following values are valid
12108 options:
12109
12110 @table @samp
12111 @item rectilinear (default)
12112 @item fisheye
12113 @item panoramic
12114 @item equirectangular
12115 @item fisheye_orthographic
12116 @item fisheye_stereographic
12117 @item fisheye_equisolid
12118 @item fisheye_thoby
12119 @end table
12120 @item reverse
12121 Apply the reverse of image correction (instead of correcting distortion, apply
12122 it).
12123
12124 @item interpolation
12125 The type of interpolation used when correcting distortion. The following values
12126 are valid options:
12127
12128 @table @samp
12129 @item nearest
12130 @item linear (default)
12131 @item lanczos
12132 @end table
12133 @end table
12134
12135 @subsection Examples
12136
12137 @itemize
12138 @item
12139 Apply lens correction with make "Canon", camera model "Canon EOS 100D", and lens
12140 model "Canon EF-S 18-55mm f/3.5-5.6 IS STM" with focal length of "18" and
12141 aperture of "8.0".
12142
12143 @example
12144 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
12145 @end example
12146
12147 @item
12148 Apply the same as before, but only for the first 5 seconds of video.
12149
12150 @example
12151 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
12152 @end example
12153
12154 @end itemize
12155
12156 @section libvmaf
12157
12158 Obtain the VMAF (Video Multi-Method Assessment Fusion)
12159 score between two input videos.
12160
12161 The obtained VMAF score is printed through the logging system.
12162
12163 It requires Netflix's vmaf library (libvmaf) as a pre-requisite.
12164 After installing the library it can be enabled using:
12165 @code{./configure --enable-libvmaf --enable-version3}.
12166 If no model path is specified it uses the default model: @code{vmaf_v0.6.1.pkl}.
12167
12168 The filter has following options:
12169
12170 @table @option
12171 @item model_path
12172 Set the model path which is to be used for SVM.
12173 Default value: @code{"vmaf_v0.6.1.pkl"}
12174
12175 @item log_path
12176 Set the file path to be used to store logs.
12177
12178 @item log_fmt
12179 Set the format of the log file (xml or json).
12180
12181 @item enable_transform
12182 This option can enable/disable the @code{score_transform} applied to the final predicted VMAF score,
12183 if you have specified score_transform option in the input parameter file passed to @code{run_vmaf_training.py}
12184 Default value: @code{false}
12185
12186 @item phone_model
12187 Invokes the phone model which will generate VMAF scores higher than in the
12188 regular model, which is more suitable for laptop, TV, etc. viewing conditions.
12189
12190 @item psnr
12191 Enables computing psnr along with vmaf.
12192
12193 @item ssim
12194 Enables computing ssim along with vmaf.
12195
12196 @item ms_ssim
12197 Enables computing ms_ssim along with vmaf.
12198
12199 @item pool
12200 Set the pool method (mean, min or harmonic mean) to be used for computing vmaf.
12201
12202 @item n_threads
12203 Set number of threads to be used when computing vmaf.
12204
12205 @item n_subsample
12206 Set interval for frame subsampling used when computing vmaf.
12207
12208 @item enable_conf_interval
12209 Enables confidence interval.
12210 @end table
12211
12212 This filter also supports the @ref{framesync} options.
12213
12214 On the below examples the input file @file{main.mpg} being processed is
12215 compared with the reference file @file{ref.mpg}.
12216
12217 @example
12218 ffmpeg -i main.mpg -i ref.mpg -lavfi libvmaf -f null -
12219 @end example
12220
12221 Example with options:
12222 @example
12223 ffmpeg -i main.mpg -i ref.mpg -lavfi libvmaf="psnr=1:log_fmt=json" -f null -
12224 @end example
12225
12226 @section limiter
12227
12228 Limits the pixel components values to the specified range [min, max].
12229
12230 The filter accepts the following options:
12231
12232 @table @option
12233 @item min
12234 Lower bound. Defaults to the lowest allowed value for the input.
12235
12236 @item max
12237 Upper bound. Defaults to the highest allowed value for the input.
12238
12239 @item planes
12240 Specify which planes will be processed. Defaults to all available.
12241 @end table
12242
12243 @section loop
12244
12245 Loop video frames.
12246
12247 The filter accepts the following options:
12248
12249 @table @option
12250 @item loop
12251 Set the number of loops. Setting this value to -1 will result in infinite loops.
12252 Default is 0.
12253
12254 @item size
12255 Set maximal size in number of frames. Default is 0.
12256
12257 @item start
12258 Set first frame of loop. Default is 0.
12259 @end table
12260
12261 @subsection Examples
12262
12263 @itemize
12264 @item
12265 Loop single first frame infinitely:
12266 @example
12267 loop=loop=-1:size=1:start=0
12268 @end example
12269
12270 @item
12271 Loop single first frame 10 times:
12272 @example
12273 loop=loop=10:size=1:start=0
12274 @end example
12275
12276 @item
12277 Loop 10 first frames 5 times:
12278 @example
12279 loop=loop=5:size=10:start=0
12280 @end example
12281 @end itemize
12282
12283 @section lut1d
12284
12285 Apply a 1D LUT to an input video.
12286
12287 The filter accepts the following options:
12288
12289 @table @option
12290 @item file
12291 Set the 1D LUT file name.
12292
12293 Currently supported formats:
12294 @table @samp
12295 @item cube
12296 Iridas
12297 @item csp
12298 cineSpace
12299 @end table
12300
12301 @item interp
12302 Select interpolation mode.
12303
12304 Available values are:
12305
12306 @table @samp
12307 @item nearest
12308 Use values from the nearest defined point.
12309 @item linear
12310 Interpolate values using the linear interpolation.
12311 @item cosine
12312 Interpolate values using the cosine interpolation.
12313 @item cubic
12314 Interpolate values using the cubic interpolation.
12315 @item spline
12316 Interpolate values using the spline interpolation.
12317 @end table
12318 @end table
12319
12320 @anchor{lut3d}
12321 @section lut3d
12322
12323 Apply a 3D LUT to an input video.
12324
12325 The filter accepts the following options:
12326
12327 @table @option
12328 @item file
12329 Set the 3D LUT file name.
12330
12331 Currently supported formats:
12332 @table @samp
12333 @item 3dl
12334 AfterEffects
12335 @item cube
12336 Iridas
12337 @item dat
12338 DaVinci
12339 @item m3d
12340 Pandora
12341 @item csp
12342 cineSpace
12343 @end table
12344 @item interp
12345 Select interpolation mode.
12346
12347 Available values are:
12348
12349 @table @samp
12350 @item nearest
12351 Use values from the nearest defined point.
12352 @item trilinear
12353 Interpolate values using the 8 points defining a cube.
12354 @item tetrahedral
12355 Interpolate values using a tetrahedron.
12356 @end table
12357 @end table
12358
12359 @section lumakey
12360
12361 Turn certain luma values into transparency.
12362
12363 The filter accepts the following options:
12364
12365 @table @option
12366 @item threshold
12367 Set the luma which will be used as base for transparency.
12368 Default value is @code{0}.
12369
12370 @item tolerance
12371 Set the range of luma values to be keyed out.
12372 Default value is @code{0}.
12373
12374 @item softness
12375 Set the range of softness. Default value is @code{0}.
12376 Use this to control gradual transition from zero to full transparency.
12377 @end table
12378
12379 @section lut, lutrgb, lutyuv
12380
12381 Compute a look-up table for binding each pixel component input value
12382 to an output value, and apply it to the input video.
12383
12384 @var{lutyuv} applies a lookup table to a YUV input video, @var{lutrgb}
12385 to an RGB input video.
12386
12387 These filters accept the following parameters:
12388 @table @option
12389 @item c0
12390 set first pixel component expression
12391 @item c1
12392 set second pixel component expression
12393 @item c2
12394 set third pixel component expression
12395 @item c3
12396 set fourth pixel component expression, corresponds to the alpha component
12397
12398 @item r
12399 set red component expression
12400 @item g
12401 set green component expression
12402 @item b
12403 set blue component expression
12404 @item a
12405 alpha component expression
12406
12407 @item y
12408 set Y/luminance component expression
12409 @item u
12410 set U/Cb component expression
12411 @item v
12412 set V/Cr component expression
12413 @end table
12414
12415 Each of them specifies the expression to use for computing the lookup table for
12416 the corresponding pixel component values.
12417
12418 The exact component associated to each of the @var{c*} options depends on the
12419 format in input.
12420
12421 The @var{lut} filter requires either YUV or RGB pixel formats in input,
12422 @var{lutrgb} requires RGB pixel formats in input, and @var{lutyuv} requires YUV.
12423
12424 The expressions can contain the following constants and functions:
12425
12426 @table @option
12427 @item w
12428 @item h
12429 The input width and height.
12430
12431 @item val
12432 The input value for the pixel component.
12433
12434 @item clipval
12435 The input value, clipped to the @var{minval}-@var{maxval} range.
12436
12437 @item maxval
12438 The maximum value for the pixel component.
12439
12440 @item minval
12441 The minimum value for the pixel component.
12442
12443 @item negval
12444 The negated value for the pixel component value, clipped to the
12445 @var{minval}-@var{maxval} range; it corresponds to the expression
12446 "maxval-clipval+minval".
12447
12448 @item clip(val)
12449 The computed value in @var{val}, clipped to the
12450 @var{minval}-@var{maxval} range.
12451
12452 @item gammaval(gamma)
12453 The computed gamma correction value of the pixel component value,
12454 clipped to the @var{minval}-@var{maxval} range. It corresponds to the
12455 expression
12456 "pow((clipval-minval)/(maxval-minval)\,@var{gamma})*(maxval-minval)+minval"
12457
12458 @end table
12459
12460 All expressions default to "val".
12461
12462 @subsection Examples
12463
12464 @itemize
12465 @item
12466 Negate input video:
12467 @example
12468 lutrgb="r=maxval+minval-val:g=maxval+minval-val:b=maxval+minval-val"
12469 lutyuv="y=maxval+minval-val:u=maxval+minval-val:v=maxval+minval-val"
12470 @end example
12471
12472 The above is the same as:
12473 @example
12474 lutrgb="r=negval:g=negval:b=negval"
12475 lutyuv="y=negval:u=negval:v=negval"
12476 @end example
12477
12478 @item
12479 Negate luminance:
12480 @example
12481 lutyuv=y=negval
12482 @end example
12483
12484 @item
12485 Remove chroma components, turning the video into a graytone image:
12486 @example
12487 lutyuv="u=128:v=128"
12488 @end example
12489
12490 @item
12491 Apply a luma burning effect:
12492 @example
12493 lutyuv="y=2*val"
12494 @end example
12495
12496 @item
12497 Remove green and blue components:
12498 @example
12499 lutrgb="g=0:b=0"
12500 @end example
12501
12502 @item
12503 Set a constant alpha channel value on input:
12504 @example
12505 format=rgba,lutrgb=a="maxval-minval/2"
12506 @end example
12507
12508 @item
12509 Correct luminance gamma by a factor of 0.5:
12510 @example
12511 lutyuv=y=gammaval(0.5)
12512 @end example
12513
12514 @item
12515 Discard least significant bits of luma:
12516 @example
12517 lutyuv=y='bitand(val, 128+64+32)'
12518 @end example
12519
12520 @item
12521 Technicolor like effect:
12522 @example
12523 lutyuv=u='(val-maxval/2)*2+maxval/2':v='(val-maxval/2)*2+maxval/2'
12524 @end example
12525 @end itemize
12526
12527 @section lut2, tlut2
12528
12529 The @code{lut2} filter takes two input streams and outputs one
12530 stream.
12531
12532 The @code{tlut2} (time lut2) filter takes two consecutive frames
12533 from one single stream.
12534
12535 This filter accepts the following parameters:
12536 @table @option
12537 @item c0
12538 set first pixel component expression
12539 @item c1
12540 set second pixel component expression
12541 @item c2
12542 set third pixel component expression
12543 @item c3
12544 set fourth pixel component expression, corresponds to the alpha component
12545
12546 @item d
12547 set output bit depth, only available for @code{lut2} filter. By default is 0,
12548 which means bit depth is automatically picked from first input format.
12549 @end table
12550
12551 Each of them specifies the expression to use for computing the lookup table for
12552 the corresponding pixel component values.
12553
12554 The exact component associated to each of the @var{c*} options depends on the
12555 format in inputs.
12556
12557 The expressions can contain the following constants:
12558
12559 @table @option
12560 @item w
12561 @item h
12562 The input width and height.
12563
12564 @item x
12565 The first input value for the pixel component.
12566
12567 @item y
12568 The second input value for the pixel component.
12569
12570 @item bdx
12571 The first input video bit depth.
12572
12573 @item bdy
12574 The second input video bit depth.
12575 @end table
12576
12577 All expressions default to "x".
12578
12579 @subsection Examples
12580
12581 @itemize
12582 @item
12583 Highlight differences between two RGB video streams:
12584 @example
12585 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)'
12586 @end example
12587
12588 @item
12589 Highlight differences between two YUV video streams:
12590 @example
12591 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)'
12592 @end example
12593
12594 @item
12595 Show max difference between two video streams:
12596 @example
12597 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)))'
12598 @end example
12599 @end itemize
12600
12601 @section maskedclamp
12602
12603 Clamp the first input stream with the second input and third input stream.
12604
12605 Returns the value of first stream to be between second input
12606 stream - @code{undershoot} and third input stream + @code{overshoot}.
12607
12608 This filter accepts the following options:
12609 @table @option
12610 @item undershoot
12611 Default value is @code{0}.
12612
12613 @item overshoot
12614 Default value is @code{0}.
12615
12616 @item planes
12617 Set which planes will be processed as bitmap, unprocessed planes will be
12618 copied from first stream.
12619 By default value 0xf, all planes will be processed.
12620 @end table
12621
12622 @section maskedmerge
12623
12624 Merge the first input stream with the second input stream using per pixel
12625 weights in the third input stream.
12626
12627 A value of 0 in the third stream pixel component means that pixel component
12628 from first stream is returned unchanged, while maximum value (eg. 255 for
12629 8-bit videos) means that pixel component from second stream is returned
12630 unchanged. Intermediate values define the amount of merging between both
12631 input stream's pixel components.
12632
12633 This filter accepts the following options:
12634 @table @option
12635 @item planes
12636 Set which planes will be processed as bitmap, unprocessed planes will be
12637 copied from first stream.
12638 By default value 0xf, all planes will be processed.
12639 @end table
12640
12641 @section maskfun
12642 Create mask from input video.
12643
12644 For example it is useful to create motion masks after @code{tblend} filter.
12645
12646 This filter accepts the following options:
12647
12648 @table @option
12649 @item low
12650 Set low threshold. Any pixel component lower or exact than this value will be set to 0.
12651
12652 @item high
12653 Set high threshold. Any pixel component higher than this value will be set to max value
12654 allowed for current pixel format.
12655
12656 @item planes
12657 Set planes to filter, by default all available planes are filtered.
12658
12659 @item fill
12660 Fill all frame pixels with this value.
12661
12662 @item sum
12663 Set max average pixel value for frame. If sum of all pixel components is higher that this
12664 average, output frame will be completely filled with value set by @var{fill} option.
12665 Typically useful for scene changes when used in combination with @code{tblend} filter.
12666 @end table
12667
12668 @section mcdeint
12669
12670 Apply motion-compensation deinterlacing.
12671
12672 It needs one field per frame as input and must thus be used together
12673 with yadif=1/3 or equivalent.
12674
12675 This filter accepts the following options:
12676 @table @option
12677 @item mode
12678 Set the deinterlacing mode.
12679
12680 It accepts one of the following values:
12681 @table @samp
12682 @item fast
12683 @item medium
12684 @item slow
12685 use iterative motion estimation
12686 @item extra_slow
12687 like @samp{slow}, but use multiple reference frames.
12688 @end table
12689 Default value is @samp{fast}.
12690
12691 @item parity
12692 Set the picture field parity assumed for the input video. It must be
12693 one of the following values:
12694
12695 @table @samp
12696 @item 0, tff
12697 assume top field first
12698 @item 1, bff
12699 assume bottom field first
12700 @end table
12701
12702 Default value is @samp{bff}.
12703
12704 @item qp
12705 Set per-block quantization parameter (QP) used by the internal
12706 encoder.
12707
12708 Higher values should result in a smoother motion vector field but less
12709 optimal individual vectors. Default value is 1.
12710 @end table
12711
12712 @section mergeplanes
12713
12714 Merge color channel components from several video streams.
12715
12716 The filter accepts up to 4 input streams, and merge selected input
12717 planes to the output video.
12718
12719 This filter accepts the following options:
12720 @table @option
12721 @item mapping
12722 Set input to output plane mapping. Default is @code{0}.
12723
12724 The mappings is specified as a bitmap. It should be specified as a
12725 hexadecimal number in the form 0xAa[Bb[Cc[Dd]]]. 'Aa' describes the
12726 mapping for the first plane of the output stream. 'A' sets the number of
12727 the input stream to use (from 0 to 3), and 'a' the plane number of the
12728 corresponding input to use (from 0 to 3). The rest of the mappings is
12729 similar, 'Bb' describes the mapping for the output stream second
12730 plane, 'Cc' describes the mapping for the output stream third plane and
12731 'Dd' describes the mapping for the output stream fourth plane.
12732
12733 @item format
12734 Set output pixel format. Default is @code{yuva444p}.
12735 @end table
12736
12737 @subsection Examples
12738
12739 @itemize
12740 @item
12741 Merge three gray video streams of same width and height into single video stream:
12742 @example
12743 [a0][a1][a2]mergeplanes=0x001020:yuv444p
12744 @end example
12745
12746 @item
12747 Merge 1st yuv444p stream and 2nd gray video stream into yuva444p video stream:
12748 @example
12749 [a0][a1]mergeplanes=0x00010210:yuva444p
12750 @end example
12751
12752 @item
12753 Swap Y and A plane in yuva444p stream:
12754 @example
12755 format=yuva444p,mergeplanes=0x03010200:yuva444p
12756 @end example
12757
12758 @item
12759 Swap U and V plane in yuv420p stream:
12760 @example
12761 format=yuv420p,mergeplanes=0x000201:yuv420p
12762 @end example
12763
12764 @item
12765 Cast a rgb24 clip to yuv444p:
12766 @example
12767 format=rgb24,mergeplanes=0x000102:yuv444p
12768 @end example
12769 @end itemize
12770
12771 @section mestimate
12772
12773 Estimate and export motion vectors using block matching algorithms.
12774 Motion vectors are stored in frame side data to be used by other filters.
12775
12776 This filter accepts the following options:
12777 @table @option
12778 @item method
12779 Specify the motion estimation method. Accepts one of the following values:
12780
12781 @table @samp
12782 @item esa
12783 Exhaustive search algorithm.
12784 @item tss
12785 Three step search algorithm.
12786 @item tdls
12787 Two dimensional logarithmic search algorithm.
12788 @item ntss
12789 New three step search algorithm.
12790 @item fss
12791 Four step search algorithm.
12792 @item ds
12793 Diamond search algorithm.
12794 @item hexbs
12795 Hexagon-based search algorithm.
12796 @item epzs
12797 Enhanced predictive zonal search algorithm.
12798 @item umh
12799 Uneven multi-hexagon search algorithm.
12800 @end table
12801 Default value is @samp{esa}.
12802
12803 @item mb_size
12804 Macroblock size. Default @code{16}.
12805
12806 @item search_param
12807 Search parameter. Default @code{7}.
12808 @end table
12809
12810 @section midequalizer
12811
12812 Apply Midway Image Equalization effect using two video streams.
12813
12814 Midway Image Equalization adjusts a pair of images to have the same
12815 histogram, while maintaining their dynamics as much as possible. It's
12816 useful for e.g. matching exposures from a pair of stereo cameras.
12817
12818 This filter has two inputs and one output, which must be of same pixel format, but
12819 may be of different sizes. The output of filter is first input adjusted with
12820 midway histogram of both inputs.
12821
12822 This filter accepts the following option:
12823
12824 @table @option
12825 @item planes
12826 Set which planes to process. Default is @code{15}, which is all available planes.
12827 @end table
12828
12829 @section minterpolate
12830
12831 Convert the video to specified frame rate using motion interpolation.
12832
12833 This filter accepts the following options:
12834 @table @option
12835 @item fps
12836 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}.
12837
12838 @item mi_mode
12839 Motion interpolation mode. Following values are accepted:
12840 @table @samp
12841 @item dup
12842 Duplicate previous or next frame for interpolating new ones.
12843 @item blend
12844 Blend source frames. Interpolated frame is mean of previous and next frames.
12845 @item mci
12846 Motion compensated interpolation. Following options are effective when this mode is selected:
12847
12848 @table @samp
12849 @item mc_mode
12850 Motion compensation mode. Following values are accepted:
12851 @table @samp
12852 @item obmc
12853 Overlapped block motion compensation.
12854 @item aobmc
12855 Adaptive overlapped block motion compensation. Window weighting coefficients are controlled adaptively according to the reliabilities of the neighboring motion vectors to reduce oversmoothing.
12856 @end table
12857 Default mode is @samp{obmc}.
12858
12859 @item me_mode
12860 Motion estimation mode. Following values are accepted:
12861 @table @samp
12862 @item bidir
12863 Bidirectional motion estimation. Motion vectors are estimated for each source frame in both forward and backward directions.
12864 @item bilat
12865 Bilateral motion estimation. Motion vectors are estimated directly for interpolated frame.
12866 @end table
12867 Default mode is @samp{bilat}.
12868
12869 @item me
12870 The algorithm to be used for motion estimation. Following values are accepted:
12871 @table @samp
12872 @item esa
12873 Exhaustive search algorithm.
12874 @item tss
12875 Three step search algorithm.
12876 @item tdls
12877 Two dimensional logarithmic search algorithm.
12878 @item ntss
12879 New three step search algorithm.
12880 @item fss
12881 Four step search algorithm.
12882 @item ds
12883 Diamond search algorithm.
12884 @item hexbs
12885 Hexagon-based search algorithm.
12886 @item epzs
12887 Enhanced predictive zonal search algorithm.
12888 @item umh
12889 Uneven multi-hexagon search algorithm.
12890 @end table
12891 Default algorithm is @samp{epzs}.
12892
12893 @item mb_size
12894 Macroblock size. Default @code{16}.
12895
12896 @item search_param
12897 Motion estimation search parameter. Default @code{32}.
12898
12899 @item vsbmc
12900 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).
12901 @end table
12902 @end table
12903
12904 @item scd
12905 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:
12906 @table @samp
12907 @item none
12908 Disable scene change detection.
12909 @item fdiff
12910 Frame difference. Corresponding pixel values are compared and if it satisfies @var{scd_threshold} scene change is detected.
12911 @end table
12912 Default method is @samp{fdiff}.
12913
12914 @item scd_threshold
12915 Scene change detection threshold. Default is @code{5.0}.
12916 @end table
12917
12918 @section mix
12919
12920 Mix several video input streams into one video stream.
12921
12922 A description of the accepted options follows.
12923
12924 @table @option
12925 @item nb_inputs
12926 The number of inputs. If unspecified, it defaults to 2.
12927
12928 @item weights
12929 Specify weight of each input video stream as sequence.
12930 Each weight is separated by space. If number of weights
12931 is smaller than number of @var{frames} last specified
12932 weight will be used for all remaining unset weights.
12933
12934 @item scale
12935 Specify scale, if it is set it will be multiplied with sum
12936 of each weight multiplied with pixel values to give final destination
12937 pixel value. By default @var{scale} is auto scaled to sum of weights.
12938
12939 @item duration
12940 Specify how end of stream is determined.
12941 @table @samp
12942 @item longest
12943 The duration of the longest input. (default)
12944
12945 @item shortest
12946 The duration of the shortest input.
12947
12948 @item first
12949 The duration of the first input.
12950 @end table
12951 @end table
12952
12953 @section mpdecimate
12954
12955 Drop frames that do not differ greatly from the previous frame in
12956 order to reduce frame rate.
12957
12958 The main use of this filter is for very-low-bitrate encoding
12959 (e.g. streaming over dialup modem), but it could in theory be used for
12960 fixing movies that were inverse-telecined incorrectly.
12961
12962 A description of the accepted options follows.
12963
12964 @table @option
12965 @item max
12966 Set the maximum number of consecutive frames which can be dropped (if
12967 positive), or the minimum interval between dropped frames (if
12968 negative). If the value is 0, the frame is dropped disregarding the
12969 number of previous sequentially dropped frames.
12970
12971 Default value is 0.
12972
12973 @item hi
12974 @item lo
12975 @item frac
12976 Set the dropping threshold values.
12977
12978 Values for @option{hi} and @option{lo} are for 8x8 pixel blocks and
12979 represent actual pixel value differences, so a threshold of 64
12980 corresponds to 1 unit of difference for each pixel, or the same spread
12981 out differently over the block.
12982
12983 A frame is a candidate for dropping if no 8x8 blocks differ by more
12984 than a threshold of @option{hi}, and if no more than @option{frac} blocks (1
12985 meaning the whole image) differ by more than a threshold of @option{lo}.
12986
12987 Default value for @option{hi} is 64*12, default value for @option{lo} is
12988 64*5, and default value for @option{frac} is 0.33.
12989 @end table
12990
12991
12992 @section negate
12993
12994 Negate (invert) the input video.
12995
12996 It accepts the following option:
12997
12998 @table @option
12999
13000 @item negate_alpha
13001 With value 1, it negates the alpha component, if present. Default value is 0.
13002 @end table
13003
13004 @anchor{nlmeans}
13005 @section nlmeans
13006
13007 Denoise frames using Non-Local Means algorithm.
13008
13009 Each pixel is adjusted by looking for other pixels with similar contexts. This
13010 context similarity is defined by comparing their surrounding patches of size
13011 @option{p}x@option{p}. Patches are searched in an area of @option{r}x@option{r}
13012 around the pixel.
13013
13014 Note that the research area defines centers for patches, which means some
13015 patches will be made of pixels outside that research area.
13016
13017 The filter accepts the following options.
13018
13019 @table @option
13020 @item s
13021 Set denoising strength. Default is 1.0. Must be in range [1.0, 30.0].
13022
13023 @item p
13024 Set patch size. Default is 7. Must be odd number in range [0, 99].
13025
13026 @item pc
13027 Same as @option{p} but for chroma planes.
13028
13029 The default value is @var{0} and means automatic.
13030
13031 @item r
13032 Set research size. Default is 15. Must be odd number in range [0, 99].
13033
13034 @item rc
13035 Same as @option{r} but for chroma planes.
13036
13037 The default value is @var{0} and means automatic.
13038 @end table
13039
13040 @section nnedi
13041
13042 Deinterlace video using neural network edge directed interpolation.
13043
13044 This filter accepts the following options:
13045
13046 @table @option
13047 @item weights
13048 Mandatory option, without binary file filter can not work.
13049 Currently file can be found here:
13050 https://github.com/dubhater/vapoursynth-nnedi3/blob/master/src/nnedi3_weights.bin
13051
13052 @item deint
13053 Set which frames to deinterlace, by default it is @code{all}.
13054 Can be @code{all} or @code{interlaced}.
13055
13056 @item field
13057 Set mode of operation.
13058
13059 Can be one of the following:
13060
13061 @table @samp
13062 @item af
13063 Use frame flags, both fields.
13064 @item a
13065 Use frame flags, single field.
13066 @item t
13067 Use top field only.
13068 @item b
13069 Use bottom field only.
13070 @item tf
13071 Use both fields, top first.
13072 @item bf
13073 Use both fields, bottom first.
13074 @end table
13075
13076 @item planes
13077 Set which planes to process, by default filter process all frames.
13078
13079 @item nsize
13080 Set size of local neighborhood around each pixel, used by the predictor neural
13081 network.
13082
13083 Can be one of the following:
13084
13085 @table @samp
13086 @item s8x6
13087 @item s16x6
13088 @item s32x6
13089 @item s48x6
13090 @item s8x4
13091 @item s16x4
13092 @item s32x4
13093 @end table
13094
13095 @item nns
13096 Set the number of neurons in predictor neural network.
13097 Can be one of the following:
13098
13099 @table @samp
13100 @item n16
13101 @item n32
13102 @item n64
13103 @item n128
13104 @item n256
13105 @end table
13106
13107 @item qual
13108 Controls the number of different neural network predictions that are blended
13109 together to compute the final output value. Can be @code{fast}, default or
13110 @code{slow}.
13111
13112 @item etype
13113 Set which set of weights to use in the predictor.
13114 Can be one of the following:
13115
13116 @table @samp
13117 @item a
13118 weights trained to minimize absolute error
13119 @item s
13120 weights trained to minimize squared error
13121 @end table
13122
13123 @item pscrn
13124 Controls whether or not the prescreener neural network is used to decide
13125 which pixels should be processed by the predictor neural network and which
13126 can be handled by simple cubic interpolation.
13127 The prescreener is trained to know whether cubic interpolation will be
13128 sufficient for a pixel or whether it should be predicted by the predictor nn.
13129 The computational complexity of the prescreener nn is much less than that of
13130 the predictor nn. Since most pixels can be handled by cubic interpolation,
13131 using the prescreener generally results in much faster processing.
13132 The prescreener is pretty accurate, so the difference between using it and not
13133 using it is almost always unnoticeable.
13134
13135 Can be one of the following:
13136
13137 @table @samp
13138 @item none
13139 @item original
13140 @item new
13141 @end table
13142
13143 Default is @code{new}.
13144
13145 @item fapprox
13146 Set various debugging flags.
13147 @end table
13148
13149 @section noformat
13150
13151 Force libavfilter not to use any of the specified pixel formats for the
13152 input to the next filter.
13153
13154 It accepts the following parameters:
13155 @table @option
13156
13157 @item pix_fmts
13158 A '|'-separated list of pixel format names, such as
13159 pix_fmts=yuv420p|monow|rgb24".
13160
13161 @end table
13162
13163 @subsection Examples
13164
13165 @itemize
13166 @item
13167 Force libavfilter to use a format different from @var{yuv420p} for the
13168 input to the vflip filter:
13169 @example
13170 noformat=pix_fmts=yuv420p,vflip
13171 @end example
13172
13173 @item
13174 Convert the input video to any of the formats not contained in the list:
13175 @example
13176 noformat=yuv420p|yuv444p|yuv410p
13177 @end example
13178 @end itemize
13179
13180 @section noise
13181
13182 Add noise on video input frame.
13183
13184 The filter accepts the following options:
13185
13186 @table @option
13187 @item all_seed
13188 @item c0_seed
13189 @item c1_seed
13190 @item c2_seed
13191 @item c3_seed
13192 Set noise seed for specific pixel component or all pixel components in case
13193 of @var{all_seed}. Default value is @code{123457}.
13194
13195 @item all_strength, alls
13196 @item c0_strength, c0s
13197 @item c1_strength, c1s
13198 @item c2_strength, c2s
13199 @item c3_strength, c3s
13200 Set noise strength for specific pixel component or all pixel components in case
13201 @var{all_strength}. Default value is @code{0}. Allowed range is [0, 100].
13202
13203 @item all_flags, allf
13204 @item c0_flags, c0f
13205 @item c1_flags, c1f
13206 @item c2_flags, c2f
13207 @item c3_flags, c3f
13208 Set pixel component flags or set flags for all components if @var{all_flags}.
13209 Available values for component flags are:
13210 @table @samp
13211 @item a
13212 averaged temporal noise (smoother)
13213 @item p
13214 mix random noise with a (semi)regular pattern
13215 @item t
13216 temporal noise (noise pattern changes between frames)
13217 @item u
13218 uniform noise (gaussian otherwise)
13219 @end table
13220 @end table
13221
13222 @subsection Examples
13223
13224 Add temporal and uniform noise to input video:
13225 @example
13226 noise=alls=20:allf=t+u
13227 @end example
13228
13229 @section normalize
13230
13231 Normalize RGB video (aka histogram stretching, contrast stretching).
13232 See: https://en.wikipedia.org/wiki/Normalization_(image_processing)
13233
13234 For each channel of each frame, the filter computes the input range and maps
13235 it linearly to the user-specified output range. The output range defaults
13236 to the full dynamic range from pure black to pure white.
13237
13238 Temporal smoothing can be used on the input range to reduce flickering (rapid
13239 changes in brightness) caused when small dark or bright objects enter or leave
13240 the scene. This is similar to the auto-exposure (automatic gain control) on a
13241 video camera, and, like a video camera, it may cause a period of over- or
13242 under-exposure of the video.
13243
13244 The R,G,B channels can be normalized independently, which may cause some
13245 color shifting, or linked together as a single channel, which prevents
13246 color shifting. Linked normalization preserves hue. Independent normalization
13247 does not, so it can be used to remove some color casts. Independent and linked
13248 normalization can be combined in any ratio.
13249
13250 The normalize filter accepts the following options:
13251
13252 @table @option
13253 @item blackpt
13254 @item whitept
13255 Colors which define the output range. The minimum input value is mapped to
13256 the @var{blackpt}. The maximum input value is mapped to the @var{whitept}.
13257 The defaults are black and white respectively. Specifying white for
13258 @var{blackpt} and black for @var{whitept} will give color-inverted,
13259 normalized video. Shades of grey can be used to reduce the dynamic range
13260 (contrast). Specifying saturated colors here can create some interesting
13261 effects.
13262
13263 @item smoothing
13264 The number of previous frames to use for temporal smoothing. The input range
13265 of each channel is smoothed using a rolling average over the current frame
13266 and the @var{smoothing} previous frames. The default is 0 (no temporal
13267 smoothing).
13268
13269 @item independence
13270 Controls the ratio of independent (color shifting) channel normalization to
13271 linked (color preserving) normalization. 0.0 is fully linked, 1.0 is fully
13272 independent. Defaults to 1.0 (fully independent).
13273
13274 @item strength
13275 Overall strength of the filter. 1.0 is full strength. 0.0 is a rather
13276 expensive no-op. Defaults to 1.0 (full strength).
13277
13278 @end table
13279
13280 @subsection Examples
13281
13282 Stretch video contrast to use the full dynamic range, with no temporal
13283 smoothing; may flicker depending on the source content:
13284 @example
13285 normalize=blackpt=black:whitept=white:smoothing=0
13286 @end example
13287
13288 As above, but with 50 frames of temporal smoothing; flicker should be
13289 reduced, depending on the source content:
13290 @example
13291 normalize=blackpt=black:whitept=white:smoothing=50
13292 @end example
13293
13294 As above, but with hue-preserving linked channel normalization:
13295 @example
13296 normalize=blackpt=black:whitept=white:smoothing=50:independence=0
13297 @end example
13298
13299 As above, but with half strength:
13300 @example
13301 normalize=blackpt=black:whitept=white:smoothing=50:independence=0:strength=0.5
13302 @end example
13303
13304 Map the darkest input color to red, the brightest input color to cyan:
13305 @example
13306 normalize=blackpt=red:whitept=cyan
13307 @end example
13308
13309 @section null
13310
13311 Pass the video source unchanged to the output.
13312
13313 @section ocr
13314 Optical Character Recognition
13315
13316 This filter uses Tesseract for optical character recognition. To enable
13317 compilation of this filter, you need to configure FFmpeg with
13318 @code{--enable-libtesseract}.
13319
13320 It accepts the following options:
13321
13322 @table @option
13323 @item datapath
13324 Set datapath to tesseract data. Default is to use whatever was
13325 set at installation.
13326
13327 @item language
13328 Set language, default is "eng".
13329
13330 @item whitelist
13331 Set character whitelist.
13332
13333 @item blacklist
13334 Set character blacklist.
13335 @end table
13336
13337 The filter exports recognized text as the frame metadata @code{lavfi.ocr.text}.
13338 The filter exports confidence of recognized words as the frame metadata @code{lavfi.ocr.confidence}.
13339
13340 @section ocv
13341
13342 Apply a video transform using libopencv.
13343
13344 To enable this filter, install the libopencv library and headers and
13345 configure FFmpeg with @code{--enable-libopencv}.
13346
13347 It accepts the following parameters:
13348
13349 @table @option
13350
13351 @item filter_name
13352 The name of the libopencv filter to apply.
13353
13354 @item filter_params
13355 The parameters to pass to the libopencv filter. If not specified, the default
13356 values are assumed.
13357
13358 @end table
13359
13360 Refer to the official libopencv documentation for more precise
13361 information:
13362 @url{http://docs.opencv.org/master/modules/imgproc/doc/filtering.html}
13363
13364 Several libopencv filters are supported; see the following subsections.
13365
13366 @anchor{dilate}
13367 @subsection dilate
13368
13369 Dilate an image by using a specific structuring element.
13370 It corresponds to the libopencv function @code{cvDilate}.
13371
13372 It accepts the parameters: @var{struct_el}|@var{nb_iterations}.
13373
13374 @var{struct_el} represents a structuring element, and has the syntax:
13375 @var{cols}x@var{rows}+@var{anchor_x}x@var{anchor_y}/@var{shape}
13376
13377 @var{cols} and @var{rows} represent the number of columns and rows of
13378 the structuring element, @var{anchor_x} and @var{anchor_y} the anchor
13379 point, and @var{shape} the shape for the structuring element. @var{shape}
13380 must be "rect", "cross", "ellipse", or "custom".
13381
13382 If the value for @var{shape} is "custom", it must be followed by a
13383 string of the form "=@var{filename}". The file with name
13384 @var{filename} is assumed to represent a binary image, with each
13385 printable character corresponding to a bright pixel. When a custom
13386 @var{shape} is used, @var{cols} and @var{rows} are ignored, the number
13387 or columns and rows of the read file are assumed instead.
13388
13389 The default value for @var{struct_el} is "3x3+0x0/rect".
13390
13391 @var{nb_iterations} specifies the number of times the transform is
13392 applied to the image, and defaults to 1.
13393
13394 Some examples:
13395 @example
13396 # Use the default values
13397 ocv=dilate
13398
13399 # Dilate using a structuring element with a 5x5 cross, iterating two times
13400 ocv=filter_name=dilate:filter_params=5x5+2x2/cross|2
13401
13402 # Read the shape from the file diamond.shape, iterating two times.
13403 # The file diamond.shape may contain a pattern of characters like this
13404 #   *
13405 #  ***
13406 # *****
13407 #  ***
13408 #   *
13409 # The specified columns and rows are ignored
13410 # but the anchor point coordinates are not
13411 ocv=dilate:0x0+2x2/custom=diamond.shape|2
13412 @end example
13413
13414 @subsection erode
13415
13416 Erode an image by using a specific structuring element.
13417 It corresponds to the libopencv function @code{cvErode}.
13418
13419 It accepts the parameters: @var{struct_el}:@var{nb_iterations},
13420 with the same syntax and semantics as the @ref{dilate} filter.
13421
13422 @subsection smooth
13423
13424 Smooth the input video.
13425
13426 The filter takes the following parameters:
13427 @var{type}|@var{param1}|@var{param2}|@var{param3}|@var{param4}.
13428
13429 @var{type} is the type of smooth filter to apply, and must be one of
13430 the following values: "blur", "blur_no_scale", "median", "gaussian",
13431 or "bilateral". The default value is "gaussian".
13432
13433 The meaning of @var{param1}, @var{param2}, @var{param3}, and @var{param4}
13434 depends on the smooth type. @var{param1} and
13435 @var{param2} accept integer positive values or 0. @var{param3} and
13436 @var{param4} accept floating point values.
13437
13438 The default value for @var{param1} is 3. The default value for the
13439 other parameters is 0.
13440
13441 These parameters correspond to the parameters assigned to the
13442 libopencv function @code{cvSmooth}.
13443
13444 @section oscilloscope
13445
13446 2D Video Oscilloscope.
13447
13448 Useful to measure spatial impulse, step responses, chroma delays, etc.
13449
13450 It accepts the following parameters:
13451
13452 @table @option
13453 @item x
13454 Set scope center x position.
13455
13456 @item y
13457 Set scope center y position.
13458
13459 @item s
13460 Set scope size, relative to frame diagonal.
13461
13462 @item t
13463 Set scope tilt/rotation.
13464
13465 @item o
13466 Set trace opacity.
13467
13468 @item tx
13469 Set trace center x position.
13470
13471 @item ty
13472 Set trace center y position.
13473
13474 @item tw
13475 Set trace width, relative to width of frame.
13476
13477 @item th
13478 Set trace height, relative to height of frame.
13479
13480 @item c
13481 Set which components to trace. By default it traces first three components.
13482
13483 @item g
13484 Draw trace grid. By default is enabled.
13485
13486 @item st
13487 Draw some statistics. By default is enabled.
13488
13489 @item sc
13490 Draw scope. By default is enabled.
13491 @end table
13492
13493 @subsection Examples
13494
13495 @itemize
13496 @item
13497 Inspect full first row of video frame.
13498 @example
13499 oscilloscope=x=0.5:y=0:s=1
13500 @end example
13501
13502 @item
13503 Inspect full last row of video frame.
13504 @example
13505 oscilloscope=x=0.5:y=1:s=1
13506 @end example
13507
13508 @item
13509 Inspect full 5th line of video frame of height 1080.
13510 @example
13511 oscilloscope=x=0.5:y=5/1080:s=1
13512 @end example
13513
13514 @item
13515 Inspect full last column of video frame.
13516 @example
13517 oscilloscope=x=1:y=0.5:s=1:t=1
13518 @end example
13519
13520 @end itemize
13521
13522 @anchor{overlay}
13523 @section overlay
13524
13525 Overlay one video on top of another.
13526
13527 It takes two inputs and has one output. The first input is the "main"
13528 video on which the second input is overlaid.
13529
13530 It accepts the following parameters:
13531
13532 A description of the accepted options follows.
13533
13534 @table @option
13535 @item x
13536 @item y
13537 Set the expression for the x and y coordinates of the overlaid video
13538 on the main video. Default value is "0" for both expressions. In case
13539 the expression is invalid, it is set to a huge value (meaning that the
13540 overlay will not be displayed within the output visible area).
13541
13542 @item eof_action
13543 See @ref{framesync}.
13544
13545 @item eval
13546 Set when the expressions for @option{x}, and @option{y} are evaluated.
13547
13548 It accepts the following values:
13549 @table @samp
13550 @item init
13551 only evaluate expressions once during the filter initialization or
13552 when a command is processed
13553
13554 @item frame
13555 evaluate expressions for each incoming frame
13556 @end table
13557
13558 Default value is @samp{frame}.
13559
13560 @item shortest
13561 See @ref{framesync}.
13562
13563 @item format
13564 Set the format for the output video.
13565
13566 It accepts the following values:
13567 @table @samp
13568 @item yuv420
13569 force YUV420 output
13570
13571 @item yuv422
13572 force YUV422 output
13573
13574 @item yuv444
13575 force YUV444 output
13576
13577 @item rgb
13578 force packed RGB output
13579
13580 @item gbrp
13581 force planar RGB output
13582
13583 @item auto
13584 automatically pick format
13585 @end table
13586
13587 Default value is @samp{yuv420}.
13588
13589 @item repeatlast
13590 See @ref{framesync}.
13591
13592 @item alpha
13593 Set format of alpha of the overlaid video, it can be @var{straight} or
13594 @var{premultiplied}. Default is @var{straight}.
13595 @end table
13596
13597 The @option{x}, and @option{y} expressions can contain the following
13598 parameters.
13599
13600 @table @option
13601 @item main_w, W
13602 @item main_h, H
13603 The main input width and height.
13604
13605 @item overlay_w, w
13606 @item overlay_h, h
13607 The overlay input width and height.
13608
13609 @item x
13610 @item y
13611 The computed values for @var{x} and @var{y}. They are evaluated for
13612 each new frame.
13613
13614 @item hsub
13615 @item vsub
13616 horizontal and vertical chroma subsample values of the output
13617 format. For example for the pixel format "yuv422p" @var{hsub} is 2 and
13618 @var{vsub} is 1.
13619
13620 @item n
13621 the number of input frame, starting from 0
13622
13623 @item pos
13624 the position in the file of the input frame, NAN if unknown
13625
13626 @item t
13627 The timestamp, expressed in seconds. It's NAN if the input timestamp is unknown.
13628
13629 @end table
13630
13631 This filter also supports the @ref{framesync} options.
13632
13633 Note that the @var{n}, @var{pos}, @var{t} variables are available only
13634 when evaluation is done @emph{per frame}, and will evaluate to NAN
13635 when @option{eval} is set to @samp{init}.
13636
13637 Be aware that frames are taken from each input video in timestamp
13638 order, hence, if their initial timestamps differ, it is a good idea
13639 to pass the two inputs through a @var{setpts=PTS-STARTPTS} filter to
13640 have them begin in the same zero timestamp, as the example for
13641 the @var{movie} filter does.
13642
13643 You can chain together more overlays but you should test the
13644 efficiency of such approach.
13645
13646 @subsection Commands
13647
13648 This filter supports the following commands:
13649 @table @option
13650 @item x
13651 @item y
13652 Modify the x and y of the overlay input.
13653 The command accepts the same syntax of the corresponding option.
13654
13655 If the specified expression is not valid, it is kept at its current
13656 value.
13657 @end table
13658
13659 @subsection Examples
13660
13661 @itemize
13662 @item
13663 Draw the overlay at 10 pixels from the bottom right corner of the main
13664 video:
13665 @example
13666 overlay=main_w-overlay_w-10:main_h-overlay_h-10
13667 @end example
13668
13669 Using named options the example above becomes:
13670 @example
13671 overlay=x=main_w-overlay_w-10:y=main_h-overlay_h-10
13672 @end example
13673
13674 @item
13675 Insert a transparent PNG logo in the bottom left corner of the input,
13676 using the @command{ffmpeg} tool with the @code{-filter_complex} option:
13677 @example
13678 ffmpeg -i input -i logo -filter_complex 'overlay=10:main_h-overlay_h-10' output
13679 @end example
13680
13681 @item
13682 Insert 2 different transparent PNG logos (second logo on bottom
13683 right corner) using the @command{ffmpeg} tool:
13684 @example
13685 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
13686 @end example
13687
13688 @item
13689 Add a transparent color layer on top of the main video; @code{WxH}
13690 must specify the size of the main input to the overlay filter:
13691 @example
13692 color=color=red@@.3:size=WxH [over]; [in][over] overlay [out]
13693 @end example
13694
13695 @item
13696 Play an original video and a filtered version (here with the deshake
13697 filter) side by side using the @command{ffplay} tool:
13698 @example
13699 ffplay input.avi -vf 'split[a][b]; [a]pad=iw*2:ih[src]; [b]deshake[filt]; [src][filt]overlay=w'
13700 @end example
13701
13702 The above command is the same as:
13703 @example
13704 ffplay input.avi -vf 'split[b], pad=iw*2[src], [b]deshake, [src]overlay=w'
13705 @end example
13706
13707 @item
13708 Make a sliding overlay appearing from the left to the right top part of the
13709 screen starting since time 2:
13710 @example
13711 overlay=x='if(gte(t,2), -w+(t-2)*20, NAN)':y=0
13712 @end example
13713
13714 @item
13715 Compose output by putting two input videos side to side:
13716 @example
13717 ffmpeg -i left.avi -i right.avi -filter_complex "
13718 nullsrc=size=200x100 [background];
13719 [0:v] setpts=PTS-STARTPTS, scale=100x100 [left];
13720 [1:v] setpts=PTS-STARTPTS, scale=100x100 [right];
13721 [background][left]       overlay=shortest=1       [background+left];
13722 [background+left][right] overlay=shortest=1:x=100 [left+right]
13723 "
13724 @end example
13725
13726 @item
13727 Mask 10-20 seconds of a video by applying the delogo filter to a section
13728 @example
13729 ffmpeg -i test.avi -codec:v:0 wmv2 -ar 11025 -b:v 9000k
13730 -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]'
13731 masked.avi
13732 @end example
13733
13734 @item
13735 Chain several overlays in cascade:
13736 @example
13737 nullsrc=s=200x200 [bg];
13738 testsrc=s=100x100, split=4 [in0][in1][in2][in3];
13739 [in0] lutrgb=r=0, [bg]   overlay=0:0     [mid0];
13740 [in1] lutrgb=g=0, [mid0] overlay=100:0   [mid1];
13741 [in2] lutrgb=b=0, [mid1] overlay=0:100   [mid2];
13742 [in3] null,       [mid2] overlay=100:100 [out0]
13743 @end example
13744
13745 @end itemize
13746
13747 @section owdenoise
13748
13749 Apply Overcomplete Wavelet denoiser.
13750
13751 The filter accepts the following options:
13752
13753 @table @option
13754 @item depth
13755 Set depth.
13756
13757 Larger depth values will denoise lower frequency components more, but
13758 slow down filtering.
13759
13760 Must be an int in the range 8-16, default is @code{8}.
13761
13762 @item luma_strength, ls
13763 Set luma strength.
13764
13765 Must be a double value in the range 0-1000, default is @code{1.0}.
13766
13767 @item chroma_strength, cs
13768 Set chroma strength.
13769
13770 Must be a double value in the range 0-1000, default is @code{1.0}.
13771 @end table
13772
13773 @anchor{pad}
13774 @section pad
13775
13776 Add paddings to the input image, and place the original input at the
13777 provided @var{x}, @var{y} coordinates.
13778
13779 It accepts the following parameters:
13780
13781 @table @option
13782 @item width, w
13783 @item height, h
13784 Specify an expression for the size of the output image with the
13785 paddings added. If the value for @var{width} or @var{height} is 0, the
13786 corresponding input size is used for the output.
13787
13788 The @var{width} expression can reference the value set by the
13789 @var{height} expression, and vice versa.
13790
13791 The default value of @var{width} and @var{height} is 0.
13792
13793 @item x
13794 @item y
13795 Specify the offsets to place the input image at within the padded area,
13796 with respect to the top/left border of the output image.
13797
13798 The @var{x} expression can reference the value set by the @var{y}
13799 expression, and vice versa.
13800
13801 The default value of @var{x} and @var{y} is 0.
13802
13803 If @var{x} or @var{y} evaluate to a negative number, they'll be changed
13804 so the input image is centered on the padded area.
13805
13806 @item color
13807 Specify the color of the padded area. For the syntax of this option,
13808 check the @ref{color syntax,,"Color" section in the ffmpeg-utils
13809 manual,ffmpeg-utils}.
13810
13811 The default value of @var{color} is "black".
13812
13813 @item eval
13814 Specify when to evaluate  @var{width}, @var{height}, @var{x} and @var{y} expression.
13815
13816 It accepts the following values:
13817
13818 @table @samp
13819 @item init
13820 Only evaluate expressions once during the filter initialization or when
13821 a command is processed.
13822
13823 @item frame
13824 Evaluate expressions for each incoming frame.
13825
13826 @end table
13827
13828 Default value is @samp{init}.
13829
13830 @item aspect
13831 Pad to aspect instead to a resolution.
13832
13833 @end table
13834
13835 The value for the @var{width}, @var{height}, @var{x}, and @var{y}
13836 options are expressions containing the following constants:
13837
13838 @table @option
13839 @item in_w
13840 @item in_h
13841 The input video width and height.
13842
13843 @item iw
13844 @item ih
13845 These are the same as @var{in_w} and @var{in_h}.
13846
13847 @item out_w
13848 @item out_h
13849 The output width and height (the size of the padded area), as
13850 specified by the @var{width} and @var{height} expressions.
13851
13852 @item ow
13853 @item oh
13854 These are the same as @var{out_w} and @var{out_h}.
13855
13856 @item x
13857 @item y
13858 The x and y offsets as specified by the @var{x} and @var{y}
13859 expressions, or NAN if not yet specified.
13860
13861 @item a
13862 same as @var{iw} / @var{ih}
13863
13864 @item sar
13865 input sample aspect ratio
13866
13867 @item dar
13868 input display aspect ratio, it is the same as (@var{iw} / @var{ih}) * @var{sar}
13869
13870 @item hsub
13871 @item vsub
13872 The horizontal and vertical chroma subsample values. For example for the
13873 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
13874 @end table
13875
13876 @subsection Examples
13877
13878 @itemize
13879 @item
13880 Add paddings with the color "violet" to the input video. The output video
13881 size is 640x480, and the top-left corner of the input video is placed at
13882 column 0, row 40
13883 @example
13884 pad=640:480:0:40:violet
13885 @end example
13886
13887 The example above is equivalent to the following command:
13888 @example
13889 pad=width=640:height=480:x=0:y=40:color=violet
13890 @end example
13891
13892 @item
13893 Pad the input to get an output with dimensions increased by 3/2,
13894 and put the input video at the center of the padded area:
13895 @example
13896 pad="3/2*iw:3/2*ih:(ow-iw)/2:(oh-ih)/2"
13897 @end example
13898
13899 @item
13900 Pad the input to get a squared output with size equal to the maximum
13901 value between the input width and height, and put the input video at
13902 the center of the padded area:
13903 @example
13904 pad="max(iw\,ih):ow:(ow-iw)/2:(oh-ih)/2"
13905 @end example
13906
13907 @item
13908 Pad the input to get a final w/h ratio of 16:9:
13909 @example
13910 pad="ih*16/9:ih:(ow-iw)/2:(oh-ih)/2"
13911 @end example
13912
13913 @item
13914 In case of anamorphic video, in order to set the output display aspect
13915 correctly, it is necessary to use @var{sar} in the expression,
13916 according to the relation:
13917 @example
13918 (ih * X / ih) * sar = output_dar
13919 X = output_dar / sar
13920 @end example
13921
13922 Thus the previous example needs to be modified to:
13923 @example
13924 pad="ih*16/9/sar:ih:(ow-iw)/2:(oh-ih)/2"
13925 @end example
13926
13927 @item
13928 Double the output size and put the input video in the bottom-right
13929 corner of the output padded area:
13930 @example
13931 pad="2*iw:2*ih:ow-iw:oh-ih"
13932 @end example
13933 @end itemize
13934
13935 @anchor{palettegen}
13936 @section palettegen
13937
13938 Generate one palette for a whole video stream.
13939
13940 It accepts the following options:
13941
13942 @table @option
13943 @item max_colors
13944 Set the maximum number of colors to quantize in the palette.
13945 Note: the palette will still contain 256 colors; the unused palette entries
13946 will be black.
13947
13948 @item reserve_transparent
13949 Create a palette of 255 colors maximum and reserve the last one for
13950 transparency. Reserving the transparency color is useful for GIF optimization.
13951 If not set, the maximum of colors in the palette will be 256. You probably want
13952 to disable this option for a standalone image.
13953 Set by default.
13954
13955 @item transparency_color
13956 Set the color that will be used as background for transparency.
13957
13958 @item stats_mode
13959 Set statistics mode.
13960
13961 It accepts the following values:
13962 @table @samp
13963 @item full
13964 Compute full frame histograms.
13965 @item diff
13966 Compute histograms only for the part that differs from previous frame. This
13967 might be relevant to give more importance to the moving part of your input if
13968 the background is static.
13969 @item single
13970 Compute new histogram for each frame.
13971 @end table
13972
13973 Default value is @var{full}.
13974 @end table
13975
13976 The filter also exports the frame metadata @code{lavfi.color_quant_ratio}
13977 (@code{nb_color_in / nb_color_out}) which you can use to evaluate the degree of
13978 color quantization of the palette. This information is also visible at
13979 @var{info} logging level.
13980
13981 @subsection Examples
13982
13983 @itemize
13984 @item
13985 Generate a representative palette of a given video using @command{ffmpeg}:
13986 @example
13987 ffmpeg -i input.mkv -vf palettegen palette.png
13988 @end example
13989 @end itemize
13990
13991 @section paletteuse
13992
13993 Use a palette to downsample an input video stream.
13994
13995 The filter takes two inputs: one video stream and a palette. The palette must
13996 be a 256 pixels image.
13997
13998 It accepts the following options:
13999
14000 @table @option
14001 @item dither
14002 Select dithering mode. Available algorithms are:
14003 @table @samp
14004 @item bayer
14005 Ordered 8x8 bayer dithering (deterministic)
14006 @item heckbert
14007 Dithering as defined by Paul Heckbert in 1982 (simple error diffusion).
14008 Note: this dithering is sometimes considered "wrong" and is included as a
14009 reference.
14010 @item floyd_steinberg
14011 Floyd and Steingberg dithering (error diffusion)
14012 @item sierra2
14013 Frankie Sierra dithering v2 (error diffusion)
14014 @item sierra2_4a
14015 Frankie Sierra dithering v2 "Lite" (error diffusion)
14016 @end table
14017
14018 Default is @var{sierra2_4a}.
14019
14020 @item bayer_scale
14021 When @var{bayer} dithering is selected, this option defines the scale of the
14022 pattern (how much the crosshatch pattern is visible). A low value means more
14023 visible pattern for less banding, and higher value means less visible pattern
14024 at the cost of more banding.
14025
14026 The option must be an integer value in the range [0,5]. Default is @var{2}.
14027
14028 @item diff_mode
14029 If set, define the zone to process
14030
14031 @table @samp
14032 @item rectangle
14033 Only the changing rectangle will be reprocessed. This is similar to GIF
14034 cropping/offsetting compression mechanism. This option can be useful for speed
14035 if only a part of the image is changing, and has use cases such as limiting the
14036 scope of the error diffusal @option{dither} to the rectangle that bounds the
14037 moving scene (it leads to more deterministic output if the scene doesn't change
14038 much, and as a result less moving noise and better GIF compression).
14039 @end table
14040
14041 Default is @var{none}.
14042
14043 @item new
14044 Take new palette for each output frame.
14045
14046 @item alpha_threshold
14047 Sets the alpha threshold for transparency. Alpha values above this threshold
14048 will be treated as completely opaque, and values below this threshold will be
14049 treated as completely transparent.
14050
14051 The option must be an integer value in the range [0,255]. Default is @var{128}.
14052 @end table
14053
14054 @subsection Examples
14055
14056 @itemize
14057 @item
14058 Use a palette (generated for example with @ref{palettegen}) to encode a GIF
14059 using @command{ffmpeg}:
14060 @example
14061 ffmpeg -i input.mkv -i palette.png -lavfi paletteuse output.gif
14062 @end example
14063 @end itemize
14064
14065 @section perspective
14066
14067 Correct perspective of video not recorded perpendicular to the screen.
14068
14069 A description of the accepted parameters follows.
14070
14071 @table @option
14072 @item x0
14073 @item y0
14074 @item x1
14075 @item y1
14076 @item x2
14077 @item y2
14078 @item x3
14079 @item y3
14080 Set coordinates expression for top left, top right, bottom left and bottom right corners.
14081 Default values are @code{0:0:W:0:0:H:W:H} with which perspective will remain unchanged.
14082 If the @code{sense} option is set to @code{source}, then the specified points will be sent
14083 to the corners of the destination. If the @code{sense} option is set to @code{destination},
14084 then the corners of the source will be sent to the specified coordinates.
14085
14086 The expressions can use the following variables:
14087
14088 @table @option
14089 @item W
14090 @item H
14091 the width and height of video frame.
14092 @item in
14093 Input frame count.
14094 @item on
14095 Output frame count.
14096 @end table
14097
14098 @item interpolation
14099 Set interpolation for perspective correction.
14100
14101 It accepts the following values:
14102 @table @samp
14103 @item linear
14104 @item cubic
14105 @end table
14106
14107 Default value is @samp{linear}.
14108
14109 @item sense
14110 Set interpretation of coordinate options.
14111
14112 It accepts the following values:
14113 @table @samp
14114 @item 0, source
14115
14116 Send point in the source specified by the given coordinates to
14117 the corners of the destination.
14118
14119 @item 1, destination
14120
14121 Send the corners of the source to the point in the destination specified
14122 by the given coordinates.
14123
14124 Default value is @samp{source}.
14125 @end table
14126
14127 @item eval
14128 Set when the expressions for coordinates @option{x0,y0,...x3,y3} are evaluated.
14129
14130 It accepts the following values:
14131 @table @samp
14132 @item init
14133 only evaluate expressions once during the filter initialization or
14134 when a command is processed
14135
14136 @item frame
14137 evaluate expressions for each incoming frame
14138 @end table
14139
14140 Default value is @samp{init}.
14141 @end table
14142
14143 @section phase
14144
14145 Delay interlaced video by one field time so that the field order changes.
14146
14147 The intended use is to fix PAL movies that have been captured with the
14148 opposite field order to the film-to-video transfer.
14149
14150 A description of the accepted parameters follows.
14151
14152 @table @option
14153 @item mode
14154 Set phase mode.
14155
14156 It accepts the following values:
14157 @table @samp
14158 @item t
14159 Capture field order top-first, transfer bottom-first.
14160 Filter will delay the bottom field.
14161
14162 @item b
14163 Capture field order bottom-first, transfer top-first.
14164 Filter will delay the top field.
14165
14166 @item p
14167 Capture and transfer with the same field order. This mode only exists
14168 for the documentation of the other options to refer to, but if you
14169 actually select it, the filter will faithfully do nothing.
14170
14171 @item a
14172 Capture field order determined automatically by field flags, transfer
14173 opposite.
14174 Filter selects among @samp{t} and @samp{b} modes on a frame by frame
14175 basis using field flags. If no field information is available,
14176 then this works just like @samp{u}.
14177
14178 @item u
14179 Capture unknown or varying, transfer opposite.
14180 Filter selects among @samp{t} and @samp{b} on a frame by frame basis by
14181 analyzing the images and selecting the alternative that produces best
14182 match between the fields.
14183
14184 @item T
14185 Capture top-first, transfer unknown or varying.
14186 Filter selects among @samp{t} and @samp{p} using image analysis.
14187
14188 @item B
14189 Capture bottom-first, transfer unknown or varying.
14190 Filter selects among @samp{b} and @samp{p} using image analysis.
14191
14192 @item A
14193 Capture determined by field flags, transfer unknown or varying.
14194 Filter selects among @samp{t}, @samp{b} and @samp{p} using field flags and
14195 image analysis. If no field information is available, then this works just
14196 like @samp{U}. This is the default mode.
14197
14198 @item U
14199 Both capture and transfer unknown or varying.
14200 Filter selects among @samp{t}, @samp{b} and @samp{p} using image analysis only.
14201 @end table
14202 @end table
14203
14204 @section photosensitivity
14205 Reduce various flashes in video, so to help users with epilepsy.
14206
14207 It accepts the following options:
14208 @table @option
14209 @item frames, f
14210 Set how many frames to use when filtering. Default is 30.
14211
14212 @item threshold, t
14213 Set detection threshold factor. Default is 1.
14214 Lower is stricter.
14215
14216 @item skip
14217 Set how many pixels to skip when sampling frames. Defalt is 1.
14218 Allowed range is from 1 to 1024.
14219
14220 @item bypass
14221 Leave frames unchanged. Default is disabled.
14222 @end table
14223
14224 @section pixdesctest
14225
14226 Pixel format descriptor test filter, mainly useful for internal
14227 testing. The output video should be equal to the input video.
14228
14229 For example:
14230 @example
14231 format=monow, pixdesctest
14232 @end example
14233
14234 can be used to test the monowhite pixel format descriptor definition.
14235
14236 @section pixscope
14237
14238 Display sample values of color channels. Mainly useful for checking color
14239 and levels. Minimum supported resolution is 640x480.
14240
14241 The filters accept the following options:
14242
14243 @table @option
14244 @item x
14245 Set scope X position, relative offset on X axis.
14246
14247 @item y
14248 Set scope Y position, relative offset on Y axis.
14249
14250 @item w
14251 Set scope width.
14252
14253 @item h
14254 Set scope height.
14255
14256 @item o
14257 Set window opacity. This window also holds statistics about pixel area.
14258
14259 @item wx
14260 Set window X position, relative offset on X axis.
14261
14262 @item wy
14263 Set window Y position, relative offset on Y axis.
14264 @end table
14265
14266 @section pp
14267
14268 Enable the specified chain of postprocessing subfilters using libpostproc. This
14269 library should be automatically selected with a GPL build (@code{--enable-gpl}).
14270 Subfilters must be separated by '/' and can be disabled by prepending a '-'.
14271 Each subfilter and some options have a short and a long name that can be used
14272 interchangeably, i.e. dr/dering are the same.
14273
14274 The filters accept the following options:
14275
14276 @table @option
14277 @item subfilters
14278 Set postprocessing subfilters string.
14279 @end table
14280
14281 All subfilters share common options to determine their scope:
14282
14283 @table @option
14284 @item a/autoq
14285 Honor the quality commands for this subfilter.
14286
14287 @item c/chrom
14288 Do chrominance filtering, too (default).
14289
14290 @item y/nochrom
14291 Do luminance filtering only (no chrominance).
14292
14293 @item n/noluma
14294 Do chrominance filtering only (no luminance).
14295 @end table
14296
14297 These options can be appended after the subfilter name, separated by a '|'.
14298
14299 Available subfilters are:
14300
14301 @table @option
14302 @item hb/hdeblock[|difference[|flatness]]
14303 Horizontal deblocking filter
14304 @table @option
14305 @item difference
14306 Difference factor where higher values mean more deblocking (default: @code{32}).
14307 @item flatness
14308 Flatness threshold where lower values mean more deblocking (default: @code{39}).
14309 @end table
14310
14311 @item vb/vdeblock[|difference[|flatness]]
14312 Vertical deblocking filter
14313 @table @option
14314 @item difference
14315 Difference factor where higher values mean more deblocking (default: @code{32}).
14316 @item flatness
14317 Flatness threshold where lower values mean more deblocking (default: @code{39}).
14318 @end table
14319
14320 @item ha/hadeblock[|difference[|flatness]]
14321 Accurate horizontal deblocking filter
14322 @table @option
14323 @item difference
14324 Difference factor where higher values mean more deblocking (default: @code{32}).
14325 @item flatness
14326 Flatness threshold where lower values mean more deblocking (default: @code{39}).
14327 @end table
14328
14329 @item va/vadeblock[|difference[|flatness]]
14330 Accurate vertical deblocking filter
14331 @table @option
14332 @item difference
14333 Difference factor where higher values mean more deblocking (default: @code{32}).
14334 @item flatness
14335 Flatness threshold where lower values mean more deblocking (default: @code{39}).
14336 @end table
14337 @end table
14338
14339 The horizontal and vertical deblocking filters share the difference and
14340 flatness values so you cannot set different horizontal and vertical
14341 thresholds.
14342
14343 @table @option
14344 @item h1/x1hdeblock
14345 Experimental horizontal deblocking filter
14346
14347 @item v1/x1vdeblock
14348 Experimental vertical deblocking filter
14349
14350 @item dr/dering
14351 Deringing filter
14352
14353 @item tn/tmpnoise[|threshold1[|threshold2[|threshold3]]], temporal noise reducer
14354 @table @option
14355 @item threshold1
14356 larger -> stronger filtering
14357 @item threshold2
14358 larger -> stronger filtering
14359 @item threshold3
14360 larger -> stronger filtering
14361 @end table
14362
14363 @item al/autolevels[:f/fullyrange], automatic brightness / contrast correction
14364 @table @option
14365 @item f/fullyrange
14366 Stretch luminance to @code{0-255}.
14367 @end table
14368
14369 @item lb/linblenddeint
14370 Linear blend deinterlacing filter that deinterlaces the given block by
14371 filtering all lines with a @code{(1 2 1)} filter.
14372
14373 @item li/linipoldeint
14374 Linear interpolating deinterlacing filter that deinterlaces the given block by
14375 linearly interpolating every second line.
14376
14377 @item ci/cubicipoldeint
14378 Cubic interpolating deinterlacing filter deinterlaces the given block by
14379 cubically interpolating every second line.
14380
14381 @item md/mediandeint
14382 Median deinterlacing filter that deinterlaces the given block by applying a
14383 median filter to every second line.
14384
14385 @item fd/ffmpegdeint
14386 FFmpeg deinterlacing filter that deinterlaces the given block by filtering every
14387 second line with a @code{(-1 4 2 4 -1)} filter.
14388
14389 @item l5/lowpass5
14390 Vertically applied FIR lowpass deinterlacing filter that deinterlaces the given
14391 block by filtering all lines with a @code{(-1 2 6 2 -1)} filter.
14392
14393 @item fq/forceQuant[|quantizer]
14394 Overrides the quantizer table from the input with the constant quantizer you
14395 specify.
14396 @table @option
14397 @item quantizer
14398 Quantizer to use
14399 @end table
14400
14401 @item de/default
14402 Default pp filter combination (@code{hb|a,vb|a,dr|a})
14403
14404 @item fa/fast
14405 Fast pp filter combination (@code{h1|a,v1|a,dr|a})
14406
14407 @item ac
14408 High quality pp filter combination (@code{ha|a|128|7,va|a,dr|a})
14409 @end table
14410
14411 @subsection Examples
14412
14413 @itemize
14414 @item
14415 Apply horizontal and vertical deblocking, deringing and automatic
14416 brightness/contrast:
14417 @example
14418 pp=hb/vb/dr/al
14419 @end example
14420
14421 @item
14422 Apply default filters without brightness/contrast correction:
14423 @example
14424 pp=de/-al
14425 @end example
14426
14427 @item
14428 Apply default filters and temporal denoiser:
14429 @example
14430 pp=default/tmpnoise|1|2|3
14431 @end example
14432
14433 @item
14434 Apply deblocking on luminance only, and switch vertical deblocking on or off
14435 automatically depending on available CPU time:
14436 @example
14437 pp=hb|y/vb|a
14438 @end example
14439 @end itemize
14440
14441 @section pp7
14442 Apply Postprocessing filter 7. It is variant of the @ref{spp} filter,
14443 similar to spp = 6 with 7 point DCT, where only the center sample is
14444 used after IDCT.
14445
14446 The filter accepts the following options:
14447
14448 @table @option
14449 @item qp
14450 Force a constant quantization parameter. It accepts an integer in range
14451 0 to 63. If not set, the filter will use the QP from the video stream
14452 (if available).
14453
14454 @item mode
14455 Set thresholding mode. Available modes are:
14456
14457 @table @samp
14458 @item hard
14459 Set hard thresholding.
14460 @item soft
14461 Set soft thresholding (better de-ringing effect, but likely blurrier).
14462 @item medium
14463 Set medium thresholding (good results, default).
14464 @end table
14465 @end table
14466
14467 @section premultiply
14468 Apply alpha premultiply effect to input video stream using first plane
14469 of second stream as alpha.
14470
14471 Both streams must have same dimensions and same pixel format.
14472
14473 The filter accepts the following option:
14474
14475 @table @option
14476 @item planes
14477 Set which planes will be processed, unprocessed planes will be copied.
14478 By default value 0xf, all planes will be processed.
14479
14480 @item inplace
14481 Do not require 2nd input for processing, instead use alpha plane from input stream.
14482 @end table
14483
14484 @section prewitt
14485 Apply prewitt operator to input video stream.
14486
14487 The filter accepts the following option:
14488
14489 @table @option
14490 @item planes
14491 Set which planes will be processed, unprocessed planes will be copied.
14492 By default value 0xf, all planes will be processed.
14493
14494 @item scale
14495 Set value which will be multiplied with filtered result.
14496
14497 @item delta
14498 Set value which will be added to filtered result.
14499 @end table
14500
14501 @anchor{program_opencl}
14502 @section program_opencl
14503
14504 Filter video using an OpenCL program.
14505
14506 @table @option
14507
14508 @item source
14509 OpenCL program source file.
14510
14511 @item kernel
14512 Kernel name in program.
14513
14514 @item inputs
14515 Number of inputs to the filter.  Defaults to 1.
14516
14517 @item size, s
14518 Size of output frames.  Defaults to the same as the first input.
14519
14520 @end table
14521
14522 The program source file must contain a kernel function with the given name,
14523 which will be run once for each plane of the output.  Each run on a plane
14524 gets enqueued as a separate 2D global NDRange with one work-item for each
14525 pixel to be generated.  The global ID offset for each work-item is therefore
14526 the coordinates of a pixel in the destination image.
14527
14528 The kernel function needs to take the following arguments:
14529 @itemize
14530 @item
14531 Destination image, @var{__write_only image2d_t}.
14532
14533 This image will become the output; the kernel should write all of it.
14534 @item
14535 Frame index, @var{unsigned int}.
14536
14537 This is a counter starting from zero and increasing by one for each frame.
14538 @item
14539 Source images, @var{__read_only image2d_t}.
14540
14541 These are the most recent images on each input.  The kernel may read from
14542 them to generate the output, but they can't be written to.
14543 @end itemize
14544
14545 Example programs:
14546
14547 @itemize
14548 @item
14549 Copy the input to the output (output must be the same size as the input).
14550 @verbatim
14551 __kernel void copy(__write_only image2d_t destination,
14552                    unsigned int index,
14553                    __read_only  image2d_t source)
14554 {
14555     const sampler_t sampler = CLK_NORMALIZED_COORDS_FALSE;
14556
14557     int2 location = (int2)(get_global_id(0), get_global_id(1));
14558
14559     float4 value = read_imagef(source, sampler, location);
14560
14561     write_imagef(destination, location, value);
14562 }
14563 @end verbatim
14564
14565 @item
14566 Apply a simple transformation, rotating the input by an amount increasing
14567 with the index counter.  Pixel values are linearly interpolated by the
14568 sampler, and the output need not have the same dimensions as the input.
14569 @verbatim
14570 __kernel void rotate_image(__write_only image2d_t dst,
14571                            unsigned int index,
14572                            __read_only  image2d_t src)
14573 {
14574     const sampler_t sampler = (CLK_NORMALIZED_COORDS_FALSE |
14575                                CLK_FILTER_LINEAR);
14576
14577     float angle = (float)index / 100.0f;
14578
14579     float2 dst_dim = convert_float2(get_image_dim(dst));
14580     float2 src_dim = convert_float2(get_image_dim(src));
14581
14582     float2 dst_cen = dst_dim / 2.0f;
14583     float2 src_cen = src_dim / 2.0f;
14584
14585     int2   dst_loc = (int2)(get_global_id(0), get_global_id(1));
14586
14587     float2 dst_pos = convert_float2(dst_loc) - dst_cen;
14588     float2 src_pos = {
14589         cos(angle) * dst_pos.x - sin(angle) * dst_pos.y,
14590         sin(angle) * dst_pos.x + cos(angle) * dst_pos.y
14591     };
14592     src_pos = src_pos * src_dim / dst_dim;
14593
14594     float2 src_loc = src_pos + src_cen;
14595
14596     if (src_loc.x < 0.0f      || src_loc.y < 0.0f ||
14597         src_loc.x > src_dim.x || src_loc.y > src_dim.y)
14598         write_imagef(dst, dst_loc, 0.5f);
14599     else
14600         write_imagef(dst, dst_loc, read_imagef(src, sampler, src_loc));
14601 }
14602 @end verbatim
14603
14604 @item
14605 Blend two inputs together, with the amount of each input used varying
14606 with the index counter.
14607 @verbatim
14608 __kernel void blend_images(__write_only image2d_t dst,
14609                            unsigned int index,
14610                            __read_only  image2d_t src1,
14611                            __read_only  image2d_t src2)
14612 {
14613     const sampler_t sampler = (CLK_NORMALIZED_COORDS_FALSE |
14614                                CLK_FILTER_LINEAR);
14615
14616     float blend = (cos((float)index / 50.0f) + 1.0f) / 2.0f;
14617
14618     int2  dst_loc = (int2)(get_global_id(0), get_global_id(1));
14619     int2 src1_loc = dst_loc * get_image_dim(src1) / get_image_dim(dst);
14620     int2 src2_loc = dst_loc * get_image_dim(src2) / get_image_dim(dst);
14621
14622     float4 val1 = read_imagef(src1, sampler, src1_loc);
14623     float4 val2 = read_imagef(src2, sampler, src2_loc);
14624
14625     write_imagef(dst, dst_loc, val1 * blend + val2 * (1.0f - blend));
14626 }
14627 @end verbatim
14628
14629 @end itemize
14630
14631 @section pseudocolor
14632
14633 Alter frame colors in video with pseudocolors.
14634
14635 This filter accepts the following options:
14636
14637 @table @option
14638 @item c0
14639 set pixel first component expression
14640
14641 @item c1
14642 set pixel second component expression
14643
14644 @item c2
14645 set pixel third component expression
14646
14647 @item c3
14648 set pixel fourth component expression, corresponds to the alpha component
14649
14650 @item i
14651 set component to use as base for altering colors
14652 @end table
14653
14654 Each of them specifies the expression to use for computing the lookup table for
14655 the corresponding pixel component values.
14656
14657 The expressions can contain the following constants and functions:
14658
14659 @table @option
14660 @item w
14661 @item h
14662 The input width and height.
14663
14664 @item val
14665 The input value for the pixel component.
14666
14667 @item ymin, umin, vmin, amin
14668 The minimum allowed component value.
14669
14670 @item ymax, umax, vmax, amax
14671 The maximum allowed component value.
14672 @end table
14673
14674 All expressions default to "val".
14675
14676 @subsection Examples
14677
14678 @itemize
14679 @item
14680 Change too high luma values to gradient:
14681 @example
14682 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'"
14683 @end example
14684 @end itemize
14685
14686 @section psnr
14687
14688 Obtain the average, maximum and minimum PSNR (Peak Signal to Noise
14689 Ratio) between two input videos.
14690
14691 This filter takes in input two input videos, the first input is
14692 considered the "main" source and is passed unchanged to the
14693 output. The second input is used as a "reference" video for computing
14694 the PSNR.
14695
14696 Both video inputs must have the same resolution and pixel format for
14697 this filter to work correctly. Also it assumes that both inputs
14698 have the same number of frames, which are compared one by one.
14699
14700 The obtained average PSNR is printed through the logging system.
14701
14702 The filter stores the accumulated MSE (mean squared error) of each
14703 frame, and at the end of the processing it is averaged across all frames
14704 equally, and the following formula is applied to obtain the PSNR:
14705
14706 @example
14707 PSNR = 10*log10(MAX^2/MSE)
14708 @end example
14709
14710 Where MAX is the average of the maximum values of each component of the
14711 image.
14712
14713 The description of the accepted parameters follows.
14714
14715 @table @option
14716 @item stats_file, f
14717 If specified the filter will use the named file to save the PSNR of
14718 each individual frame. When filename equals "-" the data is sent to
14719 standard output.
14720
14721 @item stats_version
14722 Specifies which version of the stats file format to use. Details of
14723 each format are written below.
14724 Default value is 1.
14725
14726 @item stats_add_max
14727 Determines whether the max value is output to the stats log.
14728 Default value is 0.
14729 Requires stats_version >= 2. If this is set and stats_version < 2,
14730 the filter will return an error.
14731 @end table
14732
14733 This filter also supports the @ref{framesync} options.
14734
14735 The file printed if @var{stats_file} is selected, contains a sequence of
14736 key/value pairs of the form @var{key}:@var{value} for each compared
14737 couple of frames.
14738
14739 If a @var{stats_version} greater than 1 is specified, a header line precedes
14740 the list of per-frame-pair stats, with key value pairs following the frame
14741 format with the following parameters:
14742
14743 @table @option
14744 @item psnr_log_version
14745 The version of the log file format. Will match @var{stats_version}.
14746
14747 @item fields
14748 A comma separated list of the per-frame-pair parameters included in
14749 the log.
14750 @end table
14751
14752 A description of each shown per-frame-pair parameter follows:
14753
14754 @table @option
14755 @item n
14756 sequential number of the input frame, starting from 1
14757
14758 @item mse_avg
14759 Mean Square Error pixel-by-pixel average difference of the compared
14760 frames, averaged over all the image components.
14761
14762 @item mse_y, mse_u, mse_v, mse_r, mse_g, mse_b, mse_a
14763 Mean Square Error pixel-by-pixel average difference of the compared
14764 frames for the component specified by the suffix.
14765
14766 @item psnr_y, psnr_u, psnr_v, psnr_r, psnr_g, psnr_b, psnr_a
14767 Peak Signal to Noise ratio of the compared frames for the component
14768 specified by the suffix.
14769
14770 @item max_avg, max_y, max_u, max_v
14771 Maximum allowed value for each channel, and average over all
14772 channels.
14773 @end table
14774
14775 For example:
14776 @example
14777 movie=ref_movie.mpg, setpts=PTS-STARTPTS [main];
14778 [main][ref] psnr="stats_file=stats.log" [out]
14779 @end example
14780
14781 On this example the input file being processed is compared with the
14782 reference file @file{ref_movie.mpg}. The PSNR of each individual frame
14783 is stored in @file{stats.log}.
14784
14785 @anchor{pullup}
14786 @section pullup
14787
14788 Pulldown reversal (inverse telecine) filter, capable of handling mixed
14789 hard-telecine, 24000/1001 fps progressive, and 30000/1001 fps progressive
14790 content.
14791
14792 The pullup filter is designed to take advantage of future context in making
14793 its decisions. This filter is stateless in the sense that it does not lock
14794 onto a pattern to follow, but it instead looks forward to the following
14795 fields in order to identify matches and rebuild progressive frames.
14796
14797 To produce content with an even framerate, insert the fps filter after
14798 pullup, use @code{fps=24000/1001} if the input frame rate is 29.97fps,
14799 @code{fps=24} for 30fps and the (rare) telecined 25fps input.
14800
14801 The filter accepts the following options:
14802
14803 @table @option
14804 @item jl
14805 @item jr
14806 @item jt
14807 @item jb
14808 These options set the amount of "junk" to ignore at the left, right, top, and
14809 bottom of the image, respectively. Left and right are in units of 8 pixels,
14810 while top and bottom are in units of 2 lines.
14811 The default is 8 pixels on each side.
14812
14813 @item sb
14814 Set the strict breaks. Setting this option to 1 will reduce the chances of
14815 filter generating an occasional mismatched frame, but it may also cause an
14816 excessive number of frames to be dropped during high motion sequences.
14817 Conversely, setting it to -1 will make filter match fields more easily.
14818 This may help processing of video where there is slight blurring between
14819 the fields, but may also cause there to be interlaced frames in the output.
14820 Default value is @code{0}.
14821
14822 @item mp
14823 Set the metric plane to use. It accepts the following values:
14824 @table @samp
14825 @item l
14826 Use luma plane.
14827
14828 @item u
14829 Use chroma blue plane.
14830
14831 @item v
14832 Use chroma red plane.
14833 @end table
14834
14835 This option may be set to use chroma plane instead of the default luma plane
14836 for doing filter's computations. This may improve accuracy on very clean
14837 source material, but more likely will decrease accuracy, especially if there
14838 is chroma noise (rainbow effect) or any grayscale video.
14839 The main purpose of setting @option{mp} to a chroma plane is to reduce CPU
14840 load and make pullup usable in realtime on slow machines.
14841 @end table
14842
14843 For best results (without duplicated frames in the output file) it is
14844 necessary to change the output frame rate. For example, to inverse
14845 telecine NTSC input:
14846 @example
14847 ffmpeg -i input -vf pullup -r 24000/1001 ...
14848 @end example
14849
14850 @section qp
14851
14852 Change video quantization parameters (QP).
14853
14854 The filter accepts the following option:
14855
14856 @table @option
14857 @item qp
14858 Set expression for quantization parameter.
14859 @end table
14860
14861 The expression is evaluated through the eval API and can contain, among others,
14862 the following constants:
14863
14864 @table @var
14865 @item known
14866 1 if index is not 129, 0 otherwise.
14867
14868 @item qp
14869 Sequential index starting from -129 to 128.
14870 @end table
14871
14872 @subsection Examples
14873
14874 @itemize
14875 @item
14876 Some equation like:
14877 @example
14878 qp=2+2*sin(PI*qp)
14879 @end example
14880 @end itemize
14881
14882 @section random
14883
14884 Flush video frames from internal cache of frames into a random order.
14885 No frame is discarded.
14886 Inspired by @ref{frei0r} nervous filter.
14887
14888 @table @option
14889 @item frames
14890 Set size in number of frames of internal cache, in range from @code{2} to
14891 @code{512}. Default is @code{30}.
14892
14893 @item seed
14894 Set seed for random number generator, must be an integer included between
14895 @code{0} and @code{UINT32_MAX}. If not specified, or if explicitly set to
14896 less than @code{0}, the filter will try to use a good random seed on a
14897 best effort basis.
14898 @end table
14899
14900 @section readeia608
14901
14902 Read closed captioning (EIA-608) information from the top lines of a video frame.
14903
14904 This filter adds frame metadata for @code{lavfi.readeia608.X.cc} and
14905 @code{lavfi.readeia608.X.line}, where @code{X} is the number of the identified line
14906 with EIA-608 data (starting from 0). A description of each metadata value follows:
14907
14908 @table @option
14909 @item lavfi.readeia608.X.cc
14910 The two bytes stored as EIA-608 data (printed in hexadecimal).
14911
14912 @item lavfi.readeia608.X.line
14913 The number of the line on which the EIA-608 data was identified and read.
14914 @end table
14915
14916 This filter accepts the following options:
14917
14918 @table @option
14919 @item scan_min
14920 Set the line to start scanning for EIA-608 data. Default is @code{0}.
14921
14922 @item scan_max
14923 Set the line to end scanning for EIA-608 data. Default is @code{29}.
14924
14925 @item mac
14926 Set minimal acceptable amplitude change for sync codes detection.
14927 Default is @code{0.2}. Allowed range is @code{[0.001 - 1]}.
14928
14929 @item spw
14930 Set the ratio of width reserved for sync code detection.
14931 Default is @code{0.27}. Allowed range is @code{[0.01 - 0.7]}.
14932
14933 @item mhd
14934 Set the max peaks height difference for sync code detection.
14935 Default is @code{0.1}. Allowed range is @code{[0.0 - 0.5]}.
14936
14937 @item mpd
14938 Set max peaks period difference for sync code detection.
14939 Default is @code{0.1}. Allowed range is @code{[0.0 - 0.5]}.
14940
14941 @item msd
14942 Set the first two max start code bits differences.
14943 Default is @code{0.02}. Allowed range is @code{[0.0 - 0.5]}.
14944
14945 @item bhd
14946 Set the minimum ratio of bits height compared to 3rd start code bit.
14947 Default is @code{0.75}. Allowed range is @code{[0.01 - 1]}.
14948
14949 @item th_w
14950 Set the white color threshold. Default is @code{0.35}. Allowed range is @code{[0.1 - 1]}.
14951
14952 @item th_b
14953 Set the black color threshold. Default is @code{0.15}. Allowed range is @code{[0.0 - 0.5]}.
14954
14955 @item chp
14956 Enable checking the parity bit. In the event of a parity error, the filter will output
14957 @code{0x00} for that character. Default is false.
14958
14959 @item lp
14960 Lowpass lines prior to further processing. Default is disabled.
14961 @end table
14962
14963 @subsection Examples
14964
14965 @itemize
14966 @item
14967 Output a csv with presentation time and the first two lines of identified EIA-608 captioning data.
14968 @example
14969 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
14970 @end example
14971 @end itemize
14972
14973 @section readvitc
14974
14975 Read vertical interval timecode (VITC) information from the top lines of a
14976 video frame.
14977
14978 The filter adds frame metadata key @code{lavfi.readvitc.tc_str} with the
14979 timecode value, if a valid timecode has been detected. Further metadata key
14980 @code{lavfi.readvitc.found} is set to 0/1 depending on whether
14981 timecode data has been found or not.
14982
14983 This filter accepts the following options:
14984
14985 @table @option
14986 @item scan_max
14987 Set the maximum number of lines to scan for VITC data. If the value is set to
14988 @code{-1} the full video frame is scanned. Default is @code{45}.
14989
14990 @item thr_b
14991 Set the luma threshold for black. Accepts float numbers in the range [0.0,1.0],
14992 default value is @code{0.2}. The value must be equal or less than @code{thr_w}.
14993
14994 @item thr_w
14995 Set the luma threshold for white. Accepts float numbers in the range [0.0,1.0],
14996 default value is @code{0.6}. The value must be equal or greater than @code{thr_b}.
14997 @end table
14998
14999 @subsection Examples
15000
15001 @itemize
15002 @item
15003 Detect and draw VITC data onto the video frame; if no valid VITC is detected,
15004 draw @code{--:--:--:--} as a placeholder:
15005 @example
15006 ffmpeg -i input.avi -filter:v 'readvitc,drawtext=fontfile=FreeMono.ttf:text=%@{metadata\\:lavfi.readvitc.tc_str\\:--\\\\\\:--\\\\\\:--\\\\\\:--@}:x=(w-tw)/2:y=400-ascent'
15007 @end example
15008 @end itemize
15009
15010 @section remap
15011
15012 Remap pixels using 2nd: Xmap and 3rd: Ymap input video stream.
15013
15014 Destination pixel at position (X, Y) will be picked from source (x, y) position
15015 where x = Xmap(X, Y) and y = Ymap(X, Y). If mapping values are out of range, zero
15016 value for pixel will be used for destination pixel.
15017
15018 Xmap and Ymap input video streams must be of same dimensions. Output video stream
15019 will have Xmap/Ymap video stream dimensions.
15020 Xmap and Ymap input video streams are 16bit depth, single channel.
15021
15022 @table @option
15023 @item format
15024 Specify pixel format of output from this filter. Can be @code{color} or @code{gray}.
15025 Default is @code{color}.
15026 @end table
15027
15028 @section removegrain
15029
15030 The removegrain filter is a spatial denoiser for progressive video.
15031
15032 @table @option
15033 @item m0
15034 Set mode for the first plane.
15035
15036 @item m1
15037 Set mode for the second plane.
15038
15039 @item m2
15040 Set mode for the third plane.
15041
15042 @item m3
15043 Set mode for the fourth plane.
15044 @end table
15045
15046 Range of mode is from 0 to 24. Description of each mode follows:
15047
15048 @table @var
15049 @item 0
15050 Leave input plane unchanged. Default.
15051
15052 @item 1
15053 Clips the pixel with the minimum and maximum of the 8 neighbour pixels.
15054
15055 @item 2
15056 Clips the pixel with the second minimum and maximum of the 8 neighbour pixels.
15057
15058 @item 3
15059 Clips the pixel with the third minimum and maximum of the 8 neighbour pixels.
15060
15061 @item 4
15062 Clips the pixel with the fourth minimum and maximum of the 8 neighbour pixels.
15063 This is equivalent to a median filter.
15064
15065 @item 5
15066 Line-sensitive clipping giving the minimal change.
15067
15068 @item 6
15069 Line-sensitive clipping, intermediate.
15070
15071 @item 7
15072 Line-sensitive clipping, intermediate.
15073
15074 @item 8
15075 Line-sensitive clipping, intermediate.
15076
15077 @item 9
15078 Line-sensitive clipping on a line where the neighbours pixels are the closest.
15079
15080 @item 10
15081 Replaces the target pixel with the closest neighbour.
15082
15083 @item 11
15084 [1 2 1] horizontal and vertical kernel blur.
15085
15086 @item 12
15087 Same as mode 11.
15088
15089 @item 13
15090 Bob mode, interpolates top field from the line where the neighbours
15091 pixels are the closest.
15092
15093 @item 14
15094 Bob mode, interpolates bottom field from the line where the neighbours
15095 pixels are the closest.
15096
15097 @item 15
15098 Bob mode, interpolates top field. Same as 13 but with a more complicated
15099 interpolation formula.
15100
15101 @item 16
15102 Bob mode, interpolates bottom field. Same as 14 but with a more complicated
15103 interpolation formula.
15104
15105 @item 17
15106 Clips the pixel with the minimum and maximum of respectively the maximum and
15107 minimum of each pair of opposite neighbour pixels.
15108
15109 @item 18
15110 Line-sensitive clipping using opposite neighbours whose greatest distance from
15111 the current pixel is minimal.
15112
15113 @item 19
15114 Replaces the pixel with the average of its 8 neighbours.
15115
15116 @item 20
15117 Averages the 9 pixels ([1 1 1] horizontal and vertical blur).
15118
15119 @item 21
15120 Clips pixels using the averages of opposite neighbour.
15121
15122 @item 22
15123 Same as mode 21 but simpler and faster.
15124
15125 @item 23
15126 Small edge and halo removal, but reputed useless.
15127
15128 @item 24
15129 Similar as 23.
15130 @end table
15131
15132 @section removelogo
15133
15134 Suppress a TV station logo, using an image file to determine which
15135 pixels comprise the logo. It works by filling in the pixels that
15136 comprise the logo with neighboring pixels.
15137
15138 The filter accepts the following options:
15139
15140 @table @option
15141 @item filename, f
15142 Set the filter bitmap file, which can be any image format supported by
15143 libavformat. The width and height of the image file must match those of the
15144 video stream being processed.
15145 @end table
15146
15147 Pixels in the provided bitmap image with a value of zero are not
15148 considered part of the logo, non-zero pixels are considered part of
15149 the logo. If you use white (255) for the logo and black (0) for the
15150 rest, you will be safe. For making the filter bitmap, it is
15151 recommended to take a screen capture of a black frame with the logo
15152 visible, and then using a threshold filter followed by the erode
15153 filter once or twice.
15154
15155 If needed, little splotches can be fixed manually. Remember that if
15156 logo pixels are not covered, the filter quality will be much
15157 reduced. Marking too many pixels as part of the logo does not hurt as
15158 much, but it will increase the amount of blurring needed to cover over
15159 the image and will destroy more information than necessary, and extra
15160 pixels will slow things down on a large logo.
15161
15162 @section repeatfields
15163
15164 This filter uses the repeat_field flag from the Video ES headers and hard repeats
15165 fields based on its value.
15166
15167 @section reverse
15168
15169 Reverse a video clip.
15170
15171 Warning: This filter requires memory to buffer the entire clip, so trimming
15172 is suggested.
15173
15174 @subsection Examples
15175
15176 @itemize
15177 @item
15178 Take the first 5 seconds of a clip, and reverse it.
15179 @example
15180 trim=end=5,reverse
15181 @end example
15182 @end itemize
15183
15184 @section rgbashift
15185 Shift R/G/B/A pixels horizontally and/or vertically.
15186
15187 The filter accepts the following options:
15188 @table @option
15189 @item rh
15190 Set amount to shift red horizontally.
15191 @item rv
15192 Set amount to shift red vertically.
15193 @item gh
15194 Set amount to shift green horizontally.
15195 @item gv
15196 Set amount to shift green vertically.
15197 @item bh
15198 Set amount to shift blue horizontally.
15199 @item bv
15200 Set amount to shift blue vertically.
15201 @item ah
15202 Set amount to shift alpha horizontally.
15203 @item av
15204 Set amount to shift alpha vertically.
15205 @item edge
15206 Set edge mode, can be @var{smear}, default, or @var{warp}.
15207 @end table
15208
15209 @section roberts
15210 Apply roberts cross operator to input video stream.
15211
15212 The filter accepts the following option:
15213
15214 @table @option
15215 @item planes
15216 Set which planes will be processed, unprocessed planes will be copied.
15217 By default value 0xf, all planes will be processed.
15218
15219 @item scale
15220 Set value which will be multiplied with filtered result.
15221
15222 @item delta
15223 Set value which will be added to filtered result.
15224 @end table
15225
15226 @section rotate
15227
15228 Rotate video by an arbitrary angle expressed in radians.
15229
15230 The filter accepts the following options:
15231
15232 A description of the optional parameters follows.
15233 @table @option
15234 @item angle, a
15235 Set an expression for the angle by which to rotate the input video
15236 clockwise, expressed as a number of radians. A negative value will
15237 result in a counter-clockwise rotation. By default it is set to "0".
15238
15239 This expression is evaluated for each frame.
15240
15241 @item out_w, ow
15242 Set the output width expression, default value is "iw".
15243 This expression is evaluated just once during configuration.
15244
15245 @item out_h, oh
15246 Set the output height expression, default value is "ih".
15247 This expression is evaluated just once during configuration.
15248
15249 @item bilinear
15250 Enable bilinear interpolation if set to 1, a value of 0 disables
15251 it. Default value is 1.
15252
15253 @item fillcolor, c
15254 Set the color used to fill the output area not covered by the rotated
15255 image. For the general syntax of this option, check the
15256 @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
15257 If the special value "none" is selected then no
15258 background is printed (useful for example if the background is never shown).
15259
15260 Default value is "black".
15261 @end table
15262
15263 The expressions for the angle and the output size can contain the
15264 following constants and functions:
15265
15266 @table @option
15267 @item n
15268 sequential number of the input frame, starting from 0. It is always NAN
15269 before the first frame is filtered.
15270
15271 @item t
15272 time in seconds of the input frame, it is set to 0 when the filter is
15273 configured. It is always NAN before the first frame is filtered.
15274
15275 @item hsub
15276 @item vsub
15277 horizontal and vertical chroma subsample values. For example for the
15278 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
15279
15280 @item in_w, iw
15281 @item in_h, ih
15282 the input video width and height
15283
15284 @item out_w, ow
15285 @item out_h, oh
15286 the output width and height, that is the size of the padded area as
15287 specified by the @var{width} and @var{height} expressions
15288
15289 @item rotw(a)
15290 @item roth(a)
15291 the minimal width/height required for completely containing the input
15292 video rotated by @var{a} radians.
15293
15294 These are only available when computing the @option{out_w} and
15295 @option{out_h} expressions.
15296 @end table
15297
15298 @subsection Examples
15299
15300 @itemize
15301 @item
15302 Rotate the input by PI/6 radians clockwise:
15303 @example
15304 rotate=PI/6
15305 @end example
15306
15307 @item
15308 Rotate the input by PI/6 radians counter-clockwise:
15309 @example
15310 rotate=-PI/6
15311 @end example
15312
15313 @item
15314 Rotate the input by 45 degrees clockwise:
15315 @example
15316 rotate=45*PI/180
15317 @end example
15318
15319 @item
15320 Apply a constant rotation with period T, starting from an angle of PI/3:
15321 @example
15322 rotate=PI/3+2*PI*t/T
15323 @end example
15324
15325 @item
15326 Make the input video rotation oscillating with a period of T
15327 seconds and an amplitude of A radians:
15328 @example
15329 rotate=A*sin(2*PI/T*t)
15330 @end example
15331
15332 @item
15333 Rotate the video, output size is chosen so that the whole rotating
15334 input video is always completely contained in the output:
15335 @example
15336 rotate='2*PI*t:ow=hypot(iw,ih):oh=ow'
15337 @end example
15338
15339 @item
15340 Rotate the video, reduce the output size so that no background is ever
15341 shown:
15342 @example
15343 rotate=2*PI*t:ow='min(iw,ih)/sqrt(2)':oh=ow:c=none
15344 @end example
15345 @end itemize
15346
15347 @subsection Commands
15348
15349 The filter supports the following commands:
15350
15351 @table @option
15352 @item a, angle
15353 Set the angle expression.
15354 The command accepts the same syntax of the corresponding option.
15355
15356 If the specified expression is not valid, it is kept at its current
15357 value.
15358 @end table
15359
15360 @section sab
15361
15362 Apply Shape Adaptive Blur.
15363
15364 The filter accepts the following options:
15365
15366 @table @option
15367 @item luma_radius, lr
15368 Set luma blur filter strength, must be a value in range 0.1-4.0, default
15369 value is 1.0. A greater value will result in a more blurred image, and
15370 in slower processing.
15371
15372 @item luma_pre_filter_radius, lpfr
15373 Set luma pre-filter radius, must be a value in the 0.1-2.0 range, default
15374 value is 1.0.
15375
15376 @item luma_strength, ls
15377 Set luma maximum difference between pixels to still be considered, must
15378 be a value in the 0.1-100.0 range, default value is 1.0.
15379
15380 @item chroma_radius, cr
15381 Set chroma blur filter strength, must be a value in range -0.9-4.0. A
15382 greater value will result in a more blurred image, and in slower
15383 processing.
15384
15385 @item chroma_pre_filter_radius, cpfr
15386 Set chroma pre-filter radius, must be a value in the -0.9-2.0 range.
15387
15388 @item chroma_strength, cs
15389 Set chroma maximum difference between pixels to still be considered,
15390 must be a value in the -0.9-100.0 range.
15391 @end table
15392
15393 Each chroma option value, if not explicitly specified, is set to the
15394 corresponding luma option value.
15395
15396 @anchor{scale}
15397 @section scale
15398
15399 Scale (resize) the input video, using the libswscale library.
15400
15401 The scale filter forces the output display aspect ratio to be the same
15402 of the input, by changing the output sample aspect ratio.
15403
15404 If the input image format is different from the format requested by
15405 the next filter, the scale filter will convert the input to the
15406 requested format.
15407
15408 @subsection Options
15409 The filter accepts the following options, or any of the options
15410 supported by the libswscale scaler.
15411
15412 See @ref{scaler_options,,the ffmpeg-scaler manual,ffmpeg-scaler} for
15413 the complete list of scaler options.
15414
15415 @table @option
15416 @item width, w
15417 @item height, h
15418 Set the output video dimension expression. Default value is the input
15419 dimension.
15420
15421 If the @var{width} or @var{w} value is 0, the input width is used for
15422 the output. If the @var{height} or @var{h} value is 0, the input height
15423 is used for the output.
15424
15425 If one and only one of the values is -n with n >= 1, the scale filter
15426 will use a value that maintains the aspect ratio of the input image,
15427 calculated from the other specified dimension. After that it will,
15428 however, make sure that the calculated dimension is divisible by n and
15429 adjust the value if necessary.
15430
15431 If both values are -n with n >= 1, the behavior will be identical to
15432 both values being set to 0 as previously detailed.
15433
15434 See below for the list of accepted constants for use in the dimension
15435 expression.
15436
15437 @item eval
15438 Specify when to evaluate @var{width} and @var{height} expression. It accepts the following values:
15439
15440 @table @samp
15441 @item init
15442 Only evaluate expressions once during the filter initialization or when a command is processed.
15443
15444 @item frame
15445 Evaluate expressions for each incoming frame.
15446
15447 @end table
15448
15449 Default value is @samp{init}.
15450
15451
15452 @item interl
15453 Set the interlacing mode. It accepts the following values:
15454
15455 @table @samp
15456 @item 1
15457 Force interlaced aware scaling.
15458
15459 @item 0
15460 Do not apply interlaced scaling.
15461
15462 @item -1
15463 Select interlaced aware scaling depending on whether the source frames
15464 are flagged as interlaced or not.
15465 @end table
15466
15467 Default value is @samp{0}.
15468
15469 @item flags
15470 Set libswscale scaling flags. See
15471 @ref{sws_flags,,the ffmpeg-scaler manual,ffmpeg-scaler} for the
15472 complete list of values. If not explicitly specified the filter applies
15473 the default flags.
15474
15475
15476 @item param0, param1
15477 Set libswscale input parameters for scaling algorithms that need them. See
15478 @ref{sws_params,,the ffmpeg-scaler manual,ffmpeg-scaler} for the
15479 complete documentation. If not explicitly specified the filter applies
15480 empty parameters.
15481
15482
15483
15484 @item size, s
15485 Set the video size. For the syntax of this option, check the
15486 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
15487
15488 @item in_color_matrix
15489 @item out_color_matrix
15490 Set in/output YCbCr color space type.
15491
15492 This allows the autodetected value to be overridden as well as allows forcing
15493 a specific value used for the output and encoder.
15494
15495 If not specified, the color space type depends on the pixel format.
15496
15497 Possible values:
15498
15499 @table @samp
15500 @item auto
15501 Choose automatically.
15502
15503 @item bt709
15504 Format conforming to International Telecommunication Union (ITU)
15505 Recommendation BT.709.
15506
15507 @item fcc
15508 Set color space conforming to the United States Federal Communications
15509 Commission (FCC) Code of Federal Regulations (CFR) Title 47 (2003) 73.682 (a).
15510
15511 @item bt601
15512 @item bt470
15513 @item smpte170m
15514 Set color space conforming to:
15515
15516 @itemize
15517 @item
15518 ITU Radiocommunication Sector (ITU-R) Recommendation BT.601
15519
15520 @item
15521 ITU-R Rec. BT.470-6 (1998) Systems B, B1, and G
15522
15523 @item
15524 Society of Motion Picture and Television Engineers (SMPTE) ST 170:2004
15525
15526 @end itemize
15527
15528 @item smpte240m
15529 Set color space conforming to SMPTE ST 240:1999.
15530
15531 @item bt2020
15532 Set color space conforming to ITU-R BT.2020 non-constant luminance system.
15533 @end table
15534
15535 @item in_range
15536 @item out_range
15537 Set in/output YCbCr sample range.
15538
15539 This allows the autodetected value to be overridden as well as allows forcing
15540 a specific value used for the output and encoder. If not specified, the
15541 range depends on the pixel format. Possible values:
15542
15543 @table @samp
15544 @item auto/unknown
15545 Choose automatically.
15546
15547 @item jpeg/full/pc
15548 Set full range (0-255 in case of 8-bit luma).
15549
15550 @item mpeg/limited/tv
15551 Set "MPEG" range (16-235 in case of 8-bit luma).
15552 @end table
15553
15554 @item force_original_aspect_ratio
15555 Enable decreasing or increasing output video width or height if necessary to
15556 keep the original aspect ratio. Possible values:
15557
15558 @table @samp
15559 @item disable
15560 Scale the video as specified and disable this feature.
15561
15562 @item decrease
15563 The output video dimensions will automatically be decreased if needed.
15564
15565 @item increase
15566 The output video dimensions will automatically be increased if needed.
15567
15568 @end table
15569
15570 One useful instance of this option is that when you know a specific device's
15571 maximum allowed resolution, you can use this to limit the output video to
15572 that, while retaining the aspect ratio. For example, device A allows
15573 1280x720 playback, and your video is 1920x800. Using this option (set it to
15574 decrease) and specifying 1280x720 to the command line makes the output
15575 1280x533.
15576
15577 Please note that this is a different thing than specifying -1 for @option{w}
15578 or @option{h}, you still need to specify the output resolution for this option
15579 to work.
15580
15581 @item force_divisible_by Ensures that the output resolution is divisible by the
15582 given integer when used together with @option{force_original_aspect_ratio}. This
15583 works similar to using -n in the @option{w} and @option{h} options.
15584
15585 This option respects the value set for @option{force_original_aspect_ratio},
15586 increasing or decreasing the resolution accordingly. This may slightly modify
15587 the video's aspect ration.
15588
15589 This can be handy, for example, if you want to have a video fit within a defined
15590 resolution using the @option{force_original_aspect_ratio} option but have
15591 encoder restrictions when it comes to width or height.
15592
15593 @end table
15594
15595 The values of the @option{w} and @option{h} options are expressions
15596 containing the following constants:
15597
15598 @table @var
15599 @item in_w
15600 @item in_h
15601 The input width and height
15602
15603 @item iw
15604 @item ih
15605 These are the same as @var{in_w} and @var{in_h}.
15606
15607 @item out_w
15608 @item out_h
15609 The output (scaled) width and height
15610
15611 @item ow
15612 @item oh
15613 These are the same as @var{out_w} and @var{out_h}
15614
15615 @item a
15616 The same as @var{iw} / @var{ih}
15617
15618 @item sar
15619 input sample aspect ratio
15620
15621 @item dar
15622 The input display aspect ratio. Calculated from @code{(iw / ih) * sar}.
15623
15624 @item hsub
15625 @item vsub
15626 horizontal and vertical input chroma subsample values. For example for the
15627 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
15628
15629 @item ohsub
15630 @item ovsub
15631 horizontal and vertical output chroma subsample values. For example for the
15632 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
15633 @end table
15634
15635 @subsection Examples
15636
15637 @itemize
15638 @item
15639 Scale the input video to a size of 200x100
15640 @example
15641 scale=w=200:h=100
15642 @end example
15643
15644 This is equivalent to:
15645 @example
15646 scale=200:100
15647 @end example
15648
15649 or:
15650 @example
15651 scale=200x100
15652 @end example
15653
15654 @item
15655 Specify a size abbreviation for the output size:
15656 @example
15657 scale=qcif
15658 @end example
15659
15660 which can also be written as:
15661 @example
15662 scale=size=qcif
15663 @end example
15664
15665 @item
15666 Scale the input to 2x:
15667 @example
15668 scale=w=2*iw:h=2*ih
15669 @end example
15670
15671 @item
15672 The above is the same as:
15673 @example
15674 scale=2*in_w:2*in_h
15675 @end example
15676
15677 @item
15678 Scale the input to 2x with forced interlaced scaling:
15679 @example
15680 scale=2*iw:2*ih:interl=1
15681 @end example
15682
15683 @item
15684 Scale the input to half size:
15685 @example
15686 scale=w=iw/2:h=ih/2
15687 @end example
15688
15689 @item
15690 Increase the width, and set the height to the same size:
15691 @example
15692 scale=3/2*iw:ow
15693 @end example
15694
15695 @item
15696 Seek Greek harmony:
15697 @example
15698 scale=iw:1/PHI*iw
15699 scale=ih*PHI:ih
15700 @end example
15701
15702 @item
15703 Increase the height, and set the width to 3/2 of the height:
15704 @example
15705 scale=w=3/2*oh:h=3/5*ih
15706 @end example
15707
15708 @item
15709 Increase the size, making the size a multiple of the chroma
15710 subsample values:
15711 @example
15712 scale="trunc(3/2*iw/hsub)*hsub:trunc(3/2*ih/vsub)*vsub"
15713 @end example
15714
15715 @item
15716 Increase the width to a maximum of 500 pixels,
15717 keeping the same aspect ratio as the input:
15718 @example
15719 scale=w='min(500\, iw*3/2):h=-1'
15720 @end example
15721
15722 @item
15723 Make pixels square by combining scale and setsar:
15724 @example
15725 scale='trunc(ih*dar):ih',setsar=1/1
15726 @end example
15727
15728 @item
15729 Make pixels square by combining scale and setsar,
15730 making sure the resulting resolution is even (required by some codecs):
15731 @example
15732 scale='trunc(ih*dar/2)*2:trunc(ih/2)*2',setsar=1/1
15733 @end example
15734 @end itemize
15735
15736 @subsection Commands
15737
15738 This filter supports the following commands:
15739 @table @option
15740 @item width, w
15741 @item height, h
15742 Set the output video dimension expression.
15743 The command accepts the same syntax of the corresponding option.
15744
15745 If the specified expression is not valid, it is kept at its current
15746 value.
15747 @end table
15748
15749 @section scale_npp
15750
15751 Use the NVIDIA Performance Primitives (libnpp) to perform scaling and/or pixel
15752 format conversion on CUDA video frames. Setting the output width and height
15753 works in the same way as for the @var{scale} filter.
15754
15755 The following additional options are accepted:
15756 @table @option
15757 @item format
15758 The pixel format of the output CUDA frames. If set to the string "same" (the
15759 default), the input format will be kept. Note that automatic format negotiation
15760 and conversion is not yet supported for hardware frames
15761
15762 @item interp_algo
15763 The interpolation algorithm used for resizing. One of the following:
15764 @table @option
15765 @item nn
15766 Nearest neighbour.
15767
15768 @item linear
15769 @item cubic
15770 @item cubic2p_bspline
15771 2-parameter cubic (B=1, C=0)
15772
15773 @item cubic2p_catmullrom
15774 2-parameter cubic (B=0, C=1/2)
15775
15776 @item cubic2p_b05c03
15777 2-parameter cubic (B=1/2, C=3/10)
15778
15779 @item super
15780 Supersampling
15781
15782 @item lanczos
15783 @end table
15784
15785 @end table
15786
15787 @section scale2ref
15788
15789 Scale (resize) the input video, based on a reference video.
15790
15791 See the scale filter for available options, scale2ref supports the same but
15792 uses the reference video instead of the main input as basis. scale2ref also
15793 supports the following additional constants for the @option{w} and
15794 @option{h} options:
15795
15796 @table @var
15797 @item main_w
15798 @item main_h
15799 The main input video's width and height
15800
15801 @item main_a
15802 The same as @var{main_w} / @var{main_h}
15803
15804 @item main_sar
15805 The main input video's sample aspect ratio
15806
15807 @item main_dar, mdar
15808 The main input video's display aspect ratio. Calculated from
15809 @code{(main_w / main_h) * main_sar}.
15810
15811 @item main_hsub
15812 @item main_vsub
15813 The main input video's horizontal and vertical chroma subsample values.
15814 For example for the pixel format "yuv422p" @var{hsub} is 2 and @var{vsub}
15815 is 1.
15816 @end table
15817
15818 @subsection Examples
15819
15820 @itemize
15821 @item
15822 Scale a subtitle stream (b) to match the main video (a) in size before overlaying
15823 @example
15824 'scale2ref[b][a];[a][b]overlay'
15825 @end example
15826
15827 @item
15828 Scale a logo to 1/10th the height of a video, while preserving its display aspect ratio.
15829 @example
15830 [logo-in][video-in]scale2ref=w=oh*mdar:h=ih/10[logo-out][video-out]
15831 @end example
15832 @end itemize
15833
15834 @section scroll
15835 Scroll input video horizontally and/or vertically by constant speed.
15836
15837 The filter accepts the following options:
15838 @table @option
15839 @item horizontal, h
15840 Set the horizontal scrolling speed. Default is 0. Allowed range is from -1 to 1.
15841 Negative values changes scrolling direction.
15842
15843 @item vertical, v
15844 Set the vertical scrolling speed. Default is 0. Allowed range is from -1 to 1.
15845 Negative values changes scrolling direction.
15846
15847 @item hpos
15848 Set the initial horizontal scrolling position. Default is 0. Allowed range is from 0 to 1.
15849
15850 @item vpos
15851 Set the initial vertical scrolling position. Default is 0. Allowed range is from 0 to 1.
15852 @end table
15853
15854 @subsection Commands
15855
15856 This filter supports the following @ref{commands}:
15857 @table @option
15858 @item horizontal, h
15859 Set the horizontal scrolling speed.
15860 @item vertical, v
15861 Set the vertical scrolling speed.
15862 @end table
15863
15864 @anchor{selectivecolor}
15865 @section selectivecolor
15866
15867 Adjust cyan, magenta, yellow and black (CMYK) to certain ranges of colors (such
15868 as "reds", "yellows", "greens", "cyans", ...). The adjustment range is defined
15869 by the "purity" of the color (that is, how saturated it already is).
15870
15871 This filter is similar to the Adobe Photoshop Selective Color tool.
15872
15873 The filter accepts the following options:
15874
15875 @table @option
15876 @item correction_method
15877 Select color correction method.
15878
15879 Available values are:
15880 @table @samp
15881 @item absolute
15882 Specified adjustments are applied "as-is" (added/subtracted to original pixel
15883 component value).
15884 @item relative
15885 Specified adjustments are relative to the original component value.
15886 @end table
15887 Default is @code{absolute}.
15888 @item reds
15889 Adjustments for red pixels (pixels where the red component is the maximum)
15890 @item yellows
15891 Adjustments for yellow pixels (pixels where the blue component is the minimum)
15892 @item greens
15893 Adjustments for green pixels (pixels where the green component is the maximum)
15894 @item cyans
15895 Adjustments for cyan pixels (pixels where the red component is the minimum)
15896 @item blues
15897 Adjustments for blue pixels (pixels where the blue component is the maximum)
15898 @item magentas
15899 Adjustments for magenta pixels (pixels where the green component is the minimum)
15900 @item whites
15901 Adjustments for white pixels (pixels where all components are greater than 128)
15902 @item neutrals
15903 Adjustments for all pixels except pure black and pure white
15904 @item blacks
15905 Adjustments for black pixels (pixels where all components are lesser than 128)
15906 @item psfile
15907 Specify a Photoshop selective color file (@code{.asv}) to import the settings from.
15908 @end table
15909
15910 All the adjustment settings (@option{reds}, @option{yellows}, ...) accept up to
15911 4 space separated floating point adjustment values in the [-1,1] range,
15912 respectively to adjust the amount of cyan, magenta, yellow and black for the
15913 pixels of its range.
15914
15915 @subsection Examples
15916
15917 @itemize
15918 @item
15919 Increase cyan by 50% and reduce yellow by 33% in every green areas, and
15920 increase magenta by 27% in blue areas:
15921 @example
15922 selectivecolor=greens=.5 0 -.33 0:blues=0 .27
15923 @end example
15924
15925 @item
15926 Use a Photoshop selective color preset:
15927 @example
15928 selectivecolor=psfile=MySelectiveColorPresets/Misty.asv
15929 @end example
15930 @end itemize
15931
15932 @anchor{separatefields}
15933 @section separatefields
15934
15935 The @code{separatefields} takes a frame-based video input and splits
15936 each frame into its components fields, producing a new half height clip
15937 with twice the frame rate and twice the frame count.
15938
15939 This filter use field-dominance information in frame to decide which
15940 of each pair of fields to place first in the output.
15941 If it gets it wrong use @ref{setfield} filter before @code{separatefields} filter.
15942
15943 @section setdar, setsar
15944
15945 The @code{setdar} filter sets the Display Aspect Ratio for the filter
15946 output video.
15947
15948 This is done by changing the specified Sample (aka Pixel) Aspect
15949 Ratio, according to the following equation:
15950 @example
15951 @var{DAR} = @var{HORIZONTAL_RESOLUTION} / @var{VERTICAL_RESOLUTION} * @var{SAR}
15952 @end example
15953
15954 Keep in mind that the @code{setdar} filter does not modify the pixel
15955 dimensions of the video frame. Also, the display aspect ratio set by
15956 this filter may be changed by later filters in the filterchain,
15957 e.g. in case of scaling or if another "setdar" or a "setsar" filter is
15958 applied.
15959
15960 The @code{setsar} filter sets the Sample (aka Pixel) Aspect Ratio for
15961 the filter output video.
15962
15963 Note that as a consequence of the application of this filter, the
15964 output display aspect ratio will change according to the equation
15965 above.
15966
15967 Keep in mind that the sample aspect ratio set by the @code{setsar}
15968 filter may be changed by later filters in the filterchain, e.g. if
15969 another "setsar" or a "setdar" filter is applied.
15970
15971 It accepts the following parameters:
15972
15973 @table @option
15974 @item r, ratio, dar (@code{setdar} only), sar (@code{setsar} only)
15975 Set the aspect ratio used by the filter.
15976
15977 The parameter can be a floating point number string, an expression, or
15978 a string of the form @var{num}:@var{den}, where @var{num} and
15979 @var{den} are the numerator and denominator of the aspect ratio. If
15980 the parameter is not specified, it is assumed the value "0".
15981 In case the form "@var{num}:@var{den}" is used, the @code{:} character
15982 should be escaped.
15983
15984 @item max
15985 Set the maximum integer value to use for expressing numerator and
15986 denominator when reducing the expressed aspect ratio to a rational.
15987 Default value is @code{100}.
15988
15989 @end table
15990
15991 The parameter @var{sar} is an expression containing
15992 the following constants:
15993
15994 @table @option
15995 @item E, PI, PHI
15996 These are approximated values for the mathematical constants e
15997 (Euler's number), pi (Greek pi), and phi (the golden ratio).
15998
15999 @item w, h
16000 The input width and height.
16001
16002 @item a
16003 These are the same as @var{w} / @var{h}.
16004
16005 @item sar
16006 The input sample aspect ratio.
16007
16008 @item dar
16009 The input display aspect ratio. It is the same as
16010 (@var{w} / @var{h}) * @var{sar}.
16011
16012 @item hsub, vsub
16013 Horizontal and vertical chroma subsample values. For example, for the
16014 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
16015 @end table
16016
16017 @subsection Examples
16018
16019 @itemize
16020
16021 @item
16022 To change the display aspect ratio to 16:9, specify one of the following:
16023 @example
16024 setdar=dar=1.77777
16025 setdar=dar=16/9
16026 @end example
16027
16028 @item
16029 To change the sample aspect ratio to 10:11, specify:
16030 @example
16031 setsar=sar=10/11
16032 @end example
16033
16034 @item
16035 To set a display aspect ratio of 16:9, and specify a maximum integer value of
16036 1000 in the aspect ratio reduction, use the command:
16037 @example
16038 setdar=ratio=16/9:max=1000
16039 @end example
16040
16041 @end itemize
16042
16043 @anchor{setfield}
16044 @section setfield
16045
16046 Force field for the output video frame.
16047
16048 The @code{setfield} filter marks the interlace type field for the
16049 output frames. It does not change the input frame, but only sets the
16050 corresponding property, which affects how the frame is treated by
16051 following filters (e.g. @code{fieldorder} or @code{yadif}).
16052
16053 The filter accepts the following options:
16054
16055 @table @option
16056
16057 @item mode
16058 Available values are:
16059
16060 @table @samp
16061 @item auto
16062 Keep the same field property.
16063
16064 @item bff
16065 Mark the frame as bottom-field-first.
16066
16067 @item tff
16068 Mark the frame as top-field-first.
16069
16070 @item prog
16071 Mark the frame as progressive.
16072 @end table
16073 @end table
16074
16075 @anchor{setparams}
16076 @section setparams
16077
16078 Force frame parameter for the output video frame.
16079
16080 The @code{setparams} filter marks interlace and color range for the
16081 output frames. It does not change the input frame, but only sets the
16082 corresponding property, which affects how the frame is treated by
16083 filters/encoders.
16084
16085 @table @option
16086 @item field_mode
16087 Available values are:
16088
16089 @table @samp
16090 @item auto
16091 Keep the same field property (default).
16092
16093 @item bff
16094 Mark the frame as bottom-field-first.
16095
16096 @item tff
16097 Mark the frame as top-field-first.
16098
16099 @item prog
16100 Mark the frame as progressive.
16101 @end table
16102
16103 @item range
16104 Available values are:
16105
16106 @table @samp
16107 @item auto
16108 Keep the same color range property (default).
16109
16110 @item unspecified, unknown
16111 Mark the frame as unspecified color range.
16112
16113 @item limited, tv, mpeg
16114 Mark the frame as limited range.
16115
16116 @item full, pc, jpeg
16117 Mark the frame as full range.
16118 @end table
16119
16120 @item color_primaries
16121 Set the color primaries.
16122 Available values are:
16123
16124 @table @samp
16125 @item auto
16126 Keep the same color primaries property (default).
16127
16128 @item bt709
16129 @item unknown
16130 @item bt470m
16131 @item bt470bg
16132 @item smpte170m
16133 @item smpte240m
16134 @item film
16135 @item bt2020
16136 @item smpte428
16137 @item smpte431
16138 @item smpte432
16139 @item jedec-p22
16140 @end table
16141
16142 @item color_trc
16143 Set the color transfer.
16144 Available values are:
16145
16146 @table @samp
16147 @item auto
16148 Keep the same color trc property (default).
16149
16150 @item bt709
16151 @item unknown
16152 @item bt470m
16153 @item bt470bg
16154 @item smpte170m
16155 @item smpte240m
16156 @item linear
16157 @item log100
16158 @item log316
16159 @item iec61966-2-4
16160 @item bt1361e
16161 @item iec61966-2-1
16162 @item bt2020-10
16163 @item bt2020-12
16164 @item smpte2084
16165 @item smpte428
16166 @item arib-std-b67
16167 @end table
16168
16169 @item colorspace
16170 Set the colorspace.
16171 Available values are:
16172
16173 @table @samp
16174 @item auto
16175 Keep the same colorspace property (default).
16176
16177 @item gbr
16178 @item bt709
16179 @item unknown
16180 @item fcc
16181 @item bt470bg
16182 @item smpte170m
16183 @item smpte240m
16184 @item ycgco
16185 @item bt2020nc
16186 @item bt2020c
16187 @item smpte2085
16188 @item chroma-derived-nc
16189 @item chroma-derived-c
16190 @item ictcp
16191 @end table
16192 @end table
16193
16194 @section showinfo
16195
16196 Show a line containing various information for each input video frame.
16197 The input video is not modified.
16198
16199 This filter supports the following options:
16200
16201 @table @option
16202 @item checksum
16203 Calculate checksums of each plane. By default enabled.
16204 @end table
16205
16206 The shown line contains a sequence of key/value pairs of the form
16207 @var{key}:@var{value}.
16208
16209 The following values are shown in the output:
16210
16211 @table @option
16212 @item n
16213 The (sequential) number of the input frame, starting from 0.
16214
16215 @item pts
16216 The Presentation TimeStamp of the input frame, expressed as a number of
16217 time base units. The time base unit depends on the filter input pad.
16218
16219 @item pts_time
16220 The Presentation TimeStamp of the input frame, expressed as a number of
16221 seconds.
16222
16223 @item pos
16224 The position of the frame in the input stream, or -1 if this information is
16225 unavailable and/or meaningless (for example in case of synthetic video).
16226
16227 @item fmt
16228 The pixel format name.
16229
16230 @item sar
16231 The sample aspect ratio of the input frame, expressed in the form
16232 @var{num}/@var{den}.
16233
16234 @item s
16235 The size of the input frame. For the syntax of this option, check the
16236 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
16237
16238 @item i
16239 The type of interlaced mode ("P" for "progressive", "T" for top field first, "B"
16240 for bottom field first).
16241
16242 @item iskey
16243 This is 1 if the frame is a key frame, 0 otherwise.
16244
16245 @item type
16246 The picture type of the input frame ("I" for an I-frame, "P" for a
16247 P-frame, "B" for a B-frame, or "?" for an unknown type).
16248 Also refer to the documentation of the @code{AVPictureType} enum and of
16249 the @code{av_get_picture_type_char} function defined in
16250 @file{libavutil/avutil.h}.
16251
16252 @item checksum
16253 The Adler-32 checksum (printed in hexadecimal) of all the planes of the input frame.
16254
16255 @item plane_checksum
16256 The Adler-32 checksum (printed in hexadecimal) of each plane of the input frame,
16257 expressed in the form "[@var{c0} @var{c1} @var{c2} @var{c3}]".
16258 @end table
16259
16260 @section showpalette
16261
16262 Displays the 256 colors palette of each frame. This filter is only relevant for
16263 @var{pal8} pixel format frames.
16264
16265 It accepts the following option:
16266
16267 @table @option
16268 @item s
16269 Set the size of the box used to represent one palette color entry. Default is
16270 @code{30} (for a @code{30x30} pixel box).
16271 @end table
16272
16273 @section shuffleframes
16274
16275 Reorder and/or duplicate and/or drop video frames.
16276
16277 It accepts the following parameters:
16278
16279 @table @option
16280 @item mapping
16281 Set the destination indexes of input frames.
16282 This is space or '|' separated list of indexes that maps input frames to output
16283 frames. Number of indexes also sets maximal value that each index may have.
16284 '-1' index have special meaning and that is to drop frame.
16285 @end table
16286
16287 The first frame has the index 0. The default is to keep the input unchanged.
16288
16289 @subsection Examples
16290
16291 @itemize
16292 @item
16293 Swap second and third frame of every three frames of the input:
16294 @example
16295 ffmpeg -i INPUT -vf "shuffleframes=0 2 1" OUTPUT
16296 @end example
16297
16298 @item
16299 Swap 10th and 1st frame of every ten frames of the input:
16300 @example
16301 ffmpeg -i INPUT -vf "shuffleframes=9 1 2 3 4 5 6 7 8 0" OUTPUT
16302 @end example
16303 @end itemize
16304
16305 @section shuffleplanes
16306
16307 Reorder and/or duplicate video planes.
16308
16309 It accepts the following parameters:
16310
16311 @table @option
16312
16313 @item map0
16314 The index of the input plane to be used as the first output plane.
16315
16316 @item map1
16317 The index of the input plane to be used as the second output plane.
16318
16319 @item map2
16320 The index of the input plane to be used as the third output plane.
16321
16322 @item map3
16323 The index of the input plane to be used as the fourth output plane.
16324
16325 @end table
16326
16327 The first plane has the index 0. The default is to keep the input unchanged.
16328
16329 @subsection Examples
16330
16331 @itemize
16332 @item
16333 Swap the second and third planes of the input:
16334 @example
16335 ffmpeg -i INPUT -vf shuffleplanes=0:2:1:3 OUTPUT
16336 @end example
16337 @end itemize
16338
16339 @anchor{signalstats}
16340 @section signalstats
16341 Evaluate various visual metrics that assist in determining issues associated
16342 with the digitization of analog video media.
16343
16344 By default the filter will log these metadata values:
16345
16346 @table @option
16347 @item YMIN
16348 Display the minimal Y value contained within the input frame. Expressed in
16349 range of [0-255].
16350
16351 @item YLOW
16352 Display the Y value at the 10% percentile within the input frame. Expressed in
16353 range of [0-255].
16354
16355 @item YAVG
16356 Display the average Y value within the input frame. Expressed in range of
16357 [0-255].
16358
16359 @item YHIGH
16360 Display the Y value at the 90% percentile within the input frame. Expressed in
16361 range of [0-255].
16362
16363 @item YMAX
16364 Display the maximum Y value contained within the input frame. Expressed in
16365 range of [0-255].
16366
16367 @item UMIN
16368 Display the minimal U value contained within the input frame. Expressed in
16369 range of [0-255].
16370
16371 @item ULOW
16372 Display the U value at the 10% percentile within the input frame. Expressed in
16373 range of [0-255].
16374
16375 @item UAVG
16376 Display the average U value within the input frame. Expressed in range of
16377 [0-255].
16378
16379 @item UHIGH
16380 Display the U value at the 90% percentile within the input frame. Expressed in
16381 range of [0-255].
16382
16383 @item UMAX
16384 Display the maximum U value contained within the input frame. Expressed in
16385 range of [0-255].
16386
16387 @item VMIN
16388 Display the minimal V value contained within the input frame. Expressed in
16389 range of [0-255].
16390
16391 @item VLOW
16392 Display the V value at the 10% percentile within the input frame. Expressed in
16393 range of [0-255].
16394
16395 @item VAVG
16396 Display the average V value within the input frame. Expressed in range of
16397 [0-255].
16398
16399 @item VHIGH
16400 Display the V value at the 90% percentile within the input frame. Expressed in
16401 range of [0-255].
16402
16403 @item VMAX
16404 Display the maximum V value contained within the input frame. Expressed in
16405 range of [0-255].
16406
16407 @item SATMIN
16408 Display the minimal saturation value contained within the input frame.
16409 Expressed in range of [0-~181.02].
16410
16411 @item SATLOW
16412 Display the saturation value at the 10% percentile within the input frame.
16413 Expressed in range of [0-~181.02].
16414
16415 @item SATAVG
16416 Display the average saturation value within the input frame. Expressed in range
16417 of [0-~181.02].
16418
16419 @item SATHIGH
16420 Display the saturation value at the 90% percentile within the input frame.
16421 Expressed in range of [0-~181.02].
16422
16423 @item SATMAX
16424 Display the maximum saturation value contained within the input frame.
16425 Expressed in range of [0-~181.02].
16426
16427 @item HUEMED
16428 Display the median value for hue within the input frame. Expressed in range of
16429 [0-360].
16430
16431 @item HUEAVG
16432 Display the average value for hue within the input frame. Expressed in range of
16433 [0-360].
16434
16435 @item YDIF
16436 Display the average of sample value difference between all values of the Y
16437 plane in the current frame and corresponding values of the previous input frame.
16438 Expressed in range of [0-255].
16439
16440 @item UDIF
16441 Display the average of sample value difference between all values of the U
16442 plane in the current frame and corresponding values of the previous input frame.
16443 Expressed in range of [0-255].
16444
16445 @item VDIF
16446 Display the average of sample value difference between all values of the V
16447 plane in the current frame and corresponding values of the previous input frame.
16448 Expressed in range of [0-255].
16449
16450 @item YBITDEPTH
16451 Display bit depth of Y plane in current frame.
16452 Expressed in range of [0-16].
16453
16454 @item UBITDEPTH
16455 Display bit depth of U plane in current frame.
16456 Expressed in range of [0-16].
16457
16458 @item VBITDEPTH
16459 Display bit depth of V plane in current frame.
16460 Expressed in range of [0-16].
16461 @end table
16462
16463 The filter accepts the following options:
16464
16465 @table @option
16466 @item stat
16467 @item out
16468
16469 @option{stat} specify an additional form of image analysis.
16470 @option{out} output video with the specified type of pixel highlighted.
16471
16472 Both options accept the following values:
16473
16474 @table @samp
16475 @item tout
16476 Identify @var{temporal outliers} pixels. A @var{temporal outlier} is a pixel
16477 unlike the neighboring pixels of the same field. Examples of temporal outliers
16478 include the results of video dropouts, head clogs, or tape tracking issues.
16479
16480 @item vrep
16481 Identify @var{vertical line repetition}. Vertical line repetition includes
16482 similar rows of pixels within a frame. In born-digital video vertical line
16483 repetition is common, but this pattern is uncommon in video digitized from an
16484 analog source. When it occurs in video that results from the digitization of an
16485 analog source it can indicate concealment from a dropout compensator.
16486
16487 @item brng
16488 Identify pixels that fall outside of legal broadcast range.
16489 @end table
16490
16491 @item color, c
16492 Set the highlight color for the @option{out} option. The default color is
16493 yellow.
16494 @end table
16495
16496 @subsection Examples
16497
16498 @itemize
16499 @item
16500 Output data of various video metrics:
16501 @example
16502 ffprobe -f lavfi movie=example.mov,signalstats="stat=tout+vrep+brng" -show_frames
16503 @end example
16504
16505 @item
16506 Output specific data about the minimum and maximum values of the Y plane per frame:
16507 @example
16508 ffprobe -f lavfi movie=example.mov,signalstats -show_entries frame_tags=lavfi.signalstats.YMAX,lavfi.signalstats.YMIN
16509 @end example
16510
16511 @item
16512 Playback video while highlighting pixels that are outside of broadcast range in red.
16513 @example
16514 ffplay example.mov -vf signalstats="out=brng:color=red"
16515 @end example
16516
16517 @item
16518 Playback video with signalstats metadata drawn over the frame.
16519 @example
16520 ffplay example.mov -vf signalstats=stat=brng+vrep+tout,drawtext=fontfile=FreeSerif.ttf:textfile=signalstat_drawtext.txt
16521 @end example
16522
16523 The contents of signalstat_drawtext.txt used in the command are:
16524 @example
16525 time %@{pts:hms@}
16526 Y (%@{metadata:lavfi.signalstats.YMIN@}-%@{metadata:lavfi.signalstats.YMAX@})
16527 U (%@{metadata:lavfi.signalstats.UMIN@}-%@{metadata:lavfi.signalstats.UMAX@})
16528 V (%@{metadata:lavfi.signalstats.VMIN@}-%@{metadata:lavfi.signalstats.VMAX@})
16529 saturation maximum: %@{metadata:lavfi.signalstats.SATMAX@}
16530
16531 @end example
16532 @end itemize
16533
16534 @anchor{signature}
16535 @section signature
16536
16537 Calculates the MPEG-7 Video Signature. The filter can handle more than one
16538 input. In this case the matching between the inputs can be calculated additionally.
16539 The filter always passes through the first input. The signature of each stream can
16540 be written into a file.
16541
16542 It accepts the following options:
16543
16544 @table @option
16545 @item detectmode
16546 Enable or disable the matching process.
16547
16548 Available values are:
16549
16550 @table @samp
16551 @item off
16552 Disable the calculation of a matching (default).
16553 @item full
16554 Calculate the matching for the whole video and output whether the whole video
16555 matches or only parts.
16556 @item fast
16557 Calculate only until a matching is found or the video ends. Should be faster in
16558 some cases.
16559 @end table
16560
16561 @item nb_inputs
16562 Set the number of inputs. The option value must be a non negative integer.
16563 Default value is 1.
16564
16565 @item filename
16566 Set the path to which the output is written. If there is more than one input,
16567 the path must be a prototype, i.e. must contain %d or %0nd (where n is a positive
16568 integer), that will be replaced with the input number. If no filename is
16569 specified, no output will be written. This is the default.
16570
16571 @item format
16572 Choose the output format.
16573
16574 Available values are:
16575
16576 @table @samp
16577 @item binary
16578 Use the specified binary representation (default).
16579 @item xml
16580 Use the specified xml representation.
16581 @end table
16582
16583 @item th_d
16584 Set threshold to detect one word as similar. The option value must be an integer
16585 greater than zero. The default value is 9000.
16586
16587 @item th_dc
16588 Set threshold to detect all words as similar. The option value must be an integer
16589 greater than zero. The default value is 60000.
16590
16591 @item th_xh
16592 Set threshold to detect frames as similar. The option value must be an integer
16593 greater than zero. The default value is 116.
16594
16595 @item th_di
16596 Set the minimum length of a sequence in frames to recognize it as matching
16597 sequence. The option value must be a non negative integer value.
16598 The default value is 0.
16599
16600 @item th_it
16601 Set the minimum relation, that matching frames to all frames must have.
16602 The option value must be a double value between 0 and 1. The default value is 0.5.
16603 @end table
16604
16605 @subsection Examples
16606
16607 @itemize
16608 @item
16609 To calculate the signature of an input video and store it in signature.bin:
16610 @example
16611 ffmpeg -i input.mkv -vf signature=filename=signature.bin -map 0:v -f null -
16612 @end example
16613
16614 @item
16615 To detect whether two videos match and store the signatures in XML format in
16616 signature0.xml and signature1.xml:
16617 @example
16618 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 -
16619 @end example
16620
16621 @end itemize
16622
16623 @anchor{smartblur}
16624 @section smartblur
16625
16626 Blur the input video without impacting the outlines.
16627
16628 It accepts the following options:
16629
16630 @table @option
16631 @item luma_radius, lr
16632 Set the luma radius. The option value must be a float number in
16633 the range [0.1,5.0] that specifies the variance of the gaussian filter
16634 used to blur the image (slower if larger). Default value is 1.0.
16635
16636 @item luma_strength, ls
16637 Set the luma strength. The option value must be a float number
16638 in the range [-1.0,1.0] that configures the blurring. A value included
16639 in [0.0,1.0] will blur the image whereas a value included in
16640 [-1.0,0.0] will sharpen the image. Default value is 1.0.
16641
16642 @item luma_threshold, lt
16643 Set the luma threshold used as a coefficient to determine
16644 whether a pixel should be blurred or not. The option value must be an
16645 integer in the range [-30,30]. A value of 0 will filter all the image,
16646 a value included in [0,30] will filter flat areas and a value included
16647 in [-30,0] will filter edges. Default value is 0.
16648
16649 @item chroma_radius, cr
16650 Set the chroma radius. The option value must be a float number in
16651 the range [0.1,5.0] that specifies the variance of the gaussian filter
16652 used to blur the image (slower if larger). Default value is @option{luma_radius}.
16653
16654 @item chroma_strength, cs
16655 Set the chroma strength. The option value must be a float number
16656 in the range [-1.0,1.0] that configures the blurring. A value included
16657 in [0.0,1.0] will blur the image whereas a value included in
16658 [-1.0,0.0] will sharpen the image. Default value is @option{luma_strength}.
16659
16660 @item chroma_threshold, ct
16661 Set the chroma threshold used as a coefficient to determine
16662 whether a pixel should be blurred or not. The option value must be an
16663 integer in the range [-30,30]. A value of 0 will filter all the image,
16664 a value included in [0,30] will filter flat areas and a value included
16665 in [-30,0] will filter edges. Default value is @option{luma_threshold}.
16666 @end table
16667
16668 If a chroma option is not explicitly set, the corresponding luma value
16669 is set.
16670
16671 @section sobel
16672 Apply sobel operator to input video stream.
16673
16674 The filter accepts the following option:
16675
16676 @table @option
16677 @item planes
16678 Set which planes will be processed, unprocessed planes will be copied.
16679 By default value 0xf, all planes will be processed.
16680
16681 @item scale
16682 Set value which will be multiplied with filtered result.
16683
16684 @item delta
16685 Set value which will be added to filtered result.
16686 @end table
16687
16688 @anchor{spp}
16689 @section spp
16690
16691 Apply a simple postprocessing filter that compresses and decompresses the image
16692 at several (or - in the case of @option{quality} level @code{6} - all) shifts
16693 and average the results.
16694
16695 The filter accepts the following options:
16696
16697 @table @option
16698 @item quality
16699 Set quality. This option defines the number of levels for averaging. It accepts
16700 an integer in the range 0-6. If set to @code{0}, the filter will have no
16701 effect. A value of @code{6} means the higher quality. For each increment of
16702 that value the speed drops by a factor of approximately 2.  Default value is
16703 @code{3}.
16704
16705 @item qp
16706 Force a constant quantization parameter. If not set, the filter will use the QP
16707 from the video stream (if available).
16708
16709 @item mode
16710 Set thresholding mode. Available modes are:
16711
16712 @table @samp
16713 @item hard
16714 Set hard thresholding (default).
16715 @item soft
16716 Set soft thresholding (better de-ringing effect, but likely blurrier).
16717 @end table
16718
16719 @item use_bframe_qp
16720 Enable the use of the QP from the B-Frames if set to @code{1}. Using this
16721 option may cause flicker since the B-Frames have often larger QP. Default is
16722 @code{0} (not enabled).
16723 @end table
16724
16725 @section sr
16726
16727 Scale the input by applying one of the super-resolution methods based on
16728 convolutional neural networks. Supported models:
16729
16730 @itemize
16731 @item
16732 Super-Resolution Convolutional Neural Network model (SRCNN).
16733 See @url{https://arxiv.org/abs/1501.00092}.
16734
16735 @item
16736 Efficient Sub-Pixel Convolutional Neural Network model (ESPCN).
16737 See @url{https://arxiv.org/abs/1609.05158}.
16738 @end itemize
16739
16740 Training scripts as well as scripts for model file (.pb) saving can be found at
16741 @url{https://github.com/XueweiMeng/sr/tree/sr_dnn_native}. Original repository
16742 is at @url{https://github.com/HighVoltageRocknRoll/sr.git}.
16743
16744 Native model files (.model) can be generated from TensorFlow model
16745 files (.pb) by using tools/python/convert.py
16746
16747 The filter accepts the following options:
16748
16749 @table @option
16750 @item dnn_backend
16751 Specify which DNN backend to use for model loading and execution. This option accepts
16752 the following values:
16753
16754 @table @samp
16755 @item native
16756 Native implementation of DNN loading and execution.
16757
16758 @item tensorflow
16759 TensorFlow backend. To enable this backend you
16760 need to install the TensorFlow for C library (see
16761 @url{https://www.tensorflow.org/install/install_c}) and configure FFmpeg with
16762 @code{--enable-libtensorflow}
16763 @end table
16764
16765 Default value is @samp{native}.
16766
16767 @item model
16768 Set path to model file specifying network architecture and its parameters.
16769 Note that different backends use different file formats. TensorFlow backend
16770 can load files for both formats, while native backend can load files for only
16771 its format.
16772
16773 @item scale_factor
16774 Set scale factor for SRCNN model. Allowed values are @code{2}, @code{3} and @code{4}.
16775 Default value is @code{2}. Scale factor is necessary for SRCNN model, because it accepts
16776 input upscaled using bicubic upscaling with proper scale factor.
16777 @end table
16778
16779 @section ssim
16780
16781 Obtain the SSIM (Structural SImilarity Metric) between two input videos.
16782
16783 This filter takes in input two input videos, the first input is
16784 considered the "main" source and is passed unchanged to the
16785 output. The second input is used as a "reference" video for computing
16786 the SSIM.
16787
16788 Both video inputs must have the same resolution and pixel format for
16789 this filter to work correctly. Also it assumes that both inputs
16790 have the same number of frames, which are compared one by one.
16791
16792 The filter stores the calculated SSIM of each frame.
16793
16794 The description of the accepted parameters follows.
16795
16796 @table @option
16797 @item stats_file, f
16798 If specified the filter will use the named file to save the SSIM of
16799 each individual frame. When filename equals "-" the data is sent to
16800 standard output.
16801 @end table
16802
16803 The file printed if @var{stats_file} is selected, contains a sequence of
16804 key/value pairs of the form @var{key}:@var{value} for each compared
16805 couple of frames.
16806
16807 A description of each shown parameter follows:
16808
16809 @table @option
16810 @item n
16811 sequential number of the input frame, starting from 1
16812
16813 @item Y, U, V, R, G, B
16814 SSIM of the compared frames for the component specified by the suffix.
16815
16816 @item All
16817 SSIM of the compared frames for the whole frame.
16818
16819 @item dB
16820 Same as above but in dB representation.
16821 @end table
16822
16823 This filter also supports the @ref{framesync} options.
16824
16825 For example:
16826 @example
16827 movie=ref_movie.mpg, setpts=PTS-STARTPTS [main];
16828 [main][ref] ssim="stats_file=stats.log" [out]
16829 @end example
16830
16831 On this example the input file being processed is compared with the
16832 reference file @file{ref_movie.mpg}. The SSIM of each individual frame
16833 is stored in @file{stats.log}.
16834
16835 Another example with both psnr and ssim at same time:
16836 @example
16837 ffmpeg -i main.mpg -i ref.mpg -lavfi  "ssim;[0:v][1:v]psnr" -f null -
16838 @end example
16839
16840 @section stereo3d
16841
16842 Convert between different stereoscopic image formats.
16843
16844 The filters accept the following options:
16845
16846 @table @option
16847 @item in
16848 Set stereoscopic image format of input.
16849
16850 Available values for input image formats are:
16851 @table @samp
16852 @item sbsl
16853 side by side parallel (left eye left, right eye right)
16854
16855 @item sbsr
16856 side by side crosseye (right eye left, left eye right)
16857
16858 @item sbs2l
16859 side by side parallel with half width resolution
16860 (left eye left, right eye right)
16861
16862 @item sbs2r
16863 side by side crosseye with half width resolution
16864 (right eye left, left eye right)
16865
16866 @item abl
16867 @item tbl
16868 above-below (left eye above, right eye below)
16869
16870 @item abr
16871 @item tbr
16872 above-below (right eye above, left eye below)
16873
16874 @item ab2l
16875 @item tb2l
16876 above-below with half height resolution
16877 (left eye above, right eye below)
16878
16879 @item ab2r
16880 @item tb2r
16881 above-below with half height resolution
16882 (right eye above, left eye below)
16883
16884 @item al
16885 alternating frames (left eye first, right eye second)
16886
16887 @item ar
16888 alternating frames (right eye first, left eye second)
16889
16890 @item irl
16891 interleaved rows (left eye has top row, right eye starts on next row)
16892
16893 @item irr
16894 interleaved rows (right eye has top row, left eye starts on next row)
16895
16896 @item icl
16897 interleaved columns, left eye first
16898
16899 @item icr
16900 interleaved columns, right eye first
16901
16902 Default value is @samp{sbsl}.
16903 @end table
16904
16905 @item out
16906 Set stereoscopic image format of output.
16907
16908 @table @samp
16909 @item sbsl
16910 side by side parallel (left eye left, right eye right)
16911
16912 @item sbsr
16913 side by side crosseye (right eye left, left eye right)
16914
16915 @item sbs2l
16916 side by side parallel with half width resolution
16917 (left eye left, right eye right)
16918
16919 @item sbs2r
16920 side by side crosseye with half width resolution
16921 (right eye left, left eye right)
16922
16923 @item abl
16924 @item tbl
16925 above-below (left eye above, right eye below)
16926
16927 @item abr
16928 @item tbr
16929 above-below (right eye above, left eye below)
16930
16931 @item ab2l
16932 @item tb2l
16933 above-below with half height resolution
16934 (left eye above, right eye below)
16935
16936 @item ab2r
16937 @item tb2r
16938 above-below with half height resolution
16939 (right eye above, left eye below)
16940
16941 @item al
16942 alternating frames (left eye first, right eye second)
16943
16944 @item ar
16945 alternating frames (right eye first, left eye second)
16946
16947 @item irl
16948 interleaved rows (left eye has top row, right eye starts on next row)
16949
16950 @item irr
16951 interleaved rows (right eye has top row, left eye starts on next row)
16952
16953 @item arbg
16954 anaglyph red/blue gray
16955 (red filter on left eye, blue filter on right eye)
16956
16957 @item argg
16958 anaglyph red/green gray
16959 (red filter on left eye, green filter on right eye)
16960
16961 @item arcg
16962 anaglyph red/cyan gray
16963 (red filter on left eye, cyan filter on right eye)
16964
16965 @item arch
16966 anaglyph red/cyan half colored
16967 (red filter on left eye, cyan filter on right eye)
16968
16969 @item arcc
16970 anaglyph red/cyan color
16971 (red filter on left eye, cyan filter on right eye)
16972
16973 @item arcd
16974 anaglyph red/cyan color optimized with the least squares projection of dubois
16975 (red filter on left eye, cyan filter on right eye)
16976
16977 @item agmg
16978 anaglyph green/magenta gray
16979 (green filter on left eye, magenta filter on right eye)
16980
16981 @item agmh
16982 anaglyph green/magenta half colored
16983 (green filter on left eye, magenta filter on right eye)
16984
16985 @item agmc
16986 anaglyph green/magenta colored
16987 (green filter on left eye, magenta filter on right eye)
16988
16989 @item agmd
16990 anaglyph green/magenta color optimized with the least squares projection of dubois
16991 (green filter on left eye, magenta filter on right eye)
16992
16993 @item aybg
16994 anaglyph yellow/blue gray
16995 (yellow filter on left eye, blue filter on right eye)
16996
16997 @item aybh
16998 anaglyph yellow/blue half colored
16999 (yellow filter on left eye, blue filter on right eye)
17000
17001 @item aybc
17002 anaglyph yellow/blue colored
17003 (yellow filter on left eye, blue filter on right eye)
17004
17005 @item aybd
17006 anaglyph yellow/blue color optimized with the least squares projection of dubois
17007 (yellow filter on left eye, blue filter on right eye)
17008
17009 @item ml
17010 mono output (left eye only)
17011
17012 @item mr
17013 mono output (right eye only)
17014
17015 @item chl
17016 checkerboard, left eye first
17017
17018 @item chr
17019 checkerboard, right eye first
17020
17021 @item icl
17022 interleaved columns, left eye first
17023
17024 @item icr
17025 interleaved columns, right eye first
17026
17027 @item hdmi
17028 HDMI frame pack
17029 @end table
17030
17031 Default value is @samp{arcd}.
17032 @end table
17033
17034 @subsection Examples
17035
17036 @itemize
17037 @item
17038 Convert input video from side by side parallel to anaglyph yellow/blue dubois:
17039 @example
17040 stereo3d=sbsl:aybd
17041 @end example
17042
17043 @item
17044 Convert input video from above below (left eye above, right eye below) to side by side crosseye.
17045 @example
17046 stereo3d=abl:sbsr
17047 @end example
17048 @end itemize
17049
17050 @section streamselect, astreamselect
17051 Select video or audio streams.
17052
17053 The filter accepts the following options:
17054
17055 @table @option
17056 @item inputs
17057 Set number of inputs. Default is 2.
17058
17059 @item map
17060 Set input indexes to remap to outputs.
17061 @end table
17062
17063 @subsection Commands
17064
17065 The @code{streamselect} and @code{astreamselect} filter supports the following
17066 commands:
17067
17068 @table @option
17069 @item map
17070 Set input indexes to remap to outputs.
17071 @end table
17072
17073 @subsection Examples
17074
17075 @itemize
17076 @item
17077 Select first 5 seconds 1st stream and rest of time 2nd stream:
17078 @example
17079 sendcmd='5.0 streamselect map 1',streamselect=inputs=2:map=0
17080 @end example
17081
17082 @item
17083 Same as above, but for audio:
17084 @example
17085 asendcmd='5.0 astreamselect map 1',astreamselect=inputs=2:map=0
17086 @end example
17087 @end itemize
17088
17089 @anchor{subtitles}
17090 @section subtitles
17091
17092 Draw subtitles on top of input video using the libass library.
17093
17094 To enable compilation of this filter you need to configure FFmpeg with
17095 @code{--enable-libass}. This filter also requires a build with libavcodec and
17096 libavformat to convert the passed subtitles file to ASS (Advanced Substation
17097 Alpha) subtitles format.
17098
17099 The filter accepts the following options:
17100
17101 @table @option
17102 @item filename, f
17103 Set the filename of the subtitle file to read. It must be specified.
17104
17105 @item original_size
17106 Specify the size of the original video, the video for which the ASS file
17107 was composed. For the syntax of this option, check the
17108 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
17109 Due to a misdesign in ASS aspect ratio arithmetic, this is necessary to
17110 correctly scale the fonts if the aspect ratio has been changed.
17111
17112 @item fontsdir
17113 Set a directory path containing fonts that can be used by the filter.
17114 These fonts will be used in addition to whatever the font provider uses.
17115
17116 @item alpha
17117 Process alpha channel, by default alpha channel is untouched.
17118
17119 @item charenc
17120 Set subtitles input character encoding. @code{subtitles} filter only. Only
17121 useful if not UTF-8.
17122
17123 @item stream_index, si
17124 Set subtitles stream index. @code{subtitles} filter only.
17125
17126 @item force_style
17127 Override default style or script info parameters of the subtitles. It accepts a
17128 string containing ASS style format @code{KEY=VALUE} couples separated by ",".
17129 @end table
17130
17131 If the first key is not specified, it is assumed that the first value
17132 specifies the @option{filename}.
17133
17134 For example, to render the file @file{sub.srt} on top of the input
17135 video, use the command:
17136 @example
17137 subtitles=sub.srt
17138 @end example
17139
17140 which is equivalent to:
17141 @example
17142 subtitles=filename=sub.srt
17143 @end example
17144
17145 To render the default subtitles stream from file @file{video.mkv}, use:
17146 @example
17147 subtitles=video.mkv
17148 @end example
17149
17150 To render the second subtitles stream from that file, use:
17151 @example
17152 subtitles=video.mkv:si=1
17153 @end example
17154
17155 To make the subtitles stream from @file{sub.srt} appear in 80% transparent blue
17156 @code{DejaVu Serif}, use:
17157 @example
17158 subtitles=sub.srt:force_style='FontName=DejaVu Serif,PrimaryColour=&HCCFF0000'
17159 @end example
17160
17161 @section super2xsai
17162
17163 Scale the input by 2x and smooth using the Super2xSaI (Scale and
17164 Interpolate) pixel art scaling algorithm.
17165
17166 Useful for enlarging pixel art images without reducing sharpness.
17167
17168 @section swaprect
17169
17170 Swap two rectangular objects in video.
17171
17172 This filter accepts the following options:
17173
17174 @table @option
17175 @item w
17176 Set object width.
17177
17178 @item h
17179 Set object height.
17180
17181 @item x1
17182 Set 1st rect x coordinate.
17183
17184 @item y1
17185 Set 1st rect y coordinate.
17186
17187 @item x2
17188 Set 2nd rect x coordinate.
17189
17190 @item y2
17191 Set 2nd rect y coordinate.
17192
17193 All expressions are evaluated once for each frame.
17194 @end table
17195
17196 The all options are expressions containing the following constants:
17197
17198 @table @option
17199 @item w
17200 @item h
17201 The input width and height.
17202
17203 @item a
17204 same as @var{w} / @var{h}
17205
17206 @item sar
17207 input sample aspect ratio
17208
17209 @item dar
17210 input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}
17211
17212 @item n
17213 The number of the input frame, starting from 0.
17214
17215 @item t
17216 The timestamp expressed in seconds. It's NAN if the input timestamp is unknown.
17217
17218 @item pos
17219 the position in the file of the input frame, NAN if unknown
17220 @end table
17221
17222 @section swapuv
17223 Swap U & V plane.
17224
17225 @section telecine
17226
17227 Apply telecine process to the video.
17228
17229 This filter accepts the following options:
17230
17231 @table @option
17232 @item first_field
17233 @table @samp
17234 @item top, t
17235 top field first
17236 @item bottom, b
17237 bottom field first
17238 The default value is @code{top}.
17239 @end table
17240
17241 @item pattern
17242 A string of numbers representing the pulldown pattern you wish to apply.
17243 The default value is @code{23}.
17244 @end table
17245
17246 @example
17247 Some typical patterns:
17248
17249 NTSC output (30i):
17250 27.5p: 32222
17251 24p: 23 (classic)
17252 24p: 2332 (preferred)
17253 20p: 33
17254 18p: 334
17255 16p: 3444
17256
17257 PAL output (25i):
17258 27.5p: 12222
17259 24p: 222222222223 ("Euro pulldown")
17260 16.67p: 33
17261 16p: 33333334
17262 @end example
17263
17264 @section threshold
17265
17266 Apply threshold effect to video stream.
17267
17268 This filter needs four video streams to perform thresholding.
17269 First stream is stream we are filtering.
17270 Second stream is holding threshold values, third stream is holding min values,
17271 and last, fourth stream is holding max values.
17272
17273 The filter accepts the following option:
17274
17275 @table @option
17276 @item planes
17277 Set which planes will be processed, unprocessed planes will be copied.
17278 By default value 0xf, all planes will be processed.
17279 @end table
17280
17281 For example if first stream pixel's component value is less then threshold value
17282 of pixel component from 2nd threshold stream, third stream value will picked,
17283 otherwise fourth stream pixel component value will be picked.
17284
17285 Using color source filter one can perform various types of thresholding:
17286
17287 @subsection Examples
17288
17289 @itemize
17290 @item
17291 Binary threshold, using gray color as threshold:
17292 @example
17293 ffmpeg -i 320x240.avi -f lavfi -i color=gray -f lavfi -i color=black -f lavfi -i color=white -lavfi threshold output.avi
17294 @end example
17295
17296 @item
17297 Inverted binary threshold, using gray color as threshold:
17298 @example
17299 ffmpeg -i 320x240.avi -f lavfi -i color=gray -f lavfi -i color=white -f lavfi -i color=black -lavfi threshold output.avi
17300 @end example
17301
17302 @item
17303 Truncate binary threshold, using gray color as threshold:
17304 @example
17305 ffmpeg -i 320x240.avi -f lavfi -i color=gray -i 320x240.avi -f lavfi -i color=gray -lavfi threshold output.avi
17306 @end example
17307
17308 @item
17309 Threshold to zero, using gray color as threshold:
17310 @example
17311 ffmpeg -i 320x240.avi -f lavfi -i color=gray -f lavfi -i color=white -i 320x240.avi -lavfi threshold output.avi
17312 @end example
17313
17314 @item
17315 Inverted threshold to zero, using gray color as threshold:
17316 @example
17317 ffmpeg -i 320x240.avi -f lavfi -i color=gray -i 320x240.avi -f lavfi -i color=white -lavfi threshold output.avi
17318 @end example
17319 @end itemize
17320
17321 @section thumbnail
17322 Select the most representative frame in a given sequence of consecutive frames.
17323
17324 The filter accepts the following options:
17325
17326 @table @option
17327 @item n
17328 Set the frames batch size to analyze; in a set of @var{n} frames, the filter
17329 will pick one of them, and then handle the next batch of @var{n} frames until
17330 the end. Default is @code{100}.
17331 @end table
17332
17333 Since the filter keeps track of the whole frames sequence, a bigger @var{n}
17334 value will result in a higher memory usage, so a high value is not recommended.
17335
17336 @subsection Examples
17337
17338 @itemize
17339 @item
17340 Extract one picture each 50 frames:
17341 @example
17342 thumbnail=50
17343 @end example
17344
17345 @item
17346 Complete example of a thumbnail creation with @command{ffmpeg}:
17347 @example
17348 ffmpeg -i in.avi -vf thumbnail,scale=300:200 -frames:v 1 out.png
17349 @end example
17350 @end itemize
17351
17352 @section tile
17353
17354 Tile several successive frames together.
17355
17356 The filter accepts the following options:
17357
17358 @table @option
17359
17360 @item layout
17361 Set the grid size (i.e. the number of lines and columns). For the syntax of
17362 this option, check the
17363 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
17364
17365 @item nb_frames
17366 Set the maximum number of frames to render in the given area. It must be less
17367 than or equal to @var{w}x@var{h}. The default value is @code{0}, meaning all
17368 the area will be used.
17369
17370 @item margin
17371 Set the outer border margin in pixels.
17372
17373 @item padding
17374 Set the inner border thickness (i.e. the number of pixels between frames). For
17375 more advanced padding options (such as having different values for the edges),
17376 refer to the pad video filter.
17377
17378 @item color
17379 Specify the color of the unused area. For the syntax of this option, check the
17380 @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
17381 The default value of @var{color} is "black".
17382
17383 @item overlap
17384 Set the number of frames to overlap when tiling several successive frames together.
17385 The value must be between @code{0} and @var{nb_frames - 1}.
17386
17387 @item init_padding
17388 Set the number of frames to initially be empty before displaying first output frame.
17389 This controls how soon will one get first output frame.
17390 The value must be between @code{0} and @var{nb_frames - 1}.
17391 @end table
17392
17393 @subsection Examples
17394
17395 @itemize
17396 @item
17397 Produce 8x8 PNG tiles of all keyframes (@option{-skip_frame nokey}) in a movie:
17398 @example
17399 ffmpeg -skip_frame nokey -i file.avi -vf 'scale=128:72,tile=8x8' -an -vsync 0 keyframes%03d.png
17400 @end example
17401 The @option{-vsync 0} is necessary to prevent @command{ffmpeg} from
17402 duplicating each output frame to accommodate the originally detected frame
17403 rate.
17404
17405 @item
17406 Display @code{5} pictures in an area of @code{3x2} frames,
17407 with @code{7} pixels between them, and @code{2} pixels of initial margin, using
17408 mixed flat and named options:
17409 @example
17410 tile=3x2:nb_frames=5:padding=7:margin=2
17411 @end example
17412 @end itemize
17413
17414 @section tinterlace
17415
17416 Perform various types of temporal field interlacing.
17417
17418 Frames are counted starting from 1, so the first input frame is
17419 considered odd.
17420
17421 The filter accepts the following options:
17422
17423 @table @option
17424
17425 @item mode
17426 Specify the mode of the interlacing. This option can also be specified
17427 as a value alone. See below for a list of values for this option.
17428
17429 Available values are:
17430
17431 @table @samp
17432 @item merge, 0
17433 Move odd frames into the upper field, even into the lower field,
17434 generating a double height frame at half frame rate.
17435 @example
17436  ------> time
17437 Input:
17438 Frame 1         Frame 2         Frame 3         Frame 4
17439
17440 11111           22222           33333           44444
17441 11111           22222           33333           44444
17442 11111           22222           33333           44444
17443 11111           22222           33333           44444
17444
17445 Output:
17446 11111                           33333
17447 22222                           44444
17448 11111                           33333
17449 22222                           44444
17450 11111                           33333
17451 22222                           44444
17452 11111                           33333
17453 22222                           44444
17454 @end example
17455
17456 @item drop_even, 1
17457 Only output odd frames, even frames are dropped, generating a frame with
17458 unchanged height at half frame rate.
17459
17460 @example
17461  ------> time
17462 Input:
17463 Frame 1         Frame 2         Frame 3         Frame 4
17464
17465 11111           22222           33333           44444
17466 11111           22222           33333           44444
17467 11111           22222           33333           44444
17468 11111           22222           33333           44444
17469
17470 Output:
17471 11111                           33333
17472 11111                           33333
17473 11111                           33333
17474 11111                           33333
17475 @end example
17476
17477 @item drop_odd, 2
17478 Only output even frames, odd frames are dropped, generating a frame with
17479 unchanged height at half frame rate.
17480
17481 @example
17482  ------> time
17483 Input:
17484 Frame 1         Frame 2         Frame 3         Frame 4
17485
17486 11111           22222           33333           44444
17487 11111           22222           33333           44444
17488 11111           22222           33333           44444
17489 11111           22222           33333           44444
17490
17491 Output:
17492                 22222                           44444
17493                 22222                           44444
17494                 22222                           44444
17495                 22222                           44444
17496 @end example
17497
17498 @item pad, 3
17499 Expand each frame to full height, but pad alternate lines with black,
17500 generating a frame with double height at the same input frame rate.
17501
17502 @example
17503  ------> time
17504 Input:
17505 Frame 1         Frame 2         Frame 3         Frame 4
17506
17507 11111           22222           33333           44444
17508 11111           22222           33333           44444
17509 11111           22222           33333           44444
17510 11111           22222           33333           44444
17511
17512 Output:
17513 11111           .....           33333           .....
17514 .....           22222           .....           44444
17515 11111           .....           33333           .....
17516 .....           22222           .....           44444
17517 11111           .....           33333           .....
17518 .....           22222           .....           44444
17519 11111           .....           33333           .....
17520 .....           22222           .....           44444
17521 @end example
17522
17523
17524 @item interleave_top, 4
17525 Interleave the upper field from odd frames with the lower field from
17526 even frames, generating a frame with unchanged height at half frame rate.
17527
17528 @example
17529  ------> time
17530 Input:
17531 Frame 1         Frame 2         Frame 3         Frame 4
17532
17533 11111<-         22222           33333<-         44444
17534 11111           22222<-         33333           44444<-
17535 11111<-         22222           33333<-         44444
17536 11111           22222<-         33333           44444<-
17537
17538 Output:
17539 11111                           33333
17540 22222                           44444
17541 11111                           33333
17542 22222                           44444
17543 @end example
17544
17545
17546 @item interleave_bottom, 5
17547 Interleave the lower field from odd frames with the upper 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 22222                           44444
17562 11111                           33333
17563 22222                           44444
17564 11111                           33333
17565 @end example
17566
17567
17568 @item interlacex2, 6
17569 Double frame rate with unchanged height. Frames are inserted each
17570 containing the second temporal field from the previous input frame and
17571 the first temporal field from the next input frame. This mode relies on
17572 the top_field_first flag. Useful for interlaced video displays with no
17573 field synchronisation.
17574
17575 @example
17576  ------> time
17577 Input:
17578 Frame 1         Frame 2         Frame 3         Frame 4
17579
17580 11111           22222           33333           44444
17581  11111           22222           33333           44444
17582 11111           22222           33333           44444
17583  11111           22222           33333           44444
17584
17585 Output:
17586 11111   22222   22222   33333   33333   44444   44444
17587  11111   11111   22222   22222   33333   33333   44444
17588 11111   22222   22222   33333   33333   44444   44444
17589  11111   11111   22222   22222   33333   33333   44444
17590 @end example
17591
17592
17593 @item mergex2, 7
17594 Move odd frames into the upper field, even into the lower field,
17595 generating a double height frame at same frame rate.
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           33333           33333           55555
17609 22222           22222           44444           44444
17610 11111           33333           33333           55555
17611 22222           22222           44444           44444
17612 11111           33333           33333           55555
17613 22222           22222           44444           44444
17614 11111           33333           33333           55555
17615 22222           22222           44444           44444
17616 @end example
17617
17618 @end table
17619
17620 Numeric values are deprecated but are accepted for backward
17621 compatibility reasons.
17622
17623 Default mode is @code{merge}.
17624
17625 @item flags
17626 Specify flags influencing the filter process.
17627
17628 Available value for @var{flags} is:
17629
17630 @table @option
17631 @item low_pass_filter, vlpf
17632 Enable linear vertical low-pass filtering in the filter.
17633 Vertical low-pass filtering is required when creating an interlaced
17634 destination from a progressive source which contains high-frequency
17635 vertical detail. Filtering will reduce interlace 'twitter' and Moire
17636 patterning.
17637
17638 @item complex_filter, cvlpf
17639 Enable complex vertical low-pass filtering.
17640 This will slightly less reduce interlace 'twitter' and Moire
17641 patterning but better retain detail and subjective sharpness impression.
17642
17643 @end table
17644
17645 Vertical low-pass filtering can only be enabled for @option{mode}
17646 @var{interleave_top} and @var{interleave_bottom}.
17647
17648 @end table
17649
17650 @section tmix
17651
17652 Mix successive video frames.
17653
17654 A description of the accepted options follows.
17655
17656 @table @option
17657 @item frames
17658 The number of successive frames to mix. If unspecified, it defaults to 3.
17659
17660 @item weights
17661 Specify weight of each input video frame.
17662 Each weight is separated by space. If number of weights is smaller than
17663 number of @var{frames} last specified weight will be used for all remaining
17664 unset weights.
17665
17666 @item scale
17667 Specify scale, if it is set it will be multiplied with sum
17668 of each weight multiplied with pixel values to give final destination
17669 pixel value. By default @var{scale} is auto scaled to sum of weights.
17670 @end table
17671
17672 @subsection Examples
17673
17674 @itemize
17675 @item
17676 Average 7 successive frames:
17677 @example
17678 tmix=frames=7:weights="1 1 1 1 1 1 1"
17679 @end example
17680
17681 @item
17682 Apply simple temporal convolution:
17683 @example
17684 tmix=frames=3:weights="-1 3 -1"
17685 @end example
17686
17687 @item
17688 Similar as above but only showing temporal differences:
17689 @example
17690 tmix=frames=3:weights="-1 2 -1":scale=1
17691 @end example
17692 @end itemize
17693
17694 @anchor{tonemap}
17695 @section tonemap
17696 Tone map colors from different dynamic ranges.
17697
17698 This filter expects data in single precision floating point, as it needs to
17699 operate on (and can output) out-of-range values. Another filter, such as
17700 @ref{zscale}, is needed to convert the resulting frame to a usable format.
17701
17702 The tonemapping algorithms implemented only work on linear light, so input
17703 data should be linearized beforehand (and possibly correctly tagged).
17704
17705 @example
17706 ffmpeg -i INPUT -vf zscale=transfer=linear,tonemap=clip,zscale=transfer=bt709,format=yuv420p OUTPUT
17707 @end example
17708
17709 @subsection Options
17710 The filter accepts the following options.
17711
17712 @table @option
17713 @item tonemap
17714 Set the tone map algorithm to use.
17715
17716 Possible values are:
17717 @table @var
17718 @item none
17719 Do not apply any tone map, only desaturate overbright pixels.
17720
17721 @item clip
17722 Hard-clip any out-of-range values. Use it for perfect color accuracy for
17723 in-range values, while distorting out-of-range values.
17724
17725 @item linear
17726 Stretch the entire reference gamut to a linear multiple of the display.
17727
17728 @item gamma
17729 Fit a logarithmic transfer between the tone curves.
17730
17731 @item reinhard
17732 Preserve overall image brightness with a simple curve, using nonlinear
17733 contrast, which results in flattening details and degrading color accuracy.
17734
17735 @item hable
17736 Preserve both dark and bright details better than @var{reinhard}, at the cost
17737 of slightly darkening everything. Use it when detail preservation is more
17738 important than color and brightness accuracy.
17739
17740 @item mobius
17741 Smoothly map out-of-range values, while retaining contrast and colors for
17742 in-range material as much as possible. Use it when color accuracy is more
17743 important than detail preservation.
17744 @end table
17745
17746 Default is none.
17747
17748 @item param
17749 Tune the tone mapping algorithm.
17750
17751 This affects the following algorithms:
17752 @table @var
17753 @item none
17754 Ignored.
17755
17756 @item linear
17757 Specifies the scale factor to use while stretching.
17758 Default to 1.0.
17759
17760 @item gamma
17761 Specifies the exponent of the function.
17762 Default to 1.8.
17763
17764 @item clip
17765 Specify an extra linear coefficient to multiply into the signal before clipping.
17766 Default to 1.0.
17767
17768 @item reinhard
17769 Specify the local contrast coefficient at the display peak.
17770 Default to 0.5, which means that in-gamut values will be about half as bright
17771 as when clipping.
17772
17773 @item hable
17774 Ignored.
17775
17776 @item mobius
17777 Specify the transition point from linear to mobius transform. Every value
17778 below this point is guaranteed to be mapped 1:1. The higher the value, the
17779 more accurate the result will be, at the cost of losing bright details.
17780 Default to 0.3, which due to the steep initial slope still preserves in-range
17781 colors fairly accurately.
17782 @end table
17783
17784 @item desat
17785 Apply desaturation for highlights that exceed this level of brightness. The
17786 higher the parameter, the more color information will be preserved. This
17787 setting helps prevent unnaturally blown-out colors for super-highlights, by
17788 (smoothly) turning into white instead. This makes images feel more natural,
17789 at the cost of reducing information about out-of-range colors.
17790
17791 The default of 2.0 is somewhat conservative and will mostly just apply to
17792 skies or directly sunlit surfaces. A setting of 0.0 disables this option.
17793
17794 This option works only if the input frame has a supported color tag.
17795
17796 @item peak
17797 Override signal/nominal/reference peak with this value. Useful when the
17798 embedded peak information in display metadata is not reliable or when tone
17799 mapping from a lower range to a higher range.
17800 @end table
17801
17802 @section tpad
17803
17804 Temporarily pad video frames.
17805
17806 The filter accepts the following options:
17807
17808 @table @option
17809 @item start
17810 Specify number of delay frames before input video stream.
17811
17812 @item stop
17813 Specify number of padding frames after input video stream.
17814 Set to -1 to pad indefinitely.
17815
17816 @item start_mode
17817 Set kind of frames added to beginning of stream.
17818 Can be either @var{add} or @var{clone}.
17819 With @var{add} frames of solid-color are added.
17820 With @var{clone} frames are clones of first frame.
17821
17822 @item stop_mode
17823 Set kind of frames added to end of stream.
17824 Can be either @var{add} or @var{clone}.
17825 With @var{add} frames of solid-color are added.
17826 With @var{clone} frames are clones of last frame.
17827
17828 @item start_duration, stop_duration
17829 Specify the duration of the start/stop delay. See
17830 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
17831 for the accepted syntax.
17832 These options override @var{start} and @var{stop}.
17833
17834 @item color
17835 Specify the color of the padded area. For the syntax of this option,
17836 check the @ref{color syntax,,"Color" section in the ffmpeg-utils
17837 manual,ffmpeg-utils}.
17838
17839 The default value of @var{color} is "black".
17840 @end table
17841
17842 @anchor{transpose}
17843 @section transpose
17844
17845 Transpose rows with columns in the input video and optionally flip it.
17846
17847 It accepts the following parameters:
17848
17849 @table @option
17850
17851 @item dir
17852 Specify the transposition direction.
17853
17854 Can assume the following values:
17855 @table @samp
17856 @item 0, 4, cclock_flip
17857 Rotate by 90 degrees counterclockwise and vertically flip (default), that is:
17858 @example
17859 L.R     L.l
17860 . . ->  . .
17861 l.r     R.r
17862 @end example
17863
17864 @item 1, 5, clock
17865 Rotate by 90 degrees clockwise, that is:
17866 @example
17867 L.R     l.L
17868 . . ->  . .
17869 l.r     r.R
17870 @end example
17871
17872 @item 2, 6, cclock
17873 Rotate by 90 degrees counterclockwise, that is:
17874 @example
17875 L.R     R.r
17876 . . ->  . .
17877 l.r     L.l
17878 @end example
17879
17880 @item 3, 7, clock_flip
17881 Rotate by 90 degrees clockwise and vertically flip, that is:
17882 @example
17883 L.R     r.R
17884 . . ->  . .
17885 l.r     l.L
17886 @end example
17887 @end table
17888
17889 For values between 4-7, the transposition is only done if the input
17890 video geometry is portrait and not landscape. These values are
17891 deprecated, the @code{passthrough} option should be used instead.
17892
17893 Numerical values are deprecated, and should be dropped in favor of
17894 symbolic constants.
17895
17896 @item passthrough
17897 Do not apply the transposition if the input geometry matches the one
17898 specified by the specified value. It accepts the following values:
17899 @table @samp
17900 @item none
17901 Always apply transposition.
17902 @item portrait
17903 Preserve portrait geometry (when @var{height} >= @var{width}).
17904 @item landscape
17905 Preserve landscape geometry (when @var{width} >= @var{height}).
17906 @end table
17907
17908 Default value is @code{none}.
17909 @end table
17910
17911 For example to rotate by 90 degrees clockwise and preserve portrait
17912 layout:
17913 @example
17914 transpose=dir=1:passthrough=portrait
17915 @end example
17916
17917 The command above can also be specified as:
17918 @example
17919 transpose=1:portrait
17920 @end example
17921
17922 @section transpose_npp
17923
17924 Transpose rows with columns in the input video and optionally flip it.
17925 For more in depth examples see the @ref{transpose} video filter, which shares mostly the same options.
17926
17927 It accepts the following parameters:
17928
17929 @table @option
17930
17931 @item dir
17932 Specify the transposition direction.
17933
17934 Can assume the following values:
17935 @table @samp
17936 @item cclock_flip
17937 Rotate by 90 degrees counterclockwise and vertically flip. (default)
17938
17939 @item clock
17940 Rotate by 90 degrees clockwise.
17941
17942 @item cclock
17943 Rotate by 90 degrees counterclockwise.
17944
17945 @item clock_flip
17946 Rotate by 90 degrees clockwise and vertically flip.
17947 @end table
17948
17949 @item passthrough
17950 Do not apply the transposition if the input geometry matches the one
17951 specified by the specified value. It accepts the following values:
17952 @table @samp
17953 @item none
17954 Always apply transposition. (default)
17955 @item portrait
17956 Preserve portrait geometry (when @var{height} >= @var{width}).
17957 @item landscape
17958 Preserve landscape geometry (when @var{width} >= @var{height}).
17959 @end table
17960
17961 @end table
17962
17963 @section trim
17964 Trim the input so that the output contains one continuous subpart of the input.
17965
17966 It accepts the following parameters:
17967 @table @option
17968 @item start
17969 Specify the time of the start of the kept section, i.e. the frame with the
17970 timestamp @var{start} will be the first frame in the output.
17971
17972 @item end
17973 Specify the time of the first frame that will be dropped, i.e. the frame
17974 immediately preceding the one with the timestamp @var{end} will be the last
17975 frame in the output.
17976
17977 @item start_pts
17978 This is the same as @var{start}, except this option sets the start timestamp
17979 in timebase units instead of seconds.
17980
17981 @item end_pts
17982 This is the same as @var{end}, except this option sets the end timestamp
17983 in timebase units instead of seconds.
17984
17985 @item duration
17986 The maximum duration of the output in seconds.
17987
17988 @item start_frame
17989 The number of the first frame that should be passed to the output.
17990
17991 @item end_frame
17992 The number of the first frame that should be dropped.
17993 @end table
17994
17995 @option{start}, @option{end}, and @option{duration} are expressed as time
17996 duration specifications; see
17997 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
17998 for the accepted syntax.
17999
18000 Note that the first two sets of the start/end options and the @option{duration}
18001 option look at the frame timestamp, while the _frame variants simply count the
18002 frames that pass through the filter. Also note that this filter does not modify
18003 the timestamps. If you wish for the output timestamps to start at zero, insert a
18004 setpts filter after the trim filter.
18005
18006 If multiple start or end options are set, this filter tries to be greedy and
18007 keep all the frames that match at least one of the specified constraints. To keep
18008 only the part that matches all the constraints at once, chain multiple trim
18009 filters.
18010
18011 The defaults are such that all the input is kept. So it is possible to set e.g.
18012 just the end values to keep everything before the specified time.
18013
18014 Examples:
18015 @itemize
18016 @item
18017 Drop everything except the second minute of input:
18018 @example
18019 ffmpeg -i INPUT -vf trim=60:120
18020 @end example
18021
18022 @item
18023 Keep only the first second:
18024 @example
18025 ffmpeg -i INPUT -vf trim=duration=1
18026 @end example
18027
18028 @end itemize
18029
18030 @section unpremultiply
18031 Apply alpha unpremultiply effect to input video stream using first plane
18032 of second stream as alpha.
18033
18034 Both streams must have same dimensions and same pixel format.
18035
18036 The filter accepts the following option:
18037
18038 @table @option
18039 @item planes
18040 Set which planes will be processed, unprocessed planes will be copied.
18041 By default value 0xf, all planes will be processed.
18042
18043 If the format has 1 or 2 components, then luma is bit 0.
18044 If the format has 3 or 4 components:
18045 for RGB formats bit 0 is green, bit 1 is blue and bit 2 is red;
18046 for YUV formats bit 0 is luma, bit 1 is chroma-U and bit 2 is chroma-V.
18047 If present, the alpha channel is always the last bit.
18048
18049 @item inplace
18050 Do not require 2nd input for processing, instead use alpha plane from input stream.
18051 @end table
18052
18053 @anchor{unsharp}
18054 @section unsharp
18055
18056 Sharpen or blur the input video.
18057
18058 It accepts the following parameters:
18059
18060 @table @option
18061 @item luma_msize_x, lx
18062 Set the luma matrix horizontal size. It must be an odd integer between
18063 3 and 23. The default value is 5.
18064
18065 @item luma_msize_y, ly
18066 Set the luma matrix vertical size. It must be an odd integer between 3
18067 and 23. The default value is 5.
18068
18069 @item luma_amount, la
18070 Set the luma effect strength. It must be a floating point number, reasonable
18071 values lay between -1.5 and 1.5.
18072
18073 Negative values will blur the input video, while positive values will
18074 sharpen it, a value of zero will disable the effect.
18075
18076 Default value is 1.0.
18077
18078 @item chroma_msize_x, cx
18079 Set the chroma matrix horizontal size. It must be an odd integer
18080 between 3 and 23. The default value is 5.
18081
18082 @item chroma_msize_y, cy
18083 Set the chroma matrix vertical size. It must be an odd integer
18084 between 3 and 23. The default value is 5.
18085
18086 @item chroma_amount, ca
18087 Set the chroma effect strength. It must be a floating point number, reasonable
18088 values lay between -1.5 and 1.5.
18089
18090 Negative values will blur the input video, while positive values will
18091 sharpen it, a value of zero will disable the effect.
18092
18093 Default value is 0.0.
18094
18095 @end table
18096
18097 All parameters are optional and default to the equivalent of the
18098 string '5:5:1.0:5:5:0.0'.
18099
18100 @subsection Examples
18101
18102 @itemize
18103 @item
18104 Apply strong luma sharpen effect:
18105 @example
18106 unsharp=luma_msize_x=7:luma_msize_y=7:luma_amount=2.5
18107 @end example
18108
18109 @item
18110 Apply a strong blur of both luma and chroma parameters:
18111 @example
18112 unsharp=7:7:-2:7:7:-2
18113 @end example
18114 @end itemize
18115
18116 @section uspp
18117
18118 Apply ultra slow/simple postprocessing filter that compresses and decompresses
18119 the image at several (or - in the case of @option{quality} level @code{8} - all)
18120 shifts and average the results.
18121
18122 The way this differs from the behavior of spp is that uspp actually encodes &
18123 decodes each case with libavcodec Snow, whereas spp uses a simplified intra only 8x8
18124 DCT similar to MJPEG.
18125
18126 The filter accepts the following options:
18127
18128 @table @option
18129 @item quality
18130 Set quality. This option defines the number of levels for averaging. It accepts
18131 an integer in the range 0-8. If set to @code{0}, the filter will have no
18132 effect. A value of @code{8} means the higher quality. For each increment of
18133 that value the speed drops by a factor of approximately 2.  Default value is
18134 @code{3}.
18135
18136 @item qp
18137 Force a constant quantization parameter. If not set, the filter will use the QP
18138 from the video stream (if available).
18139 @end table
18140
18141 @section v360
18142
18143 Convert 360 videos between various formats.
18144
18145 The filter accepts the following options:
18146
18147 @table @option
18148
18149 @item input
18150 @item output
18151 Set format of the input/output video.
18152
18153 Available formats:
18154
18155 @table @samp
18156
18157 @item e
18158 @item equirect
18159 Equirectangular projection.
18160
18161 @item c3x2
18162 @item c6x1
18163 @item c1x6
18164 Cubemap with 3x2/6x1/1x6 layout.
18165
18166 Format specific options:
18167
18168 @table @option
18169 @item in_pad
18170 @item out_pad
18171 Set padding proportion for the input/output cubemap. Values in decimals.
18172
18173 Example values:
18174 @table @samp
18175 @item 0
18176 No padding.
18177 @item 0.01
18178 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)
18179 @end table
18180
18181 Default value is @b{@samp{0}}.
18182
18183 @item fin_pad
18184 @item fout_pad
18185 Set fixed padding for the input/output cubemap. Values in pixels.
18186
18187 Default value is @b{@samp{0}}. If greater than zero it overrides other padding options.
18188
18189 @item in_forder
18190 @item out_forder
18191 Set order of faces for the input/output cubemap. Choose one direction for each position.
18192
18193 Designation of directions:
18194 @table @samp
18195 @item r
18196 right
18197 @item l
18198 left
18199 @item u
18200 up
18201 @item d
18202 down
18203 @item f
18204 forward
18205 @item b
18206 back
18207 @end table
18208
18209 Default value is @b{@samp{rludfb}}.
18210
18211 @item in_frot
18212 @item out_frot
18213 Set rotation of faces for the input/output cubemap. Choose one angle for each position.
18214
18215 Designation of angles:
18216 @table @samp
18217 @item 0
18218 0 degrees clockwise
18219 @item 1
18220 90 degrees clockwise
18221 @item 2
18222 180 degrees clockwise
18223 @item 3
18224 270 degrees clockwise
18225 @end table
18226
18227 Default value is @b{@samp{000000}}.
18228 @end table
18229
18230 @item eac
18231 Equi-Angular Cubemap.
18232
18233 @item flat
18234 @item gnomonic
18235 @item rectilinear
18236 Regular video. @i{(output only)}
18237
18238 Format specific options:
18239 @table @option
18240 @item h_fov
18241 @item v_fov
18242 @item d_fov
18243 Set horizontal/vertical/diagonal field of view. Values in degrees.
18244
18245 If diagonal field of view is set it overrides horizontal and vertical field of view.
18246 @end table
18247
18248 @item dfisheye
18249 Dual fisheye.
18250
18251 Format specific options:
18252 @table @option
18253 @item in_pad
18254 @item out_pad
18255 Set padding proportion. Values in decimals.
18256
18257 Example values:
18258 @table @samp
18259 @item 0
18260 No padding.
18261 @item 0.01
18262 1% padding.
18263 @end table
18264
18265 Default value is @b{@samp{0}}.
18266 @end table
18267
18268 @item barrel
18269 @item fb
18270 Facebook's 360 format.
18271
18272 @item sg
18273 Stereographic format.
18274
18275 Format specific options:
18276 @table @option
18277 @item h_fov
18278 @item v_fov
18279 @item d_fov
18280 Set horizontal/vertical/diagonal field of view. Values in degrees.
18281
18282 If diagonal field of view is set it overrides horizontal and vertical field of view.
18283 @end table
18284
18285 @item mercator
18286 Mercator format.
18287
18288 @item ball
18289 Ball format, gives significant distortion toward the back.
18290
18291 @item hammer
18292 Hammer-Aitoff map projection format.
18293
18294 @item sinusoidal
18295 Sinusoidal map projection format.
18296
18297 @end table
18298
18299 @item interp
18300 Set interpolation method.@*
18301 @i{Note: more complex interpolation methods require much more memory to run.}
18302
18303 Available methods:
18304
18305 @table @samp
18306 @item near
18307 @item nearest
18308 Nearest neighbour.
18309 @item line
18310 @item linear
18311 Bilinear interpolation.
18312 @item cube
18313 @item cubic
18314 Bicubic interpolation.
18315 @item lanc
18316 @item lanczos
18317 Lanczos interpolation.
18318 @end table
18319
18320 Default value is @b{@samp{line}}.
18321
18322 @item w
18323 @item h
18324 Set the output video resolution.
18325
18326 Default resolution depends on formats.
18327
18328 @item in_stereo
18329 @item out_stereo
18330 Set the input/output stereo format.
18331
18332 @table @samp
18333 @item 2d
18334 2D mono
18335 @item sbs
18336 Side by side
18337 @item tb
18338 Top bottom
18339 @end table
18340
18341 Default value is @b{@samp{2d}} for input and output format.
18342
18343 @item yaw
18344 @item pitch
18345 @item roll
18346 Set rotation for the output video. Values in degrees.
18347
18348 @item rorder
18349 Set rotation order for the output video. Choose one item for each position.
18350
18351 @table @samp
18352 @item y, Y
18353 yaw
18354 @item p, P
18355 pitch
18356 @item r, R
18357 roll
18358 @end table
18359
18360 Default value is @b{@samp{ypr}}.
18361
18362 @item h_flip
18363 @item v_flip
18364 @item d_flip
18365 Flip the output video horizontally(swaps left-right)/vertically(swaps up-down)/in-depth(swaps back-forward). Boolean values.
18366
18367 @item ih_flip
18368 @item iv_flip
18369 Set if input video is flipped horizontally/vertically. Boolean values.
18370
18371 @item in_trans
18372 Set if input video is transposed. Boolean value, by default disabled.
18373
18374 @item out_trans
18375 Set if output video needs to be transposed. Boolean value, by default disabled.
18376
18377 @end table
18378
18379 @subsection Examples
18380
18381 @itemize
18382 @item
18383 Convert equirectangular video to cubemap with 3x2 layout and 1% padding using bicubic interpolation:
18384 @example
18385 ffmpeg -i input.mkv -vf v360=e:c3x2:cubic:out_pad=0.01 output.mkv
18386 @end example
18387 @item
18388 Extract back view of Equi-Angular Cubemap:
18389 @example
18390 ffmpeg -i input.mkv -vf v360=eac:flat:yaw=180 output.mkv
18391 @end example
18392 @item
18393 Convert transposed and horizontally flipped Equi-Angular Cubemap in side-by-side stereo format to equirectangular top-bottom stereo format:
18394 @example
18395 v360=eac:equirect:in_stereo=sbs:in_trans=1:ih_flip=1:out_stereo=tb
18396 @end example
18397 @end itemize
18398
18399 @section vaguedenoiser
18400
18401 Apply a wavelet based denoiser.
18402
18403 It transforms each frame from the video input into the wavelet domain,
18404 using Cohen-Daubechies-Feauveau 9/7. Then it applies some filtering to
18405 the obtained coefficients. It does an inverse wavelet transform after.
18406 Due to wavelet properties, it should give a nice smoothed result, and
18407 reduced noise, without blurring picture features.
18408
18409 This filter accepts the following options:
18410
18411 @table @option
18412 @item threshold
18413 The filtering strength. The higher, the more filtered the video will be.
18414 Hard thresholding can use a higher threshold than soft thresholding
18415 before the video looks overfiltered. Default value is 2.
18416
18417 @item method
18418 The filtering method the filter will use.
18419
18420 It accepts the following values:
18421 @table @samp
18422 @item hard
18423 All values under the threshold will be zeroed.
18424
18425 @item soft
18426 All values under the threshold will be zeroed. All values above will be
18427 reduced by the threshold.
18428
18429 @item garrote
18430 Scales or nullifies coefficients - intermediary between (more) soft and
18431 (less) hard thresholding.
18432 @end table
18433
18434 Default is garrote.
18435
18436 @item nsteps
18437 Number of times, the wavelet will decompose the picture. Picture can't
18438 be decomposed beyond a particular point (typically, 8 for a 640x480
18439 frame - as 2^9 = 512 > 480). Valid values are integers between 1 and 32. Default value is 6.
18440
18441 @item percent
18442 Partial of full denoising (limited coefficients shrinking), from 0 to 100. Default value is 85.
18443
18444 @item planes
18445 A list of the planes to process. By default all planes are processed.
18446 @end table
18447
18448 @section vectorscope
18449
18450 Display 2 color component values in the two dimensional graph (which is called
18451 a vectorscope).
18452
18453 This filter accepts the following options:
18454
18455 @table @option
18456 @item mode, m
18457 Set vectorscope mode.
18458
18459 It accepts the following values:
18460 @table @samp
18461 @item gray
18462 Gray values are displayed on graph, higher brightness means more pixels have
18463 same component color value on location in graph. This is the default mode.
18464
18465 @item color
18466 Gray values are displayed on graph. Surrounding pixels values which are not
18467 present in video frame are drawn in gradient of 2 color components which are
18468 set by option @code{x} and @code{y}. The 3rd color component is static.
18469
18470 @item color2
18471 Actual color components values present in video frame are displayed on graph.
18472
18473 @item color3
18474 Similar as color2 but higher frequency of same values @code{x} and @code{y}
18475 on graph increases value of another color component, which is luminance by
18476 default values of @code{x} and @code{y}.
18477
18478 @item color4
18479 Actual colors present in video frame are displayed on graph. If two different
18480 colors map to same position on graph then color with higher value of component
18481 not present in graph is picked.
18482
18483 @item color5
18484 Gray values are displayed on graph. Similar to @code{color} but with 3rd color
18485 component picked from radial gradient.
18486 @end table
18487
18488 @item x
18489 Set which color component will be represented on X-axis. Default is @code{1}.
18490
18491 @item y
18492 Set which color component will be represented on Y-axis. Default is @code{2}.
18493
18494 @item intensity, i
18495 Set intensity, used by modes: gray, color, color3 and color5 for increasing brightness
18496 of color component which represents frequency of (X, Y) location in graph.
18497
18498 @item envelope, e
18499 @table @samp
18500 @item none
18501 No envelope, this is default.
18502
18503 @item instant
18504 Instant envelope, even darkest single pixel will be clearly highlighted.
18505
18506 @item peak
18507 Hold maximum and minimum values presented in graph over time. This way you
18508 can still spot out of range values without constantly looking at vectorscope.
18509
18510 @item peak+instant
18511 Peak and instant envelope combined together.
18512 @end table
18513
18514 @item graticule, g
18515 Set what kind of graticule to draw.
18516 @table @samp
18517 @item none
18518 @item green
18519 @item color
18520 @end table
18521
18522 @item opacity, o
18523 Set graticule opacity.
18524
18525 @item flags, f
18526 Set graticule flags.
18527
18528 @table @samp
18529 @item white
18530 Draw graticule for white point.
18531
18532 @item black
18533 Draw graticule for black point.
18534
18535 @item name
18536 Draw color points short names.
18537 @end table
18538
18539 @item bgopacity, b
18540 Set background opacity.
18541
18542 @item lthreshold, l
18543 Set low threshold for color component not represented on X or Y axis.
18544 Values lower than this value will be ignored. Default is 0.
18545 Note this value is multiplied with actual max possible value one pixel component
18546 can have. So for 8-bit input and low threshold value of 0.1 actual threshold
18547 is 0.1 * 255 = 25.
18548
18549 @item hthreshold, h
18550 Set high threshold for color component not represented on X or Y axis.
18551 Values higher than this value will be ignored. Default is 1.
18552 Note this value is multiplied with actual max possible value one pixel component
18553 can have. So for 8-bit input and high threshold value of 0.9 actual threshold
18554 is 0.9 * 255 = 230.
18555
18556 @item colorspace, c
18557 Set what kind of colorspace to use when drawing graticule.
18558 @table @samp
18559 @item auto
18560 @item 601
18561 @item 709
18562 @end table
18563 Default is auto.
18564 @end table
18565
18566 @anchor{vidstabdetect}
18567 @section vidstabdetect
18568
18569 Analyze video stabilization/deshaking. Perform pass 1 of 2, see
18570 @ref{vidstabtransform} for pass 2.
18571
18572 This filter generates a file with relative translation and rotation
18573 transform information about subsequent frames, which is then used by
18574 the @ref{vidstabtransform} filter.
18575
18576 To enable compilation of this filter you need to configure FFmpeg with
18577 @code{--enable-libvidstab}.
18578
18579 This filter accepts the following options:
18580
18581 @table @option
18582 @item result
18583 Set the path to the file used to write the transforms information.
18584 Default value is @file{transforms.trf}.
18585
18586 @item shakiness
18587 Set how shaky the video is and how quick the camera is. It accepts an
18588 integer in the range 1-10, a value of 1 means little shakiness, a
18589 value of 10 means strong shakiness. Default value is 5.
18590
18591 @item accuracy
18592 Set the accuracy of the detection process. It must be a value in the
18593 range 1-15. A value of 1 means low accuracy, a value of 15 means high
18594 accuracy. Default value is 15.
18595
18596 @item stepsize
18597 Set stepsize of the search process. The region around minimum is
18598 scanned with 1 pixel resolution. Default value is 6.
18599
18600 @item mincontrast
18601 Set minimum contrast. Below this value a local measurement field is
18602 discarded. Must be a floating point value in the range 0-1. Default
18603 value is 0.3.
18604
18605 @item tripod
18606 Set reference frame number for tripod mode.
18607
18608 If enabled, the motion of the frames is compared to a reference frame
18609 in the filtered stream, identified by the specified number. The idea
18610 is to compensate all movements in a more-or-less static scene and keep
18611 the camera view absolutely still.
18612
18613 If set to 0, it is disabled. The frames are counted starting from 1.
18614
18615 @item show
18616 Show fields and transforms in the resulting frames. It accepts an
18617 integer in the range 0-2. Default value is 0, which disables any
18618 visualization.
18619 @end table
18620
18621 @subsection Examples
18622
18623 @itemize
18624 @item
18625 Use default values:
18626 @example
18627 vidstabdetect
18628 @end example
18629
18630 @item
18631 Analyze strongly shaky movie and put the results in file
18632 @file{mytransforms.trf}:
18633 @example
18634 vidstabdetect=shakiness=10:accuracy=15:result="mytransforms.trf"
18635 @end example
18636
18637 @item
18638 Visualize the result of internal transformations in the resulting
18639 video:
18640 @example
18641 vidstabdetect=show=1
18642 @end example
18643
18644 @item
18645 Analyze a video with medium shakiness using @command{ffmpeg}:
18646 @example
18647 ffmpeg -i input -vf vidstabdetect=shakiness=5:show=1 dummy.avi
18648 @end example
18649 @end itemize
18650
18651 @anchor{vidstabtransform}
18652 @section vidstabtransform
18653
18654 Video stabilization/deshaking: pass 2 of 2,
18655 see @ref{vidstabdetect} for pass 1.
18656
18657 Read a file with transform information for each frame and
18658 apply/compensate them. Together with the @ref{vidstabdetect}
18659 filter this can be used to deshake videos. See also
18660 @url{http://public.hronopik.de/vid.stab}. It is important to also use
18661 the @ref{unsharp} filter, see below.
18662
18663 To enable compilation of this filter you need to configure FFmpeg with
18664 @code{--enable-libvidstab}.
18665
18666 @subsection Options
18667
18668 @table @option
18669 @item input
18670 Set path to the file used to read the transforms. Default value is
18671 @file{transforms.trf}.
18672
18673 @item smoothing
18674 Set the number of frames (value*2 + 1) used for lowpass filtering the
18675 camera movements. Default value is 10.
18676
18677 For example a number of 10 means that 21 frames are used (10 in the
18678 past and 10 in the future) to smoothen the motion in the video. A
18679 larger value leads to a smoother video, but limits the acceleration of
18680 the camera (pan/tilt movements). 0 is a special case where a static
18681 camera is simulated.
18682
18683 @item optalgo
18684 Set the camera path optimization algorithm.
18685
18686 Accepted values are:
18687 @table @samp
18688 @item gauss
18689 gaussian kernel low-pass filter on camera motion (default)
18690 @item avg
18691 averaging on transformations
18692 @end table
18693
18694 @item maxshift
18695 Set maximal number of pixels to translate frames. Default value is -1,
18696 meaning no limit.
18697
18698 @item maxangle
18699 Set maximal angle in radians (degree*PI/180) to rotate frames. Default
18700 value is -1, meaning no limit.
18701
18702 @item crop
18703 Specify how to deal with borders that may be visible due to movement
18704 compensation.
18705
18706 Available values are:
18707 @table @samp
18708 @item keep
18709 keep image information from previous frame (default)
18710 @item black
18711 fill the border black
18712 @end table
18713
18714 @item invert
18715 Invert transforms if set to 1. Default value is 0.
18716
18717 @item relative
18718 Consider transforms as relative to previous frame if set to 1,
18719 absolute if set to 0. Default value is 0.
18720
18721 @item zoom
18722 Set percentage to zoom. A positive value will result in a zoom-in
18723 effect, a negative value in a zoom-out effect. Default value is 0 (no
18724 zoom).
18725
18726 @item optzoom
18727 Set optimal zooming to avoid borders.
18728
18729 Accepted values are:
18730 @table @samp
18731 @item 0
18732 disabled
18733 @item 1
18734 optimal static zoom value is determined (only very strong movements
18735 will lead to visible borders) (default)
18736 @item 2
18737 optimal adaptive zoom value is determined (no borders will be
18738 visible), see @option{zoomspeed}
18739 @end table
18740
18741 Note that the value given at zoom is added to the one calculated here.
18742
18743 @item zoomspeed
18744 Set percent to zoom maximally each frame (enabled when
18745 @option{optzoom} is set to 2). Range is from 0 to 5, default value is
18746 0.25.
18747
18748 @item interpol
18749 Specify type of interpolation.
18750
18751 Available values are:
18752 @table @samp
18753 @item no
18754 no interpolation
18755 @item linear
18756 linear only horizontal
18757 @item bilinear
18758 linear in both directions (default)
18759 @item bicubic
18760 cubic in both directions (slow)
18761 @end table
18762
18763 @item tripod
18764 Enable virtual tripod mode if set to 1, which is equivalent to
18765 @code{relative=0:smoothing=0}. Default value is 0.
18766
18767 Use also @code{tripod} option of @ref{vidstabdetect}.
18768
18769 @item debug
18770 Increase log verbosity if set to 1. Also the detected global motions
18771 are written to the temporary file @file{global_motions.trf}. Default
18772 value is 0.
18773 @end table
18774
18775 @subsection Examples
18776
18777 @itemize
18778 @item
18779 Use @command{ffmpeg} for a typical stabilization with default values:
18780 @example
18781 ffmpeg -i inp.mpeg -vf vidstabtransform,unsharp=5:5:0.8:3:3:0.4 inp_stabilized.mpeg
18782 @end example
18783
18784 Note the use of the @ref{unsharp} filter which is always recommended.
18785
18786 @item
18787 Zoom in a bit more and load transform data from a given file:
18788 @example
18789 vidstabtransform=zoom=5:input="mytransforms.trf"
18790 @end example
18791
18792 @item
18793 Smoothen the video even more:
18794 @example
18795 vidstabtransform=smoothing=30
18796 @end example
18797 @end itemize
18798
18799 @section vflip
18800
18801 Flip the input video vertically.
18802
18803 For example, to vertically flip a video with @command{ffmpeg}:
18804 @example
18805 ffmpeg -i in.avi -vf "vflip" out.avi
18806 @end example
18807
18808 @section vfrdet
18809
18810 Detect variable frame rate video.
18811
18812 This filter tries to detect if the input is variable or constant frame rate.
18813
18814 At end it will output number of frames detected as having variable delta pts,
18815 and ones with constant delta pts.
18816 If there was frames with variable delta, than it will also show min and max delta
18817 encountered.
18818
18819 @section vibrance
18820
18821 Boost or alter saturation.
18822
18823 The filter accepts the following options:
18824 @table @option
18825 @item intensity
18826 Set strength of boost if positive value or strength of alter if negative value.
18827 Default is 0. Allowed range is from -2 to 2.
18828
18829 @item rbal
18830 Set the red balance. Default is 1. Allowed range is from -10 to 10.
18831
18832 @item gbal
18833 Set the green balance. Default is 1. Allowed range is from -10 to 10.
18834
18835 @item bbal
18836 Set the blue balance. Default is 1. Allowed range is from -10 to 10.
18837
18838 @item rlum
18839 Set the red luma coefficient.
18840
18841 @item glum
18842 Set the green luma coefficient.
18843
18844 @item blum
18845 Set the blue luma coefficient.
18846
18847 @item alternate
18848 If @code{intensity} is negative and this is set to 1, colors will change,
18849 otherwise colors will be less saturated, more towards gray.
18850 @end table
18851
18852 @anchor{vignette}
18853 @section vignette
18854
18855 Make or reverse a natural vignetting effect.
18856
18857 The filter accepts the following options:
18858
18859 @table @option
18860 @item angle, a
18861 Set lens angle expression as a number of radians.
18862
18863 The value is clipped in the @code{[0,PI/2]} range.
18864
18865 Default value: @code{"PI/5"}
18866
18867 @item x0
18868 @item y0
18869 Set center coordinates expressions. Respectively @code{"w/2"} and @code{"h/2"}
18870 by default.
18871
18872 @item mode
18873 Set forward/backward mode.
18874
18875 Available modes are:
18876 @table @samp
18877 @item forward
18878 The larger the distance from the central point, the darker the image becomes.
18879
18880 @item backward
18881 The larger the distance from the central point, the brighter the image becomes.
18882 This can be used to reverse a vignette effect, though there is no automatic
18883 detection to extract the lens @option{angle} and other settings (yet). It can
18884 also be used to create a burning effect.
18885 @end table
18886
18887 Default value is @samp{forward}.
18888
18889 @item eval
18890 Set evaluation mode for the expressions (@option{angle}, @option{x0}, @option{y0}).
18891
18892 It accepts the following values:
18893 @table @samp
18894 @item init
18895 Evaluate expressions only once during the filter initialization.
18896
18897 @item frame
18898 Evaluate expressions for each incoming frame. This is way slower than the
18899 @samp{init} mode since it requires all the scalers to be re-computed, but it
18900 allows advanced dynamic expressions.
18901 @end table
18902
18903 Default value is @samp{init}.
18904
18905 @item dither
18906 Set dithering to reduce the circular banding effects. Default is @code{1}
18907 (enabled).
18908
18909 @item aspect
18910 Set vignette aspect. This setting allows one to adjust the shape of the vignette.
18911 Setting this value to the SAR of the input will make a rectangular vignetting
18912 following the dimensions of the video.
18913
18914 Default is @code{1/1}.
18915 @end table
18916
18917 @subsection Expressions
18918
18919 The @option{alpha}, @option{x0} and @option{y0} expressions can contain the
18920 following parameters.
18921
18922 @table @option
18923 @item w
18924 @item h
18925 input width and height
18926
18927 @item n
18928 the number of input frame, starting from 0
18929
18930 @item pts
18931 the PTS (Presentation TimeStamp) time of the filtered video frame, expressed in
18932 @var{TB} units, NAN if undefined
18933
18934 @item r
18935 frame rate of the input video, NAN if the input frame rate is unknown
18936
18937 @item t
18938 the PTS (Presentation TimeStamp) of the filtered video frame,
18939 expressed in seconds, NAN if undefined
18940
18941 @item tb
18942 time base of the input video
18943 @end table
18944
18945
18946 @subsection Examples
18947
18948 @itemize
18949 @item
18950 Apply simple strong vignetting effect:
18951 @example
18952 vignette=PI/4
18953 @end example
18954
18955 @item
18956 Make a flickering vignetting:
18957 @example
18958 vignette='PI/4+random(1)*PI/50':eval=frame
18959 @end example
18960
18961 @end itemize
18962
18963 @section vmafmotion
18964
18965 Obtain the average vmaf motion score of a video.
18966 It is one of the component filters of VMAF.
18967
18968 The obtained average motion score is printed through the logging system.
18969
18970 In the below example the input file @file{ref.mpg} is being processed and score
18971 is computed.
18972
18973 @example
18974 ffmpeg -i ref.mpg -lavfi vmafmotion -f null -
18975 @end example
18976
18977 @section vstack
18978 Stack input videos vertically.
18979
18980 All streams must be of same pixel format and of same width.
18981
18982 Note that this filter is faster than using @ref{overlay} and @ref{pad} filter
18983 to create same output.
18984
18985 The filter accepts the following options:
18986
18987 @table @option
18988 @item inputs
18989 Set number of input streams. Default is 2.
18990
18991 @item shortest
18992 If set to 1, force the output to terminate when the shortest input
18993 terminates. Default value is 0.
18994 @end table
18995
18996 @section w3fdif
18997
18998 Deinterlace the input video ("w3fdif" stands for "Weston 3 Field
18999 Deinterlacing Filter").
19000
19001 Based on the process described by Martin Weston for BBC R&D, and
19002 implemented based on the de-interlace algorithm written by Jim
19003 Easterbrook for BBC R&D, the Weston 3 field deinterlacing filter
19004 uses filter coefficients calculated by BBC R&D.
19005
19006 This filter uses field-dominance information in frame to decide which
19007 of each pair of fields to place first in the output.
19008 If it gets it wrong use @ref{setfield} filter before @code{w3fdif} filter.
19009
19010 There are two sets of filter coefficients, so called "simple"
19011 and "complex". Which set of filter coefficients is used can
19012 be set by passing an optional parameter:
19013
19014 @table @option
19015 @item filter
19016 Set the interlacing filter coefficients. Accepts one of the following values:
19017
19018 @table @samp
19019 @item simple
19020 Simple filter coefficient set.
19021 @item complex
19022 More-complex filter coefficient set.
19023 @end table
19024 Default value is @samp{complex}.
19025
19026 @item deint
19027 Specify which frames to deinterlace. Accepts one of the following values:
19028
19029 @table @samp
19030 @item all
19031 Deinterlace all frames,
19032 @item interlaced
19033 Only deinterlace frames marked as interlaced.
19034 @end table
19035
19036 Default value is @samp{all}.
19037 @end table
19038
19039 @section waveform
19040 Video waveform monitor.
19041
19042 The waveform monitor plots color component intensity. By default luminance
19043 only. Each column of the waveform corresponds to a column of pixels in the
19044 source video.
19045
19046 It accepts the following options:
19047
19048 @table @option
19049 @item mode, m
19050 Can be either @code{row}, or @code{column}. Default is @code{column}.
19051 In row mode, the graph on the left side represents color component value 0 and
19052 the right side represents value = 255. In column mode, the top side represents
19053 color component value = 0 and bottom side represents value = 255.
19054
19055 @item intensity, i
19056 Set intensity. Smaller values are useful to find out how many values of the same
19057 luminance are distributed across input rows/columns.
19058 Default value is @code{0.04}. Allowed range is [0, 1].
19059
19060 @item mirror, r
19061 Set mirroring mode. @code{0} means unmirrored, @code{1} means mirrored.
19062 In mirrored mode, higher values will be represented on the left
19063 side for @code{row} mode and at the top for @code{column} mode. Default is
19064 @code{1} (mirrored).
19065
19066 @item display, d
19067 Set display mode.
19068 It accepts the following values:
19069 @table @samp
19070 @item overlay
19071 Presents information identical to that in the @code{parade}, except
19072 that the graphs representing color components are superimposed directly
19073 over one another.
19074
19075 This display mode makes it easier to spot relative differences or similarities
19076 in overlapping areas of the color components that are supposed to be identical,
19077 such as neutral whites, grays, or blacks.
19078
19079 @item stack
19080 Display separate graph for the color components side by side in
19081 @code{row} mode or one below the other in @code{column} mode.
19082
19083 @item parade
19084 Display separate graph for the color components side by side in
19085 @code{column} mode or one below the other in @code{row} mode.
19086
19087 Using this display mode makes it easy to spot color casts in the highlights
19088 and shadows of an image, by comparing the contours of the top and the bottom
19089 graphs of each waveform. Since whites, grays, and blacks are characterized
19090 by exactly equal amounts of red, green, and blue, neutral areas of the picture
19091 should display three waveforms of roughly equal width/height. If not, the
19092 correction is easy to perform by making level adjustments the three waveforms.
19093 @end table
19094 Default is @code{stack}.
19095
19096 @item components, c
19097 Set which color components to display. Default is 1, which means only luminance
19098 or red color component if input is in RGB colorspace. If is set for example to
19099 7 it will display all 3 (if) available color components.
19100
19101 @item envelope, e
19102 @table @samp
19103 @item none
19104 No envelope, this is default.
19105
19106 @item instant
19107 Instant envelope, minimum and maximum values presented in graph will be easily
19108 visible even with small @code{step} value.
19109
19110 @item peak
19111 Hold minimum and maximum values presented in graph across time. This way you
19112 can still spot out of range values without constantly looking at waveforms.
19113
19114 @item peak+instant
19115 Peak and instant envelope combined together.
19116 @end table
19117
19118 @item filter, f
19119 @table @samp
19120 @item lowpass
19121 No filtering, this is default.
19122
19123 @item flat
19124 Luma and chroma combined together.
19125
19126 @item aflat
19127 Similar as above, but shows difference between blue and red chroma.
19128
19129 @item xflat
19130 Similar as above, but use different colors.
19131
19132 @item yflat
19133 Similar as above, but again with different colors.
19134
19135 @item chroma
19136 Displays only chroma.
19137
19138 @item color
19139 Displays actual color value on waveform.
19140
19141 @item acolor
19142 Similar as above, but with luma showing frequency of chroma values.
19143 @end table
19144
19145 @item graticule, g
19146 Set which graticule to display.
19147
19148 @table @samp
19149 @item none
19150 Do not display graticule.
19151
19152 @item green
19153 Display green graticule showing legal broadcast ranges.
19154
19155 @item orange
19156 Display orange graticule showing legal broadcast ranges.
19157
19158 @item invert
19159 Display invert graticule showing legal broadcast ranges.
19160 @end table
19161
19162 @item opacity, o
19163 Set graticule opacity.
19164
19165 @item flags, fl
19166 Set graticule flags.
19167
19168 @table @samp
19169 @item numbers
19170 Draw numbers above lines. By default enabled.
19171
19172 @item dots
19173 Draw dots instead of lines.
19174 @end table
19175
19176 @item scale, s
19177 Set scale used for displaying graticule.
19178
19179 @table @samp
19180 @item digital
19181 @item millivolts
19182 @item ire
19183 @end table
19184 Default is digital.
19185
19186 @item bgopacity, b
19187 Set background opacity.
19188 @end table
19189
19190 @section weave, doubleweave
19191
19192 The @code{weave} takes a field-based video input and join
19193 each two sequential fields into single frame, producing a new double
19194 height clip with half the frame rate and half the frame count.
19195
19196 The @code{doubleweave} works same as @code{weave} but without
19197 halving frame rate and frame count.
19198
19199 It accepts the following option:
19200
19201 @table @option
19202 @item first_field
19203 Set first field. Available values are:
19204
19205 @table @samp
19206 @item top, t
19207 Set the frame as top-field-first.
19208
19209 @item bottom, b
19210 Set the frame as bottom-field-first.
19211 @end table
19212 @end table
19213
19214 @subsection Examples
19215
19216 @itemize
19217 @item
19218 Interlace video using @ref{select} and @ref{separatefields} filter:
19219 @example
19220 separatefields,select=eq(mod(n,4),0)+eq(mod(n,4),3),weave
19221 @end example
19222 @end itemize
19223
19224 @section xbr
19225 Apply the xBR high-quality magnification filter which is designed for pixel
19226 art. It follows a set of edge-detection rules, see
19227 @url{https://forums.libretro.com/t/xbr-algorithm-tutorial/123}.
19228
19229 It accepts the following option:
19230
19231 @table @option
19232 @item n
19233 Set the scaling dimension: @code{2} for @code{2xBR}, @code{3} for
19234 @code{3xBR} and @code{4} for @code{4xBR}.
19235 Default is @code{3}.
19236 @end table
19237
19238 @section xmedian
19239 Pick median pixels from several input videos.
19240
19241 The filter accepts the following options:
19242
19243 @table @option
19244 @item inputs
19245 Set number of inputs.
19246 Default is 3. Allowed range is from 3 to 255.
19247 If number of inputs is even number, than result will be mean value between two median values.
19248
19249 @item planes
19250 Set which planes to filter. Default value is @code{15}, by which all planes are processed.
19251 @end table
19252
19253 @section xstack
19254 Stack video inputs into custom layout.
19255
19256 All streams must be of same pixel format.
19257
19258 The filter accepts the following options:
19259
19260 @table @option
19261 @item inputs
19262 Set number of input streams. Default is 2.
19263
19264 @item layout
19265 Specify layout of inputs.
19266 This option requires the desired layout configuration to be explicitly set by the user.
19267 This sets position of each video input in output. Each input
19268 is separated by '|'.
19269 The first number represents the column, and the second number represents the row.
19270 Numbers start at 0 and are separated by '_'. Optionally one can use wX and hX,
19271 where X is video input from which to take width or height.
19272 Multiple values can be used when separated by '+'. In such
19273 case values are summed together.
19274
19275 Note that if inputs are of different sizes gaps may appear, as not all of
19276 the output video frame will be filled. Similarly, videos can overlap each
19277 other if their position doesn't leave enough space for the full frame of
19278 adjoining videos.
19279
19280 For 2 inputs, a default layout of @code{0_0|w0_0} is set. In all other cases,
19281 a layout must be set by the user.
19282
19283 @item shortest
19284 If set to 1, force the output to terminate when the shortest input
19285 terminates. Default value is 0.
19286 @end table
19287
19288 @subsection Examples
19289
19290 @itemize
19291 @item
19292 Display 4 inputs into 2x2 grid.
19293
19294 Layout:
19295 @example
19296 input1(0, 0)  | input3(w0, 0)
19297 input2(0, h0) | input4(w0, h0)
19298 @end example
19299
19300 @example
19301 xstack=inputs=4:layout=0_0|0_h0|w0_0|w0_h0
19302 @end example
19303
19304 Note that if inputs are of different sizes, gaps or overlaps may occur.
19305
19306 @item
19307 Display 4 inputs into 1x4 grid.
19308
19309 Layout:
19310 @example
19311 input1(0, 0)
19312 input2(0, h0)
19313 input3(0, h0+h1)
19314 input4(0, h0+h1+h2)
19315 @end example
19316
19317 @example
19318 xstack=inputs=4:layout=0_0|0_h0|0_h0+h1|0_h0+h1+h2
19319 @end example
19320
19321 Note that if inputs are of different widths, unused space will appear.
19322
19323 @item
19324 Display 9 inputs into 3x3 grid.
19325
19326 Layout:
19327 @example
19328 input1(0, 0)       | input4(w0, 0)      | input7(w0+w3, 0)
19329 input2(0, h0)      | input5(w0, h0)     | input8(w0+w3, h0)
19330 input3(0, h0+h1)   | input6(w0, h0+h1)  | input9(w0+w3, h0+h1)
19331 @end example
19332
19333 @example
19334 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
19335 @end example
19336
19337 Note that if inputs are of different sizes, gaps or overlaps may occur.
19338
19339 @item
19340 Display 16 inputs into 4x4 grid.
19341
19342 Layout:
19343 @example
19344 input1(0, 0)       | input5(w0, 0)       | input9 (w0+w4, 0)       | input13(w0+w4+w8, 0)
19345 input2(0, h0)      | input6(w0, h0)      | input10(w0+w4, h0)      | input14(w0+w4+w8, h0)
19346 input3(0, h0+h1)   | input7(w0, h0+h1)   | input11(w0+w4, h0+h1)   | input15(w0+w4+w8, h0+h1)
19347 input4(0, h0+h1+h2)| input8(w0, h0+h1+h2)| input12(w0+w4, h0+h1+h2)| input16(w0+w4+w8, h0+h1+h2)
19348 @end example
19349
19350 @example
19351 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|
19352 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
19353 @end example
19354
19355 Note that if inputs are of different sizes, gaps or overlaps may occur.
19356
19357 @end itemize
19358
19359 @anchor{yadif}
19360 @section yadif
19361
19362 Deinterlace the input video ("yadif" means "yet another deinterlacing
19363 filter").
19364
19365 It accepts the following parameters:
19366
19367
19368 @table @option
19369
19370 @item mode
19371 The interlacing mode to adopt. It accepts one of the following values:
19372
19373 @table @option
19374 @item 0, send_frame
19375 Output one frame for each frame.
19376 @item 1, send_field
19377 Output one frame for each field.
19378 @item 2, send_frame_nospatial
19379 Like @code{send_frame}, but it skips the spatial interlacing check.
19380 @item 3, send_field_nospatial
19381 Like @code{send_field}, but it skips the spatial interlacing check.
19382 @end table
19383
19384 The default value is @code{send_frame}.
19385
19386 @item parity
19387 The picture field parity assumed for the input interlaced video. It accepts one
19388 of the following values:
19389
19390 @table @option
19391 @item 0, tff
19392 Assume the top field is first.
19393 @item 1, bff
19394 Assume the bottom field is first.
19395 @item -1, auto
19396 Enable automatic detection of field parity.
19397 @end table
19398
19399 The default value is @code{auto}.
19400 If the interlacing is unknown or the decoder does not export this information,
19401 top field first will be assumed.
19402
19403 @item deint
19404 Specify which frames to deinterlace. Accepts one of the following
19405 values:
19406
19407 @table @option
19408 @item 0, all
19409 Deinterlace all frames.
19410 @item 1, interlaced
19411 Only deinterlace frames marked as interlaced.
19412 @end table
19413
19414 The default value is @code{all}.
19415 @end table
19416
19417 @section yadif_cuda
19418
19419 Deinterlace the input video using the @ref{yadif} algorithm, but implemented
19420 in CUDA so that it can work as part of a GPU accelerated pipeline with nvdec
19421 and/or nvenc.
19422
19423 It accepts the following parameters:
19424
19425
19426 @table @option
19427
19428 @item mode
19429 The interlacing mode to adopt. It accepts one of the following values:
19430
19431 @table @option
19432 @item 0, send_frame
19433 Output one frame for each frame.
19434 @item 1, send_field
19435 Output one frame for each field.
19436 @item 2, send_frame_nospatial
19437 Like @code{send_frame}, but it skips the spatial interlacing check.
19438 @item 3, send_field_nospatial
19439 Like @code{send_field}, but it skips the spatial interlacing check.
19440 @end table
19441
19442 The default value is @code{send_frame}.
19443
19444 @item parity
19445 The picture field parity assumed for the input interlaced video. It accepts one
19446 of the following values:
19447
19448 @table @option
19449 @item 0, tff
19450 Assume the top field is first.
19451 @item 1, bff
19452 Assume the bottom field is first.
19453 @item -1, auto
19454 Enable automatic detection of field parity.
19455 @end table
19456
19457 The default value is @code{auto}.
19458 If the interlacing is unknown or the decoder does not export this information,
19459 top field first will be assumed.
19460
19461 @item deint
19462 Specify which frames to deinterlace. Accepts one of the following
19463 values:
19464
19465 @table @option
19466 @item 0, all
19467 Deinterlace all frames.
19468 @item 1, interlaced
19469 Only deinterlace frames marked as interlaced.
19470 @end table
19471
19472 The default value is @code{all}.
19473 @end table
19474
19475 @section zoompan
19476
19477 Apply Zoom & Pan effect.
19478
19479 This filter accepts the following options:
19480
19481 @table @option
19482 @item zoom, z
19483 Set the zoom expression. Range is 1-10. Default is 1.
19484
19485 @item x
19486 @item y
19487 Set the x and y expression. Default is 0.
19488
19489 @item d
19490 Set the duration expression in number of frames.
19491 This sets for how many number of frames effect will last for
19492 single input image.
19493
19494 @item s
19495 Set the output image size, default is 'hd720'.
19496
19497 @item fps
19498 Set the output frame rate, default is '25'.
19499 @end table
19500
19501 Each expression can contain the following constants:
19502
19503 @table @option
19504 @item in_w, iw
19505 Input width.
19506
19507 @item in_h, ih
19508 Input height.
19509
19510 @item out_w, ow
19511 Output width.
19512
19513 @item out_h, oh
19514 Output height.
19515
19516 @item in
19517 Input frame count.
19518
19519 @item on
19520 Output frame count.
19521
19522 @item x
19523 @item y
19524 Last calculated 'x' and 'y' position from 'x' and 'y' expression
19525 for current input frame.
19526
19527 @item px
19528 @item py
19529 'x' and 'y' of last output frame of previous input frame or 0 when there was
19530 not yet such frame (first input frame).
19531
19532 @item zoom
19533 Last calculated zoom from 'z' expression for current input frame.
19534
19535 @item pzoom
19536 Last calculated zoom of last output frame of previous input frame.
19537
19538 @item duration
19539 Number of output frames for current input frame. Calculated from 'd' expression
19540 for each input frame.
19541
19542 @item pduration
19543 number of output frames created for previous input frame
19544
19545 @item a
19546 Rational number: input width / input height
19547
19548 @item sar
19549 sample aspect ratio
19550
19551 @item dar
19552 display aspect ratio
19553
19554 @end table
19555
19556 @subsection Examples
19557
19558 @itemize
19559 @item
19560 Zoom-in up to 1.5 and pan at same time to some spot near center of picture:
19561 @example
19562 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
19563 @end example
19564
19565 @item
19566 Zoom-in up to 1.5 and pan always at center of picture:
19567 @example
19568 zoompan=z='min(zoom+0.0015,1.5)':d=700:x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)'
19569 @end example
19570
19571 @item
19572 Same as above but without pausing:
19573 @example
19574 zoompan=z='min(max(zoom,pzoom)+0.0015,1.5)':d=1:x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)'
19575 @end example
19576 @end itemize
19577
19578 @anchor{zscale}
19579 @section zscale
19580 Scale (resize) the input video, using the z.lib library:
19581 @url{https://github.com/sekrit-twc/zimg}. To enable compilation of this
19582 filter, you need to configure FFmpeg with @code{--enable-libzimg}.
19583
19584 The zscale filter forces the output display aspect ratio to be the same
19585 as the input, by changing the output sample aspect ratio.
19586
19587 If the input image format is different from the format requested by
19588 the next filter, the zscale filter will convert the input to the
19589 requested format.
19590
19591 @subsection Options
19592 The filter accepts the following options.
19593
19594 @table @option
19595 @item width, w
19596 @item height, h
19597 Set the output video dimension expression. Default value is the input
19598 dimension.
19599
19600 If the @var{width} or @var{w} value is 0, the input width is used for
19601 the output. If the @var{height} or @var{h} value is 0, the input height
19602 is used for the output.
19603
19604 If one and only one of the values is -n with n >= 1, the zscale filter
19605 will use a value that maintains the aspect ratio of the input image,
19606 calculated from the other specified dimension. After that it will,
19607 however, make sure that the calculated dimension is divisible by n and
19608 adjust the value if necessary.
19609
19610 If both values are -n with n >= 1, the behavior will be identical to
19611 both values being set to 0 as previously detailed.
19612
19613 See below for the list of accepted constants for use in the dimension
19614 expression.
19615
19616 @item size, s
19617 Set the video size. For the syntax of this option, check the
19618 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
19619
19620 @item dither, d
19621 Set the dither type.
19622
19623 Possible values are:
19624 @table @var
19625 @item none
19626 @item ordered
19627 @item random
19628 @item error_diffusion
19629 @end table
19630
19631 Default is none.
19632
19633 @item filter, f
19634 Set the resize filter type.
19635
19636 Possible values are:
19637 @table @var
19638 @item point
19639 @item bilinear
19640 @item bicubic
19641 @item spline16
19642 @item spline36
19643 @item lanczos
19644 @end table
19645
19646 Default is bilinear.
19647
19648 @item range, r
19649 Set the color range.
19650
19651 Possible values are:
19652 @table @var
19653 @item input
19654 @item limited
19655 @item full
19656 @end table
19657
19658 Default is same as input.
19659
19660 @item primaries, p
19661 Set the color primaries.
19662
19663 Possible values are:
19664 @table @var
19665 @item input
19666 @item 709
19667 @item unspecified
19668 @item 170m
19669 @item 240m
19670 @item 2020
19671 @end table
19672
19673 Default is same as input.
19674
19675 @item transfer, t
19676 Set the transfer characteristics.
19677
19678 Possible values are:
19679 @table @var
19680 @item input
19681 @item 709
19682 @item unspecified
19683 @item 601
19684 @item linear
19685 @item 2020_10
19686 @item 2020_12
19687 @item smpte2084
19688 @item iec61966-2-1
19689 @item arib-std-b67
19690 @end table
19691
19692 Default is same as input.
19693
19694 @item matrix, m
19695 Set the colorspace matrix.
19696
19697 Possible value are:
19698 @table @var
19699 @item input
19700 @item 709
19701 @item unspecified
19702 @item 470bg
19703 @item 170m
19704 @item 2020_ncl
19705 @item 2020_cl
19706 @end table
19707
19708 Default is same as input.
19709
19710 @item rangein, rin
19711 Set the input color range.
19712
19713 Possible values are:
19714 @table @var
19715 @item input
19716 @item limited
19717 @item full
19718 @end table
19719
19720 Default is same as input.
19721
19722 @item primariesin, pin
19723 Set the input color primaries.
19724
19725 Possible values are:
19726 @table @var
19727 @item input
19728 @item 709
19729 @item unspecified
19730 @item 170m
19731 @item 240m
19732 @item 2020
19733 @end table
19734
19735 Default is same as input.
19736
19737 @item transferin, tin
19738 Set the input transfer characteristics.
19739
19740 Possible values are:
19741 @table @var
19742 @item input
19743 @item 709
19744 @item unspecified
19745 @item 601
19746 @item linear
19747 @item 2020_10
19748 @item 2020_12
19749 @end table
19750
19751 Default is same as input.
19752
19753 @item matrixin, min
19754 Set the input colorspace matrix.
19755
19756 Possible value are:
19757 @table @var
19758 @item input
19759 @item 709
19760 @item unspecified
19761 @item 470bg
19762 @item 170m
19763 @item 2020_ncl
19764 @item 2020_cl
19765 @end table
19766
19767 @item chromal, c
19768 Set the output chroma location.
19769
19770 Possible values are:
19771 @table @var
19772 @item input
19773 @item left
19774 @item center
19775 @item topleft
19776 @item top
19777 @item bottomleft
19778 @item bottom
19779 @end table
19780
19781 @item chromalin, cin
19782 Set the input chroma location.
19783
19784 Possible values are:
19785 @table @var
19786 @item input
19787 @item left
19788 @item center
19789 @item topleft
19790 @item top
19791 @item bottomleft
19792 @item bottom
19793 @end table
19794
19795 @item npl
19796 Set the nominal peak luminance.
19797 @end table
19798
19799 The values of the @option{w} and @option{h} options are expressions
19800 containing the following constants:
19801
19802 @table @var
19803 @item in_w
19804 @item in_h
19805 The input width and height
19806
19807 @item iw
19808 @item ih
19809 These are the same as @var{in_w} and @var{in_h}.
19810
19811 @item out_w
19812 @item out_h
19813 The output (scaled) width and height
19814
19815 @item ow
19816 @item oh
19817 These are the same as @var{out_w} and @var{out_h}
19818
19819 @item a
19820 The same as @var{iw} / @var{ih}
19821
19822 @item sar
19823 input sample aspect ratio
19824
19825 @item dar
19826 The input display aspect ratio. Calculated from @code{(iw / ih) * sar}.
19827
19828 @item hsub
19829 @item vsub
19830 horizontal and vertical input chroma subsample values. For example for the
19831 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
19832
19833 @item ohsub
19834 @item ovsub
19835 horizontal and vertical output chroma subsample values. For example for the
19836 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
19837 @end table
19838
19839 @table @option
19840 @end table
19841
19842 @c man end VIDEO FILTERS
19843
19844 @chapter OpenCL Video Filters
19845 @c man begin OPENCL VIDEO FILTERS
19846
19847 Below is a description of the currently available OpenCL video filters.
19848
19849 To enable compilation of these filters you need to configure FFmpeg with
19850 @code{--enable-opencl}.
19851
19852 Running OpenCL filters requires you to initialize a hardware device and to pass that device to all filters in any filter graph.
19853 @table @option
19854
19855 @item -init_hw_device opencl[=@var{name}][:@var{device}[,@var{key=value}...]]
19856 Initialise a new hardware device of type @var{opencl} called @var{name}, using the
19857 given device parameters.
19858
19859 @item -filter_hw_device @var{name}
19860 Pass the hardware device called @var{name} to all filters in any filter graph.
19861
19862 @end table
19863
19864 For more detailed information see @url{https://www.ffmpeg.org/ffmpeg.html#Advanced-Video-options}
19865
19866 @itemize
19867 @item
19868 Example of choosing the first device on the second platform and running avgblur_opencl filter with default parameters on it.
19869 @example
19870 -init_hw_device opencl=gpu:1.0 -filter_hw_device gpu -i INPUT -vf "hwupload, avgblur_opencl, hwdownload" OUTPUT
19871 @end example
19872 @end itemize
19873
19874 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.
19875
19876 @section avgblur_opencl
19877
19878 Apply average blur filter.
19879
19880 The filter accepts the following options:
19881
19882 @table @option
19883 @item sizeX
19884 Set horizontal radius size.
19885 Range is @code{[1, 1024]} and default value is @code{1}.
19886
19887 @item planes
19888 Set which planes to filter. Default value is @code{0xf}, by which all planes are processed.
19889
19890 @item sizeY
19891 Set vertical radius size. Range is @code{[1, 1024]} and default value is @code{0}. If zero, @code{sizeX} value will be used.
19892 @end table
19893
19894 @subsection Example
19895
19896 @itemize
19897 @item
19898 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.
19899 @example
19900 -i INPUT -vf "hwupload, avgblur_opencl=3, hwdownload" OUTPUT
19901 @end example
19902 @end itemize
19903
19904 @section boxblur_opencl
19905
19906 Apply a boxblur algorithm to the input video.
19907
19908 It accepts the following parameters:
19909
19910 @table @option
19911
19912 @item luma_radius, lr
19913 @item luma_power, lp
19914 @item chroma_radius, cr
19915 @item chroma_power, cp
19916 @item alpha_radius, ar
19917 @item alpha_power, ap
19918
19919 @end table
19920
19921 A description of the accepted options follows.
19922
19923 @table @option
19924 @item luma_radius, lr
19925 @item chroma_radius, cr
19926 @item alpha_radius, ar
19927 Set an expression for the box radius in pixels used for blurring the
19928 corresponding input plane.
19929
19930 The radius value must be a non-negative number, and must not be
19931 greater than the value of the expression @code{min(w,h)/2} for the
19932 luma and alpha planes, and of @code{min(cw,ch)/2} for the chroma
19933 planes.
19934
19935 Default value for @option{luma_radius} is "2". If not specified,
19936 @option{chroma_radius} and @option{alpha_radius} default to the
19937 corresponding value set for @option{luma_radius}.
19938
19939 The expressions can contain the following constants:
19940 @table @option
19941 @item w
19942 @item h
19943 The input width and height in pixels.
19944
19945 @item cw
19946 @item ch
19947 The input chroma image width and height in pixels.
19948
19949 @item hsub
19950 @item vsub
19951 The horizontal and vertical chroma subsample values. For example, for the
19952 pixel format "yuv422p", @var{hsub} is 2 and @var{vsub} is 1.
19953 @end table
19954
19955 @item luma_power, lp
19956 @item chroma_power, cp
19957 @item alpha_power, ap
19958 Specify how many times the boxblur filter is applied to the
19959 corresponding plane.
19960
19961 Default value for @option{luma_power} is 2. If not specified,
19962 @option{chroma_power} and @option{alpha_power} default to the
19963 corresponding value set for @option{luma_power}.
19964
19965 A value of 0 will disable the effect.
19966 @end table
19967
19968 @subsection Examples
19969
19970 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.
19971
19972 @itemize
19973 @item
19974 Apply a boxblur filter with the luma, chroma, and alpha radius
19975 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.
19976 @example
19977 -i INPUT -vf "hwupload, boxblur_opencl=luma_radius=2:luma_power=3, hwdownload" OUTPUT
19978 -i INPUT -vf "hwupload, boxblur_opencl=2:3, hwdownload" OUTPUT
19979 @end example
19980
19981 @item
19982 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.
19983
19984 For the luma plane, a 2x2 box radius will be run once.
19985
19986 For the chroma plane, a 4x4 box radius will be run 5 times.
19987
19988 For the alpha plane, a 3x3 box radius will be run 7 times.
19989 @example
19990 -i INPUT -vf "hwupload, boxblur_opencl=2:1:4:5:3:7, hwdownload" OUTPUT
19991 @end example
19992 @end itemize
19993
19994 @section convolution_opencl
19995
19996 Apply convolution of 3x3, 5x5, 7x7 matrix.
19997
19998 The filter accepts the following options:
19999
20000 @table @option
20001 @item 0m
20002 @item 1m
20003 @item 2m
20004 @item 3m
20005 Set matrix for each plane.
20006 Matrix is sequence of 9, 25 or 49 signed numbers.
20007 Default value for each plane is @code{0 0 0 0 1 0 0 0 0}.
20008
20009 @item 0rdiv
20010 @item 1rdiv
20011 @item 2rdiv
20012 @item 3rdiv
20013 Set multiplier for calculated value for each plane.
20014 If unset or 0, it will be sum of all matrix elements.
20015 The option value must be a float number greater or equal to @code{0.0}. Default value is @code{1.0}.
20016
20017 @item 0bias
20018 @item 1bias
20019 @item 2bias
20020 @item 3bias
20021 Set bias for each plane. This value is added to the result of the multiplication.
20022 Useful for making the overall image brighter or darker.
20023 The option value must be a float number greater or equal to @code{0.0}. Default value is @code{0.0}.
20024
20025 @end table
20026
20027 @subsection Examples
20028
20029 @itemize
20030 @item
20031 Apply sharpen:
20032 @example
20033 -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
20034 @end example
20035
20036 @item
20037 Apply blur:
20038 @example
20039 -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
20040 @end example
20041
20042 @item
20043 Apply edge enhance:
20044 @example
20045 -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
20046 @end example
20047
20048 @item
20049 Apply edge detect:
20050 @example
20051 -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
20052 @end example
20053
20054 @item
20055 Apply laplacian edge detector which includes diagonals:
20056 @example
20057 -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
20058 @end example
20059
20060 @item
20061 Apply emboss:
20062 @example
20063 -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
20064 @end example
20065 @end itemize
20066
20067 @section dilation_opencl
20068
20069 Apply dilation effect to the video.
20070
20071 This filter replaces the pixel by the local(3x3) maximum.
20072
20073 It accepts the following options:
20074
20075 @table @option
20076 @item threshold0
20077 @item threshold1
20078 @item threshold2
20079 @item threshold3
20080 Limit the maximum change for each plane. Range is @code{[0, 65535]} and default value is @code{65535}.
20081 If @code{0}, plane will remain unchanged.
20082
20083 @item coordinates
20084 Flag which specifies the pixel to refer to.
20085 Range is @code{[0, 255]} and default value is @code{255}, i.e. all eight pixels are used.
20086
20087 Flags to local 3x3 coordinates region centered on @code{x}:
20088
20089     1 2 3
20090
20091     4 x 5
20092
20093     6 7 8
20094 @end table
20095
20096 @subsection Example
20097
20098 @itemize
20099 @item
20100 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.
20101 @example
20102 -i INPUT -vf "hwupload, dilation_opencl=30:40:50:coordinates=231, hwdownload" OUTPUT
20103 @end example
20104 @end itemize
20105
20106 @section erosion_opencl
20107
20108 Apply erosion effect to the video.
20109
20110 This filter replaces the pixel by the local(3x3) minimum.
20111
20112 It accepts the following options:
20113
20114 @table @option
20115 @item threshold0
20116 @item threshold1
20117 @item threshold2
20118 @item threshold3
20119 Limit the maximum change for each plane. Range is @code{[0, 65535]} and default value is @code{65535}.
20120 If @code{0}, plane will remain unchanged.
20121
20122 @item coordinates
20123 Flag which specifies the pixel to refer to.
20124 Range is @code{[0, 255]} and default value is @code{255}, i.e. all eight pixels are used.
20125
20126 Flags to local 3x3 coordinates region centered on @code{x}:
20127
20128     1 2 3
20129
20130     4 x 5
20131
20132     6 7 8
20133 @end table
20134
20135 @subsection Example
20136
20137 @itemize
20138 @item
20139 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.
20140 @example
20141 -i INPUT -vf "hwupload, erosion_opencl=30:40:50:coordinates=231, hwdownload" OUTPUT
20142 @end example
20143 @end itemize
20144
20145 @section colorkey_opencl
20146 RGB colorspace color keying.
20147
20148 The filter accepts the following options:
20149
20150 @table @option
20151 @item color
20152 The color which will be replaced with transparency.
20153
20154 @item similarity
20155 Similarity percentage with the key color.
20156
20157 0.01 matches only the exact key color, while 1.0 matches everything.
20158
20159 @item blend
20160 Blend percentage.
20161
20162 0.0 makes pixels either fully transparent, or not transparent at all.
20163
20164 Higher values result in semi-transparent pixels, with a higher transparency
20165 the more similar the pixels color is to the key color.
20166 @end table
20167
20168 @subsection Examples
20169
20170 @itemize
20171 @item
20172 Make every semi-green pixel in the input transparent with some slight blending:
20173 @example
20174 -i INPUT -vf "hwupload, colorkey_opencl=green:0.3:0.1, hwdownload" OUTPUT
20175 @end example
20176 @end itemize
20177
20178 @section deshake_opencl
20179 Feature-point based video stabilization filter.
20180
20181 The filter accepts the following options:
20182
20183 @table @option
20184 @item tripod
20185 Simulates a tripod by preventing any camera movement whatsoever from the original frame. Defaults to @code{0}.
20186
20187 @item debug
20188 Whether or not additional debug info should be displayed, both in the processed output and in the console.
20189
20190 Note that in order to see console debug output you will also need to pass @code{-v verbose} to ffmpeg.
20191
20192 Viewing point matches in the output video is only supported for RGB input.
20193
20194 Defaults to @code{0}.
20195
20196 @item adaptive_crop
20197 Whether or not to do a tiny bit of cropping at the borders to cut down on the amount of mirrored pixels.
20198
20199 Defaults to @code{1}.
20200
20201 @item refine_features
20202 Whether or not feature points should be refined at a sub-pixel level.
20203
20204 This can be turned off for a slight performance gain at the cost of precision.
20205
20206 Defaults to @code{1}.
20207
20208 @item smooth_strength
20209 The strength of the smoothing applied to the camera path from @code{0.0} to @code{1.0}.
20210
20211 @code{1.0} is the maximum smoothing strength while values less than that result in less smoothing.
20212
20213 @code{0.0} causes the filter to adaptively choose a smoothing strength on a per-frame basis.
20214
20215 Defaults to @code{0.0}.
20216
20217 @item smooth_window_multiplier
20218 Controls the size of the smoothing window (the number of frames buffered to determine motion information from).
20219
20220 The size of the smoothing window is determined by multiplying the framerate of the video by this number.
20221
20222 Acceptable values range from @code{0.1} to @code{10.0}.
20223
20224 Larger values increase the amount of motion data available for determining how to smooth the camera path,
20225 potentially improving smoothness, but also increase latency and memory usage.
20226
20227 Defaults to @code{2.0}.
20228
20229 @end table
20230
20231 @subsection Examples
20232
20233 @itemize
20234 @item
20235 Stabilize a video with a fixed, medium smoothing strength:
20236 @example
20237 -i INPUT -vf "hwupload, deshake_opencl=smooth_strength=0.5, hwdownload" OUTPUT
20238 @end example
20239
20240 @item
20241 Stabilize a video with debugging (both in console and in rendered video):
20242 @example
20243 -i INPUT -filter_complex "[0:v]format=rgba, hwupload, deshake_opencl=debug=1, hwdownload, format=rgba, format=yuv420p" -v verbose OUTPUT
20244 @end example
20245 @end itemize
20246
20247 @section nlmeans_opencl
20248
20249 Non-local Means denoise filter through OpenCL, this filter accepts same options as @ref{nlmeans}.
20250
20251 @section overlay_opencl
20252
20253 Overlay one video on top of another.
20254
20255 It takes two inputs and has one output. The first input is the "main" video on which the second input is overlaid.
20256 This filter requires same memory layout for all the inputs. So, format conversion may be needed.
20257
20258 The filter accepts the following options:
20259
20260 @table @option
20261
20262 @item x
20263 Set the x coordinate of the overlaid video on the main video.
20264 Default value is @code{0}.
20265
20266 @item y
20267 Set the x coordinate of the overlaid video on the main video.
20268 Default value is @code{0}.
20269
20270 @end table
20271
20272 @subsection Examples
20273
20274 @itemize
20275 @item
20276 Overlay an image LOGO at the top-left corner of the INPUT video. Both inputs are yuv420p format.
20277 @example
20278 -i INPUT -i LOGO -filter_complex "[0:v]hwupload[a], [1:v]format=yuv420p, hwupload[b], [a][b]overlay_opencl, hwdownload" OUTPUT
20279 @end example
20280 @item
20281 The inputs have same memory layout for color channels , the overlay has additional alpha plane, like INPUT is yuv420p, and the LOGO is yuva420p.
20282 @example
20283 -i INPUT -i LOGO -filter_complex "[0:v]hwupload[a], [1:v]format=yuva420p, hwupload[b], [a][b]overlay_opencl, hwdownload" OUTPUT
20284 @end example
20285
20286 @end itemize
20287
20288 @section prewitt_opencl
20289
20290 Apply the Prewitt operator (@url{https://en.wikipedia.org/wiki/Prewitt_operator}) to input video stream.
20291
20292 The filter accepts the following option:
20293
20294 @table @option
20295 @item planes
20296 Set which planes to filter. Default value is @code{0xf}, by which all planes are processed.
20297
20298 @item scale
20299 Set value which will be multiplied with filtered result.
20300 Range is @code{[0.0, 65535]} and default value is @code{1.0}.
20301
20302 @item delta
20303 Set value which will be added to filtered result.
20304 Range is @code{[-65535, 65535]} and default value is @code{0.0}.
20305 @end table
20306
20307 @subsection Example
20308
20309 @itemize
20310 @item
20311 Apply the Prewitt operator with scale set to 2 and delta set to 10.
20312 @example
20313 -i INPUT -vf "hwupload, prewitt_opencl=scale=2:delta=10, hwdownload" OUTPUT
20314 @end example
20315 @end itemize
20316
20317 @section roberts_opencl
20318 Apply the Roberts cross operator (@url{https://en.wikipedia.org/wiki/Roberts_cross}) to input video stream.
20319
20320 The filter accepts the following option:
20321
20322 @table @option
20323 @item planes
20324 Set which planes to filter. Default value is @code{0xf}, by which all planes are processed.
20325
20326 @item scale
20327 Set value which will be multiplied with filtered result.
20328 Range is @code{[0.0, 65535]} and default value is @code{1.0}.
20329
20330 @item delta
20331 Set value which will be added to filtered result.
20332 Range is @code{[-65535, 65535]} and default value is @code{0.0}.
20333 @end table
20334
20335 @subsection Example
20336
20337 @itemize
20338 @item
20339 Apply the Roberts cross operator with scale set to 2 and delta set to 10
20340 @example
20341 -i INPUT -vf "hwupload, roberts_opencl=scale=2:delta=10, hwdownload" OUTPUT
20342 @end example
20343 @end itemize
20344
20345 @section sobel_opencl
20346
20347 Apply the Sobel operator (@url{https://en.wikipedia.org/wiki/Sobel_operator}) to input video stream.
20348
20349 The filter accepts the following option:
20350
20351 @table @option
20352 @item planes
20353 Set which planes to filter. Default value is @code{0xf}, by which all planes are processed.
20354
20355 @item scale
20356 Set value which will be multiplied with filtered result.
20357 Range is @code{[0.0, 65535]} and default value is @code{1.0}.
20358
20359 @item delta
20360 Set value which will be added to filtered result.
20361 Range is @code{[-65535, 65535]} and default value is @code{0.0}.
20362 @end table
20363
20364 @subsection Example
20365
20366 @itemize
20367 @item
20368 Apply sobel operator with scale set to 2 and delta set to 10
20369 @example
20370 -i INPUT -vf "hwupload, sobel_opencl=scale=2:delta=10, hwdownload" OUTPUT
20371 @end example
20372 @end itemize
20373
20374 @section tonemap_opencl
20375
20376 Perform HDR(PQ/HLG) to SDR conversion with tone-mapping.
20377
20378 It accepts the following parameters:
20379
20380 @table @option
20381 @item tonemap
20382 Specify the tone-mapping operator to be used. Same as tonemap option in @ref{tonemap}.
20383
20384 @item param
20385 Tune the tone mapping algorithm. same as param option in @ref{tonemap}.
20386
20387 @item desat
20388 Apply desaturation for highlights that exceed this level of brightness. The
20389 higher the parameter, the more color information will be preserved. This
20390 setting helps prevent unnaturally blown-out colors for super-highlights, by
20391 (smoothly) turning into white instead. This makes images feel more natural,
20392 at the cost of reducing information about out-of-range colors.
20393
20394 The default value is 0.5, and the algorithm here is a little different from
20395 the cpu version tonemap currently. A setting of 0.0 disables this option.
20396
20397 @item threshold
20398 The tonemapping algorithm parameters is fine-tuned per each scene. And a threshold
20399 is used to detect whether the scene has changed or not. If the distance between
20400 the current frame average brightness and the current running average exceeds
20401 a threshold value, we would re-calculate scene average and peak brightness.
20402 The default value is 0.2.
20403
20404 @item format
20405 Specify the output pixel format.
20406
20407 Currently supported formats are:
20408 @table @var
20409 @item p010
20410 @item nv12
20411 @end table
20412
20413 @item range, r
20414 Set the output color range.
20415
20416 Possible values are:
20417 @table @var
20418 @item tv/mpeg
20419 @item pc/jpeg
20420 @end table
20421
20422 Default is same as input.
20423
20424 @item primaries, p
20425 Set the output color primaries.
20426
20427 Possible values are:
20428 @table @var
20429 @item bt709
20430 @item bt2020
20431 @end table
20432
20433 Default is same as input.
20434
20435 @item transfer, t
20436 Set the output transfer characteristics.
20437
20438 Possible values are:
20439 @table @var
20440 @item bt709
20441 @item bt2020
20442 @end table
20443
20444 Default is bt709.
20445
20446 @item matrix, m
20447 Set the output colorspace matrix.
20448
20449 Possible value are:
20450 @table @var
20451 @item bt709
20452 @item bt2020
20453 @end table
20454
20455 Default is same as input.
20456
20457 @end table
20458
20459 @subsection Example
20460
20461 @itemize
20462 @item
20463 Convert HDR(PQ/HLG) video to bt2020-transfer-characteristic p010 format using linear operator.
20464 @example
20465 -i INPUT -vf "format=p010,hwupload,tonemap_opencl=t=bt2020:tonemap=linear:format=p010,hwdownload,format=p010" OUTPUT
20466 @end example
20467 @end itemize
20468
20469 @section unsharp_opencl
20470
20471 Sharpen or blur the input video.
20472
20473 It accepts the following parameters:
20474
20475 @table @option
20476 @item luma_msize_x, lx
20477 Set the luma matrix horizontal size.
20478 Range is @code{[1, 23]} and default value is @code{5}.
20479
20480 @item luma_msize_y, ly
20481 Set the luma matrix vertical size.
20482 Range is @code{[1, 23]} and default value is @code{5}.
20483
20484 @item luma_amount, la
20485 Set the luma effect strength.
20486 Range is @code{[-10, 10]} and default value is @code{1.0}.
20487
20488 Negative values will blur the input video, while positive values will
20489 sharpen it, a value of zero will disable the effect.
20490
20491 @item chroma_msize_x, cx
20492 Set the chroma matrix horizontal size.
20493 Range is @code{[1, 23]} and default value is @code{5}.
20494
20495 @item chroma_msize_y, cy
20496 Set the chroma matrix vertical size.
20497 Range is @code{[1, 23]} and default value is @code{5}.
20498
20499 @item chroma_amount, ca
20500 Set the chroma effect strength.
20501 Range is @code{[-10, 10]} and default value is @code{0.0}.
20502
20503 Negative values will blur the input video, while positive values will
20504 sharpen it, a value of zero will disable the effect.
20505
20506 @end table
20507
20508 All parameters are optional and default to the equivalent of the
20509 string '5:5:1.0:5:5:0.0'.
20510
20511 @subsection Examples
20512
20513 @itemize
20514 @item
20515 Apply strong luma sharpen effect:
20516 @example
20517 -i INPUT -vf "hwupload, unsharp_opencl=luma_msize_x=7:luma_msize_y=7:luma_amount=2.5, hwdownload" OUTPUT
20518 @end example
20519
20520 @item
20521 Apply a strong blur of both luma and chroma parameters:
20522 @example
20523 -i INPUT -vf "hwupload, unsharp_opencl=7:7:-2:7:7:-2, hwdownload" OUTPUT
20524 @end example
20525 @end itemize
20526
20527 @c man end OPENCL VIDEO FILTERS
20528
20529 @chapter Video Sources
20530 @c man begin VIDEO SOURCES
20531
20532 Below is a description of the currently available video sources.
20533
20534 @section buffer
20535
20536 Buffer video frames, and make them available to the filter chain.
20537
20538 This source is mainly intended for a programmatic use, in particular
20539 through the interface defined in @file{libavfilter/vsrc_buffer.h}.
20540
20541 It accepts the following parameters:
20542
20543 @table @option
20544
20545 @item video_size
20546 Specify the size (width and height) of the buffered video frames. For the
20547 syntax of this option, check the
20548 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
20549
20550 @item width
20551 The input video width.
20552
20553 @item height
20554 The input video height.
20555
20556 @item pix_fmt
20557 A string representing the pixel format of the buffered video frames.
20558 It may be a number corresponding to a pixel format, or a pixel format
20559 name.
20560
20561 @item time_base
20562 Specify the timebase assumed by the timestamps of the buffered frames.
20563
20564 @item frame_rate
20565 Specify the frame rate expected for the video stream.
20566
20567 @item pixel_aspect, sar
20568 The sample (pixel) aspect ratio of the input video.
20569
20570 @item sws_param
20571 Specify the optional parameters to be used for the scale filter which
20572 is automatically inserted when an input change is detected in the
20573 input size or format.
20574
20575 @item hw_frames_ctx
20576 When using a hardware pixel format, this should be a reference to an
20577 AVHWFramesContext describing input frames.
20578 @end table
20579
20580 For example:
20581 @example
20582 buffer=width=320:height=240:pix_fmt=yuv410p:time_base=1/24:sar=1
20583 @end example
20584
20585 will instruct the source to accept video frames with size 320x240 and
20586 with format "yuv410p", assuming 1/24 as the timestamps timebase and
20587 square pixels (1:1 sample aspect ratio).
20588 Since the pixel format with name "yuv410p" corresponds to the number 6
20589 (check the enum AVPixelFormat definition in @file{libavutil/pixfmt.h}),
20590 this example corresponds to:
20591 @example
20592 buffer=size=320x240:pixfmt=6:time_base=1/24:pixel_aspect=1/1
20593 @end example
20594
20595 Alternatively, the options can be specified as a flat string, but this
20596 syntax is deprecated:
20597
20598 @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}]
20599
20600 @section cellauto
20601
20602 Create a pattern generated by an elementary cellular automaton.
20603
20604 The initial state of the cellular automaton can be defined through the
20605 @option{filename} and @option{pattern} options. If such options are
20606 not specified an initial state is created randomly.
20607
20608 At each new frame a new row in the video is filled with the result of
20609 the cellular automaton next generation. The behavior when the whole
20610 frame is filled is defined by the @option{scroll} option.
20611
20612 This source accepts the following options:
20613
20614 @table @option
20615 @item filename, f
20616 Read the initial cellular automaton state, i.e. the starting row, from
20617 the specified file.
20618 In the file, each non-whitespace character is considered an alive
20619 cell, a newline will terminate the row, and further characters in the
20620 file will be ignored.
20621
20622 @item pattern, p
20623 Read the initial cellular automaton state, i.e. the starting row, from
20624 the specified string.
20625
20626 Each non-whitespace character in the string is considered an alive
20627 cell, a newline will terminate the row, and further characters in the
20628 string will be ignored.
20629
20630 @item rate, r
20631 Set the video rate, that is the number of frames generated per second.
20632 Default is 25.
20633
20634 @item random_fill_ratio, ratio
20635 Set the random fill ratio for the initial cellular automaton row. It
20636 is a floating point number value ranging from 0 to 1, defaults to
20637 1/PHI.
20638
20639 This option is ignored when a file or a pattern is specified.
20640
20641 @item random_seed, seed
20642 Set the seed for filling randomly the initial row, must be an integer
20643 included between 0 and UINT32_MAX. If not specified, or if explicitly
20644 set to -1, the filter will try to use a good random seed on a best
20645 effort basis.
20646
20647 @item rule
20648 Set the cellular automaton rule, it is a number ranging from 0 to 255.
20649 Default value is 110.
20650
20651 @item size, s
20652 Set the size of the output video. For the syntax of this option, check the
20653 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
20654
20655 If @option{filename} or @option{pattern} is specified, the size is set
20656 by default to the width of the specified initial state row, and the
20657 height is set to @var{width} * PHI.
20658
20659 If @option{size} is set, it must contain the width of the specified
20660 pattern string, and the specified pattern will be centered in the
20661 larger row.
20662
20663 If a filename or a pattern string is not specified, the size value
20664 defaults to "320x518" (used for a randomly generated initial state).
20665
20666 @item scroll
20667 If set to 1, scroll the output upward when all the rows in the output
20668 have been already filled. If set to 0, the new generated row will be
20669 written over the top row just after the bottom row is filled.
20670 Defaults to 1.
20671
20672 @item start_full, full
20673 If set to 1, completely fill the output with generated rows before
20674 outputting the first frame.
20675 This is the default behavior, for disabling set the value to 0.
20676
20677 @item stitch
20678 If set to 1, stitch the left and right row edges together.
20679 This is the default behavior, for disabling set the value to 0.
20680 @end table
20681
20682 @subsection Examples
20683
20684 @itemize
20685 @item
20686 Read the initial state from @file{pattern}, and specify an output of
20687 size 200x400.
20688 @example
20689 cellauto=f=pattern:s=200x400
20690 @end example
20691
20692 @item
20693 Generate a random initial row with a width of 200 cells, with a fill
20694 ratio of 2/3:
20695 @example
20696 cellauto=ratio=2/3:s=200x200
20697 @end example
20698
20699 @item
20700 Create a pattern generated by rule 18 starting by a single alive cell
20701 centered on an initial row with width 100:
20702 @example
20703 cellauto=p=@@:s=100x400:full=0:rule=18
20704 @end example
20705
20706 @item
20707 Specify a more elaborated initial pattern:
20708 @example
20709 cellauto=p='@@@@ @@ @@@@':s=100x400:full=0:rule=18
20710 @end example
20711
20712 @end itemize
20713
20714 @anchor{coreimagesrc}
20715 @section coreimagesrc
20716 Video source generated on GPU using Apple's CoreImage API on OSX.
20717
20718 This video source is a specialized version of the @ref{coreimage} video filter.
20719 Use a core image generator at the beginning of the applied filterchain to
20720 generate the content.
20721
20722 The coreimagesrc video source accepts the following options:
20723 @table @option
20724 @item list_generators
20725 List all available generators along with all their respective options as well as
20726 possible minimum and maximum values along with the default values.
20727 @example
20728 list_generators=true
20729 @end example
20730
20731 @item size, s
20732 Specify the size of the sourced video. For the syntax of this option, check the
20733 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
20734 The default value is @code{320x240}.
20735
20736 @item rate, r
20737 Specify the frame rate of the sourced video, as the number of frames
20738 generated per second. It has to be a string in the format
20739 @var{frame_rate_num}/@var{frame_rate_den}, an integer number, a floating point
20740 number or a valid video frame rate abbreviation. The default value is
20741 "25".
20742
20743 @item sar
20744 Set the sample aspect ratio of the sourced video.
20745
20746 @item duration, d
20747 Set the duration of the sourced video. See
20748 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
20749 for the accepted syntax.
20750
20751 If not specified, or the expressed duration is negative, the video is
20752 supposed to be generated forever.
20753 @end table
20754
20755 Additionally, all options of the @ref{coreimage} video filter are accepted.
20756 A complete filterchain can be used for further processing of the
20757 generated input without CPU-HOST transfer. See @ref{coreimage} documentation
20758 and examples for details.
20759
20760 @subsection Examples
20761
20762 @itemize
20763
20764 @item
20765 Use CIQRCodeGenerator to create a QR code for the FFmpeg homepage,
20766 given as complete and escaped command-line for Apple's standard bash shell:
20767 @example
20768 ffmpeg -f lavfi -i coreimagesrc=s=100x100:filter=CIQRCodeGenerator@@inputMessage=https\\\\\://FFmpeg.org/@@inputCorrectionLevel=H -frames:v 1 QRCode.png
20769 @end example
20770 This example is equivalent to the QRCode example of @ref{coreimage} without the
20771 need for a nullsrc video source.
20772 @end itemize
20773
20774
20775 @section mandelbrot
20776
20777 Generate a Mandelbrot set fractal, and progressively zoom towards the
20778 point specified with @var{start_x} and @var{start_y}.
20779
20780 This source accepts the following options:
20781
20782 @table @option
20783
20784 @item end_pts
20785 Set the terminal pts value. Default value is 400.
20786
20787 @item end_scale
20788 Set the terminal scale value.
20789 Must be a floating point value. Default value is 0.3.
20790
20791 @item inner
20792 Set the inner coloring mode, that is the algorithm used to draw the
20793 Mandelbrot fractal internal region.
20794
20795 It shall assume one of the following values:
20796 @table @option
20797 @item black
20798 Set black mode.
20799 @item convergence
20800 Show time until convergence.
20801 @item mincol
20802 Set color based on point closest to the origin of the iterations.
20803 @item period
20804 Set period mode.
20805 @end table
20806
20807 Default value is @var{mincol}.
20808
20809 @item bailout
20810 Set the bailout value. Default value is 10.0.
20811
20812 @item maxiter
20813 Set the maximum of iterations performed by the rendering
20814 algorithm. Default value is 7189.
20815
20816 @item outer
20817 Set outer coloring mode.
20818 It shall assume one of following values:
20819 @table @option
20820 @item iteration_count
20821 Set iteration count mode.
20822 @item normalized_iteration_count
20823 set normalized iteration count mode.
20824 @end table
20825 Default value is @var{normalized_iteration_count}.
20826
20827 @item rate, r
20828 Set frame rate, expressed as number of frames per second. Default
20829 value is "25".
20830
20831 @item size, s
20832 Set frame size. For the syntax of this option, check the @ref{video size syntax,,"Video
20833 size" section in the ffmpeg-utils manual,ffmpeg-utils}. Default value is "640x480".
20834
20835 @item start_scale
20836 Set the initial scale value. Default value is 3.0.
20837
20838 @item start_x
20839 Set the initial x position. Must be a floating point value between
20840 -100 and 100. Default value is -0.743643887037158704752191506114774.
20841
20842 @item start_y
20843 Set the initial y position. Must be a floating point value between
20844 -100 and 100. Default value is -0.131825904205311970493132056385139.
20845 @end table
20846
20847 @section mptestsrc
20848
20849 Generate various test patterns, as generated by the MPlayer test filter.
20850
20851 The size of the generated video is fixed, and is 256x256.
20852 This source is useful in particular for testing encoding features.
20853
20854 This source accepts the following options:
20855
20856 @table @option
20857
20858 @item rate, r
20859 Specify the frame rate of the sourced video, as the number of frames
20860 generated per second. It has to be a string in the format
20861 @var{frame_rate_num}/@var{frame_rate_den}, an integer number, a floating point
20862 number or a valid video frame rate abbreviation. The default value is
20863 "25".
20864
20865 @item duration, d
20866 Set the duration of the sourced video. See
20867 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
20868 for the accepted syntax.
20869
20870 If not specified, or the expressed duration is negative, the video is
20871 supposed to be generated forever.
20872
20873 @item test, t
20874
20875 Set the number or the name of the test to perform. Supported tests are:
20876 @table @option
20877 @item dc_luma
20878 @item dc_chroma
20879 @item freq_luma
20880 @item freq_chroma
20881 @item amp_luma
20882 @item amp_chroma
20883 @item cbp
20884 @item mv
20885 @item ring1
20886 @item ring2
20887 @item all
20888
20889 @end table
20890
20891 Default value is "all", which will cycle through the list of all tests.
20892 @end table
20893
20894 Some examples:
20895 @example
20896 mptestsrc=t=dc_luma
20897 @end example
20898
20899 will generate a "dc_luma" test pattern.
20900
20901 @section frei0r_src
20902
20903 Provide a frei0r source.
20904
20905 To enable compilation of this filter you need to install the frei0r
20906 header and configure FFmpeg with @code{--enable-frei0r}.
20907
20908 This source accepts the following parameters:
20909
20910 @table @option
20911
20912 @item size
20913 The size of the video to generate. For the syntax of this option, check the
20914 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
20915
20916 @item framerate
20917 The framerate of the generated video. It may be a string of the form
20918 @var{num}/@var{den} or a frame rate abbreviation.
20919
20920 @item filter_name
20921 The name to the frei0r source to load. For more information regarding frei0r and
20922 how to set the parameters, read the @ref{frei0r} section in the video filters
20923 documentation.
20924
20925 @item filter_params
20926 A '|'-separated list of parameters to pass to the frei0r source.
20927
20928 @end table
20929
20930 For example, to generate a frei0r partik0l source with size 200x200
20931 and frame rate 10 which is overlaid on the overlay filter main input:
20932 @example
20933 frei0r_src=size=200x200:framerate=10:filter_name=partik0l:filter_params=1234 [overlay]; [in][overlay] overlay
20934 @end example
20935
20936 @section life
20937
20938 Generate a life pattern.
20939
20940 This source is based on a generalization of John Conway's life game.
20941
20942 The sourced input represents a life grid, each pixel represents a cell
20943 which can be in one of two possible states, alive or dead. Every cell
20944 interacts with its eight neighbours, which are the cells that are
20945 horizontally, vertically, or diagonally adjacent.
20946
20947 At each interaction the grid evolves according to the adopted rule,
20948 which specifies the number of neighbor alive cells which will make a
20949 cell stay alive or born. The @option{rule} option allows one to specify
20950 the rule to adopt.
20951
20952 This source accepts the following options:
20953
20954 @table @option
20955 @item filename, f
20956 Set the file from which to read the initial grid state. In the file,
20957 each non-whitespace character is considered an alive cell, and newline
20958 is used to delimit the end of each row.
20959
20960 If this option is not specified, the initial grid is generated
20961 randomly.
20962
20963 @item rate, r
20964 Set the video rate, that is the number of frames generated per second.
20965 Default is 25.
20966
20967 @item random_fill_ratio, ratio
20968 Set the random fill ratio for the initial random grid. It is a
20969 floating point number value ranging from 0 to 1, defaults to 1/PHI.
20970 It is ignored when a file is specified.
20971
20972 @item random_seed, seed
20973 Set the seed for filling the initial random grid, must be an integer
20974 included between 0 and UINT32_MAX. If not specified, or if explicitly
20975 set to -1, the filter will try to use a good random seed on a best
20976 effort basis.
20977
20978 @item rule
20979 Set the life rule.
20980
20981 A rule can be specified with a code of the kind "S@var{NS}/B@var{NB}",
20982 where @var{NS} and @var{NB} are sequences of numbers in the range 0-8,
20983 @var{NS} specifies the number of alive neighbor cells which make a
20984 live cell stay alive, and @var{NB} the number of alive neighbor cells
20985 which make a dead cell to become alive (i.e. to "born").
20986 "s" and "b" can be used in place of "S" and "B", respectively.
20987
20988 Alternatively a rule can be specified by an 18-bits integer. The 9
20989 high order bits are used to encode the next cell state if it is alive
20990 for each number of neighbor alive cells, the low order bits specify
20991 the rule for "borning" new cells. Higher order bits encode for an
20992 higher number of neighbor cells.
20993 For example the number 6153 = @code{(12<<9)+9} specifies a stay alive
20994 rule of 12 and a born rule of 9, which corresponds to "S23/B03".
20995
20996 Default value is "S23/B3", which is the original Conway's game of life
20997 rule, and will keep a cell alive if it has 2 or 3 neighbor alive
20998 cells, and will born a new cell if there are three alive cells around
20999 a dead cell.
21000
21001 @item size, s
21002 Set the size of the output video. For the syntax of this option, check the
21003 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
21004
21005 If @option{filename} is specified, the size is set by default to the
21006 same size of the input file. If @option{size} is set, it must contain
21007 the size specified in the input file, and the initial grid defined in
21008 that file is centered in the larger resulting area.
21009
21010 If a filename is not specified, the size value defaults to "320x240"
21011 (used for a randomly generated initial grid).
21012
21013 @item stitch
21014 If set to 1, stitch the left and right grid edges together, and the
21015 top and bottom edges also. Defaults to 1.
21016
21017 @item mold
21018 Set cell mold speed. If set, a dead cell will go from @option{death_color} to
21019 @option{mold_color} with a step of @option{mold}. @option{mold} can have a
21020 value from 0 to 255.
21021
21022 @item life_color
21023 Set the color of living (or new born) cells.
21024
21025 @item death_color
21026 Set the color of dead cells. If @option{mold} is set, this is the first color
21027 used to represent a dead cell.
21028
21029 @item mold_color
21030 Set mold color, for definitely dead and moldy cells.
21031
21032 For the syntax of these 3 color options, check the @ref{color syntax,,"Color" section in the
21033 ffmpeg-utils manual,ffmpeg-utils}.
21034 @end table
21035
21036 @subsection Examples
21037
21038 @itemize
21039 @item
21040 Read a grid from @file{pattern}, and center it on a grid of size
21041 300x300 pixels:
21042 @example
21043 life=f=pattern:s=300x300
21044 @end example
21045
21046 @item
21047 Generate a random grid of size 200x200, with a fill ratio of 2/3:
21048 @example
21049 life=ratio=2/3:s=200x200
21050 @end example
21051
21052 @item
21053 Specify a custom rule for evolving a randomly generated grid:
21054 @example
21055 life=rule=S14/B34
21056 @end example
21057
21058 @item
21059 Full example with slow death effect (mold) using @command{ffplay}:
21060 @example
21061 ffplay -f lavfi life=s=300x200:mold=10:r=60:ratio=0.1:death_color=#C83232:life_color=#00ff00,scale=1200:800:flags=16
21062 @end example
21063 @end itemize
21064
21065 @anchor{allrgb}
21066 @anchor{allyuv}
21067 @anchor{color}
21068 @anchor{haldclutsrc}
21069 @anchor{nullsrc}
21070 @anchor{pal75bars}
21071 @anchor{pal100bars}
21072 @anchor{rgbtestsrc}
21073 @anchor{smptebars}
21074 @anchor{smptehdbars}
21075 @anchor{testsrc}
21076 @anchor{testsrc2}
21077 @anchor{yuvtestsrc}
21078 @section allrgb, allyuv, color, haldclutsrc, nullsrc, pal75bars, pal100bars, rgbtestsrc, smptebars, smptehdbars, testsrc, testsrc2, yuvtestsrc
21079
21080 The @code{allrgb} source returns frames of size 4096x4096 of all rgb colors.
21081
21082 The @code{allyuv} source returns frames of size 4096x4096 of all yuv colors.
21083
21084 The @code{color} source provides an uniformly colored input.
21085
21086 The @code{haldclutsrc} source provides an identity Hald CLUT. See also
21087 @ref{haldclut} filter.
21088
21089 The @code{nullsrc} source returns unprocessed video frames. It is
21090 mainly useful to be employed in analysis / debugging tools, or as the
21091 source for filters which ignore the input data.
21092
21093 The @code{pal75bars} source generates a color bars pattern, based on
21094 EBU PAL recommendations with 75% color levels.
21095
21096 The @code{pal100bars} source generates a color bars pattern, based on
21097 EBU PAL recommendations with 100% color levels.
21098
21099 The @code{rgbtestsrc} source generates an RGB test pattern useful for
21100 detecting RGB vs BGR issues. You should see a red, green and blue
21101 stripe from top to bottom.
21102
21103 The @code{smptebars} source generates a color bars pattern, based on
21104 the SMPTE Engineering Guideline EG 1-1990.
21105
21106 The @code{smptehdbars} source generates a color bars pattern, based on
21107 the SMPTE RP 219-2002.
21108
21109 The @code{testsrc} source generates a test video pattern, showing a
21110 color pattern, a scrolling gradient and a timestamp. This is mainly
21111 intended for testing purposes.
21112
21113 The @code{testsrc2} source is similar to testsrc, but supports more
21114 pixel formats instead of just @code{rgb24}. This allows using it as an
21115 input for other tests without requiring a format conversion.
21116
21117 The @code{yuvtestsrc} source generates an YUV test pattern. You should
21118 see a y, cb and cr stripe from top to bottom.
21119
21120 The sources accept the following parameters:
21121
21122 @table @option
21123
21124 @item level
21125 Specify the level of the Hald CLUT, only available in the @code{haldclutsrc}
21126 source. A level of @code{N} generates a picture of @code{N*N*N} by @code{N*N*N}
21127 pixels to be used as identity matrix for 3D lookup tables. Each component is
21128 coded on a @code{1/(N*N)} scale.
21129
21130 @item color, c
21131 Specify the color of the source, only available in the @code{color}
21132 source. For the syntax of this option, check the
21133 @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
21134
21135 @item size, s
21136 Specify the size of the sourced video. For the syntax of this option, check the
21137 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
21138 The default value is @code{320x240}.
21139
21140 This option is not available with the @code{allrgb}, @code{allyuv}, and
21141 @code{haldclutsrc} filters.
21142
21143 @item rate, r
21144 Specify the frame rate of the sourced video, as the number of frames
21145 generated per second. It has to be a string in the format
21146 @var{frame_rate_num}/@var{frame_rate_den}, an integer number, a floating point
21147 number or a valid video frame rate abbreviation. The default value is
21148 "25".
21149
21150 @item duration, d
21151 Set the duration of the sourced video. See
21152 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
21153 for the accepted syntax.
21154
21155 If not specified, or the expressed duration is negative, the video is
21156 supposed to be generated forever.
21157
21158 @item sar
21159 Set the sample aspect ratio of the sourced video.
21160
21161 @item alpha
21162 Specify the alpha (opacity) of the background, only available in the
21163 @code{testsrc2} source. The value must be between 0 (fully transparent) and
21164 255 (fully opaque, the default).
21165
21166 @item decimals, n
21167 Set the number of decimals to show in the timestamp, only available in the
21168 @code{testsrc} source.
21169
21170 The displayed timestamp value will correspond to the original
21171 timestamp value multiplied by the power of 10 of the specified
21172 value. Default value is 0.
21173 @end table
21174
21175 @subsection Examples
21176
21177 @itemize
21178 @item
21179 Generate a video with a duration of 5.3 seconds, with size
21180 176x144 and a frame rate of 10 frames per second:
21181 @example
21182 testsrc=duration=5.3:size=qcif:rate=10
21183 @end example
21184
21185 @item
21186 The following graph description will generate a red source
21187 with an opacity of 0.2, with size "qcif" and a frame rate of 10
21188 frames per second:
21189 @example
21190 color=c=red@@0.2:s=qcif:r=10
21191 @end example
21192
21193 @item
21194 If the input content is to be ignored, @code{nullsrc} can be used. The
21195 following command generates noise in the luminance plane by employing
21196 the @code{geq} filter:
21197 @example
21198 nullsrc=s=256x256, geq=random(1)*255:128:128
21199 @end example
21200 @end itemize
21201
21202 @subsection Commands
21203
21204 The @code{color} source supports the following commands:
21205
21206 @table @option
21207 @item c, color
21208 Set the color of the created image. Accepts the same syntax of the
21209 corresponding @option{color} option.
21210 @end table
21211
21212 @section openclsrc
21213
21214 Generate video using an OpenCL program.
21215
21216 @table @option
21217
21218 @item source
21219 OpenCL program source file.
21220
21221 @item kernel
21222 Kernel name in program.
21223
21224 @item size, s
21225 Size of frames to generate.  This must be set.
21226
21227 @item format
21228 Pixel format to use for the generated frames.  This must be set.
21229
21230 @item rate, r
21231 Number of frames generated every second.  Default value is '25'.
21232
21233 @end table
21234
21235 For details of how the program loading works, see the @ref{program_opencl}
21236 filter.
21237
21238 Example programs:
21239
21240 @itemize
21241 @item
21242 Generate a colour ramp by setting pixel values from the position of the pixel
21243 in the output image.  (Note that this will work with all pixel formats, but
21244 the generated output will not be the same.)
21245 @verbatim
21246 __kernel void ramp(__write_only image2d_t dst,
21247                    unsigned int index)
21248 {
21249     int2 loc = (int2)(get_global_id(0), get_global_id(1));
21250
21251     float4 val;
21252     val.xy = val.zw = convert_float2(loc) / convert_float2(get_image_dim(dst));
21253
21254     write_imagef(dst, loc, val);
21255 }
21256 @end verbatim
21257
21258 @item
21259 Generate a Sierpinski carpet pattern, panning by a single pixel each frame.
21260 @verbatim
21261 __kernel void sierpinski_carpet(__write_only image2d_t dst,
21262                                 unsigned int index)
21263 {
21264     int2 loc = (int2)(get_global_id(0), get_global_id(1));
21265
21266     float4 value = 0.0f;
21267     int x = loc.x + index;
21268     int y = loc.y + index;
21269     while (x > 0 || y > 0) {
21270         if (x % 3 == 1 && y % 3 == 1) {
21271             value = 1.0f;
21272             break;
21273         }
21274         x /= 3;
21275         y /= 3;
21276     }
21277
21278     write_imagef(dst, loc, value);
21279 }
21280 @end verbatim
21281
21282 @end itemize
21283
21284 @section sierpinski
21285
21286 Generate a Sierpinski carpet/triangle fractal, and randomly pan around.
21287
21288 This source accepts the following options:
21289
21290 @table @option
21291 @item size, s
21292 Set frame size. For the syntax of this option, check the @ref{video size syntax,,"Video
21293 size" section in the ffmpeg-utils manual,ffmpeg-utils}. Default value is "640x480".
21294
21295 @item rate, r
21296 Set frame rate, expressed as number of frames per second. Default
21297 value is "25".
21298
21299 @item seed
21300 Set seed which is used for random panning.
21301
21302 @item jump
21303 Set max jump for single pan destination. Allowed range is from 1 to 10000.
21304
21305 @item type
21306 Set fractal type, can be default @code{carpet} or @code{triangle}.
21307 @end table
21308
21309 @c man end VIDEO SOURCES
21310
21311 @chapter Video Sinks
21312 @c man begin VIDEO SINKS
21313
21314 Below is a description of the currently available video sinks.
21315
21316 @section buffersink
21317
21318 Buffer video frames, and make them available to the end of the filter
21319 graph.
21320
21321 This sink is mainly intended for programmatic use, in particular
21322 through the interface defined in @file{libavfilter/buffersink.h}
21323 or the options system.
21324
21325 It accepts a pointer to an AVBufferSinkContext structure, which
21326 defines the incoming buffers' formats, to be passed as the opaque
21327 parameter to @code{avfilter_init_filter} for initialization.
21328
21329 @section nullsink
21330
21331 Null video sink: do absolutely nothing with the input video. It is
21332 mainly useful as a template and for use in analysis / debugging
21333 tools.
21334
21335 @c man end VIDEO SINKS
21336
21337 @chapter Multimedia Filters
21338 @c man begin MULTIMEDIA FILTERS
21339
21340 Below is a description of the currently available multimedia filters.
21341
21342 @section abitscope
21343
21344 Convert input audio to a video output, displaying the audio bit scope.
21345
21346 The filter accepts the following options:
21347
21348 @table @option
21349 @item rate, r
21350 Set frame rate, expressed as number of frames per second. Default
21351 value is "25".
21352
21353 @item size, s
21354 Specify the video size for the output. For the syntax of this option, check the
21355 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
21356 Default value is @code{1024x256}.
21357
21358 @item colors
21359 Specify list of colors separated by space or by '|' which will be used to
21360 draw channels. Unrecognized or missing colors will be replaced
21361 by white color.
21362 @end table
21363
21364 @section ahistogram
21365
21366 Convert input audio to a video output, displaying the volume histogram.
21367
21368 The filter accepts the following options:
21369
21370 @table @option
21371 @item dmode
21372 Specify how histogram is calculated.
21373
21374 It accepts the following values:
21375 @table @samp
21376 @item single
21377 Use single histogram for all channels.
21378 @item separate
21379 Use separate histogram for each channel.
21380 @end table
21381 Default is @code{single}.
21382
21383 @item rate, r
21384 Set frame rate, expressed as number of frames per second. Default
21385 value is "25".
21386
21387 @item size, s
21388 Specify the video size for the output. For the syntax of this option, check the
21389 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
21390 Default value is @code{hd720}.
21391
21392 @item scale
21393 Set display scale.
21394
21395 It accepts the following values:
21396 @table @samp
21397 @item log
21398 logarithmic
21399 @item sqrt
21400 square root
21401 @item cbrt
21402 cubic root
21403 @item lin
21404 linear
21405 @item rlog
21406 reverse logarithmic
21407 @end table
21408 Default is @code{log}.
21409
21410 @item ascale
21411 Set amplitude scale.
21412
21413 It accepts the following values:
21414 @table @samp
21415 @item log
21416 logarithmic
21417 @item lin
21418 linear
21419 @end table
21420 Default is @code{log}.
21421
21422 @item acount
21423 Set how much frames to accumulate in histogram.
21424 Default is 1. Setting this to -1 accumulates all frames.
21425
21426 @item rheight
21427 Set histogram ratio of window height.
21428
21429 @item slide
21430 Set sonogram sliding.
21431
21432 It accepts the following values:
21433 @table @samp
21434 @item replace
21435 replace old rows with new ones.
21436 @item scroll
21437 scroll from top to bottom.
21438 @end table
21439 Default is @code{replace}.
21440 @end table
21441
21442 @section aphasemeter
21443
21444 Measures phase of input audio, which is exported as metadata @code{lavfi.aphasemeter.phase},
21445 representing mean phase of current audio frame. A video output can also be produced and is
21446 enabled by default. The audio is passed through as first output.
21447
21448 Audio will be rematrixed to stereo if it has a different channel layout. Phase value is in
21449 range @code{[-1, 1]} where @code{-1} means left and right channels are completely out of phase
21450 and @code{1} means channels are in phase.
21451
21452 The filter accepts the following options, all related to its video output:
21453
21454 @table @option
21455 @item rate, r
21456 Set the output frame rate. Default value is @code{25}.
21457
21458 @item size, s
21459 Set the video size for the output. For the syntax of this option, check the
21460 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
21461 Default value is @code{800x400}.
21462
21463 @item rc
21464 @item gc
21465 @item bc
21466 Specify the red, green, blue contrast. Default values are @code{2},
21467 @code{7} and @code{1}.
21468 Allowed range is @code{[0, 255]}.
21469
21470 @item mpc
21471 Set color which will be used for drawing median phase. If color is
21472 @code{none} which is default, no median phase value will be drawn.
21473
21474 @item video
21475 Enable video output. Default is enabled.
21476 @end table
21477
21478 @section avectorscope
21479
21480 Convert input audio to a video output, representing the audio vector
21481 scope.
21482
21483 The filter is used to measure the difference between channels of stereo
21484 audio stream. A monaural signal, consisting of identical left and right
21485 signal, results in straight vertical line. Any stereo separation is visible
21486 as a deviation from this line, creating a Lissajous figure.
21487 If the straight (or deviation from it) but horizontal line appears this
21488 indicates that the left and right channels are out of phase.
21489
21490 The filter accepts the following options:
21491
21492 @table @option
21493 @item mode, m
21494 Set the vectorscope mode.
21495
21496 Available values are:
21497 @table @samp
21498 @item lissajous
21499 Lissajous rotated by 45 degrees.
21500
21501 @item lissajous_xy
21502 Same as above but not rotated.
21503
21504 @item polar
21505 Shape resembling half of circle.
21506 @end table
21507
21508 Default value is @samp{lissajous}.
21509
21510 @item size, s
21511 Set the video size for the output. For the syntax of this option, check the
21512 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
21513 Default value is @code{400x400}.
21514
21515 @item rate, r
21516 Set the output frame rate. Default value is @code{25}.
21517
21518 @item rc
21519 @item gc
21520 @item bc
21521 @item ac
21522 Specify the red, green, blue and alpha contrast. Default values are @code{40},
21523 @code{160}, @code{80} and @code{255}.
21524 Allowed range is @code{[0, 255]}.
21525
21526 @item rf
21527 @item gf
21528 @item bf
21529 @item af
21530 Specify the red, green, blue and alpha fade. Default values are @code{15},
21531 @code{10}, @code{5} and @code{5}.
21532 Allowed range is @code{[0, 255]}.
21533
21534 @item zoom
21535 Set the zoom factor. Default value is @code{1}. Allowed range is @code{[0, 10]}.
21536 Values lower than @var{1} will auto adjust zoom factor to maximal possible value.
21537
21538 @item draw
21539 Set the vectorscope drawing mode.
21540
21541 Available values are:
21542 @table @samp
21543 @item dot
21544 Draw dot for each sample.
21545
21546 @item line
21547 Draw line between previous and current sample.
21548 @end table
21549
21550 Default value is @samp{dot}.
21551
21552 @item scale
21553 Specify amplitude scale of audio samples.
21554
21555 Available values are:
21556 @table @samp
21557 @item lin
21558 Linear.
21559
21560 @item sqrt
21561 Square root.
21562
21563 @item cbrt
21564 Cubic root.
21565
21566 @item log
21567 Logarithmic.
21568 @end table
21569
21570 @item swap
21571 Swap left channel axis with right channel axis.
21572
21573 @item mirror
21574 Mirror axis.
21575
21576 @table @samp
21577 @item none
21578 No mirror.
21579
21580 @item x
21581 Mirror only x axis.
21582
21583 @item y
21584 Mirror only y axis.
21585
21586 @item xy
21587 Mirror both axis.
21588 @end table
21589
21590 @end table
21591
21592 @subsection Examples
21593
21594 @itemize
21595 @item
21596 Complete example using @command{ffplay}:
21597 @example
21598 ffplay -f lavfi 'amovie=input.mp3, asplit [a][out1];
21599              [a] avectorscope=zoom=1.3:rc=2:gc=200:bc=10:rf=1:gf=8:bf=7 [out0]'
21600 @end example
21601 @end itemize
21602
21603 @section bench, abench
21604
21605 Benchmark part of a filtergraph.
21606
21607 The filter accepts the following options:
21608
21609 @table @option
21610 @item action
21611 Start or stop a timer.
21612
21613 Available values are:
21614 @table @samp
21615 @item start
21616 Get the current time, set it as frame metadata (using the key
21617 @code{lavfi.bench.start_time}), and forward the frame to the next filter.
21618
21619 @item stop
21620 Get the current time and fetch the @code{lavfi.bench.start_time} metadata from
21621 the input frame metadata to get the time difference. Time difference, average,
21622 maximum and minimum time (respectively @code{t}, @code{avg}, @code{max} and
21623 @code{min}) are then printed. The timestamps are expressed in seconds.
21624 @end table
21625 @end table
21626
21627 @subsection Examples
21628
21629 @itemize
21630 @item
21631 Benchmark @ref{selectivecolor} filter:
21632 @example
21633 bench=start,selectivecolor=reds=-.2 .12 -.49,bench=stop
21634 @end example
21635 @end itemize
21636
21637 @section concat
21638
21639 Concatenate audio and video streams, joining them together one after the
21640 other.
21641
21642 The filter works on segments of synchronized video and audio streams. All
21643 segments must have the same number of streams of each type, and that will
21644 also be the number of streams at output.
21645
21646 The filter accepts the following options:
21647
21648 @table @option
21649
21650 @item n
21651 Set the number of segments. Default is 2.
21652
21653 @item v
21654 Set the number of output video streams, that is also the number of video
21655 streams in each segment. Default is 1.
21656
21657 @item a
21658 Set the number of output audio streams, that is also the number of audio
21659 streams in each segment. Default is 0.
21660
21661 @item unsafe
21662 Activate unsafe mode: do not fail if segments have a different format.
21663
21664 @end table
21665
21666 The filter has @var{v}+@var{a} outputs: first @var{v} video outputs, then
21667 @var{a} audio outputs.
21668
21669 There are @var{n}x(@var{v}+@var{a}) inputs: first the inputs for the first
21670 segment, in the same order as the outputs, then the inputs for the second
21671 segment, etc.
21672
21673 Related streams do not always have exactly the same duration, for various
21674 reasons including codec frame size or sloppy authoring. For that reason,
21675 related synchronized streams (e.g. a video and its audio track) should be
21676 concatenated at once. The concat filter will use the duration of the longest
21677 stream in each segment (except the last one), and if necessary pad shorter
21678 audio streams with silence.
21679
21680 For this filter to work correctly, all segments must start at timestamp 0.
21681
21682 All corresponding streams must have the same parameters in all segments; the
21683 filtering system will automatically select a common pixel format for video
21684 streams, and a common sample format, sample rate and channel layout for
21685 audio streams, but other settings, such as resolution, must be converted
21686 explicitly by the user.
21687
21688 Different frame rates are acceptable but will result in variable frame rate
21689 at output; be sure to configure the output file to handle it.
21690
21691 @subsection Examples
21692
21693 @itemize
21694 @item
21695 Concatenate an opening, an episode and an ending, all in bilingual version
21696 (video in stream 0, audio in streams 1 and 2):
21697 @example
21698 ffmpeg -i opening.mkv -i episode.mkv -i ending.mkv -filter_complex \
21699   '[0:0] [0:1] [0:2] [1:0] [1:1] [1:2] [2:0] [2:1] [2:2]
21700    concat=n=3:v=1:a=2 [v] [a1] [a2]' \
21701   -map '[v]' -map '[a1]' -map '[a2]' output.mkv
21702 @end example
21703
21704 @item
21705 Concatenate two parts, handling audio and video separately, using the
21706 (a)movie sources, and adjusting the resolution:
21707 @example
21708 movie=part1.mp4, scale=512:288 [v1] ; amovie=part1.mp4 [a1] ;
21709 movie=part2.mp4, scale=512:288 [v2] ; amovie=part2.mp4 [a2] ;
21710 [v1] [v2] concat [outv] ; [a1] [a2] concat=v=0:a=1 [outa]
21711 @end example
21712 Note that a desync will happen at the stitch if the audio and video streams
21713 do not have exactly the same duration in the first file.
21714
21715 @end itemize
21716
21717 @subsection Commands
21718
21719 This filter supports the following commands:
21720 @table @option
21721 @item next
21722 Close the current segment and step to the next one
21723 @end table
21724
21725 @section drawgraph, adrawgraph
21726
21727 Draw a graph using input video or audio metadata.
21728
21729 It accepts the following parameters:
21730
21731 @table @option
21732 @item m1
21733 Set 1st frame metadata key from which metadata values will be used to draw a graph.
21734
21735 @item fg1
21736 Set 1st foreground color expression.
21737
21738 @item m2
21739 Set 2nd frame metadata key from which metadata values will be used to draw a graph.
21740
21741 @item fg2
21742 Set 2nd foreground color expression.
21743
21744 @item m3
21745 Set 3rd frame metadata key from which metadata values will be used to draw a graph.
21746
21747 @item fg3
21748 Set 3rd foreground color expression.
21749
21750 @item m4
21751 Set 4th frame metadata key from which metadata values will be used to draw a graph.
21752
21753 @item fg4
21754 Set 4th foreground color expression.
21755
21756 @item min
21757 Set minimal value of metadata value.
21758
21759 @item max
21760 Set maximal value of metadata value.
21761
21762 @item bg
21763 Set graph background color. Default is white.
21764
21765 @item mode
21766 Set graph mode.
21767
21768 Available values for mode is:
21769 @table @samp
21770 @item bar
21771 @item dot
21772 @item line
21773 @end table
21774
21775 Default is @code{line}.
21776
21777 @item slide
21778 Set slide mode.
21779
21780 Available values for slide is:
21781 @table @samp
21782 @item frame
21783 Draw new frame when right border is reached.
21784
21785 @item replace
21786 Replace old columns with new ones.
21787
21788 @item scroll
21789 Scroll from right to left.
21790
21791 @item rscroll
21792 Scroll from left to right.
21793
21794 @item picture
21795 Draw single picture.
21796 @end table
21797
21798 Default is @code{frame}.
21799
21800 @item size
21801 Set size of graph video. For the syntax of this option, check the
21802 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
21803 The default value is @code{900x256}.
21804
21805 The foreground color expressions can use the following variables:
21806 @table @option
21807 @item MIN
21808 Minimal value of metadata value.
21809
21810 @item MAX
21811 Maximal value of metadata value.
21812
21813 @item VAL
21814 Current metadata key value.
21815 @end table
21816
21817 The color is defined as 0xAABBGGRR.
21818 @end table
21819
21820 Example using metadata from @ref{signalstats} filter:
21821 @example
21822 signalstats,drawgraph=lavfi.signalstats.YAVG:min=0:max=255
21823 @end example
21824
21825 Example using metadata from @ref{ebur128} filter:
21826 @example
21827 ebur128=metadata=1,adrawgraph=lavfi.r128.M:min=-120:max=5
21828 @end example
21829
21830 @anchor{ebur128}
21831 @section ebur128
21832
21833 EBU R128 scanner filter. This filter takes an audio stream and analyzes its loudness
21834 level. By default, it logs a message at a frequency of 10Hz with the
21835 Momentary loudness (identified by @code{M}), Short-term loudness (@code{S}),
21836 Integrated loudness (@code{I}) and Loudness Range (@code{LRA}).
21837
21838 The filter can only analyze streams which have a sampling rate of 48000 Hz and whose
21839 sample format is double-precision floating point. The input stream will be converted to
21840 this specification, if needed. Users may need to insert aformat and/or aresample filters
21841 after this filter to obtain the original parameters.
21842
21843 The filter also has a video output (see the @var{video} option) with a real
21844 time graph to observe the loudness evolution. The graphic contains the logged
21845 message mentioned above, so it is not printed anymore when this option is set,
21846 unless the verbose logging is set. The main graphing area contains the
21847 short-term loudness (3 seconds of analysis), and the gauge on the right is for
21848 the momentary loudness (400 milliseconds), but can optionally be configured
21849 to instead display short-term loudness (see @var{gauge}).
21850
21851 The green area marks a  +/- 1LU target range around the target loudness
21852 (-23LUFS by default, unless modified through @var{target}).
21853
21854 More information about the Loudness Recommendation EBU R128 on
21855 @url{http://tech.ebu.ch/loudness}.
21856
21857 The filter accepts the following options:
21858
21859 @table @option
21860
21861 @item video
21862 Activate the video output. The audio stream is passed unchanged whether this
21863 option is set or no. The video stream will be the first output stream if
21864 activated. Default is @code{0}.
21865
21866 @item size
21867 Set the video size. This option is for video only. For the syntax of this
21868 option, check the
21869 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
21870 Default and minimum resolution is @code{640x480}.
21871
21872 @item meter
21873 Set the EBU scale meter. Default is @code{9}. Common values are @code{9} and
21874 @code{18}, respectively for EBU scale meter +9 and EBU scale meter +18. Any
21875 other integer value between this range is allowed.
21876
21877 @item metadata
21878 Set metadata injection. If set to @code{1}, the audio input will be segmented
21879 into 100ms output frames, each of them containing various loudness information
21880 in metadata.  All the metadata keys are prefixed with @code{lavfi.r128.}.
21881
21882 Default is @code{0}.
21883
21884 @item framelog
21885 Force the frame logging level.
21886
21887 Available values are:
21888 @table @samp
21889 @item info
21890 information logging level
21891 @item verbose
21892 verbose logging level
21893 @end table
21894
21895 By default, the logging level is set to @var{info}. If the @option{video} or
21896 the @option{metadata} options are set, it switches to @var{verbose}.
21897
21898 @item peak
21899 Set peak mode(s).
21900
21901 Available modes can be cumulated (the option is a @code{flag} type). Possible
21902 values are:
21903 @table @samp
21904 @item none
21905 Disable any peak mode (default).
21906 @item sample
21907 Enable sample-peak mode.
21908
21909 Simple peak mode looking for the higher sample value. It logs a message
21910 for sample-peak (identified by @code{SPK}).
21911 @item true
21912 Enable true-peak mode.
21913
21914 If enabled, the peak lookup is done on an over-sampled version of the input
21915 stream for better peak accuracy. It logs a message for true-peak.
21916 (identified by @code{TPK}) and true-peak per frame (identified by @code{FTPK}).
21917 This mode requires a build with @code{libswresample}.
21918 @end table
21919
21920 @item dualmono
21921 Treat mono input files as "dual mono". If a mono file is intended for playback
21922 on a stereo system, its EBU R128 measurement will be perceptually incorrect.
21923 If set to @code{true}, this option will compensate for this effect.
21924 Multi-channel input files are not affected by this option.
21925
21926 @item panlaw
21927 Set a specific pan law to be used for the measurement of dual mono files.
21928 This parameter is optional, and has a default value of -3.01dB.
21929
21930 @item target
21931 Set a specific target level (in LUFS) used as relative zero in the visualization.
21932 This parameter is optional and has a default value of -23LUFS as specified
21933 by EBU R128. However, material published online may prefer a level of -16LUFS
21934 (e.g. for use with podcasts or video platforms).
21935
21936 @item gauge
21937 Set the value displayed by the gauge. Valid values are @code{momentary} and s
21938 @code{shortterm}. By default the momentary value will be used, but in certain
21939 scenarios it may be more useful to observe the short term value instead (e.g.
21940 live mixing).
21941
21942 @item scale
21943 Sets the display scale for the loudness. Valid parameters are @code{absolute}
21944 (in LUFS) or @code{relative} (LU) relative to the target. This only affects the
21945 video output, not the summary or continuous log output.
21946 @end table
21947
21948 @subsection Examples
21949
21950 @itemize
21951 @item
21952 Real-time graph using @command{ffplay}, with a EBU scale meter +18:
21953 @example
21954 ffplay -f lavfi -i "amovie=input.mp3,ebur128=video=1:meter=18 [out0][out1]"
21955 @end example
21956
21957 @item
21958 Run an analysis with @command{ffmpeg}:
21959 @example
21960 ffmpeg -nostats -i input.mp3 -filter_complex ebur128 -f null -
21961 @end example
21962 @end itemize
21963
21964 @section interleave, ainterleave
21965
21966 Temporally interleave frames from several inputs.
21967
21968 @code{interleave} works with video inputs, @code{ainterleave} with audio.
21969
21970 These filters read frames from several inputs and send the oldest
21971 queued frame to the output.
21972
21973 Input streams must have well defined, monotonically increasing frame
21974 timestamp values.
21975
21976 In order to submit one frame to output, these filters need to enqueue
21977 at least one frame for each input, so they cannot work in case one
21978 input is not yet terminated and will not receive incoming frames.
21979
21980 For example consider the case when one input is a @code{select} filter
21981 which always drops input frames. The @code{interleave} filter will keep
21982 reading from that input, but it will never be able to send new frames
21983 to output until the input sends an end-of-stream signal.
21984
21985 Also, depending on inputs synchronization, the filters will drop
21986 frames in case one input receives more frames than the other ones, and
21987 the queue is already filled.
21988
21989 These filters accept the following options:
21990
21991 @table @option
21992 @item nb_inputs, n
21993 Set the number of different inputs, it is 2 by default.
21994 @end table
21995
21996 @subsection Examples
21997
21998 @itemize
21999 @item
22000 Interleave frames belonging to different streams using @command{ffmpeg}:
22001 @example
22002 ffmpeg -i bambi.avi -i pr0n.mkv -filter_complex "[0:v][1:v] interleave" out.avi
22003 @end example
22004
22005 @item
22006 Add flickering blur effect:
22007 @example
22008 select='if(gt(random(0), 0.2), 1, 2)':n=2 [tmp], boxblur=2:2, [tmp] interleave
22009 @end example
22010 @end itemize
22011
22012 @section metadata, ametadata
22013
22014 Manipulate frame metadata.
22015
22016 This filter accepts the following options:
22017
22018 @table @option
22019 @item mode
22020 Set mode of operation of the filter.
22021
22022 Can be one of the following:
22023
22024 @table @samp
22025 @item select
22026 If both @code{value} and @code{key} is set, select frames
22027 which have such metadata. If only @code{key} is set, select
22028 every frame that has such key in metadata.
22029
22030 @item add
22031 Add new metadata @code{key} and @code{value}. If key is already available
22032 do nothing.
22033
22034 @item modify
22035 Modify value of already present key.
22036
22037 @item delete
22038 If @code{value} is set, delete only keys that have such value.
22039 Otherwise, delete key. If @code{key} is not set, delete all metadata values in
22040 the frame.
22041
22042 @item print
22043 Print key and its value if metadata was found. If @code{key} is not set print all
22044 metadata values available in frame.
22045 @end table
22046
22047 @item key
22048 Set key used with all modes. Must be set for all modes except @code{print} and @code{delete}.
22049
22050 @item value
22051 Set metadata value which will be used. This option is mandatory for
22052 @code{modify} and @code{add} mode.
22053
22054 @item function
22055 Which function to use when comparing metadata value and @code{value}.
22056
22057 Can be one of following:
22058
22059 @table @samp
22060 @item same_str
22061 Values are interpreted as strings, returns true if metadata value is same as @code{value}.
22062
22063 @item starts_with
22064 Values are interpreted as strings, returns true if metadata value starts with
22065 the @code{value} option string.
22066
22067 @item less
22068 Values are interpreted as floats, returns true if metadata value is less than @code{value}.
22069
22070 @item equal
22071 Values are interpreted as floats, returns true if @code{value} is equal with metadata value.
22072
22073 @item greater
22074 Values are interpreted as floats, returns true if metadata value is greater than @code{value}.
22075
22076 @item expr
22077 Values are interpreted as floats, returns true if expression from option @code{expr}
22078 evaluates to true.
22079
22080 @item ends_with
22081 Values are interpreted as strings, returns true if metadata value ends with
22082 the @code{value} option string.
22083 @end table
22084
22085 @item expr
22086 Set expression which is used when @code{function} is set to @code{expr}.
22087 The expression is evaluated through the eval API and can contain the following
22088 constants:
22089
22090 @table @option
22091 @item VALUE1
22092 Float representation of @code{value} from metadata key.
22093
22094 @item VALUE2
22095 Float representation of @code{value} as supplied by user in @code{value} option.
22096 @end table
22097
22098 @item file
22099 If specified in @code{print} mode, output is written to the named file. Instead of
22100 plain filename any writable url can be specified. Filename ``-'' is a shorthand
22101 for standard output. If @code{file} option is not set, output is written to the log
22102 with AV_LOG_INFO loglevel.
22103
22104 @end table
22105
22106 @subsection Examples
22107
22108 @itemize
22109 @item
22110 Print all metadata values for frames with key @code{lavfi.signalstats.YDIF} with values
22111 between 0 and 1.
22112 @example
22113 signalstats,metadata=print:key=lavfi.signalstats.YDIF:value=0:function=expr:expr='between(VALUE1,0,1)'
22114 @end example
22115 @item
22116 Print silencedetect output to file @file{metadata.txt}.
22117 @example
22118 silencedetect,ametadata=mode=print:file=metadata.txt
22119 @end example
22120 @item
22121 Direct all metadata to a pipe with file descriptor 4.
22122 @example
22123 metadata=mode=print:file='pipe\:4'
22124 @end example
22125 @end itemize
22126
22127 @section perms, aperms
22128
22129 Set read/write permissions for the output frames.
22130
22131 These filters are mainly aimed at developers to test direct path in the
22132 following filter in the filtergraph.
22133
22134 The filters accept the following options:
22135
22136 @table @option
22137 @item mode
22138 Select the permissions mode.
22139
22140 It accepts the following values:
22141 @table @samp
22142 @item none
22143 Do nothing. This is the default.
22144 @item ro
22145 Set all the output frames read-only.
22146 @item rw
22147 Set all the output frames directly writable.
22148 @item toggle
22149 Make the frame read-only if writable, and writable if read-only.
22150 @item random
22151 Set each output frame read-only or writable randomly.
22152 @end table
22153
22154 @item seed
22155 Set the seed for the @var{random} mode, must be an integer included between
22156 @code{0} and @code{UINT32_MAX}. If not specified, or if explicitly set to
22157 @code{-1}, the filter will try to use a good random seed on a best effort
22158 basis.
22159 @end table
22160
22161 Note: in case of auto-inserted filter between the permission filter and the
22162 following one, the permission might not be received as expected in that
22163 following filter. Inserting a @ref{format} or @ref{aformat} filter before the
22164 perms/aperms filter can avoid this problem.
22165
22166 @section realtime, arealtime
22167
22168 Slow down filtering to match real time approximately.
22169
22170 These filters will pause the filtering for a variable amount of time to
22171 match the output rate with the input timestamps.
22172 They are similar to the @option{re} option to @code{ffmpeg}.
22173
22174 They accept the following options:
22175
22176 @table @option
22177 @item limit
22178 Time limit for the pauses. Any pause longer than that will be considered
22179 a timestamp discontinuity and reset the timer. Default is 2 seconds.
22180 @item speed
22181 Speed factor for processing. The value must be a float larger than zero.
22182 Values larger than 1.0 will result in faster than realtime processing,
22183 smaller will slow processing down. The @var{limit} is automatically adapted
22184 accordingly. Default is 1.0.
22185
22186 A processing speed faster than what is possible without these filters cannot
22187 be achieved.
22188 @end table
22189
22190 @anchor{select}
22191 @section select, aselect
22192
22193 Select frames to pass in output.
22194
22195 This filter accepts the following options:
22196
22197 @table @option
22198
22199 @item expr, e
22200 Set expression, which is evaluated for each input frame.
22201
22202 If the expression is evaluated to zero, the frame is discarded.
22203
22204 If the evaluation result is negative or NaN, the frame is sent to the
22205 first output; otherwise it is sent to the output with index
22206 @code{ceil(val)-1}, assuming that the input index starts from 0.
22207
22208 For example a value of @code{1.2} corresponds to the output with index
22209 @code{ceil(1.2)-1 = 2-1 = 1}, that is the second output.
22210
22211 @item outputs, n
22212 Set the number of outputs. The output to which to send the selected
22213 frame is based on the result of the evaluation. Default value is 1.
22214 @end table
22215
22216 The expression can contain the following constants:
22217
22218 @table @option
22219 @item n
22220 The (sequential) number of the filtered frame, starting from 0.
22221
22222 @item selected_n
22223 The (sequential) number of the selected frame, starting from 0.
22224
22225 @item prev_selected_n
22226 The sequential number of the last selected frame. It's NAN if undefined.
22227
22228 @item TB
22229 The timebase of the input timestamps.
22230
22231 @item pts
22232 The PTS (Presentation TimeStamp) of the filtered video frame,
22233 expressed in @var{TB} units. It's NAN if undefined.
22234
22235 @item t
22236 The PTS of the filtered video frame,
22237 expressed in seconds. It's NAN if undefined.
22238
22239 @item prev_pts
22240 The PTS of the previously filtered video frame. It's NAN if undefined.
22241
22242 @item prev_selected_pts
22243 The PTS of the last previously filtered video frame. It's NAN if undefined.
22244
22245 @item prev_selected_t
22246 The PTS of the last previously selected video frame, expressed in seconds. It's NAN if undefined.
22247
22248 @item start_pts
22249 The PTS of the first video frame in the video. It's NAN if undefined.
22250
22251 @item start_t
22252 The time of the first video frame in the video. It's NAN if undefined.
22253
22254 @item pict_type @emph{(video only)}
22255 The type of the filtered frame. It can assume one of the following
22256 values:
22257 @table @option
22258 @item I
22259 @item P
22260 @item B
22261 @item S
22262 @item SI
22263 @item SP
22264 @item BI
22265 @end table
22266
22267 @item interlace_type @emph{(video only)}
22268 The frame interlace type. It can assume one of the following values:
22269 @table @option
22270 @item PROGRESSIVE
22271 The frame is progressive (not interlaced).
22272 @item TOPFIRST
22273 The frame is top-field-first.
22274 @item BOTTOMFIRST
22275 The frame is bottom-field-first.
22276 @end table
22277
22278 @item consumed_sample_n @emph{(audio only)}
22279 the number of selected samples before the current frame
22280
22281 @item samples_n @emph{(audio only)}
22282 the number of samples in the current frame
22283
22284 @item sample_rate @emph{(audio only)}
22285 the input sample rate
22286
22287 @item key
22288 This is 1 if the filtered frame is a key-frame, 0 otherwise.
22289
22290 @item pos
22291 the position in the file of the filtered frame, -1 if the information
22292 is not available (e.g. for synthetic video)
22293
22294 @item scene @emph{(video only)}
22295 value between 0 and 1 to indicate a new scene; a low value reflects a low
22296 probability for the current frame to introduce a new scene, while a higher
22297 value means the current frame is more likely to be one (see the example below)
22298
22299 @item concatdec_select
22300 The concat demuxer can select only part of a concat input file by setting an
22301 inpoint and an outpoint, but the output packets may not be entirely contained
22302 in the selected interval. By using this variable, it is possible to skip frames
22303 generated by the concat demuxer which are not exactly contained in the selected
22304 interval.
22305
22306 This works by comparing the frame pts against the @var{lavf.concat.start_time}
22307 and the @var{lavf.concat.duration} packet metadata values which are also
22308 present in the decoded frames.
22309
22310 The @var{concatdec_select} variable is -1 if the frame pts is at least
22311 start_time and either the duration metadata is missing or the frame pts is less
22312 than start_time + duration, 0 otherwise, and NaN if the start_time metadata is
22313 missing.
22314
22315 That basically means that an input frame is selected if its pts is within the
22316 interval set by the concat demuxer.
22317
22318 @end table
22319
22320 The default value of the select expression is "1".
22321
22322 @subsection Examples
22323
22324 @itemize
22325 @item
22326 Select all frames in input:
22327 @example
22328 select
22329 @end example
22330
22331 The example above is the same as:
22332 @example
22333 select=1
22334 @end example
22335
22336 @item
22337 Skip all frames:
22338 @example
22339 select=0
22340 @end example
22341
22342 @item
22343 Select only I-frames:
22344 @example
22345 select='eq(pict_type\,I)'
22346 @end example
22347
22348 @item
22349 Select one frame every 100:
22350 @example
22351 select='not(mod(n\,100))'
22352 @end example
22353
22354 @item
22355 Select only frames contained in the 10-20 time interval:
22356 @example
22357 select=between(t\,10\,20)
22358 @end example
22359
22360 @item
22361 Select only I-frames contained in the 10-20 time interval:
22362 @example
22363 select=between(t\,10\,20)*eq(pict_type\,I)
22364 @end example
22365
22366 @item
22367 Select frames with a minimum distance of 10 seconds:
22368 @example
22369 select='isnan(prev_selected_t)+gte(t-prev_selected_t\,10)'
22370 @end example
22371
22372 @item
22373 Use aselect to select only audio frames with samples number > 100:
22374 @example
22375 aselect='gt(samples_n\,100)'
22376 @end example
22377
22378 @item
22379 Create a mosaic of the first scenes:
22380 @example
22381 ffmpeg -i video.avi -vf select='gt(scene\,0.4)',scale=160:120,tile -frames:v 1 preview.png
22382 @end example
22383
22384 Comparing @var{scene} against a value between 0.3 and 0.5 is generally a sane
22385 choice.
22386
22387 @item
22388 Send even and odd frames to separate outputs, and compose them:
22389 @example
22390 select=n=2:e='mod(n, 2)+1' [odd][even]; [odd] pad=h=2*ih [tmp]; [tmp][even] overlay=y=h
22391 @end example
22392
22393 @item
22394 Select useful frames from an ffconcat file which is using inpoints and
22395 outpoints but where the source files are not intra frame only.
22396 @example
22397 ffmpeg -copyts -vsync 0 -segment_time_metadata 1 -i input.ffconcat -vf select=concatdec_select -af aselect=concatdec_select output.avi
22398 @end example
22399 @end itemize
22400
22401 @section sendcmd, asendcmd
22402
22403 Send commands to filters in the filtergraph.
22404
22405 These filters read commands to be sent to other filters in the
22406 filtergraph.
22407
22408 @code{sendcmd} must be inserted between two video filters,
22409 @code{asendcmd} must be inserted between two audio filters, but apart
22410 from that they act the same way.
22411
22412 The specification of commands can be provided in the filter arguments
22413 with the @var{commands} option, or in a file specified by the
22414 @var{filename} option.
22415
22416 These filters accept the following options:
22417 @table @option
22418 @item commands, c
22419 Set the commands to be read and sent to the other filters.
22420 @item filename, f
22421 Set the filename of the commands to be read and sent to the other
22422 filters.
22423 @end table
22424
22425 @subsection Commands syntax
22426
22427 A commands description consists of a sequence of interval
22428 specifications, comprising a list of commands to be executed when a
22429 particular event related to that interval occurs. The occurring event
22430 is typically the current frame time entering or leaving a given time
22431 interval.
22432
22433 An interval is specified by the following syntax:
22434 @example
22435 @var{START}[-@var{END}] @var{COMMANDS};
22436 @end example
22437
22438 The time interval is specified by the @var{START} and @var{END} times.
22439 @var{END} is optional and defaults to the maximum time.
22440
22441 The current frame time is considered within the specified interval if
22442 it is included in the interval [@var{START}, @var{END}), that is when
22443 the time is greater or equal to @var{START} and is lesser than
22444 @var{END}.
22445
22446 @var{COMMANDS} consists of a sequence of one or more command
22447 specifications, separated by ",", relating to that interval.  The
22448 syntax of a command specification is given by:
22449 @example
22450 [@var{FLAGS}] @var{TARGET} @var{COMMAND} @var{ARG}
22451 @end example
22452
22453 @var{FLAGS} is optional and specifies the type of events relating to
22454 the time interval which enable sending the specified command, and must
22455 be a non-null sequence of identifier flags separated by "+" or "|" and
22456 enclosed between "[" and "]".
22457
22458 The following flags are recognized:
22459 @table @option
22460 @item enter
22461 The command is sent when the current frame timestamp enters the
22462 specified interval. In other words, the command is sent when the
22463 previous frame timestamp was not in the given interval, and the
22464 current is.
22465
22466 @item leave
22467 The command is sent when the current frame timestamp leaves the
22468 specified interval. In other words, the command is sent when the
22469 previous frame timestamp was in the given interval, and the
22470 current is not.
22471 @end table
22472
22473 If @var{FLAGS} is not specified, a default value of @code{[enter]} is
22474 assumed.
22475
22476 @var{TARGET} specifies the target of the command, usually the name of
22477 the filter class or a specific filter instance name.
22478
22479 @var{COMMAND} specifies the name of the command for the target filter.
22480
22481 @var{ARG} is optional and specifies the optional list of argument for
22482 the given @var{COMMAND}.
22483
22484 Between one interval specification and another, whitespaces, or
22485 sequences of characters starting with @code{#} until the end of line,
22486 are ignored and can be used to annotate comments.
22487
22488 A simplified BNF description of the commands specification syntax
22489 follows:
22490 @example
22491 @var{COMMAND_FLAG}  ::= "enter" | "leave"
22492 @var{COMMAND_FLAGS} ::= @var{COMMAND_FLAG} [(+|"|")@var{COMMAND_FLAG}]
22493 @var{COMMAND}       ::= ["[" @var{COMMAND_FLAGS} "]"] @var{TARGET} @var{COMMAND} [@var{ARG}]
22494 @var{COMMANDS}      ::= @var{COMMAND} [,@var{COMMANDS}]
22495 @var{INTERVAL}      ::= @var{START}[-@var{END}] @var{COMMANDS}
22496 @var{INTERVALS}     ::= @var{INTERVAL}[;@var{INTERVALS}]
22497 @end example
22498
22499 @subsection Examples
22500
22501 @itemize
22502 @item
22503 Specify audio tempo change at second 4:
22504 @example
22505 asendcmd=c='4.0 atempo tempo 1.5',atempo
22506 @end example
22507
22508 @item
22509 Target a specific filter instance:
22510 @example
22511 asendcmd=c='4.0 atempo@@my tempo 1.5',atempo@@my
22512 @end example
22513
22514 @item
22515 Specify a list of drawtext and hue commands in a file.
22516 @example
22517 # show text in the interval 5-10
22518 5.0-10.0 [enter] drawtext reinit 'fontfile=FreeSerif.ttf:text=hello world',
22519          [leave] drawtext reinit 'fontfile=FreeSerif.ttf:text=';
22520
22521 # desaturate the image in the interval 15-20
22522 15.0-20.0 [enter] hue s 0,
22523           [enter] drawtext reinit 'fontfile=FreeSerif.ttf:text=nocolor',
22524           [leave] hue s 1,
22525           [leave] drawtext reinit 'fontfile=FreeSerif.ttf:text=color';
22526
22527 # apply an exponential saturation fade-out effect, starting from time 25
22528 25 [enter] hue s exp(25-t)
22529 @end example
22530
22531 A filtergraph allowing to read and process the above command list
22532 stored in a file @file{test.cmd}, can be specified with:
22533 @example
22534 sendcmd=f=test.cmd,drawtext=fontfile=FreeSerif.ttf:text='',hue
22535 @end example
22536 @end itemize
22537
22538 @anchor{setpts}
22539 @section setpts, asetpts
22540
22541 Change the PTS (presentation timestamp) of the input frames.
22542
22543 @code{setpts} works on video frames, @code{asetpts} on audio frames.
22544
22545 This filter accepts the following options:
22546
22547 @table @option
22548
22549 @item expr
22550 The expression which is evaluated for each frame to construct its timestamp.
22551
22552 @end table
22553
22554 The expression is evaluated through the eval API and can contain the following
22555 constants:
22556
22557 @table @option
22558 @item FRAME_RATE, FR
22559 frame rate, only defined for constant frame-rate video
22560
22561 @item PTS
22562 The presentation timestamp in input
22563
22564 @item N
22565 The count of the input frame for video or the number of consumed samples,
22566 not including the current frame for audio, starting from 0.
22567
22568 @item NB_CONSUMED_SAMPLES
22569 The number of consumed samples, not including the current frame (only
22570 audio)
22571
22572 @item NB_SAMPLES, S
22573 The number of samples in the current frame (only audio)
22574
22575 @item SAMPLE_RATE, SR
22576 The audio sample rate.
22577
22578 @item STARTPTS
22579 The PTS of the first frame.
22580
22581 @item STARTT
22582 the time in seconds of the first frame
22583
22584 @item INTERLACED
22585 State whether the current frame is interlaced.
22586
22587 @item T
22588 the time in seconds of the current frame
22589
22590 @item POS
22591 original position in the file of the frame, or undefined if undefined
22592 for the current frame
22593
22594 @item PREV_INPTS
22595 The previous input PTS.
22596
22597 @item PREV_INT
22598 previous input time in seconds
22599
22600 @item PREV_OUTPTS
22601 The previous output PTS.
22602
22603 @item PREV_OUTT
22604 previous output time in seconds
22605
22606 @item RTCTIME
22607 The wallclock (RTC) time in microseconds. This is deprecated, use time(0)
22608 instead.
22609
22610 @item RTCSTART
22611 The wallclock (RTC) time at the start of the movie in microseconds.
22612
22613 @item TB
22614 The timebase of the input timestamps.
22615
22616 @end table
22617
22618 @subsection Examples
22619
22620 @itemize
22621 @item
22622 Start counting PTS from zero
22623 @example
22624 setpts=PTS-STARTPTS
22625 @end example
22626
22627 @item
22628 Apply fast motion effect:
22629 @example
22630 setpts=0.5*PTS
22631 @end example
22632
22633 @item
22634 Apply slow motion effect:
22635 @example
22636 setpts=2.0*PTS
22637 @end example
22638
22639 @item
22640 Set fixed rate of 25 frames per second:
22641 @example
22642 setpts=N/(25*TB)
22643 @end example
22644
22645 @item
22646 Set fixed rate 25 fps with some jitter:
22647 @example
22648 setpts='1/(25*TB) * (N + 0.05 * sin(N*2*PI/25))'
22649 @end example
22650
22651 @item
22652 Apply an offset of 10 seconds to the input PTS:
22653 @example
22654 setpts=PTS+10/TB
22655 @end example
22656
22657 @item
22658 Generate timestamps from a "live source" and rebase onto the current timebase:
22659 @example
22660 setpts='(RTCTIME - RTCSTART) / (TB * 1000000)'
22661 @end example
22662
22663 @item
22664 Generate timestamps by counting samples:
22665 @example
22666 asetpts=N/SR/TB
22667 @end example
22668
22669 @end itemize
22670
22671 @section setrange
22672
22673 Force color range for the output video frame.
22674
22675 The @code{setrange} filter marks the color range property for the
22676 output frames. It does not change the input frame, but only sets the
22677 corresponding property, which affects how the frame is treated by
22678 following filters.
22679
22680 The filter accepts the following options:
22681
22682 @table @option
22683
22684 @item range
22685 Available values are:
22686
22687 @table @samp
22688 @item auto
22689 Keep the same color range property.
22690
22691 @item unspecified, unknown
22692 Set the color range as unspecified.
22693
22694 @item limited, tv, mpeg
22695 Set the color range as limited.
22696
22697 @item full, pc, jpeg
22698 Set the color range as full.
22699 @end table
22700 @end table
22701
22702 @section settb, asettb
22703
22704 Set the timebase to use for the output frames timestamps.
22705 It is mainly useful for testing timebase configuration.
22706
22707 It accepts the following parameters:
22708
22709 @table @option
22710
22711 @item expr, tb
22712 The expression which is evaluated into the output timebase.
22713
22714 @end table
22715
22716 The value for @option{tb} is an arithmetic expression representing a
22717 rational. The expression can contain the constants "AVTB" (the default
22718 timebase), "intb" (the input timebase) and "sr" (the sample rate,
22719 audio only). Default value is "intb".
22720
22721 @subsection Examples
22722
22723 @itemize
22724 @item
22725 Set the timebase to 1/25:
22726 @example
22727 settb=expr=1/25
22728 @end example
22729
22730 @item
22731 Set the timebase to 1/10:
22732 @example
22733 settb=expr=0.1
22734 @end example
22735
22736 @item
22737 Set the timebase to 1001/1000:
22738 @example
22739 settb=1+0.001
22740 @end example
22741
22742 @item
22743 Set the timebase to 2*intb:
22744 @example
22745 settb=2*intb
22746 @end example
22747
22748 @item
22749 Set the default timebase value:
22750 @example
22751 settb=AVTB
22752 @end example
22753 @end itemize
22754
22755 @section showcqt
22756 Convert input audio to a video output representing frequency spectrum
22757 logarithmically using Brown-Puckette constant Q transform algorithm with
22758 direct frequency domain coefficient calculation (but the transform itself
22759 is not really constant Q, instead the Q factor is actually variable/clamped),
22760 with musical tone scale, from E0 to D#10.
22761
22762 The filter accepts the following options:
22763
22764 @table @option
22765 @item size, s
22766 Specify the video size for the output. It must be even. For the syntax of this option,
22767 check the @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
22768 Default value is @code{1920x1080}.
22769
22770 @item fps, rate, r
22771 Set the output frame rate. Default value is @code{25}.
22772
22773 @item bar_h
22774 Set the bargraph height. It must be even. Default value is @code{-1} which
22775 computes the bargraph height automatically.
22776
22777 @item axis_h
22778 Set the axis height. It must be even. Default value is @code{-1} which computes
22779 the axis height automatically.
22780
22781 @item sono_h
22782 Set the sonogram height. It must be even. Default value is @code{-1} which
22783 computes the sonogram height automatically.
22784
22785 @item fullhd
22786 Set the fullhd resolution. This option is deprecated, use @var{size}, @var{s}
22787 instead. Default value is @code{1}.
22788
22789 @item sono_v, volume
22790 Specify the sonogram volume expression. It can contain variables:
22791 @table @option
22792 @item bar_v
22793 the @var{bar_v} evaluated expression
22794 @item frequency, freq, f
22795 the frequency where it is evaluated
22796 @item timeclamp, tc
22797 the value of @var{timeclamp} option
22798 @end table
22799 and functions:
22800 @table @option
22801 @item a_weighting(f)
22802 A-weighting of equal loudness
22803 @item b_weighting(f)
22804 B-weighting of equal loudness
22805 @item c_weighting(f)
22806 C-weighting of equal loudness.
22807 @end table
22808 Default value is @code{16}.
22809
22810 @item bar_v, volume2
22811 Specify the bargraph volume expression. It can contain variables:
22812 @table @option
22813 @item sono_v
22814 the @var{sono_v} evaluated expression
22815 @item frequency, freq, f
22816 the frequency where it is evaluated
22817 @item timeclamp, tc
22818 the value of @var{timeclamp} option
22819 @end table
22820 and functions:
22821 @table @option
22822 @item a_weighting(f)
22823 A-weighting of equal loudness
22824 @item b_weighting(f)
22825 B-weighting of equal loudness
22826 @item c_weighting(f)
22827 C-weighting of equal loudness.
22828 @end table
22829 Default value is @code{sono_v}.
22830
22831 @item sono_g, gamma
22832 Specify the sonogram gamma. Lower gamma makes the spectrum more contrast,
22833 higher gamma makes the spectrum having more range. Default value is @code{3}.
22834 Acceptable range is @code{[1, 7]}.
22835
22836 @item bar_g, gamma2
22837 Specify the bargraph gamma. Default value is @code{1}. Acceptable range is
22838 @code{[1, 7]}.
22839
22840 @item bar_t
22841 Specify the bargraph transparency level. Lower value makes the bargraph sharper.
22842 Default value is @code{1}. Acceptable range is @code{[0, 1]}.
22843
22844 @item timeclamp, tc
22845 Specify the transform timeclamp. At low frequency, there is trade-off between
22846 accuracy in time domain and frequency domain. If timeclamp is lower,
22847 event in time domain is represented more accurately (such as fast bass drum),
22848 otherwise event in frequency domain is represented more accurately
22849 (such as bass guitar). Acceptable range is @code{[0.002, 1]}. Default value is @code{0.17}.
22850
22851 @item attack
22852 Set attack time in seconds. The default is @code{0} (disabled). Otherwise, it
22853 limits future samples by applying asymmetric windowing in time domain, useful
22854 when low latency is required. Accepted range is @code{[0, 1]}.
22855
22856 @item basefreq
22857 Specify the transform base frequency. Default value is @code{20.01523126408007475},
22858 which is frequency 50 cents below E0. Acceptable range is @code{[10, 100000]}.
22859
22860 @item endfreq
22861 Specify the transform end frequency. Default value is @code{20495.59681441799654},
22862 which is frequency 50 cents above D#10. Acceptable range is @code{[10, 100000]}.
22863
22864 @item coeffclamp
22865 This option is deprecated and ignored.
22866
22867 @item tlength
22868 Specify the transform length in time domain. Use this option to control accuracy
22869 trade-off between time domain and frequency domain at every frequency sample.
22870 It can contain variables:
22871 @table @option
22872 @item frequency, freq, f
22873 the frequency where it is evaluated
22874 @item timeclamp, tc
22875 the value of @var{timeclamp} option.
22876 @end table
22877 Default value is @code{384*tc/(384+tc*f)}.
22878
22879 @item count
22880 Specify the transform count for every video frame. Default value is @code{6}.
22881 Acceptable range is @code{[1, 30]}.
22882
22883 @item fcount
22884 Specify the transform count for every single pixel. Default value is @code{0},
22885 which makes it computed automatically. Acceptable range is @code{[0, 10]}.
22886
22887 @item fontfile
22888 Specify font file for use with freetype to draw the axis. If not specified,
22889 use embedded font. Note that drawing with font file or embedded font is not
22890 implemented with custom @var{basefreq} and @var{endfreq}, use @var{axisfile}
22891 option instead.
22892
22893 @item font
22894 Specify fontconfig pattern. This has lower priority than @var{fontfile}. The
22895 @code{:} in the pattern may be replaced by @code{|} to avoid unnecessary
22896 escaping.
22897
22898 @item fontcolor
22899 Specify font color expression. This is arithmetic expression that should return
22900 integer value 0xRRGGBB. It can contain variables:
22901 @table @option
22902 @item frequency, freq, f
22903 the frequency where it is evaluated
22904 @item timeclamp, tc
22905 the value of @var{timeclamp} option
22906 @end table
22907 and functions:
22908 @table @option
22909 @item midi(f)
22910 midi number of frequency f, some midi numbers: E0(16), C1(24), C2(36), A4(69)
22911 @item r(x), g(x), b(x)
22912 red, green, and blue value of intensity x.
22913 @end table
22914 Default value is @code{st(0, (midi(f)-59.5)/12);
22915 st(1, if(between(ld(0),0,1), 0.5-0.5*cos(2*PI*ld(0)), 0));
22916 r(1-ld(1)) + b(ld(1))}.
22917
22918 @item axisfile
22919 Specify image file to draw the axis. This option override @var{fontfile} and
22920 @var{fontcolor} option.
22921
22922 @item axis, text
22923 Enable/disable drawing text to the axis. If it is set to @code{0}, drawing to
22924 the axis is disabled, ignoring @var{fontfile} and @var{axisfile} option.
22925 Default value is @code{1}.
22926
22927 @item csp
22928 Set colorspace. The accepted values are:
22929 @table @samp
22930 @item unspecified
22931 Unspecified (default)
22932
22933 @item bt709
22934 BT.709
22935
22936 @item fcc
22937 FCC
22938
22939 @item bt470bg
22940 BT.470BG or BT.601-6 625
22941
22942 @item smpte170m
22943 SMPTE-170M or BT.601-6 525
22944
22945 @item smpte240m
22946 SMPTE-240M
22947
22948 @item bt2020ncl
22949 BT.2020 with non-constant luminance
22950
22951 @end table
22952
22953 @item cscheme
22954 Set spectrogram color scheme. This is list of floating point values with format
22955 @code{left_r|left_g|left_b|right_r|right_g|right_b}.
22956 The default is @code{1|0.5|0|0|0.5|1}.
22957
22958 @end table
22959
22960 @subsection Examples
22961
22962 @itemize
22963 @item
22964 Playing audio while showing the spectrum:
22965 @example
22966 ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt [out0]'
22967 @end example
22968
22969 @item
22970 Same as above, but with frame rate 30 fps:
22971 @example
22972 ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt=fps=30:count=5 [out0]'
22973 @end example
22974
22975 @item
22976 Playing at 1280x720:
22977 @example
22978 ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt=s=1280x720:count=4 [out0]'
22979 @end example
22980
22981 @item
22982 Disable sonogram display:
22983 @example
22984 sono_h=0
22985 @end example
22986
22987 @item
22988 A1 and its harmonics: A1, A2, (near)E3, A3:
22989 @example
22990 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),
22991                  asplit[a][out1]; [a] showcqt [out0]'
22992 @end example
22993
22994 @item
22995 Same as above, but with more accuracy in frequency domain:
22996 @example
22997 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),
22998                  asplit[a][out1]; [a] showcqt=timeclamp=0.5 [out0]'
22999 @end example
23000
23001 @item
23002 Custom volume:
23003 @example
23004 bar_v=10:sono_v=bar_v*a_weighting(f)
23005 @end example
23006
23007 @item
23008 Custom gamma, now spectrum is linear to the amplitude.
23009 @example
23010 bar_g=2:sono_g=2
23011 @end example
23012
23013 @item
23014 Custom tlength equation:
23015 @example
23016 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)))'
23017 @end example
23018
23019 @item
23020 Custom fontcolor and fontfile, C-note is colored green, others are colored blue:
23021 @example
23022 fontcolor='if(mod(floor(midi(f)+0.5),12), 0x0000FF, g(1))':fontfile=myfont.ttf
23023 @end example
23024
23025 @item
23026 Custom font using fontconfig:
23027 @example
23028 font='Courier New,Monospace,mono|bold'
23029 @end example
23030
23031 @item
23032 Custom frequency range with custom axis using image file:
23033 @example
23034 axisfile=myaxis.png:basefreq=40:endfreq=10000
23035 @end example
23036 @end itemize
23037
23038 @section showfreqs
23039
23040 Convert input audio to video output representing the audio power spectrum.
23041 Audio amplitude is on Y-axis while frequency is on X-axis.
23042
23043 The filter accepts the following options:
23044
23045 @table @option
23046 @item size, s
23047 Specify size of video. For the syntax of this option, check the
23048 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
23049 Default is @code{1024x512}.
23050
23051 @item mode
23052 Set display mode.
23053 This set how each frequency bin will be represented.
23054
23055 It accepts the following values:
23056 @table @samp
23057 @item line
23058 @item bar
23059 @item dot
23060 @end table
23061 Default is @code{bar}.
23062
23063 @item ascale
23064 Set amplitude scale.
23065
23066 It accepts the following values:
23067 @table @samp
23068 @item lin
23069 Linear scale.
23070
23071 @item sqrt
23072 Square root scale.
23073
23074 @item cbrt
23075 Cubic root scale.
23076
23077 @item log
23078 Logarithmic scale.
23079 @end table
23080 Default is @code{log}.
23081
23082 @item fscale
23083 Set frequency scale.
23084
23085 It accepts the following values:
23086 @table @samp
23087 @item lin
23088 Linear scale.
23089
23090 @item log
23091 Logarithmic scale.
23092
23093 @item rlog
23094 Reverse logarithmic scale.
23095 @end table
23096 Default is @code{lin}.
23097
23098 @item win_size
23099 Set window size. Allowed range is from 16 to 65536.
23100
23101 Default is @code{2048}
23102
23103 @item win_func
23104 Set windowing function.
23105
23106 It accepts the following values:
23107 @table @samp
23108 @item rect
23109 @item bartlett
23110 @item hanning
23111 @item hamming
23112 @item blackman
23113 @item welch
23114 @item flattop
23115 @item bharris
23116 @item bnuttall
23117 @item bhann
23118 @item sine
23119 @item nuttall
23120 @item lanczos
23121 @item gauss
23122 @item tukey
23123 @item dolph
23124 @item cauchy
23125 @item parzen
23126 @item poisson
23127 @item bohman
23128 @end table
23129 Default is @code{hanning}.
23130
23131 @item overlap
23132 Set window overlap. In range @code{[0, 1]}. Default is @code{1},
23133 which means optimal overlap for selected window function will be picked.
23134
23135 @item averaging
23136 Set time averaging. Setting this to 0 will display current maximal peaks.
23137 Default is @code{1}, which means time averaging is disabled.
23138
23139 @item colors
23140 Specify list of colors separated by space or by '|' which will be used to
23141 draw channel frequencies. Unrecognized or missing colors will be replaced
23142 by white color.
23143
23144 @item cmode
23145 Set channel display mode.
23146
23147 It accepts the following values:
23148 @table @samp
23149 @item combined
23150 @item separate
23151 @end table
23152 Default is @code{combined}.
23153
23154 @item minamp
23155 Set minimum amplitude used in @code{log} amplitude scaler.
23156
23157 @end table
23158
23159 @section showspatial
23160
23161 Convert stereo input audio to a video output, representing the spatial relationship
23162 between two channels.
23163
23164 The filter accepts the following options:
23165
23166 @table @option
23167 @item size, s
23168 Specify the video size for the output. For the syntax of this option, check the
23169 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
23170 Default value is @code{512x512}.
23171
23172 @item win_size
23173 Set window size. Allowed range is from @var{1024} to @var{65536}. Default size is @var{4096}.
23174
23175 @item win_func
23176 Set window function.
23177
23178 It accepts the following values:
23179 @table @samp
23180 @item rect
23181 @item bartlett
23182 @item hann
23183 @item hanning
23184 @item hamming
23185 @item blackman
23186 @item welch
23187 @item flattop
23188 @item bharris
23189 @item bnuttall
23190 @item bhann
23191 @item sine
23192 @item nuttall
23193 @item lanczos
23194 @item gauss
23195 @item tukey
23196 @item dolph
23197 @item cauchy
23198 @item parzen
23199 @item poisson
23200 @item bohman
23201 @end table
23202
23203 Default value is @code{hann}.
23204
23205 @item overlap
23206 Set ratio of overlap window. Default value is @code{0.5}.
23207 When value is @code{1} overlap is set to recommended size for specific
23208 window function currently used.
23209 @end table
23210
23211 @anchor{showspectrum}
23212 @section showspectrum
23213
23214 Convert input audio to a video output, representing the audio frequency
23215 spectrum.
23216
23217 The filter accepts the following options:
23218
23219 @table @option
23220 @item size, s
23221 Specify the video size for the output. For the syntax of this option, check the
23222 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
23223 Default value is @code{640x512}.
23224
23225 @item slide
23226 Specify how the spectrum should slide along the window.
23227
23228 It accepts the following values:
23229 @table @samp
23230 @item replace
23231 the samples start again on the left when they reach the right
23232 @item scroll
23233 the samples scroll from right to left
23234 @item fullframe
23235 frames are only produced when the samples reach the right
23236 @item rscroll
23237 the samples scroll from left to right
23238 @end table
23239
23240 Default value is @code{replace}.
23241
23242 @item mode
23243 Specify display mode.
23244
23245 It accepts the following values:
23246 @table @samp
23247 @item combined
23248 all channels are displayed in the same row
23249 @item separate
23250 all channels are displayed in separate rows
23251 @end table
23252
23253 Default value is @samp{combined}.
23254
23255 @item color
23256 Specify display color mode.
23257
23258 It accepts the following values:
23259 @table @samp
23260 @item channel
23261 each channel is displayed in a separate color
23262 @item intensity
23263 each channel is displayed using the same color scheme
23264 @item rainbow
23265 each channel is displayed using the rainbow color scheme
23266 @item moreland
23267 each channel is displayed using the moreland color scheme
23268 @item nebulae
23269 each channel is displayed using the nebulae color scheme
23270 @item fire
23271 each channel is displayed using the fire color scheme
23272 @item fiery
23273 each channel is displayed using the fiery color scheme
23274 @item fruit
23275 each channel is displayed using the fruit color scheme
23276 @item cool
23277 each channel is displayed using the cool color scheme
23278 @item magma
23279 each channel is displayed using the magma color scheme
23280 @item green
23281 each channel is displayed using the green color scheme
23282 @item viridis
23283 each channel is displayed using the viridis color scheme
23284 @item plasma
23285 each channel is displayed using the plasma color scheme
23286 @item cividis
23287 each channel is displayed using the cividis color scheme
23288 @item terrain
23289 each channel is displayed using the terrain color scheme
23290 @end table
23291
23292 Default value is @samp{channel}.
23293
23294 @item scale
23295 Specify scale used for calculating intensity color values.
23296
23297 It accepts the following values:
23298 @table @samp
23299 @item lin
23300 linear
23301 @item sqrt
23302 square root, default
23303 @item cbrt
23304 cubic root
23305 @item log
23306 logarithmic
23307 @item 4thrt
23308 4th root
23309 @item 5thrt
23310 5th root
23311 @end table
23312
23313 Default value is @samp{sqrt}.
23314
23315 @item fscale
23316 Specify frequency scale.
23317
23318 It accepts the following values:
23319 @table @samp
23320 @item lin
23321 linear
23322 @item log
23323 logarithmic
23324 @end table
23325
23326 Default value is @samp{lin}.
23327
23328 @item saturation
23329 Set saturation modifier for displayed colors. Negative values provide
23330 alternative color scheme. @code{0} is no saturation at all.
23331 Saturation must be in [-10.0, 10.0] range.
23332 Default value is @code{1}.
23333
23334 @item win_func
23335 Set window function.
23336
23337 It accepts the following values:
23338 @table @samp
23339 @item rect
23340 @item bartlett
23341 @item hann
23342 @item hanning
23343 @item hamming
23344 @item blackman
23345 @item welch
23346 @item flattop
23347 @item bharris
23348 @item bnuttall
23349 @item bhann
23350 @item sine
23351 @item nuttall
23352 @item lanczos
23353 @item gauss
23354 @item tukey
23355 @item dolph
23356 @item cauchy
23357 @item parzen
23358 @item poisson
23359 @item bohman
23360 @end table
23361
23362 Default value is @code{hann}.
23363
23364 @item orientation
23365 Set orientation of time vs frequency axis. Can be @code{vertical} or
23366 @code{horizontal}. Default is @code{vertical}.
23367
23368 @item overlap
23369 Set ratio of overlap window. Default value is @code{0}.
23370 When value is @code{1} overlap is set to recommended size for specific
23371 window function currently used.
23372
23373 @item gain
23374 Set scale gain for calculating intensity color values.
23375 Default value is @code{1}.
23376
23377 @item data
23378 Set which data to display. Can be @code{magnitude}, default or @code{phase}.
23379
23380 @item rotation
23381 Set color rotation, must be in [-1.0, 1.0] range.
23382 Default value is @code{0}.
23383
23384 @item start
23385 Set start frequency from which to display spectrogram. Default is @code{0}.
23386
23387 @item stop
23388 Set stop frequency to which to display spectrogram. Default is @code{0}.
23389
23390 @item fps
23391 Set upper frame rate limit. Default is @code{auto}, unlimited.
23392
23393 @item legend
23394 Draw time and frequency axes and legends. Default is disabled.
23395 @end table
23396
23397 The usage is very similar to the showwaves filter; see the examples in that
23398 section.
23399
23400 @subsection Examples
23401
23402 @itemize
23403 @item
23404 Large window with logarithmic color scaling:
23405 @example
23406 showspectrum=s=1280x480:scale=log
23407 @end example
23408
23409 @item
23410 Complete example for a colored and sliding spectrum per channel using @command{ffplay}:
23411 @example
23412 ffplay -f lavfi 'amovie=input.mp3, asplit [a][out1];
23413              [a] showspectrum=mode=separate:color=intensity:slide=1:scale=cbrt [out0]'
23414 @end example
23415 @end itemize
23416
23417 @section showspectrumpic
23418
23419 Convert input audio to a single video frame, representing the audio frequency
23420 spectrum.
23421
23422 The filter accepts the following options:
23423
23424 @table @option
23425 @item size, s
23426 Specify the video size for the output. For the syntax of this option, check the
23427 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
23428 Default value is @code{4096x2048}.
23429
23430 @item mode
23431 Specify display mode.
23432
23433 It accepts the following values:
23434 @table @samp
23435 @item combined
23436 all channels are displayed in the same row
23437 @item separate
23438 all channels are displayed in separate rows
23439 @end table
23440 Default value is @samp{combined}.
23441
23442 @item color
23443 Specify display color mode.
23444
23445 It accepts the following values:
23446 @table @samp
23447 @item channel
23448 each channel is displayed in a separate color
23449 @item intensity
23450 each channel is displayed using the same color scheme
23451 @item rainbow
23452 each channel is displayed using the rainbow color scheme
23453 @item moreland
23454 each channel is displayed using the moreland color scheme
23455 @item nebulae
23456 each channel is displayed using the nebulae color scheme
23457 @item fire
23458 each channel is displayed using the fire color scheme
23459 @item fiery
23460 each channel is displayed using the fiery color scheme
23461 @item fruit
23462 each channel is displayed using the fruit color scheme
23463 @item cool
23464 each channel is displayed using the cool color scheme
23465 @item magma
23466 each channel is displayed using the magma color scheme
23467 @item green
23468 each channel is displayed using the green color scheme
23469 @item viridis
23470 each channel is displayed using the viridis color scheme
23471 @item plasma
23472 each channel is displayed using the plasma color scheme
23473 @item cividis
23474 each channel is displayed using the cividis color scheme
23475 @item terrain
23476 each channel is displayed using the terrain color scheme
23477 @end table
23478 Default value is @samp{intensity}.
23479
23480 @item scale
23481 Specify scale used for calculating intensity color values.
23482
23483 It accepts the following values:
23484 @table @samp
23485 @item lin
23486 linear
23487 @item sqrt
23488 square root, default
23489 @item cbrt
23490 cubic root
23491 @item log
23492 logarithmic
23493 @item 4thrt
23494 4th root
23495 @item 5thrt
23496 5th root
23497 @end table
23498 Default value is @samp{log}.
23499
23500 @item fscale
23501 Specify frequency scale.
23502
23503 It accepts the following values:
23504 @table @samp
23505 @item lin
23506 linear
23507 @item log
23508 logarithmic
23509 @end table
23510
23511 Default value is @samp{lin}.
23512
23513 @item saturation
23514 Set saturation modifier for displayed colors. Negative values provide
23515 alternative color scheme. @code{0} is no saturation at all.
23516 Saturation must be in [-10.0, 10.0] range.
23517 Default value is @code{1}.
23518
23519 @item win_func
23520 Set window function.
23521
23522 It accepts the following values:
23523 @table @samp
23524 @item rect
23525 @item bartlett
23526 @item hann
23527 @item hanning
23528 @item hamming
23529 @item blackman
23530 @item welch
23531 @item flattop
23532 @item bharris
23533 @item bnuttall
23534 @item bhann
23535 @item sine
23536 @item nuttall
23537 @item lanczos
23538 @item gauss
23539 @item tukey
23540 @item dolph
23541 @item cauchy
23542 @item parzen
23543 @item poisson
23544 @item bohman
23545 @end table
23546 Default value is @code{hann}.
23547
23548 @item orientation
23549 Set orientation of time vs frequency axis. Can be @code{vertical} or
23550 @code{horizontal}. Default is @code{vertical}.
23551
23552 @item gain
23553 Set scale gain for calculating intensity color values.
23554 Default value is @code{1}.
23555
23556 @item legend
23557 Draw time and frequency axes and legends. Default is enabled.
23558
23559 @item rotation
23560 Set color rotation, must be in [-1.0, 1.0] range.
23561 Default value is @code{0}.
23562
23563 @item start
23564 Set start frequency from which to display spectrogram. Default is @code{0}.
23565
23566 @item stop
23567 Set stop frequency to which to display spectrogram. Default is @code{0}.
23568 @end table
23569
23570 @subsection Examples
23571
23572 @itemize
23573 @item
23574 Extract an audio spectrogram of a whole audio track
23575 in a 1024x1024 picture using @command{ffmpeg}:
23576 @example
23577 ffmpeg -i audio.flac -lavfi showspectrumpic=s=1024x1024 spectrogram.png
23578 @end example
23579 @end itemize
23580
23581 @section showvolume
23582
23583 Convert input audio volume to a video output.
23584
23585 The filter accepts the following options:
23586
23587 @table @option
23588 @item rate, r
23589 Set video rate.
23590
23591 @item b
23592 Set border width, allowed range is [0, 5]. Default is 1.
23593
23594 @item w
23595 Set channel width, allowed range is [80, 8192]. Default is 400.
23596
23597 @item h
23598 Set channel height, allowed range is [1, 900]. Default is 20.
23599
23600 @item f
23601 Set fade, allowed range is [0, 1]. Default is 0.95.
23602
23603 @item c
23604 Set volume color expression.
23605
23606 The expression can use the following variables:
23607
23608 @table @option
23609 @item VOLUME
23610 Current max volume of channel in dB.
23611
23612 @item PEAK
23613 Current peak.
23614
23615 @item CHANNEL
23616 Current channel number, starting from 0.
23617 @end table
23618
23619 @item t
23620 If set, displays channel names. Default is enabled.
23621
23622 @item v
23623 If set, displays volume values. Default is enabled.
23624
23625 @item o
23626 Set orientation, can be horizontal: @code{h} or vertical: @code{v},
23627 default is @code{h}.
23628
23629 @item s
23630 Set step size, allowed range is [0, 5]. Default is 0, which means
23631 step is disabled.
23632
23633 @item p
23634 Set background opacity, allowed range is [0, 1]. Default is 0.
23635
23636 @item m
23637 Set metering mode, can be peak: @code{p} or rms: @code{r},
23638 default is @code{p}.
23639
23640 @item ds
23641 Set display scale, can be linear: @code{lin} or log: @code{log},
23642 default is @code{lin}.
23643
23644 @item dm
23645 In second.
23646 If set to > 0., display a line for the max level
23647 in the previous seconds.
23648 default is disabled: @code{0.}
23649
23650 @item dmc
23651 The color of the max line. Use when @code{dm} option is set to > 0.
23652 default is: @code{orange}
23653 @end table
23654
23655 @section showwaves
23656
23657 Convert input audio to a video output, representing the samples waves.
23658
23659 The filter accepts the following options:
23660
23661 @table @option
23662 @item size, s
23663 Specify the video size for the output. For the syntax of this option, check the
23664 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
23665 Default value is @code{600x240}.
23666
23667 @item mode
23668 Set display mode.
23669
23670 Available values are:
23671 @table @samp
23672 @item point
23673 Draw a point for each sample.
23674
23675 @item line
23676 Draw a vertical line for each sample.
23677
23678 @item p2p
23679 Draw a point for each sample and a line between them.
23680
23681 @item cline
23682 Draw a centered vertical line for each sample.
23683 @end table
23684
23685 Default value is @code{point}.
23686
23687 @item n
23688 Set the number of samples which are printed on the same column. A
23689 larger value will decrease the frame rate. Must be a positive
23690 integer. This option can be set only if the value for @var{rate}
23691 is not explicitly specified.
23692
23693 @item rate, r
23694 Set the (approximate) output frame rate. This is done by setting the
23695 option @var{n}. Default value is "25".
23696
23697 @item split_channels
23698 Set if channels should be drawn separately or overlap. Default value is 0.
23699
23700 @item colors
23701 Set colors separated by '|' which are going to be used for drawing of each channel.
23702
23703 @item scale
23704 Set amplitude scale.
23705
23706 Available values are:
23707 @table @samp
23708 @item lin
23709 Linear.
23710
23711 @item log
23712 Logarithmic.
23713
23714 @item sqrt
23715 Square root.
23716
23717 @item cbrt
23718 Cubic root.
23719 @end table
23720
23721 Default is linear.
23722
23723 @item draw
23724 Set the draw mode. This is mostly useful to set for high @var{n}.
23725
23726 Available values are:
23727 @table @samp
23728 @item scale
23729 Scale pixel values for each drawn sample.
23730
23731 @item full
23732 Draw every sample directly.
23733 @end table
23734
23735 Default value is @code{scale}.
23736 @end table
23737
23738 @subsection Examples
23739
23740 @itemize
23741 @item
23742 Output the input file audio and the corresponding video representation
23743 at the same time:
23744 @example
23745 amovie=a.mp3,asplit[out0],showwaves[out1]
23746 @end example
23747
23748 @item
23749 Create a synthetic signal and show it with showwaves, forcing a
23750 frame rate of 30 frames per second:
23751 @example
23752 aevalsrc=sin(1*2*PI*t)*sin(880*2*PI*t):cos(2*PI*200*t),asplit[out0],showwaves=r=30[out1]
23753 @end example
23754 @end itemize
23755
23756 @section showwavespic
23757
23758 Convert input audio to a single video frame, representing the samples waves.
23759
23760 The filter accepts the following options:
23761
23762 @table @option
23763 @item size, s
23764 Specify the video size for the output. For the syntax of this option, check the
23765 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
23766 Default value is @code{600x240}.
23767
23768 @item split_channels
23769 Set if channels should be drawn separately or overlap. Default value is 0.
23770
23771 @item colors
23772 Set colors separated by '|' which are going to be used for drawing of each channel.
23773
23774 @item scale
23775 Set amplitude scale.
23776
23777 Available values are:
23778 @table @samp
23779 @item lin
23780 Linear.
23781
23782 @item log
23783 Logarithmic.
23784
23785 @item sqrt
23786 Square root.
23787
23788 @item cbrt
23789 Cubic root.
23790 @end table
23791
23792 Default is linear.
23793
23794 @item draw
23795 Set the draw mode.
23796
23797 Available values are:
23798 @table @samp
23799 @item scale
23800 Scale pixel values for each drawn sample.
23801
23802 @item full
23803 Draw every sample directly.
23804 @end table
23805
23806 Default value is @code{scale}.
23807 @end table
23808
23809 @subsection Examples
23810
23811 @itemize
23812 @item
23813 Extract a channel split representation of the wave form of a whole audio track
23814 in a 1024x800 picture using @command{ffmpeg}:
23815 @example
23816 ffmpeg -i audio.flac -lavfi showwavespic=split_channels=1:s=1024x800 waveform.png
23817 @end example
23818 @end itemize
23819
23820 @section sidedata, asidedata
23821
23822 Delete frame side data, or select frames based on it.
23823
23824 This filter accepts the following options:
23825
23826 @table @option
23827 @item mode
23828 Set mode of operation of the filter.
23829
23830 Can be one of the following:
23831
23832 @table @samp
23833 @item select
23834 Select every frame with side data of @code{type}.
23835
23836 @item delete
23837 Delete side data of @code{type}. If @code{type} is not set, delete all side
23838 data in the frame.
23839
23840 @end table
23841
23842 @item type
23843 Set side data type used with all modes. Must be set for @code{select} mode. For
23844 the list of frame side data types, refer to the @code{AVFrameSideDataType} enum
23845 in @file{libavutil/frame.h}. For example, to choose
23846 @code{AV_FRAME_DATA_PANSCAN} side data, you must specify @code{PANSCAN}.
23847
23848 @end table
23849
23850 @section spectrumsynth
23851
23852 Synthesize audio from 2 input video spectrums, first input stream represents
23853 magnitude across time and second represents phase across time.
23854 The filter will transform from frequency domain as displayed in videos back
23855 to time domain as presented in audio output.
23856
23857 This filter is primarily created for reversing processed @ref{showspectrum}
23858 filter outputs, but can synthesize sound from other spectrograms too.
23859 But in such case results are going to be poor if the phase data is not
23860 available, because in such cases phase data need to be recreated, usually
23861 it's just recreated from random noise.
23862 For best results use gray only output (@code{channel} color mode in
23863 @ref{showspectrum} filter) and @code{log} scale for magnitude video and
23864 @code{lin} scale for phase video. To produce phase, for 2nd video, use
23865 @code{data} option. Inputs videos should generally use @code{fullframe}
23866 slide mode as that saves resources needed for decoding video.
23867
23868 The filter accepts the following options:
23869
23870 @table @option
23871 @item sample_rate
23872 Specify sample rate of output audio, the sample rate of audio from which
23873 spectrum was generated may differ.
23874
23875 @item channels
23876 Set number of channels represented in input video spectrums.
23877
23878 @item scale
23879 Set scale which was used when generating magnitude input spectrum.
23880 Can be @code{lin} or @code{log}. Default is @code{log}.
23881
23882 @item slide
23883 Set slide which was used when generating inputs spectrums.
23884 Can be @code{replace}, @code{scroll}, @code{fullframe} or @code{rscroll}.
23885 Default is @code{fullframe}.
23886
23887 @item win_func
23888 Set window function used for resynthesis.
23889
23890 @item overlap
23891 Set window overlap. In range @code{[0, 1]}. Default is @code{1},
23892 which means optimal overlap for selected window function will be picked.
23893
23894 @item orientation
23895 Set orientation of input videos. Can be @code{vertical} or @code{horizontal}.
23896 Default is @code{vertical}.
23897 @end table
23898
23899 @subsection Examples
23900
23901 @itemize
23902 @item
23903 First create magnitude and phase videos from audio, assuming audio is stereo with 44100 sample rate,
23904 then resynthesize videos back to audio with spectrumsynth:
23905 @example
23906 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
23907 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
23908 ffmpeg -i magnitude.nut -i phase.nut -lavfi spectrumsynth=channels=2:sample_rate=44100:win_func=hann:overlap=0.875:slide=fullframe output.flac
23909 @end example
23910 @end itemize
23911
23912 @section split, asplit
23913
23914 Split input into several identical outputs.
23915
23916 @code{asplit} works with audio input, @code{split} with video.
23917
23918 The filter accepts a single parameter which specifies the number of outputs. If
23919 unspecified, it defaults to 2.
23920
23921 @subsection Examples
23922
23923 @itemize
23924 @item
23925 Create two separate outputs from the same input:
23926 @example
23927 [in] split [out0][out1]
23928 @end example
23929
23930 @item
23931 To create 3 or more outputs, you need to specify the number of
23932 outputs, like in:
23933 @example
23934 [in] asplit=3 [out0][out1][out2]
23935 @end example
23936
23937 @item
23938 Create two separate outputs from the same input, one cropped and
23939 one padded:
23940 @example
23941 [in] split [splitout1][splitout2];
23942 [splitout1] crop=100:100:0:0    [cropout];
23943 [splitout2] pad=200:200:100:100 [padout];
23944 @end example
23945
23946 @item
23947 Create 5 copies of the input audio with @command{ffmpeg}:
23948 @example
23949 ffmpeg -i INPUT -filter_complex asplit=5 OUTPUT
23950 @end example
23951 @end itemize
23952
23953 @section zmq, azmq
23954
23955 Receive commands sent through a libzmq client, and forward them to
23956 filters in the filtergraph.
23957
23958 @code{zmq} and @code{azmq} work as a pass-through filters. @code{zmq}
23959 must be inserted between two video filters, @code{azmq} between two
23960 audio filters. Both are capable to send messages to any filter type.
23961
23962 To enable these filters you need to install the libzmq library and
23963 headers and configure FFmpeg with @code{--enable-libzmq}.
23964
23965 For more information about libzmq see:
23966 @url{http://www.zeromq.org/}
23967
23968 The @code{zmq} and @code{azmq} filters work as a libzmq server, which
23969 receives messages sent through a network interface defined by the
23970 @option{bind_address} (or the abbreviation "@option{b}") option.
23971 Default value of this option is @file{tcp://localhost:5555}. You may
23972 want to alter this value to your needs, but do not forget to escape any
23973 ':' signs (see @ref{filtergraph escaping}).
23974
23975 The received message must be in the form:
23976 @example
23977 @var{TARGET} @var{COMMAND} [@var{ARG}]
23978 @end example
23979
23980 @var{TARGET} specifies the target of the command, usually the name of
23981 the filter class or a specific filter instance name. The default
23982 filter instance name uses the pattern @samp{Parsed_<filter_name>_<index>},
23983 but you can override this by using the @samp{filter_name@@id} syntax
23984 (see @ref{Filtergraph syntax}).
23985
23986 @var{COMMAND} specifies the name of the command for the target filter.
23987
23988 @var{ARG} is optional and specifies the optional argument list for the
23989 given @var{COMMAND}.
23990
23991 Upon reception, the message is processed and the corresponding command
23992 is injected into the filtergraph. Depending on the result, the filter
23993 will send a reply to the client, adopting the format:
23994 @example
23995 @var{ERROR_CODE} @var{ERROR_REASON}
23996 @var{MESSAGE}
23997 @end example
23998
23999 @var{MESSAGE} is optional.
24000
24001 @subsection Examples
24002
24003 Look at @file{tools/zmqsend} for an example of a zmq client which can
24004 be used to send commands processed by these filters.
24005
24006 Consider the following filtergraph generated by @command{ffplay}.
24007 In this example the last overlay filter has an instance name. All other
24008 filters will have default instance names.
24009
24010 @example
24011 ffplay -dumpgraph 1 -f lavfi "
24012 color=s=100x100:c=red  [l];
24013 color=s=100x100:c=blue [r];
24014 nullsrc=s=200x100, zmq [bg];
24015 [bg][l]   overlay     [bg+l];
24016 [bg+l][r] overlay@@my=x=100 "
24017 @end example
24018
24019 To change the color of the left side of the video, the following
24020 command can be used:
24021 @example
24022 echo Parsed_color_0 c yellow | tools/zmqsend
24023 @end example
24024
24025 To change the right side:
24026 @example
24027 echo Parsed_color_1 c pink | tools/zmqsend
24028 @end example
24029
24030 To change the position of the right side:
24031 @example
24032 echo overlay@@my x 150 | tools/zmqsend
24033 @end example
24034
24035
24036 @c man end MULTIMEDIA FILTERS
24037
24038 @chapter Multimedia Sources
24039 @c man begin MULTIMEDIA SOURCES
24040
24041 Below is a description of the currently available multimedia sources.
24042
24043 @section amovie
24044
24045 This is the same as @ref{movie} source, except it selects an audio
24046 stream by default.
24047
24048 @anchor{movie}
24049 @section movie
24050
24051 Read audio and/or video stream(s) from a movie container.
24052
24053 It accepts the following parameters:
24054
24055 @table @option
24056 @item filename
24057 The name of the resource to read (not necessarily a file; it can also be a
24058 device or a stream accessed through some protocol).
24059
24060 @item format_name, f
24061 Specifies the format assumed for the movie to read, and can be either
24062 the name of a container or an input device. If not specified, the
24063 format is guessed from @var{movie_name} or by probing.
24064
24065 @item seek_point, sp
24066 Specifies the seek point in seconds. The frames will be output
24067 starting from this seek point. The parameter is evaluated with
24068 @code{av_strtod}, so the numerical value may be suffixed by an IS
24069 postfix. The default value is "0".
24070
24071 @item streams, s
24072 Specifies the streams to read. Several streams can be specified,
24073 separated by "+". The source will then have as many outputs, in the
24074 same order. The syntax is explained in the @ref{Stream specifiers,,"Stream specifiers"
24075 section in the ffmpeg manual,ffmpeg}. Two special names, "dv" and "da" specify
24076 respectively the default (best suited) video and audio stream. Default
24077 is "dv", or "da" if the filter is called as "amovie".
24078
24079 @item stream_index, si
24080 Specifies the index of the video stream to read. If the value is -1,
24081 the most suitable video stream will be automatically selected. The default
24082 value is "-1". Deprecated. If the filter is called "amovie", it will select
24083 audio instead of video.
24084
24085 @item loop
24086 Specifies how many times to read the stream in sequence.
24087 If the value is 0, the stream will be looped infinitely.
24088 Default value is "1".
24089
24090 Note that when the movie is looped the source timestamps are not
24091 changed, so it will generate non monotonically increasing timestamps.
24092
24093 @item discontinuity
24094 Specifies the time difference between frames above which the point is
24095 considered a timestamp discontinuity which is removed by adjusting the later
24096 timestamps.
24097 @end table
24098
24099 It allows overlaying a second video on top of the main input of
24100 a filtergraph, as shown in this graph:
24101 @example
24102 input -----------> deltapts0 --> overlay --> output
24103                                     ^
24104                                     |
24105 movie --> scale--> deltapts1 -------+
24106 @end example
24107 @subsection Examples
24108
24109 @itemize
24110 @item
24111 Skip 3.2 seconds from the start of the AVI file in.avi, and overlay it
24112 on top of the input labelled "in":
24113 @example
24114 movie=in.avi:seek_point=3.2, scale=180:-1, setpts=PTS-STARTPTS [over];
24115 [in] setpts=PTS-STARTPTS [main];
24116 [main][over] overlay=16:16 [out]
24117 @end example
24118
24119 @item
24120 Read from a video4linux2 device, and overlay it on top of the input
24121 labelled "in":
24122 @example
24123 movie=/dev/video0:f=video4linux2, scale=180:-1, setpts=PTS-STARTPTS [over];
24124 [in] setpts=PTS-STARTPTS [main];
24125 [main][over] overlay=16:16 [out]
24126 @end example
24127
24128 @item
24129 Read the first video stream and the audio stream with id 0x81 from
24130 dvd.vob; the video is connected to the pad named "video" and the audio is
24131 connected to the pad named "audio":
24132 @example
24133 movie=dvd.vob:s=v:0+#0x81 [video] [audio]
24134 @end example
24135 @end itemize
24136
24137 @subsection Commands
24138
24139 Both movie and amovie support the following commands:
24140 @table @option
24141 @item seek
24142 Perform seek using "av_seek_frame".
24143 The syntax is: seek @var{stream_index}|@var{timestamp}|@var{flags}
24144 @itemize
24145 @item
24146 @var{stream_index}: If stream_index is -1, a default
24147 stream is selected, and @var{timestamp} is automatically converted
24148 from AV_TIME_BASE units to the stream specific time_base.
24149 @item
24150 @var{timestamp}: Timestamp in AVStream.time_base units
24151 or, if no stream is specified, in AV_TIME_BASE units.
24152 @item
24153 @var{flags}: Flags which select direction and seeking mode.
24154 @end itemize
24155
24156 @item get_duration
24157 Get movie duration in AV_TIME_BASE units.
24158
24159 @end table
24160
24161 @c man end MULTIMEDIA SOURCES