]> git.sesse.net Git - ffmpeg/blob - doc/filters.texi
avcodec: add adpcm_ima_ssi encoder
[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 @subsection Commands
447
448 This filter supports the all above options as @ref{commands}.
449
450 @section acontrast
451 Simple audio dynamic range compression/expansion filter.
452
453 The filter accepts the following options:
454
455 @table @option
456 @item contrast
457 Set contrast. Default is 33. Allowed range is between 0 and 100.
458 @end table
459
460 @section acopy
461
462 Copy the input audio source unchanged to the output. This is mainly useful for
463 testing purposes.
464
465 @section acrossfade
466
467 Apply cross fade from one input audio stream to another input audio stream.
468 The cross fade is applied for specified duration near the end of first stream.
469
470 The filter accepts the following options:
471
472 @table @option
473 @item nb_samples, ns
474 Specify the number of samples for which the cross fade effect has to last.
475 At the end of the cross fade effect the first input audio will be completely
476 silent. Default is 44100.
477
478 @item duration, d
479 Specify the duration of the cross fade effect. See
480 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
481 for the accepted syntax.
482 By default the duration is determined by @var{nb_samples}.
483 If set this option is used instead of @var{nb_samples}.
484
485 @item overlap, o
486 Should first stream end overlap with second stream start. Default is enabled.
487
488 @item curve1
489 Set curve for cross fade transition for first stream.
490
491 @item curve2
492 Set curve for cross fade transition for second stream.
493
494 For description of available curve types see @ref{afade} filter description.
495 @end table
496
497 @subsection Examples
498
499 @itemize
500 @item
501 Cross fade from one input to another:
502 @example
503 ffmpeg -i first.flac -i second.flac -filter_complex acrossfade=d=10:c1=exp:c2=exp output.flac
504 @end example
505
506 @item
507 Cross fade from one input to another but without overlapping:
508 @example
509 ffmpeg -i first.flac -i second.flac -filter_complex acrossfade=d=10:o=0:c1=exp:c2=exp output.flac
510 @end example
511 @end itemize
512
513 @section acrossover
514 Split audio stream into several bands.
515
516 This filter splits audio stream into two or more frequency ranges.
517 Summing all streams back will give flat output.
518
519 The filter accepts the following options:
520
521 @table @option
522 @item split
523 Set split frequencies. Those must be positive and increasing.
524
525 @item order
526 Set filter order, can be @var{2nd}, @var{4th} or @var{8th}.
527 Default is @var{4th}.
528 @end table
529
530 @section acrusher
531
532 Reduce audio bit resolution.
533
534 This filter is bit crusher with enhanced functionality. A bit crusher
535 is used to audibly reduce number of bits an audio signal is sampled
536 with. This doesn't change the bit depth at all, it just produces the
537 effect. Material reduced in bit depth sounds more harsh and "digital".
538 This filter is able to even round to continuous values instead of discrete
539 bit depths.
540 Additionally it has a D/C offset which results in different crushing of
541 the lower and the upper half of the signal.
542 An Anti-Aliasing setting is able to produce "softer" crushing sounds.
543
544 Another feature of this filter is the logarithmic mode.
545 This setting switches from linear distances between bits to logarithmic ones.
546 The result is a much more "natural" sounding crusher which doesn't gate low
547 signals for example. The human ear has a logarithmic perception,
548 so this kind of crushing is much more pleasant.
549 Logarithmic crushing is also able to get anti-aliased.
550
551 The filter accepts the following options:
552
553 @table @option
554 @item level_in
555 Set level in.
556
557 @item level_out
558 Set level out.
559
560 @item bits
561 Set bit reduction.
562
563 @item mix
564 Set mixing amount.
565
566 @item mode
567 Can be linear: @code{lin} or logarithmic: @code{log}.
568
569 @item dc
570 Set DC.
571
572 @item aa
573 Set anti-aliasing.
574
575 @item samples
576 Set sample reduction.
577
578 @item lfo
579 Enable LFO. By default disabled.
580
581 @item lforange
582 Set LFO range.
583
584 @item lforate
585 Set LFO rate.
586 @end table
587
588 @section acue
589
590 Delay audio filtering until a given wallclock timestamp. See the @ref{cue}
591 filter.
592
593 @section adeclick
594 Remove impulsive noise from input audio.
595
596 Samples detected as impulsive noise are replaced by interpolated samples using
597 autoregressive modelling.
598
599 @table @option
600 @item w
601 Set window size, in milliseconds. Allowed range is from @code{10} to
602 @code{100}. Default value is @code{55} milliseconds.
603 This sets size of window which will be processed at once.
604
605 @item o
606 Set window overlap, in percentage of window size. Allowed range is from
607 @code{50} to @code{95}. Default value is @code{75} percent.
608 Setting this to a very high value increases impulsive noise removal but makes
609 whole process much slower.
610
611 @item a
612 Set autoregression order, in percentage of window size. Allowed range is from
613 @code{0} to @code{25}. Default value is @code{2} percent. This option also
614 controls quality of interpolated samples using neighbour good samples.
615
616 @item t
617 Set threshold value. Allowed range is from @code{1} to @code{100}.
618 Default value is @code{2}.
619 This controls the strength of impulsive noise which is going to be removed.
620 The lower value, the more samples will be detected as impulsive noise.
621
622 @item b
623 Set burst fusion, in percentage of window size. Allowed range is @code{0} to
624 @code{10}. Default value is @code{2}.
625 If any two samples detected as noise are spaced less than this value then any
626 sample between those two samples will be also detected as noise.
627
628 @item m
629 Set overlap method.
630
631 It accepts the following values:
632 @table @option
633 @item a
634 Select overlap-add method. Even not interpolated samples are slightly
635 changed with this method.
636
637 @item s
638 Select overlap-save method. Not interpolated samples remain unchanged.
639 @end table
640
641 Default value is @code{a}.
642 @end table
643
644 @section adeclip
645 Remove clipped samples from input audio.
646
647 Samples detected as clipped are replaced by interpolated samples using
648 autoregressive modelling.
649
650 @table @option
651 @item w
652 Set window size, in milliseconds. Allowed range is from @code{10} to @code{100}.
653 Default value is @code{55} milliseconds.
654 This sets size of window which will be processed at once.
655
656 @item o
657 Set window overlap, in percentage of window size. Allowed range is from @code{50}
658 to @code{95}. Default value is @code{75} percent.
659
660 @item a
661 Set autoregression order, in percentage of window size. Allowed range is from
662 @code{0} to @code{25}. Default value is @code{8} percent. This option also controls
663 quality of interpolated samples using neighbour good samples.
664
665 @item t
666 Set threshold value. Allowed range is from @code{1} to @code{100}.
667 Default value is @code{10}. Higher values make clip detection less aggressive.
668
669 @item n
670 Set size of histogram used to detect clips. Allowed range is from @code{100} to @code{9999}.
671 Default value is @code{1000}. Higher values make clip detection less aggressive.
672
673 @item m
674 Set overlap method.
675
676 It accepts the following values:
677 @table @option
678 @item a
679 Select overlap-add method. Even not interpolated samples are slightly changed
680 with this method.
681
682 @item s
683 Select overlap-save method. Not interpolated samples remain unchanged.
684 @end table
685
686 Default value is @code{a}.
687 @end table
688
689 @section adelay
690
691 Delay one or more audio channels.
692
693 Samples in delayed channel are filled with silence.
694
695 The filter accepts the following option:
696
697 @table @option
698 @item delays
699 Set list of delays in milliseconds for each channel separated by '|'.
700 Unused delays will be silently ignored. If number of given delays is
701 smaller than number of channels all remaining channels will not be delayed.
702 If you want to delay exact number of samples, append 'S' to number.
703 If you want instead to delay in seconds, append 's' to number.
704
705 @item all
706 Use last set delay for all remaining channels. By default is disabled.
707 This option if enabled changes how option @code{delays} is interpreted.
708 @end table
709
710 @subsection Examples
711
712 @itemize
713 @item
714 Delay first channel by 1.5 seconds, the third channel by 0.5 seconds and leave
715 the second channel (and any other channels that may be present) unchanged.
716 @example
717 adelay=1500|0|500
718 @end example
719
720 @item
721 Delay second channel by 500 samples, the third channel by 700 samples and leave
722 the first channel (and any other channels that may be present) unchanged.
723 @example
724 adelay=0|500S|700S
725 @end example
726
727 @item
728 Delay all channels by same number of samples:
729 @example
730 adelay=delays=64S:all=1
731 @end example
732 @end itemize
733
734 @section aderivative, aintegral
735
736 Compute derivative/integral of audio stream.
737
738 Applying both filters one after another produces original audio.
739
740 @section aecho
741
742 Apply echoing to the input audio.
743
744 Echoes are reflected sound and can occur naturally amongst mountains
745 (and sometimes large buildings) when talking or shouting; digital echo
746 effects emulate this behaviour and are often used to help fill out the
747 sound of a single instrument or vocal. The time difference between the
748 original signal and the reflection is the @code{delay}, and the
749 loudness of the reflected signal is the @code{decay}.
750 Multiple echoes can have different delays and decays.
751
752 A description of the accepted parameters follows.
753
754 @table @option
755 @item in_gain
756 Set input gain of reflected signal. Default is @code{0.6}.
757
758 @item out_gain
759 Set output gain of reflected signal. Default is @code{0.3}.
760
761 @item delays
762 Set list of time intervals in milliseconds between original signal and reflections
763 separated by '|'. Allowed range for each @code{delay} is @code{(0 - 90000.0]}.
764 Default is @code{1000}.
765
766 @item decays
767 Set list of loudness of reflected signals separated by '|'.
768 Allowed range for each @code{decay} is @code{(0 - 1.0]}.
769 Default is @code{0.5}.
770 @end table
771
772 @subsection Examples
773
774 @itemize
775 @item
776 Make it sound as if there are twice as many instruments as are actually playing:
777 @example
778 aecho=0.8:0.88:60:0.4
779 @end example
780
781 @item
782 If delay is very short, then it sounds like a (metallic) robot playing music:
783 @example
784 aecho=0.8:0.88:6:0.4
785 @end example
786
787 @item
788 A longer delay will sound like an open air concert in the mountains:
789 @example
790 aecho=0.8:0.9:1000:0.3
791 @end example
792
793 @item
794 Same as above but with one more mountain:
795 @example
796 aecho=0.8:0.9:1000|1800:0.3|0.25
797 @end example
798 @end itemize
799
800 @section aemphasis
801 Audio emphasis filter creates or restores material directly taken from LPs or
802 emphased CDs with different filter curves. E.g. to store music on vinyl the
803 signal has to be altered by a filter first to even out the disadvantages of
804 this recording medium.
805 Once the material is played back the inverse filter has to be applied to
806 restore the distortion of the frequency response.
807
808 The filter accepts the following options:
809
810 @table @option
811 @item level_in
812 Set input gain.
813
814 @item level_out
815 Set output gain.
816
817 @item mode
818 Set filter mode. For restoring material use @code{reproduction} mode, otherwise
819 use @code{production} mode. Default is @code{reproduction} mode.
820
821 @item type
822 Set filter type. Selects medium. Can be one of the following:
823
824 @table @option
825 @item col
826 select Columbia.
827 @item emi
828 select EMI.
829 @item bsi
830 select BSI (78RPM).
831 @item riaa
832 select RIAA.
833 @item cd
834 select Compact Disc (CD).
835 @item 50fm
836 select 50µs (FM).
837 @item 75fm
838 select 75µs (FM).
839 @item 50kf
840 select 50µs (FM-KF).
841 @item 75kf
842 select 75µs (FM-KF).
843 @end table
844 @end table
845
846 @section aeval
847
848 Modify an audio signal according to the specified expressions.
849
850 This filter accepts one or more expressions (one for each channel),
851 which are evaluated and used to modify a corresponding audio signal.
852
853 It accepts the following parameters:
854
855 @table @option
856 @item exprs
857 Set the '|'-separated expressions list for each separate channel. If
858 the number of input channels is greater than the number of
859 expressions, the last specified expression is used for the remaining
860 output channels.
861
862 @item channel_layout, c
863 Set output channel layout. If not specified, the channel layout is
864 specified by the number of expressions. If set to @samp{same}, it will
865 use by default the same input channel layout.
866 @end table
867
868 Each expression in @var{exprs} can contain the following constants and functions:
869
870 @table @option
871 @item ch
872 channel number of the current expression
873
874 @item n
875 number of the evaluated sample, starting from 0
876
877 @item s
878 sample rate
879
880 @item t
881 time of the evaluated sample expressed in seconds
882
883 @item nb_in_channels
884 @item nb_out_channels
885 input and output number of channels
886
887 @item val(CH)
888 the value of input channel with number @var{CH}
889 @end table
890
891 Note: this filter is slow. For faster processing you should use a
892 dedicated filter.
893
894 @subsection Examples
895
896 @itemize
897 @item
898 Half volume:
899 @example
900 aeval=val(ch)/2:c=same
901 @end example
902
903 @item
904 Invert phase of the second channel:
905 @example
906 aeval=val(0)|-val(1)
907 @end example
908 @end itemize
909
910 @anchor{afade}
911 @section afade
912
913 Apply fade-in/out effect to input audio.
914
915 A description of the accepted parameters follows.
916
917 @table @option
918 @item type, t
919 Specify the effect type, can be either @code{in} for fade-in, or
920 @code{out} for a fade-out effect. Default is @code{in}.
921
922 @item start_sample, ss
923 Specify the number of the start sample for starting to apply the fade
924 effect. Default is 0.
925
926 @item nb_samples, ns
927 Specify the number of samples for which the fade effect has to last. At
928 the end of the fade-in effect the output audio will have the same
929 volume as the input audio, at the end of the fade-out transition
930 the output audio will be silence. Default is 44100.
931
932 @item start_time, st
933 Specify the start time of the fade effect. Default is 0.
934 The value must be specified as a time duration; see
935 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
936 for the accepted syntax.
937 If set this option is used instead of @var{start_sample}.
938
939 @item duration, d
940 Specify the duration of the fade effect. See
941 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
942 for the accepted syntax.
943 At the end of the fade-in effect the output audio will have the same
944 volume as the input audio, at the end of the fade-out transition
945 the output audio will be silence.
946 By default the duration is determined by @var{nb_samples}.
947 If set this option is used instead of @var{nb_samples}.
948
949 @item curve
950 Set curve for fade transition.
951
952 It accepts the following values:
953 @table @option
954 @item tri
955 select triangular, linear slope (default)
956 @item qsin
957 select quarter of sine wave
958 @item hsin
959 select half of sine wave
960 @item esin
961 select exponential sine wave
962 @item log
963 select logarithmic
964 @item ipar
965 select inverted parabola
966 @item qua
967 select quadratic
968 @item cub
969 select cubic
970 @item squ
971 select square root
972 @item cbr
973 select cubic root
974 @item par
975 select parabola
976 @item exp
977 select exponential
978 @item iqsin
979 select inverted quarter of sine wave
980 @item ihsin
981 select inverted half of sine wave
982 @item dese
983 select double-exponential seat
984 @item desi
985 select double-exponential sigmoid
986 @item losi
987 select logistic sigmoid
988 @item nofade
989 no fade applied
990 @end table
991 @end table
992
993 @subsection Examples
994
995 @itemize
996 @item
997 Fade in first 15 seconds of audio:
998 @example
999 afade=t=in:ss=0:d=15
1000 @end example
1001
1002 @item
1003 Fade out last 25 seconds of a 900 seconds audio:
1004 @example
1005 afade=t=out:st=875:d=25
1006 @end example
1007 @end itemize
1008
1009 @section afftdn
1010 Denoise audio samples with FFT.
1011
1012 A description of the accepted parameters follows.
1013
1014 @table @option
1015 @item nr
1016 Set the noise reduction in dB, allowed range is 0.01 to 97.
1017 Default value is 12 dB.
1018
1019 @item nf
1020 Set the noise floor in dB, allowed range is -80 to -20.
1021 Default value is -50 dB.
1022
1023 @item nt
1024 Set the noise type.
1025
1026 It accepts the following values:
1027 @table @option
1028 @item w
1029 Select white noise.
1030
1031 @item v
1032 Select vinyl noise.
1033
1034 @item s
1035 Select shellac noise.
1036
1037 @item c
1038 Select custom noise, defined in @code{bn} option.
1039
1040 Default value is white noise.
1041 @end table
1042
1043 @item bn
1044 Set custom band noise for every one of 15 bands.
1045 Bands are separated by ' ' or '|'.
1046
1047 @item rf
1048 Set the residual floor in dB, allowed range is -80 to -20.
1049 Default value is -38 dB.
1050
1051 @item tn
1052 Enable noise tracking. By default is disabled.
1053 With this enabled, noise floor is automatically adjusted.
1054
1055 @item tr
1056 Enable residual tracking. By default is disabled.
1057
1058 @item om
1059 Set the output mode.
1060
1061 It accepts the following values:
1062 @table @option
1063 @item i
1064 Pass input unchanged.
1065
1066 @item o
1067 Pass noise filtered out.
1068
1069 @item n
1070 Pass only noise.
1071
1072 Default value is @var{o}.
1073 @end table
1074 @end table
1075
1076 @subsection Commands
1077
1078 This filter supports the following commands:
1079 @table @option
1080 @item sample_noise, sn
1081 Start or stop measuring noise profile.
1082 Syntax for the command is : "start" or "stop" string.
1083 After measuring noise profile is stopped it will be
1084 automatically applied in filtering.
1085
1086 @item noise_reduction, nr
1087 Change noise reduction. Argument is single float number.
1088 Syntax for the command is : "@var{noise_reduction}"
1089
1090 @item noise_floor, nf
1091 Change noise floor. Argument is single float number.
1092 Syntax for the command is : "@var{noise_floor}"
1093
1094 @item output_mode, om
1095 Change output mode operation.
1096 Syntax for the command is : "i", "o" or "n" string.
1097 @end table
1098
1099 @section afftfilt
1100 Apply arbitrary expressions to samples in frequency domain.
1101
1102 @table @option
1103 @item real
1104 Set frequency domain real expression for each separate channel separated
1105 by '|'. Default is "re".
1106 If the number of input channels is greater than the number of
1107 expressions, the last specified expression is used for the remaining
1108 output channels.
1109
1110 @item imag
1111 Set frequency domain imaginary expression for each separate channel
1112 separated by '|'. Default is "im".
1113
1114 Each expression in @var{real} and @var{imag} can contain the following
1115 constants and functions:
1116
1117 @table @option
1118 @item sr
1119 sample rate
1120
1121 @item b
1122 current frequency bin number
1123
1124 @item nb
1125 number of available bins
1126
1127 @item ch
1128 channel number of the current expression
1129
1130 @item chs
1131 number of channels
1132
1133 @item pts
1134 current frame pts
1135
1136 @item re
1137 current real part of frequency bin of current channel
1138
1139 @item im
1140 current imaginary part of frequency bin of current channel
1141
1142 @item real(b, ch)
1143 Return the value of real part of frequency bin at location (@var{bin},@var{channel})
1144
1145 @item imag(b, ch)
1146 Return the value of imaginary part of frequency bin at location (@var{bin},@var{channel})
1147 @end table
1148
1149 @item win_size
1150 Set window size. Allowed range is from 16 to 131072.
1151 Default is @code{4096}
1152
1153 @item win_func
1154 Set window function. Default is @code{hann}.
1155
1156 @item overlap
1157 Set window overlap. If set to 1, the recommended overlap for selected
1158 window function will be picked. Default is @code{0.75}.
1159 @end table
1160
1161 @subsection Examples
1162
1163 @itemize
1164 @item
1165 Leave almost only low frequencies in audio:
1166 @example
1167 afftfilt="'real=re * (1-clip((b/nb)*b,0,1))':imag='im * (1-clip((b/nb)*b,0,1))'"
1168 @end example
1169
1170 @item
1171 Apply robotize effect:
1172 @example
1173 afftfilt="real='hypot(re,im)*sin(0)':imag='hypot(re,im)*cos(0)':win_size=512:overlap=0.75"
1174 @end example
1175
1176 @item
1177 Apply whisper effect:
1178 @example
1179 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"
1180 @end example
1181 @end itemize
1182
1183 @anchor{afir}
1184 @section afir
1185
1186 Apply an arbitrary Finite Impulse Response filter.
1187
1188 This filter is designed for applying long FIR filters,
1189 up to 60 seconds long.
1190
1191 It can be used as component for digital crossover filters,
1192 room equalization, cross talk cancellation, wavefield synthesis,
1193 auralization, ambiophonics, ambisonics and spatialization.
1194
1195 This filter uses the streams higher than first one as FIR coefficients.
1196 If the non-first stream holds a single channel, it will be used
1197 for all input channels in the first stream, otherwise
1198 the number of channels in the non-first stream must be same as
1199 the number of channels in the first stream.
1200
1201 It accepts the following parameters:
1202
1203 @table @option
1204 @item dry
1205 Set dry gain. This sets input gain.
1206
1207 @item wet
1208 Set wet gain. This sets final output gain.
1209
1210 @item length
1211 Set Impulse Response filter length. Default is 1, which means whole IR is processed.
1212
1213 @item gtype
1214 Enable applying gain measured from power of IR.
1215
1216 Set which approach to use for auto gain measurement.
1217
1218 @table @option
1219 @item none
1220 Do not apply any gain.
1221
1222 @item peak
1223 select peak gain, very conservative approach. This is default value.
1224
1225 @item dc
1226 select DC gain, limited application.
1227
1228 @item gn
1229 select gain to noise approach, this is most popular one.
1230 @end table
1231
1232 @item irgain
1233 Set gain to be applied to IR coefficients before filtering.
1234 Allowed range is 0 to 1. This gain is applied after any gain applied with @var{gtype} option.
1235
1236 @item irfmt
1237 Set format of IR stream. Can be @code{mono} or @code{input}.
1238 Default is @code{input}.
1239
1240 @item maxir
1241 Set max allowed Impulse Response filter duration in seconds. Default is 30 seconds.
1242 Allowed range is 0.1 to 60 seconds.
1243
1244 @item response
1245 Show IR frequency response, magnitude(magenta), phase(green) and group delay(yellow) in additional video stream.
1246 By default it is disabled.
1247
1248 @item channel
1249 Set for which IR channel to display frequency response. By default is first channel
1250 displayed. This option is used only when @var{response} is enabled.
1251
1252 @item size
1253 Set video stream size. This option is used only when @var{response} is enabled.
1254
1255 @item rate
1256 Set video stream frame rate. This option is used only when @var{response} is enabled.
1257
1258 @item minp
1259 Set minimal partition size used for convolution. Default is @var{8192}.
1260 Allowed range is from @var{1} to @var{32768}.
1261 Lower values decreases latency at cost of higher CPU usage.
1262
1263 @item maxp
1264 Set maximal partition size used for convolution. Default is @var{8192}.
1265 Allowed range is from @var{8} to @var{32768}.
1266 Lower values may increase CPU usage.
1267
1268 @item nbirs
1269 Set number of input impulse responses streams which will be switchable at runtime.
1270 Allowed range is from @var{1} to @var{32}. Default is @var{1}.
1271
1272 @item ir
1273 Set IR stream which will be used for convolution, starting from @var{0}, should always be
1274 lower than supplied value by @code{nbirs} option. Default is @var{0}.
1275 This option can be changed at runtime via @ref{commands}.
1276 @end table
1277
1278 @subsection Examples
1279
1280 @itemize
1281 @item
1282 Apply reverb to stream using mono IR file as second input, complete command using ffmpeg:
1283 @example
1284 ffmpeg -i input.wav -i middle_tunnel_1way_mono.wav -lavfi afir output.wav
1285 @end example
1286 @end itemize
1287
1288 @anchor{aformat}
1289 @section aformat
1290
1291 Set output format constraints for the input audio. The framework will
1292 negotiate the most appropriate format to minimize conversions.
1293
1294 It accepts the following parameters:
1295 @table @option
1296
1297 @item sample_fmts, f
1298 A '|'-separated list of requested sample formats.
1299
1300 @item sample_rates, r
1301 A '|'-separated list of requested sample rates.
1302
1303 @item channel_layouts, cl
1304 A '|'-separated list of requested channel layouts.
1305
1306 See @ref{channel layout syntax,,the Channel Layout section in the ffmpeg-utils(1) manual,ffmpeg-utils}
1307 for the required syntax.
1308 @end table
1309
1310 If a parameter is omitted, all values are allowed.
1311
1312 Force the output to either unsigned 8-bit or signed 16-bit stereo
1313 @example
1314 aformat=sample_fmts=u8|s16:channel_layouts=stereo
1315 @end example
1316
1317 @section agate
1318
1319 A gate is mainly used to reduce lower parts of a signal. This kind of signal
1320 processing reduces disturbing noise between useful signals.
1321
1322 Gating is done by detecting the volume below a chosen level @var{threshold}
1323 and dividing it by the factor set with @var{ratio}. The bottom of the noise
1324 floor is set via @var{range}. Because an exact manipulation of the signal
1325 would cause distortion of the waveform the reduction can be levelled over
1326 time. This is done by setting @var{attack} and @var{release}.
1327
1328 @var{attack} determines how long the signal has to fall below the threshold
1329 before any reduction will occur and @var{release} sets the time the signal
1330 has to rise above the threshold to reduce the reduction again.
1331 Shorter signals than the chosen attack time will be left untouched.
1332
1333 @table @option
1334 @item level_in
1335 Set input level before filtering.
1336 Default is 1. Allowed range is from 0.015625 to 64.
1337
1338 @item mode
1339 Set the mode of operation. Can be @code{upward} or @code{downward}.
1340 Default is @code{downward}. If set to @code{upward} mode, higher parts of signal
1341 will be amplified, expanding dynamic range in upward direction.
1342 Otherwise, in case of @code{downward} lower parts of signal will be reduced.
1343
1344 @item range
1345 Set the level of gain reduction when the signal is below the threshold.
1346 Default is 0.06125. Allowed range is from 0 to 1.
1347 Setting this to 0 disables reduction and then filter behaves like expander.
1348
1349 @item threshold
1350 If a signal rises above this level the gain reduction is released.
1351 Default is 0.125. Allowed range is from 0 to 1.
1352
1353 @item ratio
1354 Set a ratio by which the signal is reduced.
1355 Default is 2. Allowed range is from 1 to 9000.
1356
1357 @item attack
1358 Amount of milliseconds the signal has to rise above the threshold before gain
1359 reduction stops.
1360 Default is 20 milliseconds. Allowed range is from 0.01 to 9000.
1361
1362 @item release
1363 Amount of milliseconds the signal has to fall below the threshold before the
1364 reduction is increased again. Default is 250 milliseconds.
1365 Allowed range is from 0.01 to 9000.
1366
1367 @item makeup
1368 Set amount of amplification of signal after processing.
1369 Default is 1. Allowed range is from 1 to 64.
1370
1371 @item knee
1372 Curve the sharp knee around the threshold to enter gain reduction more softly.
1373 Default is 2.828427125. Allowed range is from 1 to 8.
1374
1375 @item detection
1376 Choose if exact signal should be taken for detection or an RMS like one.
1377 Default is @code{rms}. Can be @code{peak} or @code{rms}.
1378
1379 @item link
1380 Choose if the average level between all channels or the louder channel affects
1381 the reduction.
1382 Default is @code{average}. Can be @code{average} or @code{maximum}.
1383 @end table
1384
1385 @section aiir
1386
1387 Apply an arbitrary Infinite Impulse Response filter.
1388
1389 It accepts the following parameters:
1390
1391 @table @option
1392 @item zeros, z
1393 Set numerator/zeros coefficients.
1394
1395 @item poles, p
1396 Set denominator/poles coefficients.
1397
1398 @item gains, k
1399 Set channels gains.
1400
1401 @item dry_gain
1402 Set input gain.
1403
1404 @item wet_gain
1405 Set output gain.
1406
1407 @item format, f
1408 Set coefficients format.
1409
1410 @table @samp
1411 @item tf
1412 transfer function
1413 @item zp
1414 Z-plane zeros/poles, cartesian (default)
1415 @item pr
1416 Z-plane zeros/poles, polar radians
1417 @item pd
1418 Z-plane zeros/poles, polar degrees
1419 @end table
1420
1421 @item process, r
1422 Set kind of processing.
1423 Can be @code{d} - direct or @code{s} - serial cascading. Default is @code{s}.
1424
1425 @item precision, e
1426 Set filtering precision.
1427
1428 @table @samp
1429 @item dbl
1430 double-precision floating-point (default)
1431 @item flt
1432 single-precision floating-point
1433 @item i32
1434 32-bit integers
1435 @item i16
1436 16-bit integers
1437 @end table
1438
1439 @item normalize, n
1440 Normalize filter coefficients, by default is enabled.
1441 Enabling it will normalize magnitude response at DC to 0dB.
1442
1443 @item mix
1444 How much to use filtered signal in output. Default is 1.
1445 Range is between 0 and 1.
1446
1447 @item response
1448 Show IR frequency response, magnitude(magenta), phase(green) and group delay(yellow) in additional video stream.
1449 By default it is disabled.
1450
1451 @item channel
1452 Set for which IR channel to display frequency response. By default is first channel
1453 displayed. This option is used only when @var{response} is enabled.
1454
1455 @item size
1456 Set video stream size. This option is used only when @var{response} is enabled.
1457 @end table
1458
1459 Coefficients in @code{tf} format are separated by spaces and are in ascending
1460 order.
1461
1462 Coefficients in @code{zp} format are separated by spaces and order of coefficients
1463 doesn't matter. Coefficients in @code{zp} format are complex numbers with @var{i}
1464 imaginary unit.
1465
1466 Different coefficients and gains can be provided for every channel, in such case
1467 use '|' to separate coefficients or gains. Last provided coefficients will be
1468 used for all remaining channels.
1469
1470 @subsection Examples
1471
1472 @itemize
1473 @item
1474 Apply 2 pole elliptic notch at around 5000Hz for 48000 Hz sample rate:
1475 @example
1476 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
1477 @end example
1478
1479 @item
1480 Same as above but in @code{zp} format:
1481 @example
1482 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
1483 @end example
1484 @end itemize
1485
1486 @section alimiter
1487
1488 The limiter prevents an input signal from rising over a desired threshold.
1489 This limiter uses lookahead technology to prevent your signal from distorting.
1490 It means that there is a small delay after the signal is processed. Keep in mind
1491 that the delay it produces is the attack time you set.
1492
1493 The filter accepts the following options:
1494
1495 @table @option
1496 @item level_in
1497 Set input gain. Default is 1.
1498
1499 @item level_out
1500 Set output gain. Default is 1.
1501
1502 @item limit
1503 Don't let signals above this level pass the limiter. Default is 1.
1504
1505 @item attack
1506 The limiter will reach its attenuation level in this amount of time in
1507 milliseconds. Default is 5 milliseconds.
1508
1509 @item release
1510 Come back from limiting to attenuation 1.0 in this amount of milliseconds.
1511 Default is 50 milliseconds.
1512
1513 @item asc
1514 When gain reduction is always needed ASC takes care of releasing to an
1515 average reduction level rather than reaching a reduction of 0 in the release
1516 time.
1517
1518 @item asc_level
1519 Select how much the release time is affected by ASC, 0 means nearly no changes
1520 in release time while 1 produces higher release times.
1521
1522 @item level
1523 Auto level output signal. Default is enabled.
1524 This normalizes audio back to 0dB if enabled.
1525 @end table
1526
1527 Depending on picked setting it is recommended to upsample input 2x or 4x times
1528 with @ref{aresample} before applying this filter.
1529
1530 @section allpass
1531
1532 Apply a two-pole all-pass filter with central frequency (in Hz)
1533 @var{frequency}, and filter-width @var{width}.
1534 An all-pass filter changes the audio's frequency to phase relationship
1535 without changing its frequency to amplitude relationship.
1536
1537 The filter accepts the following options:
1538
1539 @table @option
1540 @item frequency, f
1541 Set frequency in Hz.
1542
1543 @item width_type, t
1544 Set method to specify band-width of filter.
1545 @table @option
1546 @item h
1547 Hz
1548 @item q
1549 Q-Factor
1550 @item o
1551 octave
1552 @item s
1553 slope
1554 @item k
1555 kHz
1556 @end table
1557
1558 @item width, w
1559 Specify the band-width of a filter in width_type units.
1560
1561 @item mix, m
1562 How much to use filtered signal in output. Default is 1.
1563 Range is between 0 and 1.
1564
1565 @item channels, c
1566 Specify which channels to filter, by default all available are filtered.
1567
1568 @item normalize, n
1569 Normalize biquad coefficients, by default is disabled.
1570 Enabling it will normalize magnitude response at DC to 0dB.
1571 @end table
1572
1573 @subsection Commands
1574
1575 This filter supports the following commands:
1576 @table @option
1577 @item frequency, f
1578 Change allpass frequency.
1579 Syntax for the command is : "@var{frequency}"
1580
1581 @item width_type, t
1582 Change allpass width_type.
1583 Syntax for the command is : "@var{width_type}"
1584
1585 @item width, w
1586 Change allpass width.
1587 Syntax for the command is : "@var{width}"
1588
1589 @item mix, m
1590 Change allpass mix.
1591 Syntax for the command is : "@var{mix}"
1592 @end table
1593
1594 @section aloop
1595
1596 Loop audio samples.
1597
1598 The filter accepts the following options:
1599
1600 @table @option
1601 @item loop
1602 Set the number of loops. Setting this value to -1 will result in infinite loops.
1603 Default is 0.
1604
1605 @item size
1606 Set maximal number of samples. Default is 0.
1607
1608 @item start
1609 Set first sample of loop. Default is 0.
1610 @end table
1611
1612 @anchor{amerge}
1613 @section amerge
1614
1615 Merge two or more audio streams into a single multi-channel stream.
1616
1617 The filter accepts the following options:
1618
1619 @table @option
1620
1621 @item inputs
1622 Set the number of inputs. Default is 2.
1623
1624 @end table
1625
1626 If the channel layouts of the inputs are disjoint, and therefore compatible,
1627 the channel layout of the output will be set accordingly and the channels
1628 will be reordered as necessary. If the channel layouts of the inputs are not
1629 disjoint, the output will have all the channels of the first input then all
1630 the channels of the second input, in that order, and the channel layout of
1631 the output will be the default value corresponding to the total number of
1632 channels.
1633
1634 For example, if the first input is in 2.1 (FL+FR+LF) and the second input
1635 is FC+BL+BR, then the output will be in 5.1, with the channels in the
1636 following order: a1, a2, b1, a3, b2, b3 (a1 is the first channel of the
1637 first input, b1 is the first channel of the second input).
1638
1639 On the other hand, if both input are in stereo, the output channels will be
1640 in the default order: a1, a2, b1, b2, and the channel layout will be
1641 arbitrarily set to 4.0, which may or may not be the expected value.
1642
1643 All inputs must have the same sample rate, and format.
1644
1645 If inputs do not have the same duration, the output will stop with the
1646 shortest.
1647
1648 @subsection Examples
1649
1650 @itemize
1651 @item
1652 Merge two mono files into a stereo stream:
1653 @example
1654 amovie=left.wav [l] ; amovie=right.mp3 [r] ; [l] [r] amerge
1655 @end example
1656
1657 @item
1658 Multiple merges assuming 1 video stream and 6 audio streams in @file{input.mkv}:
1659 @example
1660 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
1661 @end example
1662 @end itemize
1663
1664 @section amix
1665
1666 Mixes multiple audio inputs into a single output.
1667
1668 Note that this filter only supports float samples (the @var{amerge}
1669 and @var{pan} audio filters support many formats). If the @var{amix}
1670 input has integer samples then @ref{aresample} will be automatically
1671 inserted to perform the conversion to float samples.
1672
1673 For example
1674 @example
1675 ffmpeg -i INPUT1 -i INPUT2 -i INPUT3 -filter_complex amix=inputs=3:duration=first:dropout_transition=3 OUTPUT
1676 @end example
1677 will mix 3 input audio streams to a single output with the same duration as the
1678 first input and a dropout transition time of 3 seconds.
1679
1680 It accepts the following parameters:
1681 @table @option
1682
1683 @item inputs
1684 The number of inputs. If unspecified, it defaults to 2.
1685
1686 @item duration
1687 How to determine the end-of-stream.
1688 @table @option
1689
1690 @item longest
1691 The duration of the longest input. (default)
1692
1693 @item shortest
1694 The duration of the shortest input.
1695
1696 @item first
1697 The duration of the first input.
1698
1699 @end table
1700
1701 @item dropout_transition
1702 The transition time, in seconds, for volume renormalization when an input
1703 stream ends. The default value is 2 seconds.
1704
1705 @item weights
1706 Specify weight of each input audio stream as sequence.
1707 Each weight is separated by space. By default all inputs have same weight.
1708 @end table
1709
1710 @subsection Commands
1711
1712 This filter supports the following commands:
1713 @table @option
1714 @item weights
1715 Syntax is same as option with same name.
1716 @end table
1717
1718 @section amultiply
1719
1720 Multiply first audio stream with second audio stream and store result
1721 in output audio stream. Multiplication is done by multiplying each
1722 sample from first stream with sample at same position from second stream.
1723
1724 With this element-wise multiplication one can create amplitude fades and
1725 amplitude modulations.
1726
1727 @section anequalizer
1728
1729 High-order parametric multiband equalizer for each channel.
1730
1731 It accepts the following parameters:
1732 @table @option
1733 @item params
1734
1735 This option string is in format:
1736 "c@var{chn} f=@var{cf} w=@var{w} g=@var{g} t=@var{f} | ..."
1737 Each equalizer band is separated by '|'.
1738
1739 @table @option
1740 @item chn
1741 Set channel number to which equalization will be applied.
1742 If input doesn't have that channel the entry is ignored.
1743
1744 @item f
1745 Set central frequency for band.
1746 If input doesn't have that frequency the entry is ignored.
1747
1748 @item w
1749 Set band width in hertz.
1750
1751 @item g
1752 Set band gain in dB.
1753
1754 @item t
1755 Set filter type for band, optional, can be:
1756
1757 @table @samp
1758 @item 0
1759 Butterworth, this is default.
1760
1761 @item 1
1762 Chebyshev type 1.
1763
1764 @item 2
1765 Chebyshev type 2.
1766 @end table
1767 @end table
1768
1769 @item curves
1770 With this option activated frequency response of anequalizer is displayed
1771 in video stream.
1772
1773 @item size
1774 Set video stream size. Only useful if curves option is activated.
1775
1776 @item mgain
1777 Set max gain that will be displayed. Only useful if curves option is activated.
1778 Setting this to a reasonable value makes it possible to display gain which is derived from
1779 neighbour bands which are too close to each other and thus produce higher gain
1780 when both are activated.
1781
1782 @item fscale
1783 Set frequency scale used to draw frequency response in video output.
1784 Can be linear or logarithmic. Default is logarithmic.
1785
1786 @item colors
1787 Set color for each channel curve which is going to be displayed in video stream.
1788 This is list of color names separated by space or by '|'.
1789 Unrecognised or missing colors will be replaced by white color.
1790 @end table
1791
1792 @subsection Examples
1793
1794 @itemize
1795 @item
1796 Lower gain by 10 of central frequency 200Hz and width 100 Hz
1797 for first 2 channels using Chebyshev type 1 filter:
1798 @example
1799 anequalizer=c0 f=200 w=100 g=-10 t=1|c1 f=200 w=100 g=-10 t=1
1800 @end example
1801 @end itemize
1802
1803 @subsection Commands
1804
1805 This filter supports the following commands:
1806 @table @option
1807 @item change
1808 Alter existing filter parameters.
1809 Syntax for the commands is : "@var{fN}|f=@var{freq}|w=@var{width}|g=@var{gain}"
1810
1811 @var{fN} is existing filter number, starting from 0, if no such filter is available
1812 error is returned.
1813 @var{freq} set new frequency parameter.
1814 @var{width} set new width parameter in herz.
1815 @var{gain} set new gain parameter in dB.
1816
1817 Full filter invocation with asendcmd may look like this:
1818 asendcmd=c='4.0 anequalizer change 0|f=200|w=50|g=1',anequalizer=...
1819 @end table
1820
1821 @section anlmdn
1822
1823 Reduce broadband noise in audio samples using Non-Local Means algorithm.
1824
1825 Each sample is adjusted by looking for other samples with similar contexts. This
1826 context similarity is defined by comparing their surrounding patches of size
1827 @option{p}. Patches are searched in an area of @option{r} around the sample.
1828
1829 The filter accepts the following options:
1830
1831 @table @option
1832 @item s
1833 Set denoising strength. Allowed range is from 0.00001 to 10. Default value is 0.00001.
1834
1835 @item p
1836 Set patch radius duration. Allowed range is from 1 to 100 milliseconds.
1837 Default value is 2 milliseconds.
1838
1839 @item r
1840 Set research radius duration. Allowed range is from 2 to 300 milliseconds.
1841 Default value is 6 milliseconds.
1842
1843 @item o
1844 Set the output mode.
1845
1846 It accepts the following values:
1847 @table @option
1848 @item i
1849 Pass input unchanged.
1850
1851 @item o
1852 Pass noise filtered out.
1853
1854 @item n
1855 Pass only noise.
1856
1857 Default value is @var{o}.
1858 @end table
1859
1860 @item m
1861 Set smooth factor. Default value is @var{11}. Allowed range is from @var{1} to @var{15}.
1862 @end table
1863
1864 @subsection Commands
1865
1866 This filter supports the following commands:
1867 @table @option
1868 @item s
1869 Change denoise strength. Argument is single float number.
1870 Syntax for the command is : "@var{s}"
1871
1872 @item o
1873 Change output mode.
1874 Syntax for the command is : "i", "o" or "n" string.
1875 @end table
1876
1877 @section anlms
1878 Apply Normalized Least-Mean-Squares algorithm to the first audio stream using the second audio stream.
1879
1880 This adaptive filter is used to mimic a desired filter by finding the filter coefficients that
1881 relate to producing the least mean square of the error signal (difference between the desired,
1882 2nd input audio stream and the actual signal, the 1st input audio stream).
1883
1884 A description of the accepted options follows.
1885
1886 @table @option
1887 @item order
1888 Set filter order.
1889
1890 @item mu
1891 Set filter mu.
1892
1893 @item eps
1894 Set the filter eps.
1895
1896 @item leakage
1897 Set the filter leakage.
1898
1899 @item out_mode
1900 It accepts the following values:
1901 @table @option
1902 @item i
1903 Pass the 1st input.
1904
1905 @item d
1906 Pass the 2nd input.
1907
1908 @item o
1909 Pass filtered samples.
1910
1911 @item n
1912 Pass difference between desired and filtered samples.
1913
1914 Default value is @var{o}.
1915 @end table
1916 @end table
1917
1918 @subsection Examples
1919
1920 @itemize
1921 @item
1922 One of many usages of this filter is noise reduction, input audio is filtered
1923 with same samples that are delayed by fixed amount, one such example for stereo audio is:
1924 @example
1925 asplit[a][b],[a]adelay=32S|32S[a],[b][a]anlms=order=128:leakage=0.0005:mu=.5:out_mode=o
1926 @end example
1927 @end itemize
1928
1929 @subsection Commands
1930
1931 This filter supports the same commands as options, excluding option @code{order}.
1932
1933 @section anull
1934
1935 Pass the audio source unchanged to the output.
1936
1937 @section apad
1938
1939 Pad the end of an audio stream with silence.
1940
1941 This can be used together with @command{ffmpeg} @option{-shortest} to
1942 extend audio streams to the same length as the video stream.
1943
1944 A description of the accepted options follows.
1945
1946 @table @option
1947 @item packet_size
1948 Set silence packet size. Default value is 4096.
1949
1950 @item pad_len
1951 Set the number of samples of silence to add to the end. After the
1952 value is reached, the stream is terminated. This option is mutually
1953 exclusive with @option{whole_len}.
1954
1955 @item whole_len
1956 Set the minimum total number of samples in the output audio stream. If
1957 the value is longer than the input audio length, silence is added to
1958 the end, until the value is reached. This option is mutually exclusive
1959 with @option{pad_len}.
1960
1961 @item pad_dur
1962 Specify the duration of samples of silence to add. See
1963 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
1964 for the accepted syntax. Used only if set to non-zero value.
1965
1966 @item whole_dur
1967 Specify the minimum total duration in the output audio stream. See
1968 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
1969 for the accepted syntax. Used only if set to non-zero value. If the value is longer than
1970 the input audio length, silence is added to the end, until the value is reached.
1971 This option is mutually exclusive with @option{pad_dur}
1972 @end table
1973
1974 If neither the @option{pad_len} nor the @option{whole_len} nor @option{pad_dur}
1975 nor @option{whole_dur} option is set, the filter will add silence to the end of
1976 the input stream indefinitely.
1977
1978 @subsection Examples
1979
1980 @itemize
1981 @item
1982 Add 1024 samples of silence to the end of the input:
1983 @example
1984 apad=pad_len=1024
1985 @end example
1986
1987 @item
1988 Make sure the audio output will contain at least 10000 samples, pad
1989 the input with silence if required:
1990 @example
1991 apad=whole_len=10000
1992 @end example
1993
1994 @item
1995 Use @command{ffmpeg} to pad the audio input with silence, so that the
1996 video stream will always result the shortest and will be converted
1997 until the end in the output file when using the @option{shortest}
1998 option:
1999 @example
2000 ffmpeg -i VIDEO -i AUDIO -filter_complex "[1:0]apad" -shortest OUTPUT
2001 @end example
2002 @end itemize
2003
2004 @section aphaser
2005 Add a phasing effect to the input audio.
2006
2007 A phaser filter creates series of peaks and troughs in the frequency spectrum.
2008 The position of the peaks and troughs are modulated so that they vary over time, creating a sweeping effect.
2009
2010 A description of the accepted parameters follows.
2011
2012 @table @option
2013 @item in_gain
2014 Set input gain. Default is 0.4.
2015
2016 @item out_gain
2017 Set output gain. Default is 0.74
2018
2019 @item delay
2020 Set delay in milliseconds. Default is 3.0.
2021
2022 @item decay
2023 Set decay. Default is 0.4.
2024
2025 @item speed
2026 Set modulation speed in Hz. Default is 0.5.
2027
2028 @item type
2029 Set modulation type. Default is triangular.
2030
2031 It accepts the following values:
2032 @table @samp
2033 @item triangular, t
2034 @item sinusoidal, s
2035 @end table
2036 @end table
2037
2038 @section apulsator
2039
2040 Audio pulsator is something between an autopanner and a tremolo.
2041 But it can produce funny stereo effects as well. Pulsator changes the volume
2042 of the left and right channel based on a LFO (low frequency oscillator) with
2043 different waveforms and shifted phases.
2044 This filter have the ability to define an offset between left and right
2045 channel. An offset of 0 means that both LFO shapes match each other.
2046 The left and right channel are altered equally - a conventional tremolo.
2047 An offset of 50% means that the shape of the right channel is exactly shifted
2048 in phase (or moved backwards about half of the frequency) - pulsator acts as
2049 an autopanner. At 1 both curves match again. Every setting in between moves the
2050 phase shift gapless between all stages and produces some "bypassing" sounds with
2051 sine and triangle waveforms. The more you set the offset near 1 (starting from
2052 the 0.5) the faster the signal passes from the left to the right speaker.
2053
2054 The filter accepts the following options:
2055
2056 @table @option
2057 @item level_in
2058 Set input gain. By default it is 1. Range is [0.015625 - 64].
2059
2060 @item level_out
2061 Set output gain. By default it is 1. Range is [0.015625 - 64].
2062
2063 @item mode
2064 Set waveform shape the LFO will use. Can be one of: sine, triangle, square,
2065 sawup or sawdown. Default is sine.
2066
2067 @item amount
2068 Set modulation. Define how much of original signal is affected by the LFO.
2069
2070 @item offset_l
2071 Set left channel offset. Default is 0. Allowed range is [0 - 1].
2072
2073 @item offset_r
2074 Set right channel offset. Default is 0.5. Allowed range is [0 - 1].
2075
2076 @item width
2077 Set pulse width. Default is 1. Allowed range is [0 - 2].
2078
2079 @item timing
2080 Set possible timing mode. Can be one of: bpm, ms or hz. Default is hz.
2081
2082 @item bpm
2083 Set bpm. Default is 120. Allowed range is [30 - 300]. Only used if timing
2084 is set to bpm.
2085
2086 @item ms
2087 Set ms. Default is 500. Allowed range is [10 - 2000]. Only used if timing
2088 is set to ms.
2089
2090 @item hz
2091 Set frequency in Hz. Default is 2. Allowed range is [0.01 - 100]. Only used
2092 if timing is set to hz.
2093 @end table
2094
2095 @anchor{aresample}
2096 @section aresample
2097
2098 Resample the input audio to the specified parameters, using the
2099 libswresample library. If none are specified then the filter will
2100 automatically convert between its input and output.
2101
2102 This filter is also able to stretch/squeeze the audio data to make it match
2103 the timestamps or to inject silence / cut out audio to make it match the
2104 timestamps, do a combination of both or do neither.
2105
2106 The filter accepts the syntax
2107 [@var{sample_rate}:]@var{resampler_options}, where @var{sample_rate}
2108 expresses a sample rate and @var{resampler_options} is a list of
2109 @var{key}=@var{value} pairs, separated by ":". See the
2110 @ref{Resampler Options,,"Resampler Options" section in the
2111 ffmpeg-resampler(1) manual,ffmpeg-resampler}
2112 for the complete list of supported options.
2113
2114 @subsection Examples
2115
2116 @itemize
2117 @item
2118 Resample the input audio to 44100Hz:
2119 @example
2120 aresample=44100
2121 @end example
2122
2123 @item
2124 Stretch/squeeze samples to the given timestamps, with a maximum of 1000
2125 samples per second compensation:
2126 @example
2127 aresample=async=1000
2128 @end example
2129 @end itemize
2130
2131 @section areverse
2132
2133 Reverse an audio clip.
2134
2135 Warning: This filter requires memory to buffer the entire clip, so trimming
2136 is suggested.
2137
2138 @subsection Examples
2139
2140 @itemize
2141 @item
2142 Take the first 5 seconds of a clip, and reverse it.
2143 @example
2144 atrim=end=5,areverse
2145 @end example
2146 @end itemize
2147
2148 @section arnndn
2149
2150 Reduce noise from speech using Recurrent Neural Networks.
2151
2152 This filter accepts the following options:
2153
2154 @table @option
2155 @item model, m
2156 Set train model file to load. This option is always required.
2157 @end table
2158
2159 @section asetnsamples
2160
2161 Set the number of samples per each output audio frame.
2162
2163 The last output packet may contain a different number of samples, as
2164 the filter will flush all the remaining samples when the input audio
2165 signals its end.
2166
2167 The filter accepts the following options:
2168
2169 @table @option
2170
2171 @item nb_out_samples, n
2172 Set the number of frames per each output audio frame. The number is
2173 intended as the number of samples @emph{per each channel}.
2174 Default value is 1024.
2175
2176 @item pad, p
2177 If set to 1, the filter will pad the last audio frame with zeroes, so
2178 that the last frame will contain the same number of samples as the
2179 previous ones. Default value is 1.
2180 @end table
2181
2182 For example, to set the number of per-frame samples to 1234 and
2183 disable padding for the last frame, use:
2184 @example
2185 asetnsamples=n=1234:p=0
2186 @end example
2187
2188 @section asetrate
2189
2190 Set the sample rate without altering the PCM data.
2191 This will result in a change of speed and pitch.
2192
2193 The filter accepts the following options:
2194
2195 @table @option
2196 @item sample_rate, r
2197 Set the output sample rate. Default is 44100 Hz.
2198 @end table
2199
2200 @section ashowinfo
2201
2202 Show a line containing various information for each input audio frame.
2203 The input audio is not modified.
2204
2205 The shown line contains a sequence of key/value pairs of the form
2206 @var{key}:@var{value}.
2207
2208 The following values are shown in the output:
2209
2210 @table @option
2211 @item n
2212 The (sequential) number of the input frame, starting from 0.
2213
2214 @item pts
2215 The presentation timestamp of the input frame, in time base units; the time base
2216 depends on the filter input pad, and is usually 1/@var{sample_rate}.
2217
2218 @item pts_time
2219 The presentation timestamp of the input frame in seconds.
2220
2221 @item pos
2222 position of the frame in the input stream, -1 if this information in
2223 unavailable and/or meaningless (for example in case of synthetic audio)
2224
2225 @item fmt
2226 The sample format.
2227
2228 @item chlayout
2229 The channel layout.
2230
2231 @item rate
2232 The sample rate for the audio frame.
2233
2234 @item nb_samples
2235 The number of samples (per channel) in the frame.
2236
2237 @item checksum
2238 The Adler-32 checksum (printed in hexadecimal) of the audio data. For planar
2239 audio, the data is treated as if all the planes were concatenated.
2240
2241 @item plane_checksums
2242 A list of Adler-32 checksums for each data plane.
2243 @end table
2244
2245 @section asoftclip
2246 Apply audio soft clipping.
2247
2248 Soft clipping is a type of distortion effect where the amplitude of a signal is saturated
2249 along a smooth curve, rather than the abrupt shape of hard-clipping.
2250
2251 This filter accepts the following options:
2252
2253 @table @option
2254 @item type
2255 Set type of soft-clipping.
2256
2257 It accepts the following values:
2258 @table @option
2259 @item tanh
2260 @item atan
2261 @item cubic
2262 @item exp
2263 @item alg
2264 @item quintic
2265 @item sin
2266 @end table
2267
2268 @item param
2269 Set additional parameter which controls sigmoid function.
2270 @end table
2271
2272 @subsection Commands
2273
2274 This filter supports the all above options as @ref{commands}.
2275
2276 @section asr
2277 Automatic Speech Recognition
2278
2279 This filter uses PocketSphinx for speech recognition. To enable
2280 compilation of this filter, you need to configure FFmpeg with
2281 @code{--enable-pocketsphinx}.
2282
2283 It accepts the following options:
2284
2285 @table @option
2286 @item rate
2287 Set sampling rate of input audio. Defaults is @code{16000}.
2288 This need to match speech models, otherwise one will get poor results.
2289
2290 @item hmm
2291 Set dictionary containing acoustic model files.
2292
2293 @item dict
2294 Set pronunciation dictionary.
2295
2296 @item lm
2297 Set language model file.
2298
2299 @item lmctl
2300 Set language model set.
2301
2302 @item lmname
2303 Set which language model to use.
2304
2305 @item logfn
2306 Set output for log messages.
2307 @end table
2308
2309 The filter exports recognized speech as the frame metadata @code{lavfi.asr.text}.
2310
2311 @anchor{astats}
2312 @section astats
2313
2314 Display time domain statistical information about the audio channels.
2315 Statistics are calculated and displayed for each audio channel and,
2316 where applicable, an overall figure is also given.
2317
2318 It accepts the following option:
2319 @table @option
2320 @item length
2321 Short window length in seconds, used for peak and trough RMS measurement.
2322 Default is @code{0.05} (50 milliseconds). Allowed range is @code{[0.01 - 10]}.
2323
2324 @item metadata
2325
2326 Set metadata injection. All the metadata keys are prefixed with @code{lavfi.astats.X},
2327 where @code{X} is channel number starting from 1 or string @code{Overall}. Default is
2328 disabled.
2329
2330 Available keys for each channel are:
2331 DC_offset
2332 Min_level
2333 Max_level
2334 Min_difference
2335 Max_difference
2336 Mean_difference
2337 RMS_difference
2338 Peak_level
2339 RMS_peak
2340 RMS_trough
2341 Crest_factor
2342 Flat_factor
2343 Peak_count
2344 Noise_floor
2345 Noise_floor_count
2346 Bit_depth
2347 Dynamic_range
2348 Zero_crossings
2349 Zero_crossings_rate
2350 Number_of_NaNs
2351 Number_of_Infs
2352 Number_of_denormals
2353
2354 and for Overall:
2355 DC_offset
2356 Min_level
2357 Max_level
2358 Min_difference
2359 Max_difference
2360 Mean_difference
2361 RMS_difference
2362 Peak_level
2363 RMS_level
2364 RMS_peak
2365 RMS_trough
2366 Flat_factor
2367 Peak_count
2368 Noise_floor
2369 Noise_floor_count
2370 Bit_depth
2371 Number_of_samples
2372 Number_of_NaNs
2373 Number_of_Infs
2374 Number_of_denormals
2375
2376 For example full key look like this @code{lavfi.astats.1.DC_offset} or
2377 this @code{lavfi.astats.Overall.Peak_count}.
2378
2379 For description what each key means read below.
2380
2381 @item reset
2382 Set number of frame after which stats are going to be recalculated.
2383 Default is disabled.
2384
2385 @item measure_perchannel
2386 Select the entries which need to be measured per channel. The metadata keys can
2387 be used as flags, default is @option{all} which measures everything.
2388 @option{none} disables all per channel measurement.
2389
2390 @item measure_overall
2391 Select the entries which need to be measured overall. The metadata keys can
2392 be used as flags, default is @option{all} which measures everything.
2393 @option{none} disables all overall measurement.
2394
2395 @end table
2396
2397 A description of each shown parameter follows:
2398
2399 @table @option
2400 @item DC offset
2401 Mean amplitude displacement from zero.
2402
2403 @item Min level
2404 Minimal sample level.
2405
2406 @item Max level
2407 Maximal sample level.
2408
2409 @item Min difference
2410 Minimal difference between two consecutive samples.
2411
2412 @item Max difference
2413 Maximal difference between two consecutive samples.
2414
2415 @item Mean difference
2416 Mean difference between two consecutive samples.
2417 The average of each difference between two consecutive samples.
2418
2419 @item RMS difference
2420 Root Mean Square difference between two consecutive samples.
2421
2422 @item Peak level dB
2423 @item RMS level dB
2424 Standard peak and RMS level measured in dBFS.
2425
2426 @item RMS peak dB
2427 @item RMS trough dB
2428 Peak and trough values for RMS level measured over a short window.
2429
2430 @item Crest factor
2431 Standard ratio of peak to RMS level (note: not in dB).
2432
2433 @item Flat factor
2434 Flatness (i.e. consecutive samples with the same value) of the signal at its peak levels
2435 (i.e. either @var{Min level} or @var{Max level}).
2436
2437 @item Peak count
2438 Number of occasions (not the number of samples) that the signal attained either
2439 @var{Min level} or @var{Max level}.
2440
2441 @item Noise floor dB
2442 Minimum local peak measured in dBFS over a short window.
2443
2444 @item Noise floor count
2445 Number of occasions (not the number of samples) that the signal attained
2446 @var{Noise floor}.
2447
2448 @item Bit depth
2449 Overall bit depth of audio. Number of bits used for each sample.
2450
2451 @item Dynamic range
2452 Measured dynamic range of audio in dB.
2453
2454 @item Zero crossings
2455 Number of points where the waveform crosses the zero level axis.
2456
2457 @item Zero crossings rate
2458 Rate of Zero crossings and number of audio samples.
2459 @end table
2460
2461 @section asubboost
2462 Boost subwoofer frequencies.
2463
2464 The filter accepts the following options:
2465
2466 @table @option
2467 @item dry
2468 Set dry gain, how much of original signal is kept. Allowed range is from 0 to 1.
2469 Default value is 0.5.
2470
2471 @item wet
2472 Set wet gain, how much of filtered signal is kept. Allowed range is from 0 to 1.
2473 Default value is 0.8.
2474
2475 @item decay
2476 Set delay line decay gain value. Allowed range is from 0 to 1.
2477 Default value is 0.7.
2478
2479 @item feedback
2480 Set delay line feedback gain value. Allowed range is from 0 to 1.
2481 Default value is 0.5.
2482
2483 @item cutoff
2484 Set cutoff frequency in herz. Allowed range is 50 to 900.
2485 Default value is 100.
2486
2487 @item slope
2488 Set slope amount for cutoff frequency. Allowed range is 0.0001 to 1.
2489 Default value is 0.5.
2490
2491 @item delay
2492 Set delay. Allowed range is from 1 to 100.
2493 Default value is 20.
2494 @end table
2495
2496 @subsection Commands
2497
2498 This filter supports the all above options as @ref{commands}.
2499
2500 @section atempo
2501
2502 Adjust audio tempo.
2503
2504 The filter accepts exactly one parameter, the audio tempo. If not
2505 specified then the filter will assume nominal 1.0 tempo. Tempo must
2506 be in the [0.5, 100.0] range.
2507
2508 Note that tempo greater than 2 will skip some samples rather than
2509 blend them in.  If for any reason this is a concern it is always
2510 possible to daisy-chain several instances of atempo to achieve the
2511 desired product tempo.
2512
2513 @subsection Examples
2514
2515 @itemize
2516 @item
2517 Slow down audio to 80% tempo:
2518 @example
2519 atempo=0.8
2520 @end example
2521
2522 @item
2523 To speed up audio to 300% tempo:
2524 @example
2525 atempo=3
2526 @end example
2527
2528 @item
2529 To speed up audio to 300% tempo by daisy-chaining two atempo instances:
2530 @example
2531 atempo=sqrt(3),atempo=sqrt(3)
2532 @end example
2533 @end itemize
2534
2535 @subsection Commands
2536
2537 This filter supports the following commands:
2538 @table @option
2539 @item tempo
2540 Change filter tempo scale factor.
2541 Syntax for the command is : "@var{tempo}"
2542 @end table
2543
2544 @section atrim
2545
2546 Trim the input so that the output contains one continuous subpart of the input.
2547
2548 It accepts the following parameters:
2549 @table @option
2550 @item start
2551 Timestamp (in seconds) of the start of the section to keep. I.e. the audio
2552 sample with the timestamp @var{start} will be the first sample in the output.
2553
2554 @item end
2555 Specify time of the first audio sample that will be dropped, i.e. the
2556 audio sample immediately preceding the one with the timestamp @var{end} will be
2557 the last sample in the output.
2558
2559 @item start_pts
2560 Same as @var{start}, except this option sets the start timestamp in samples
2561 instead of seconds.
2562
2563 @item end_pts
2564 Same as @var{end}, except this option sets the end timestamp in samples instead
2565 of seconds.
2566
2567 @item duration
2568 The maximum duration of the output in seconds.
2569
2570 @item start_sample
2571 The number of the first sample that should be output.
2572
2573 @item end_sample
2574 The number of the first sample that should be dropped.
2575 @end table
2576
2577 @option{start}, @option{end}, and @option{duration} are expressed as time
2578 duration specifications; see
2579 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}.
2580
2581 Note that the first two sets of the start/end options and the @option{duration}
2582 option look at the frame timestamp, while the _sample options simply count the
2583 samples that pass through the filter. So start/end_pts and start/end_sample will
2584 give different results when the timestamps are wrong, inexact or do not start at
2585 zero. Also note that this filter does not modify the timestamps. If you wish
2586 to have the output timestamps start at zero, insert the asetpts filter after the
2587 atrim filter.
2588
2589 If multiple start or end options are set, this filter tries to be greedy and
2590 keep all samples that match at least one of the specified constraints. To keep
2591 only the part that matches all the constraints at once, chain multiple atrim
2592 filters.
2593
2594 The defaults are such that all the input is kept. So it is possible to set e.g.
2595 just the end values to keep everything before the specified time.
2596
2597 Examples:
2598 @itemize
2599 @item
2600 Drop everything except the second minute of input:
2601 @example
2602 ffmpeg -i INPUT -af atrim=60:120
2603 @end example
2604
2605 @item
2606 Keep only the first 1000 samples:
2607 @example
2608 ffmpeg -i INPUT -af atrim=end_sample=1000
2609 @end example
2610
2611 @end itemize
2612
2613 @section axcorrelate
2614 Calculate normalized cross-correlation between two input audio streams.
2615
2616 Resulted samples are always between -1 and 1 inclusive.
2617 If result is 1 it means two input samples are highly correlated in that selected segment.
2618 Result 0 means they are not correlated at all.
2619 If result is -1 it means two input samples are out of phase, which means they cancel each
2620 other.
2621
2622 The filter accepts the following options:
2623
2624 @table @option
2625 @item size
2626 Set size of segment over which cross-correlation is calculated.
2627 Default is 256. Allowed range is from 2 to 131072.
2628
2629 @item algo
2630 Set algorithm for cross-correlation. Can be @code{slow} or @code{fast}.
2631 Default is @code{slow}. Fast algorithm assumes mean values over any given segment
2632 are always zero and thus need much less calculations to make.
2633 This is generally not true, but is valid for typical audio streams.
2634 @end table
2635
2636 @subsection Examples
2637
2638 @itemize
2639 @item
2640 Calculate correlation between channels in stereo audio stream:
2641 @example
2642 ffmpeg -i stereo.wav -af channelsplit,axcorrelate=size=1024:algo=fast correlation.wav
2643 @end example
2644 @end itemize
2645
2646 @section bandpass
2647
2648 Apply a two-pole Butterworth band-pass filter with central
2649 frequency @var{frequency}, and (3dB-point) band-width width.
2650 The @var{csg} option selects a constant skirt gain (peak gain = Q)
2651 instead of the default: constant 0dB peak gain.
2652 The filter roll off at 6dB per octave (20dB per decade).
2653
2654 The filter accepts the following options:
2655
2656 @table @option
2657 @item frequency, f
2658 Set the filter's central frequency. Default is @code{3000}.
2659
2660 @item csg
2661 Constant skirt gain if set to 1. Defaults to 0.
2662
2663 @item width_type, t
2664 Set method to specify band-width of filter.
2665 @table @option
2666 @item h
2667 Hz
2668 @item q
2669 Q-Factor
2670 @item o
2671 octave
2672 @item s
2673 slope
2674 @item k
2675 kHz
2676 @end table
2677
2678 @item width, w
2679 Specify the band-width of a filter in width_type units.
2680
2681 @item mix, m
2682 How much to use filtered signal in output. Default is 1.
2683 Range is between 0 and 1.
2684
2685 @item channels, c
2686 Specify which channels to filter, by default all available are filtered.
2687
2688 @item normalize, n
2689 Normalize biquad coefficients, by default is disabled.
2690 Enabling it will normalize magnitude response at DC to 0dB.
2691 @end table
2692
2693 @subsection Commands
2694
2695 This filter supports the following commands:
2696 @table @option
2697 @item frequency, f
2698 Change bandpass frequency.
2699 Syntax for the command is : "@var{frequency}"
2700
2701 @item width_type, t
2702 Change bandpass width_type.
2703 Syntax for the command is : "@var{width_type}"
2704
2705 @item width, w
2706 Change bandpass width.
2707 Syntax for the command is : "@var{width}"
2708
2709 @item mix, m
2710 Change bandpass mix.
2711 Syntax for the command is : "@var{mix}"
2712 @end table
2713
2714 @section bandreject
2715
2716 Apply a two-pole Butterworth band-reject filter with central
2717 frequency @var{frequency}, and (3dB-point) band-width @var{width}.
2718 The filter roll off at 6dB per octave (20dB per decade).
2719
2720 The filter accepts the following options:
2721
2722 @table @option
2723 @item frequency, f
2724 Set the filter's central frequency. Default is @code{3000}.
2725
2726 @item width_type, t
2727 Set method to specify band-width of filter.
2728 @table @option
2729 @item h
2730 Hz
2731 @item q
2732 Q-Factor
2733 @item o
2734 octave
2735 @item s
2736 slope
2737 @item k
2738 kHz
2739 @end table
2740
2741 @item width, w
2742 Specify the band-width of a filter in width_type units.
2743
2744 @item mix, m
2745 How much to use filtered signal in output. Default is 1.
2746 Range is between 0 and 1.
2747
2748 @item channels, c
2749 Specify which channels to filter, by default all available are filtered.
2750
2751 @item normalize, n
2752 Normalize biquad coefficients, by default is disabled.
2753 Enabling it will normalize magnitude response at DC to 0dB.
2754 @end table
2755
2756 @subsection Commands
2757
2758 This filter supports the following commands:
2759 @table @option
2760 @item frequency, f
2761 Change bandreject frequency.
2762 Syntax for the command is : "@var{frequency}"
2763
2764 @item width_type, t
2765 Change bandreject width_type.
2766 Syntax for the command is : "@var{width_type}"
2767
2768 @item width, w
2769 Change bandreject width.
2770 Syntax for the command is : "@var{width}"
2771
2772 @item mix, m
2773 Change bandreject mix.
2774 Syntax for the command is : "@var{mix}"
2775 @end table
2776
2777 @section bass, lowshelf
2778
2779 Boost or cut the bass (lower) frequencies of the audio using a two-pole
2780 shelving filter with a response similar to that of a standard
2781 hi-fi's tone-controls. This is also known as shelving equalisation (EQ).
2782
2783 The filter accepts the following options:
2784
2785 @table @option
2786 @item gain, g
2787 Give the gain at 0 Hz. Its useful range is about -20
2788 (for a large cut) to +20 (for a large boost).
2789 Beware of clipping when using a positive gain.
2790
2791 @item frequency, f
2792 Set the filter's central frequency and so can be used
2793 to extend or reduce the frequency range to be boosted or cut.
2794 The default value is @code{100} Hz.
2795
2796 @item width_type, t
2797 Set method to specify band-width of filter.
2798 @table @option
2799 @item h
2800 Hz
2801 @item q
2802 Q-Factor
2803 @item o
2804 octave
2805 @item s
2806 slope
2807 @item k
2808 kHz
2809 @end table
2810
2811 @item width, w
2812 Determine how steep is the filter's shelf transition.
2813
2814 @item mix, m
2815 How much to use filtered signal in output. Default is 1.
2816 Range is between 0 and 1.
2817
2818 @item channels, c
2819 Specify which channels to filter, by default all available are filtered.
2820
2821 @item normalize, n
2822 Normalize biquad coefficients, by default is disabled.
2823 Enabling it will normalize magnitude response at DC to 0dB.
2824 @end table
2825
2826 @subsection Commands
2827
2828 This filter supports the following commands:
2829 @table @option
2830 @item frequency, f
2831 Change bass frequency.
2832 Syntax for the command is : "@var{frequency}"
2833
2834 @item width_type, t
2835 Change bass width_type.
2836 Syntax for the command is : "@var{width_type}"
2837
2838 @item width, w
2839 Change bass width.
2840 Syntax for the command is : "@var{width}"
2841
2842 @item gain, g
2843 Change bass gain.
2844 Syntax for the command is : "@var{gain}"
2845
2846 @item mix, m
2847 Change bass mix.
2848 Syntax for the command is : "@var{mix}"
2849 @end table
2850
2851 @section biquad
2852
2853 Apply a biquad IIR filter with the given coefficients.
2854 Where @var{b0}, @var{b1}, @var{b2} and @var{a0}, @var{a1}, @var{a2}
2855 are the numerator and denominator coefficients respectively.
2856 and @var{channels}, @var{c} specify which channels to filter, by default all
2857 available are filtered.
2858
2859 @subsection Commands
2860
2861 This filter supports the following commands:
2862 @table @option
2863 @item a0
2864 @item a1
2865 @item a2
2866 @item b0
2867 @item b1
2868 @item b2
2869 Change biquad parameter.
2870 Syntax for the command is : "@var{value}"
2871
2872 @item mix, m
2873 How much to use filtered signal in output. Default is 1.
2874 Range is between 0 and 1.
2875
2876 @item channels, c
2877 Specify which channels to filter, by default all available are filtered.
2878
2879 @item normalize, n
2880 Normalize biquad coefficients, by default is disabled.
2881 Enabling it will normalize magnitude response at DC to 0dB.
2882 @end table
2883
2884 @section bs2b
2885 Bauer stereo to binaural transformation, which improves headphone listening of
2886 stereo audio records.
2887
2888 To enable compilation of this filter you need to configure FFmpeg with
2889 @code{--enable-libbs2b}.
2890
2891 It accepts the following parameters:
2892 @table @option
2893
2894 @item profile
2895 Pre-defined crossfeed level.
2896 @table @option
2897
2898 @item default
2899 Default level (fcut=700, feed=50).
2900
2901 @item cmoy
2902 Chu Moy circuit (fcut=700, feed=60).
2903
2904 @item jmeier
2905 Jan Meier circuit (fcut=650, feed=95).
2906
2907 @end table
2908
2909 @item fcut
2910 Cut frequency (in Hz).
2911
2912 @item feed
2913 Feed level (in Hz).
2914
2915 @end table
2916
2917 @section channelmap
2918
2919 Remap input channels to new locations.
2920
2921 It accepts the following parameters:
2922 @table @option
2923 @item map
2924 Map channels from input to output. The argument is a '|'-separated list of
2925 mappings, each in the @code{@var{in_channel}-@var{out_channel}} or
2926 @var{in_channel} form. @var{in_channel} can be either the name of the input
2927 channel (e.g. FL for front left) or its index in the input channel layout.
2928 @var{out_channel} is the name of the output channel or its index in the output
2929 channel layout. If @var{out_channel} is not given then it is implicitly an
2930 index, starting with zero and increasing by one for each mapping.
2931
2932 @item channel_layout
2933 The channel layout of the output stream.
2934 @end table
2935
2936 If no mapping is present, the filter will implicitly map input channels to
2937 output channels, preserving indices.
2938
2939 @subsection Examples
2940
2941 @itemize
2942 @item
2943 For example, assuming a 5.1+downmix input MOV file,
2944 @example
2945 ffmpeg -i in.mov -filter 'channelmap=map=DL-FL|DR-FR' out.wav
2946 @end example
2947 will create an output WAV file tagged as stereo from the downmix channels of
2948 the input.
2949
2950 @item
2951 To fix a 5.1 WAV improperly encoded in AAC's native channel order
2952 @example
2953 ffmpeg -i in.wav -filter 'channelmap=1|2|0|5|3|4:5.1' out.wav
2954 @end example
2955 @end itemize
2956
2957 @section channelsplit
2958
2959 Split each channel from an input audio stream into a separate output stream.
2960
2961 It accepts the following parameters:
2962 @table @option
2963 @item channel_layout
2964 The channel layout of the input stream. The default is "stereo".
2965 @item channels
2966 A channel layout describing the channels to be extracted as separate output streams
2967 or "all" to extract each input channel as a separate stream. The default is "all".
2968
2969 Choosing channels not present in channel layout in the input will result in an error.
2970 @end table
2971
2972 @subsection Examples
2973
2974 @itemize
2975 @item
2976 For example, assuming a stereo input MP3 file,
2977 @example
2978 ffmpeg -i in.mp3 -filter_complex channelsplit out.mkv
2979 @end example
2980 will create an output Matroska file with two audio streams, one containing only
2981 the left channel and the other the right channel.
2982
2983 @item
2984 Split a 5.1 WAV file into per-channel files:
2985 @example
2986 ffmpeg -i in.wav -filter_complex
2987 'channelsplit=channel_layout=5.1[FL][FR][FC][LFE][SL][SR]'
2988 -map '[FL]' front_left.wav -map '[FR]' front_right.wav -map '[FC]'
2989 front_center.wav -map '[LFE]' lfe.wav -map '[SL]' side_left.wav -map '[SR]'
2990 side_right.wav
2991 @end example
2992
2993 @item
2994 Extract only LFE from a 5.1 WAV file:
2995 @example
2996 ffmpeg -i in.wav -filter_complex 'channelsplit=channel_layout=5.1:channels=LFE[LFE]'
2997 -map '[LFE]' lfe.wav
2998 @end example
2999 @end itemize
3000
3001 @section chorus
3002 Add a chorus effect to the audio.
3003
3004 Can make a single vocal sound like a chorus, but can also be applied to instrumentation.
3005
3006 Chorus resembles an echo effect with a short delay, but whereas with echo the delay is
3007 constant, with chorus, it is varied using using sinusoidal or triangular modulation.
3008 The modulation depth defines the range the modulated delay is played before or after
3009 the delay. Hence the delayed sound will sound slower or faster, that is the delayed
3010 sound tuned around the original one, like in a chorus where some vocals are slightly
3011 off key.
3012
3013 It accepts the following parameters:
3014 @table @option
3015 @item in_gain
3016 Set input gain. Default is 0.4.
3017
3018 @item out_gain
3019 Set output gain. Default is 0.4.
3020
3021 @item delays
3022 Set delays. A typical delay is around 40ms to 60ms.
3023
3024 @item decays
3025 Set decays.
3026
3027 @item speeds
3028 Set speeds.
3029
3030 @item depths
3031 Set depths.
3032 @end table
3033
3034 @subsection Examples
3035
3036 @itemize
3037 @item
3038 A single delay:
3039 @example
3040 chorus=0.7:0.9:55:0.4:0.25:2
3041 @end example
3042
3043 @item
3044 Two delays:
3045 @example
3046 chorus=0.6:0.9:50|60:0.4|0.32:0.25|0.4:2|1.3
3047 @end example
3048
3049 @item
3050 Fuller sounding chorus with three delays:
3051 @example
3052 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
3053 @end example
3054 @end itemize
3055
3056 @section compand
3057 Compress or expand the audio's dynamic range.
3058
3059 It accepts the following parameters:
3060
3061 @table @option
3062
3063 @item attacks
3064 @item decays
3065 A list of times in seconds for each channel over which the instantaneous level
3066 of the input signal is averaged to determine its volume. @var{attacks} refers to
3067 increase of volume and @var{decays} refers to decrease of volume. For most
3068 situations, the attack time (response to the audio getting louder) should be
3069 shorter than the decay time, because the human ear is more sensitive to sudden
3070 loud audio than sudden soft audio. A typical value for attack is 0.3 seconds and
3071 a typical value for decay is 0.8 seconds.
3072 If specified number of attacks & decays is lower than number of channels, the last
3073 set attack/decay will be used for all remaining channels.
3074
3075 @item points
3076 A list of points for the transfer function, specified in dB relative to the
3077 maximum possible signal amplitude. Each key points list must be defined using
3078 the following syntax: @code{x0/y0|x1/y1|x2/y2|....} or
3079 @code{x0/y0 x1/y1 x2/y2 ....}
3080
3081 The input values must be in strictly increasing order but the transfer function
3082 does not have to be monotonically rising. The point @code{0/0} is assumed but
3083 may be overridden (by @code{0/out-dBn}). Typical values for the transfer
3084 function are @code{-70/-70|-60/-20|1/0}.
3085
3086 @item soft-knee
3087 Set the curve radius in dB for all joints. It defaults to 0.01.
3088
3089 @item gain
3090 Set the additional gain in dB to be applied at all points on the transfer
3091 function. This allows for easy adjustment of the overall gain.
3092 It defaults to 0.
3093
3094 @item volume
3095 Set an initial volume, in dB, to be assumed for each channel when filtering
3096 starts. This permits the user to supply a nominal level initially, so that, for
3097 example, a very large gain is not applied to initial signal levels before the
3098 companding has begun to operate. A typical value for audio which is initially
3099 quiet is -90 dB. It defaults to 0.
3100
3101 @item delay
3102 Set a delay, in seconds. The input audio is analyzed immediately, but audio is
3103 delayed before being fed to the volume adjuster. Specifying a delay
3104 approximately equal to the attack/decay times allows the filter to effectively
3105 operate in predictive rather than reactive mode. It defaults to 0.
3106
3107 @end table
3108
3109 @subsection Examples
3110
3111 @itemize
3112 @item
3113 Make music with both quiet and loud passages suitable for listening to in a
3114 noisy environment:
3115 @example
3116 compand=.3|.3:1|1:-90/-60|-60/-40|-40/-30|-20/-20:6:0:-90:0.2
3117 @end example
3118
3119 Another example for audio with whisper and explosion parts:
3120 @example
3121 compand=0|0:1|1:-90/-900|-70/-70|-30/-9|0/-3:6:0:0:0
3122 @end example
3123
3124 @item
3125 A noise gate for when the noise is at a lower level than the signal:
3126 @example
3127 compand=.1|.1:.2|.2:-900/-900|-50.1/-900|-50/-50:.01:0:-90:.1
3128 @end example
3129
3130 @item
3131 Here is another noise gate, this time for when the noise is at a higher level
3132 than the signal (making it, in some ways, similar to squelch):
3133 @example
3134 compand=.1|.1:.1|.1:-45.1/-45.1|-45/-900|0/-900:.01:45:-90:.1
3135 @end example
3136
3137 @item
3138 2:1 compression starting at -6dB:
3139 @example
3140 compand=points=-80/-80|-6/-6|0/-3.8|20/3.5
3141 @end example
3142
3143 @item
3144 2:1 compression starting at -9dB:
3145 @example
3146 compand=points=-80/-80|-9/-9|0/-5.3|20/2.9
3147 @end example
3148
3149 @item
3150 2:1 compression starting at -12dB:
3151 @example
3152 compand=points=-80/-80|-12/-12|0/-6.8|20/1.9
3153 @end example
3154
3155 @item
3156 2:1 compression starting at -18dB:
3157 @example
3158 compand=points=-80/-80|-18/-18|0/-9.8|20/0.7
3159 @end example
3160
3161 @item
3162 3:1 compression starting at -15dB:
3163 @example
3164 compand=points=-80/-80|-15/-15|0/-10.8|20/-5.2
3165 @end example
3166
3167 @item
3168 Compressor/Gate:
3169 @example
3170 compand=points=-80/-105|-62/-80|-15.4/-15.4|0/-12|20/-7.6
3171 @end example
3172
3173 @item
3174 Expander:
3175 @example
3176 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
3177 @end example
3178
3179 @item
3180 Hard limiter at -6dB:
3181 @example
3182 compand=attacks=0:points=-80/-80|-6/-6|20/-6
3183 @end example
3184
3185 @item
3186 Hard limiter at -12dB:
3187 @example
3188 compand=attacks=0:points=-80/-80|-12/-12|20/-12
3189 @end example
3190
3191 @item
3192 Hard noise gate at -35 dB:
3193 @example
3194 compand=attacks=0:points=-80/-115|-35.1/-80|-35/-35|20/20
3195 @end example
3196
3197 @item
3198 Soft limiter:
3199 @example
3200 compand=attacks=0:points=-80/-80|-12.4/-12.4|-6/-8|0/-6.8|20/-2.8
3201 @end example
3202 @end itemize
3203
3204 @section compensationdelay
3205
3206 Compensation Delay Line is a metric based delay to compensate differing
3207 positions of microphones or speakers.
3208
3209 For example, you have recorded guitar with two microphones placed in
3210 different locations. Because the front of sound wave has fixed speed in
3211 normal conditions, the phasing of microphones can vary and depends on
3212 their location and interposition. The best sound mix can be achieved when
3213 these microphones are in phase (synchronized). Note that a distance of
3214 ~30 cm between microphones makes one microphone capture the signal in
3215 antiphase to the other microphone. That makes the final mix sound moody.
3216 This filter helps to solve phasing problems by adding different delays
3217 to each microphone track and make them synchronized.
3218
3219 The best result can be reached when you take one track as base and
3220 synchronize other tracks one by one with it.
3221 Remember that synchronization/delay tolerance depends on sample rate, too.
3222 Higher sample rates will give more tolerance.
3223
3224 The filter accepts the following parameters:
3225
3226 @table @option
3227 @item mm
3228 Set millimeters distance. This is compensation distance for fine tuning.
3229 Default is 0.
3230
3231 @item cm
3232 Set cm distance. This is compensation distance for tightening distance setup.
3233 Default is 0.
3234
3235 @item m
3236 Set meters distance. This is compensation distance for hard distance setup.
3237 Default is 0.
3238
3239 @item dry
3240 Set dry amount. Amount of unprocessed (dry) signal.
3241 Default is 0.
3242
3243 @item wet
3244 Set wet amount. Amount of processed (wet) signal.
3245 Default is 1.
3246
3247 @item temp
3248 Set temperature in degrees Celsius. This is the temperature of the environment.
3249 Default is 20.
3250 @end table
3251
3252 @section crossfeed
3253 Apply headphone crossfeed filter.
3254
3255 Crossfeed is the process of blending the left and right channels of stereo
3256 audio recording.
3257 It is mainly used to reduce extreme stereo separation of low frequencies.
3258
3259 The intent is to produce more speaker like sound to the listener.
3260
3261 The filter accepts the following options:
3262
3263 @table @option
3264 @item strength
3265 Set strength of crossfeed. Default is 0.2. Allowed range is from 0 to 1.
3266 This sets gain of low shelf filter for side part of stereo image.
3267 Default is -6dB. Max allowed is -30db when strength is set to 1.
3268
3269 @item range
3270 Set soundstage wideness. Default is 0.5. Allowed range is from 0 to 1.
3271 This sets cut off frequency of low shelf filter. Default is cut off near
3272 1550 Hz. With range set to 1 cut off frequency is set to 2100 Hz.
3273
3274 @item slope
3275 Set curve slope of low shelf filter. Default is 0.5.
3276 Allowed range is from 0.01 to 1.
3277
3278 @item level_in
3279 Set input gain. Default is 0.9.
3280
3281 @item level_out
3282 Set output gain. Default is 1.
3283 @end table
3284
3285 @subsection Commands
3286
3287 This filter supports the all above options as @ref{commands}.
3288
3289 @section crystalizer
3290 Simple algorithm to expand audio dynamic range.
3291
3292 The filter accepts the following options:
3293
3294 @table @option
3295 @item i
3296 Sets the intensity of effect (default: 2.0). Must be in range between 0.0
3297 (unchanged sound) to 10.0 (maximum effect).
3298
3299 @item c
3300 Enable clipping. By default is enabled.
3301 @end table
3302
3303 @subsection Commands
3304
3305 This filter supports the all above options as @ref{commands}.
3306
3307 @section dcshift
3308 Apply a DC shift to the audio.
3309
3310 This can be useful to remove a DC offset (caused perhaps by a hardware problem
3311 in the recording chain) from the audio. The effect of a DC offset is reduced
3312 headroom and hence volume. The @ref{astats} filter can be used to determine if
3313 a signal has a DC offset.
3314
3315 @table @option
3316 @item shift
3317 Set the DC shift, allowed range is [-1, 1]. It indicates the amount to shift
3318 the audio.
3319
3320 @item limitergain
3321 Optional. It should have a value much less than 1 (e.g. 0.05 or 0.02) and is
3322 used to prevent clipping.
3323 @end table
3324
3325 @section deesser
3326
3327 Apply de-essing to the audio samples.
3328
3329 @table @option
3330 @item i
3331 Set intensity for triggering de-essing. Allowed range is from 0 to 1.
3332 Default is 0.
3333
3334 @item m
3335 Set amount of ducking on treble part of sound. Allowed range is from 0 to 1.
3336 Default is 0.5.
3337
3338 @item f
3339 How much of original frequency content to keep when de-essing. Allowed range is from 0 to 1.
3340 Default is 0.5.
3341
3342 @item s
3343 Set the output mode.
3344
3345 It accepts the following values:
3346 @table @option
3347 @item i
3348 Pass input unchanged.
3349
3350 @item o
3351 Pass ess filtered out.
3352
3353 @item e
3354 Pass only ess.
3355
3356 Default value is @var{o}.
3357 @end table
3358
3359 @end table
3360
3361 @section drmeter
3362 Measure audio dynamic range.
3363
3364 DR values of 14 and higher is found in very dynamic material. DR of 8 to 13
3365 is found in transition material. And anything less that 8 have very poor dynamics
3366 and is very compressed.
3367
3368 The filter accepts the following options:
3369
3370 @table @option
3371 @item length
3372 Set window length in seconds used to split audio into segments of equal length.
3373 Default is 3 seconds.
3374 @end table
3375
3376 @section dynaudnorm
3377 Dynamic Audio Normalizer.
3378
3379 This filter applies a certain amount of gain to the input audio in order
3380 to bring its peak magnitude to a target level (e.g. 0 dBFS). However, in
3381 contrast to more "simple" normalization algorithms, the Dynamic Audio
3382 Normalizer *dynamically* re-adjusts the gain factor to the input audio.
3383 This allows for applying extra gain to the "quiet" sections of the audio
3384 while avoiding distortions or clipping the "loud" sections. In other words:
3385 The Dynamic Audio Normalizer will "even out" the volume of quiet and loud
3386 sections, in the sense that the volume of each section is brought to the
3387 same target level. Note, however, that the Dynamic Audio Normalizer achieves
3388 this goal *without* applying "dynamic range compressing". It will retain 100%
3389 of the dynamic range *within* each section of the audio file.
3390
3391 @table @option
3392 @item framelen, f
3393 Set the frame length in milliseconds. In range from 10 to 8000 milliseconds.
3394 Default is 500 milliseconds.
3395 The Dynamic Audio Normalizer processes the input audio in small chunks,
3396 referred to as frames. This is required, because a peak magnitude has no
3397 meaning for just a single sample value. Instead, we need to determine the
3398 peak magnitude for a contiguous sequence of sample values. While a "standard"
3399 normalizer would simply use the peak magnitude of the complete file, the
3400 Dynamic Audio Normalizer determines the peak magnitude individually for each
3401 frame. The length of a frame is specified in milliseconds. By default, the
3402 Dynamic Audio Normalizer uses a frame length of 500 milliseconds, which has
3403 been found to give good results with most files.
3404 Note that the exact frame length, in number of samples, will be determined
3405 automatically, based on the sampling rate of the individual input audio file.
3406
3407 @item gausssize, g
3408 Set the Gaussian filter window size. In range from 3 to 301, must be odd
3409 number. Default is 31.
3410 Probably the most important parameter of the Dynamic Audio Normalizer is the
3411 @code{window size} of the Gaussian smoothing filter. The filter's window size
3412 is specified in frames, centered around the current frame. For the sake of
3413 simplicity, this must be an odd number. Consequently, the default value of 31
3414 takes into account the current frame, as well as the 15 preceding frames and
3415 the 15 subsequent frames. Using a larger window results in a stronger
3416 smoothing effect and thus in less gain variation, i.e. slower gain
3417 adaptation. Conversely, using a smaller window results in a weaker smoothing
3418 effect and thus in more gain variation, i.e. faster gain adaptation.
3419 In other words, the more you increase this value, the more the Dynamic Audio
3420 Normalizer will behave like a "traditional" normalization filter. On the
3421 contrary, the more you decrease this value, the more the Dynamic Audio
3422 Normalizer will behave like a dynamic range compressor.
3423
3424 @item peak, p
3425 Set the target peak value. This specifies the highest permissible magnitude
3426 level for the normalized audio input. This filter will try to approach the
3427 target peak magnitude as closely as possible, but at the same time it also
3428 makes sure that the normalized signal will never exceed the peak magnitude.
3429 A frame's maximum local gain factor is imposed directly by the target peak
3430 magnitude. The default value is 0.95 and thus leaves a headroom of 5%*.
3431 It is not recommended to go above this value.
3432
3433 @item maxgain, m
3434 Set the maximum gain factor. In range from 1.0 to 100.0. Default is 10.0.
3435 The Dynamic Audio Normalizer determines the maximum possible (local) gain
3436 factor for each input frame, i.e. the maximum gain factor that does not
3437 result in clipping or distortion. The maximum gain factor is determined by
3438 the frame's highest magnitude sample. However, the Dynamic Audio Normalizer
3439 additionally bounds the frame's maximum gain factor by a predetermined
3440 (global) maximum gain factor. This is done in order to avoid excessive gain
3441 factors in "silent" or almost silent frames. By default, the maximum gain
3442 factor is 10.0, For most inputs the default value should be sufficient and
3443 it usually is not recommended to increase this value. Though, for input
3444 with an extremely low overall volume level, it may be necessary to allow even
3445 higher gain factors. Note, however, that the Dynamic Audio Normalizer does
3446 not simply apply a "hard" threshold (i.e. cut off values above the threshold).
3447 Instead, a "sigmoid" threshold function will be applied. This way, the
3448 gain factors will smoothly approach the threshold value, but never exceed that
3449 value.
3450
3451 @item targetrms, r
3452 Set the target RMS. In range from 0.0 to 1.0. Default is 0.0 - disabled.
3453 By default, the Dynamic Audio Normalizer performs "peak" normalization.
3454 This means that the maximum local gain factor for each frame is defined
3455 (only) by the frame's highest magnitude sample. This way, the samples can
3456 be amplified as much as possible without exceeding the maximum signal
3457 level, i.e. without clipping. Optionally, however, the Dynamic Audio
3458 Normalizer can also take into account the frame's root mean square,
3459 abbreviated RMS. In electrical engineering, the RMS is commonly used to
3460 determine the power of a time-varying signal. It is therefore considered
3461 that the RMS is a better approximation of the "perceived loudness" than
3462 just looking at the signal's peak magnitude. Consequently, by adjusting all
3463 frames to a constant RMS value, a uniform "perceived loudness" can be
3464 established. If a target RMS value has been specified, a frame's local gain
3465 factor is defined as the factor that would result in exactly that RMS value.
3466 Note, however, that the maximum local gain factor is still restricted by the
3467 frame's highest magnitude sample, in order to prevent clipping.
3468
3469 @item coupling, n
3470 Enable channels coupling. By default is enabled.
3471 By default, the Dynamic Audio Normalizer will amplify all channels by the same
3472 amount. This means the same gain factor will be applied to all channels, i.e.
3473 the maximum possible gain factor is determined by the "loudest" channel.
3474 However, in some recordings, it may happen that the volume of the different
3475 channels is uneven, e.g. one channel may be "quieter" than the other one(s).
3476 In this case, this option can be used to disable the channel coupling. This way,
3477 the gain factor will be determined independently for each channel, depending
3478 only on the individual channel's highest magnitude sample. This allows for
3479 harmonizing the volume of the different channels.
3480
3481 @item correctdc, c
3482 Enable DC bias correction. By default is disabled.
3483 An audio signal (in the time domain) is a sequence of sample values.
3484 In the Dynamic Audio Normalizer these sample values are represented in the
3485 -1.0 to 1.0 range, regardless of the original input format. Normally, the
3486 audio signal, or "waveform", should be centered around the zero point.
3487 That means if we calculate the mean value of all samples in a file, or in a
3488 single frame, then the result should be 0.0 or at least very close to that
3489 value. If, however, there is a significant deviation of the mean value from
3490 0.0, in either positive or negative direction, this is referred to as a
3491 DC bias or DC offset. Since a DC bias is clearly undesirable, the Dynamic
3492 Audio Normalizer provides optional DC bias correction.
3493 With DC bias correction enabled, the Dynamic Audio Normalizer will determine
3494 the mean value, or "DC correction" offset, of each input frame and subtract
3495 that value from all of the frame's sample values which ensures those samples
3496 are centered around 0.0 again. Also, in order to avoid "gaps" at the frame
3497 boundaries, the DC correction offset values will be interpolated smoothly
3498 between neighbouring frames.
3499
3500 @item altboundary, b
3501 Enable alternative boundary mode. By default is disabled.
3502 The Dynamic Audio Normalizer takes into account a certain neighbourhood
3503 around each frame. This includes the preceding frames as well as the
3504 subsequent frames. However, for the "boundary" frames, located at the very
3505 beginning and at the very end of the audio file, not all neighbouring
3506 frames are available. In particular, for the first few frames in the audio
3507 file, the preceding frames are not known. And, similarly, for the last few
3508 frames in the audio file, the subsequent frames are not known. Thus, the
3509 question arises which gain factors should be assumed for the missing frames
3510 in the "boundary" region. The Dynamic Audio Normalizer implements two modes
3511 to deal with this situation. The default boundary mode assumes a gain factor
3512 of exactly 1.0 for the missing frames, resulting in a smooth "fade in" and
3513 "fade out" at the beginning and at the end of the input, respectively.
3514
3515 @item compress, s
3516 Set the compress factor. In range from 0.0 to 30.0. Default is 0.0.
3517 By default, the Dynamic Audio Normalizer does not apply "traditional"
3518 compression. This means that signal peaks will not be pruned and thus the
3519 full dynamic range will be retained within each local neighbourhood. However,
3520 in some cases it may be desirable to combine the Dynamic Audio Normalizer's
3521 normalization algorithm with a more "traditional" compression.
3522 For this purpose, the Dynamic Audio Normalizer provides an optional compression
3523 (thresholding) function. If (and only if) the compression feature is enabled,
3524 all input frames will be processed by a soft knee thresholding function prior
3525 to the actual normalization process. Put simply, the thresholding function is
3526 going to prune all samples whose magnitude exceeds a certain threshold value.
3527 However, the Dynamic Audio Normalizer does not simply apply a fixed threshold
3528 value. Instead, the threshold value will be adjusted for each individual
3529 frame.
3530 In general, smaller parameters result in stronger compression, and vice versa.
3531 Values below 3.0 are not recommended, because audible distortion may appear.
3532
3533 @item threshold, t
3534 Set the target threshold value. This specifies the lowest permissible
3535 magnitude level for the audio input which will be normalized.
3536 If input frame volume is above this value frame will be normalized.
3537 Otherwise frame may not be normalized at all. The default value is set
3538 to 0, which means all input frames will be normalized.
3539 This option is mostly useful if digital noise is not wanted to be amplified.
3540 @end table
3541
3542 @subsection Commands
3543
3544 This filter supports the all above options as @ref{commands}.
3545
3546 @section earwax
3547
3548 Make audio easier to listen to on headphones.
3549
3550 This filter adds `cues' to 44.1kHz stereo (i.e. audio CD format) audio
3551 so that when listened to on headphones the stereo image is moved from
3552 inside your head (standard for headphones) to outside and in front of
3553 the listener (standard for speakers).
3554
3555 Ported from SoX.
3556
3557 @section equalizer
3558
3559 Apply a two-pole peaking equalisation (EQ) filter. With this
3560 filter, the signal-level at and around a selected frequency can
3561 be increased or decreased, whilst (unlike bandpass and bandreject
3562 filters) that at all other frequencies is unchanged.
3563
3564 In order to produce complex equalisation curves, this filter can
3565 be given several times, each with a different central frequency.
3566
3567 The filter accepts the following options:
3568
3569 @table @option
3570 @item frequency, f
3571 Set the filter's central frequency in Hz.
3572
3573 @item width_type, t
3574 Set method to specify band-width of filter.
3575 @table @option
3576 @item h
3577 Hz
3578 @item q
3579 Q-Factor
3580 @item o
3581 octave
3582 @item s
3583 slope
3584 @item k
3585 kHz
3586 @end table
3587
3588 @item width, w
3589 Specify the band-width of a filter in width_type units.
3590
3591 @item gain, g
3592 Set the required gain or attenuation in dB.
3593 Beware of clipping when using a positive gain.
3594
3595 @item mix, m
3596 How much to use filtered signal in output. Default is 1.
3597 Range is between 0 and 1.
3598
3599 @item channels, c
3600 Specify which channels to filter, by default all available are filtered.
3601
3602 @item normalize, n
3603 Normalize biquad coefficients, by default is disabled.
3604 Enabling it will normalize magnitude response at DC to 0dB.
3605 @end table
3606
3607 @subsection Examples
3608 @itemize
3609 @item
3610 Attenuate 10 dB at 1000 Hz, with a bandwidth of 200 Hz:
3611 @example
3612 equalizer=f=1000:t=h:width=200:g=-10
3613 @end example
3614
3615 @item
3616 Apply 2 dB gain at 1000 Hz with Q 1 and attenuate 5 dB at 100 Hz with Q 2:
3617 @example
3618 equalizer=f=1000:t=q:w=1:g=2,equalizer=f=100:t=q:w=2:g=-5
3619 @end example
3620 @end itemize
3621
3622 @subsection Commands
3623
3624 This filter supports the following commands:
3625 @table @option
3626 @item frequency, f
3627 Change equalizer frequency.
3628 Syntax for the command is : "@var{frequency}"
3629
3630 @item width_type, t
3631 Change equalizer width_type.
3632 Syntax for the command is : "@var{width_type}"
3633
3634 @item width, w
3635 Change equalizer width.
3636 Syntax for the command is : "@var{width}"
3637
3638 @item gain, g
3639 Change equalizer gain.
3640 Syntax for the command is : "@var{gain}"
3641
3642 @item mix, m
3643 Change equalizer mix.
3644 Syntax for the command is : "@var{mix}"
3645 @end table
3646
3647 @section extrastereo
3648
3649 Linearly increases the difference between left and right channels which
3650 adds some sort of "live" effect to playback.
3651
3652 The filter accepts the following options:
3653
3654 @table @option
3655 @item m
3656 Sets the difference coefficient (default: 2.5). 0.0 means mono sound
3657 (average of both channels), with 1.0 sound will be unchanged, with
3658 -1.0 left and right channels will be swapped.
3659
3660 @item c
3661 Enable clipping. By default is enabled.
3662 @end table
3663
3664 @subsection Commands
3665
3666 This filter supports the all above options as @ref{commands}.
3667
3668 @section firequalizer
3669 Apply FIR Equalization using arbitrary frequency response.
3670
3671 The filter accepts the following option:
3672
3673 @table @option
3674 @item gain
3675 Set gain curve equation (in dB). The expression can contain variables:
3676 @table @option
3677 @item f
3678 the evaluated frequency
3679 @item sr
3680 sample rate
3681 @item ch
3682 channel number, set to 0 when multichannels evaluation is disabled
3683 @item chid
3684 channel id, see libavutil/channel_layout.h, set to the first channel id when
3685 multichannels evaluation is disabled
3686 @item chs
3687 number of channels
3688 @item chlayout
3689 channel_layout, see libavutil/channel_layout.h
3690
3691 @end table
3692 and functions:
3693 @table @option
3694 @item gain_interpolate(f)
3695 interpolate gain on frequency f based on gain_entry
3696 @item cubic_interpolate(f)
3697 same as gain_interpolate, but smoother
3698 @end table
3699 This option is also available as command. Default is @code{gain_interpolate(f)}.
3700
3701 @item gain_entry
3702 Set gain entry for gain_interpolate function. The expression can
3703 contain functions:
3704 @table @option
3705 @item entry(f, g)
3706 store gain entry at frequency f with value g
3707 @end table
3708 This option is also available as command.
3709
3710 @item delay
3711 Set filter delay in seconds. Higher value means more accurate.
3712 Default is @code{0.01}.
3713
3714 @item accuracy
3715 Set filter accuracy in Hz. Lower value means more accurate.
3716 Default is @code{5}.
3717
3718 @item wfunc
3719 Set window function. Acceptable values are:
3720 @table @option
3721 @item rectangular
3722 rectangular window, useful when gain curve is already smooth
3723 @item hann
3724 hann window (default)
3725 @item hamming
3726 hamming window
3727 @item blackman
3728 blackman window
3729 @item nuttall3
3730 3-terms continuous 1st derivative nuttall window
3731 @item mnuttall3
3732 minimum 3-terms discontinuous nuttall window
3733 @item nuttall
3734 4-terms continuous 1st derivative nuttall window
3735 @item bnuttall
3736 minimum 4-terms discontinuous nuttall (blackman-nuttall) window
3737 @item bharris
3738 blackman-harris window
3739 @item tukey
3740 tukey window
3741 @end table
3742
3743 @item fixed
3744 If enabled, use fixed number of audio samples. This improves speed when
3745 filtering with large delay. Default is disabled.
3746
3747 @item multi
3748 Enable multichannels evaluation on gain. Default is disabled.
3749
3750 @item zero_phase
3751 Enable zero phase mode by subtracting timestamp to compensate delay.
3752 Default is disabled.
3753
3754 @item scale
3755 Set scale used by gain. Acceptable values are:
3756 @table @option
3757 @item linlin
3758 linear frequency, linear gain
3759 @item linlog
3760 linear frequency, logarithmic (in dB) gain (default)
3761 @item loglin
3762 logarithmic (in octave scale where 20 Hz is 0) frequency, linear gain
3763 @item loglog
3764 logarithmic frequency, logarithmic gain
3765 @end table
3766
3767 @item dumpfile
3768 Set file for dumping, suitable for gnuplot.
3769
3770 @item dumpscale
3771 Set scale for dumpfile. Acceptable values are same with scale option.
3772 Default is linlog.
3773
3774 @item fft2
3775 Enable 2-channel convolution using complex FFT. This improves speed significantly.
3776 Default is disabled.
3777
3778 @item min_phase
3779 Enable minimum phase impulse response. Default is disabled.
3780 @end table
3781
3782 @subsection Examples
3783 @itemize
3784 @item
3785 lowpass at 1000 Hz:
3786 @example
3787 firequalizer=gain='if(lt(f,1000), 0, -INF)'
3788 @end example
3789 @item
3790 lowpass at 1000 Hz with gain_entry:
3791 @example
3792 firequalizer=gain_entry='entry(1000,0); entry(1001, -INF)'
3793 @end example
3794 @item
3795 custom equalization:
3796 @example
3797 firequalizer=gain_entry='entry(100,0); entry(400, -4); entry(1000, -6); entry(2000, 0)'
3798 @end example
3799 @item
3800 higher delay with zero phase to compensate delay:
3801 @example
3802 firequalizer=delay=0.1:fixed=on:zero_phase=on
3803 @end example
3804 @item
3805 lowpass on left channel, highpass on right channel:
3806 @example
3807 firequalizer=gain='if(eq(chid,1), gain_interpolate(f), if(eq(chid,2), gain_interpolate(1e6+f), 0))'
3808 :gain_entry='entry(1000, 0); entry(1001,-INF); entry(1e6+1000,0)':multi=on
3809 @end example
3810 @end itemize
3811
3812 @section flanger
3813 Apply a flanging effect to the audio.
3814
3815 The filter accepts the following options:
3816
3817 @table @option
3818 @item delay
3819 Set base delay in milliseconds. Range from 0 to 30. Default value is 0.
3820
3821 @item depth
3822 Set added sweep delay in milliseconds. Range from 0 to 10. Default value is 2.
3823
3824 @item regen
3825 Set percentage regeneration (delayed signal feedback). Range from -95 to 95.
3826 Default value is 0.
3827
3828 @item width
3829 Set percentage of delayed signal mixed with original. Range from 0 to 100.
3830 Default value is 71.
3831
3832 @item speed
3833 Set sweeps per second (Hz). Range from 0.1 to 10. Default value is 0.5.
3834
3835 @item shape
3836 Set swept wave shape, can be @var{triangular} or @var{sinusoidal}.
3837 Default value is @var{sinusoidal}.
3838
3839 @item phase
3840 Set swept wave percentage-shift for multi channel. Range from 0 to 100.
3841 Default value is 25.
3842
3843 @item interp
3844 Set delay-line interpolation, @var{linear} or @var{quadratic}.
3845 Default is @var{linear}.
3846 @end table
3847
3848 @section haas
3849 Apply Haas effect to audio.
3850
3851 Note that this makes most sense to apply on mono signals.
3852 With this filter applied to mono signals it give some directionality and
3853 stretches its stereo image.
3854
3855 The filter accepts the following options:
3856
3857 @table @option
3858 @item level_in
3859 Set input level. By default is @var{1}, or 0dB
3860
3861 @item level_out
3862 Set output level. By default is @var{1}, or 0dB.
3863
3864 @item side_gain
3865 Set gain applied to side part of signal. By default is @var{1}.
3866
3867 @item middle_source
3868 Set kind of middle source. Can be one of the following:
3869
3870 @table @samp
3871 @item left
3872 Pick left channel.
3873
3874 @item right
3875 Pick right channel.
3876
3877 @item mid
3878 Pick middle part signal of stereo image.
3879
3880 @item side
3881 Pick side part signal of stereo image.
3882 @end table
3883
3884 @item middle_phase
3885 Change middle phase. By default is disabled.
3886
3887 @item left_delay
3888 Set left channel delay. By default is @var{2.05} milliseconds.
3889
3890 @item left_balance
3891 Set left channel balance. By default is @var{-1}.
3892
3893 @item left_gain
3894 Set left channel gain. By default is @var{1}.
3895
3896 @item left_phase
3897 Change left phase. By default is disabled.
3898
3899 @item right_delay
3900 Set right channel delay. By defaults is @var{2.12} milliseconds.
3901
3902 @item right_balance
3903 Set right channel balance. By default is @var{1}.
3904
3905 @item right_gain
3906 Set right channel gain. By default is @var{1}.
3907
3908 @item right_phase
3909 Change right phase. By default is enabled.
3910 @end table
3911
3912 @section hdcd
3913
3914 Decodes High Definition Compatible Digital (HDCD) data. A 16-bit PCM stream with
3915 embedded HDCD codes is expanded into a 20-bit PCM stream.
3916
3917 The filter supports the Peak Extend and Low-level Gain Adjustment features
3918 of HDCD, and detects the Transient Filter flag.
3919
3920 @example
3921 ffmpeg -i HDCD16.flac -af hdcd OUT24.flac
3922 @end example
3923
3924 When using the filter with wav, note the default encoding for wav is 16-bit,
3925 so the resulting 20-bit stream will be truncated back to 16-bit. Use something
3926 like @command{-acodec pcm_s24le} after the filter to get 24-bit PCM output.
3927 @example
3928 ffmpeg -i HDCD16.wav -af hdcd OUT16.wav
3929 ffmpeg -i HDCD16.wav -af hdcd -c:a pcm_s24le OUT24.wav
3930 @end example
3931
3932 The filter accepts the following options:
3933
3934 @table @option
3935 @item disable_autoconvert
3936 Disable any automatic format conversion or resampling in the filter graph.
3937
3938 @item process_stereo
3939 Process the stereo channels together. If target_gain does not match between
3940 channels, consider it invalid and use the last valid target_gain.
3941
3942 @item cdt_ms
3943 Set the code detect timer period in ms.
3944
3945 @item force_pe
3946 Always extend peaks above -3dBFS even if PE isn't signaled.
3947
3948 @item analyze_mode
3949 Replace audio with a solid tone and adjust the amplitude to signal some
3950 specific aspect of the decoding process. The output file can be loaded in
3951 an audio editor alongside the original to aid analysis.
3952
3953 @code{analyze_mode=pe:force_pe=true} can be used to see all samples above the PE level.
3954
3955 Modes are:
3956 @table @samp
3957 @item 0, off
3958 Disabled
3959 @item 1, lle
3960 Gain adjustment level at each sample
3961 @item 2, pe
3962 Samples where peak extend occurs
3963 @item 3, cdt
3964 Samples where the code detect timer is active
3965 @item 4, tgm
3966 Samples where the target gain does not match between channels
3967 @end table
3968 @end table
3969
3970 @section headphone
3971
3972 Apply head-related transfer functions (HRTFs) to create virtual
3973 loudspeakers around the user for binaural listening via headphones.
3974 The HRIRs are provided via additional streams, for each channel
3975 one stereo input stream is needed.
3976
3977 The filter accepts the following options:
3978
3979 @table @option
3980 @item map
3981 Set mapping of input streams for convolution.
3982 The argument is a '|'-separated list of channel names in order as they
3983 are given as additional stream inputs for filter.
3984 This also specify number of input streams. Number of input streams
3985 must be not less than number of channels in first stream plus one.
3986
3987 @item gain
3988 Set gain applied to audio. Value is in dB. Default is 0.
3989
3990 @item type
3991 Set processing type. Can be @var{time} or @var{freq}. @var{time} is
3992 processing audio in time domain which is slow.
3993 @var{freq} is processing audio in frequency domain which is fast.
3994 Default is @var{freq}.
3995
3996 @item lfe
3997 Set custom gain for LFE channels. Value is in dB. Default is 0.
3998
3999 @item size
4000 Set size of frame in number of samples which will be processed at once.
4001 Default value is @var{1024}. Allowed range is from 1024 to 96000.
4002
4003 @item hrir
4004 Set format of hrir stream.
4005 Default value is @var{stereo}. Alternative value is @var{multich}.
4006 If value is set to @var{stereo}, number of additional streams should
4007 be greater or equal to number of input channels in first input stream.
4008 Also each additional stream should have stereo number of channels.
4009 If value is set to @var{multich}, number of additional streams should
4010 be exactly one. Also number of input channels of additional stream
4011 should be equal or greater than twice number of channels of first input
4012 stream.
4013 @end table
4014
4015 @subsection Examples
4016
4017 @itemize
4018 @item
4019 Full example using wav files as coefficients with amovie filters for 7.1 downmix,
4020 each amovie filter use stereo file with IR coefficients as input.
4021 The files give coefficients for each position of virtual loudspeaker:
4022 @example
4023 ffmpeg -i input.wav
4024 -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"
4025 output.wav
4026 @end example
4027
4028 @item
4029 Full example using wav files as coefficients with amovie filters for 7.1 downmix,
4030 but now in @var{multich} @var{hrir} format.
4031 @example
4032 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"
4033 output.wav
4034 @end example
4035 @end itemize
4036
4037 @section highpass
4038
4039 Apply a high-pass filter with 3dB point frequency.
4040 The filter can be either single-pole, or double-pole (the default).
4041 The filter roll off at 6dB per pole per octave (20dB per pole per decade).
4042
4043 The filter accepts the following options:
4044
4045 @table @option
4046 @item frequency, f
4047 Set frequency in Hz. Default is 3000.
4048
4049 @item poles, p
4050 Set number of poles. Default is 2.
4051
4052 @item width_type, t
4053 Set method to specify band-width of filter.
4054 @table @option
4055 @item h
4056 Hz
4057 @item q
4058 Q-Factor
4059 @item o
4060 octave
4061 @item s
4062 slope
4063 @item k
4064 kHz
4065 @end table
4066
4067 @item width, w
4068 Specify the band-width of a filter in width_type units.
4069 Applies only to double-pole filter.
4070 The default is 0.707q and gives a Butterworth response.
4071
4072 @item mix, m
4073 How much to use filtered signal in output. Default is 1.
4074 Range is between 0 and 1.
4075
4076 @item channels, c
4077 Specify which channels to filter, by default all available are filtered.
4078
4079 @item normalize, n
4080 Normalize biquad coefficients, by default is disabled.
4081 Enabling it will normalize magnitude response at DC to 0dB.
4082 @end table
4083
4084 @subsection Commands
4085
4086 This filter supports the following commands:
4087 @table @option
4088 @item frequency, f
4089 Change highpass frequency.
4090 Syntax for the command is : "@var{frequency}"
4091
4092 @item width_type, t
4093 Change highpass width_type.
4094 Syntax for the command is : "@var{width_type}"
4095
4096 @item width, w
4097 Change highpass width.
4098 Syntax for the command is : "@var{width}"
4099
4100 @item mix, m
4101 Change highpass mix.
4102 Syntax for the command is : "@var{mix}"
4103 @end table
4104
4105 @section join
4106
4107 Join multiple input streams into one multi-channel stream.
4108
4109 It accepts the following parameters:
4110 @table @option
4111
4112 @item inputs
4113 The number of input streams. It defaults to 2.
4114
4115 @item channel_layout
4116 The desired output channel layout. It defaults to stereo.
4117
4118 @item map
4119 Map channels from inputs to output. The argument is a '|'-separated list of
4120 mappings, each in the @code{@var{input_idx}.@var{in_channel}-@var{out_channel}}
4121 form. @var{input_idx} is the 0-based index of the input stream. @var{in_channel}
4122 can be either the name of the input channel (e.g. FL for front left) or its
4123 index in the specified input stream. @var{out_channel} is the name of the output
4124 channel.
4125 @end table
4126
4127 The filter will attempt to guess the mappings when they are not specified
4128 explicitly. It does so by first trying to find an unused matching input channel
4129 and if that fails it picks the first unused input channel.
4130
4131 Join 3 inputs (with properly set channel layouts):
4132 @example
4133 ffmpeg -i INPUT1 -i INPUT2 -i INPUT3 -filter_complex join=inputs=3 OUTPUT
4134 @end example
4135
4136 Build a 5.1 output from 6 single-channel streams:
4137 @example
4138 ffmpeg -i fl -i fr -i fc -i sl -i sr -i lfe -filter_complex
4139 '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'
4140 out
4141 @end example
4142
4143 @section ladspa
4144
4145 Load a LADSPA (Linux Audio Developer's Simple Plugin API) plugin.
4146
4147 To enable compilation of this filter you need to configure FFmpeg with
4148 @code{--enable-ladspa}.
4149
4150 @table @option
4151 @item file, f
4152 Specifies the name of LADSPA plugin library to load. If the environment
4153 variable @env{LADSPA_PATH} is defined, the LADSPA plugin is searched in
4154 each one of the directories specified by the colon separated list in
4155 @env{LADSPA_PATH}, otherwise in the standard LADSPA paths, which are in
4156 this order: @file{HOME/.ladspa/lib/}, @file{/usr/local/lib/ladspa/},
4157 @file{/usr/lib/ladspa/}.
4158
4159 @item plugin, p
4160 Specifies the plugin within the library. Some libraries contain only
4161 one plugin, but others contain many of them. If this is not set filter
4162 will list all available plugins within the specified library.
4163
4164 @item controls, c
4165 Set the '|' separated list of controls which are zero or more floating point
4166 values that determine the behavior of the loaded plugin (for example delay,
4167 threshold or gain).
4168 Controls need to be defined using the following syntax:
4169 c0=@var{value0}|c1=@var{value1}|c2=@var{value2}|..., where
4170 @var{valuei} is the value set on the @var{i}-th control.
4171 Alternatively they can be also defined using the following syntax:
4172 @var{value0}|@var{value1}|@var{value2}|..., where
4173 @var{valuei} is the value set on the @var{i}-th control.
4174 If @option{controls} is set to @code{help}, all available controls and
4175 their valid ranges are printed.
4176
4177 @item sample_rate, s
4178 Specify the sample rate, default to 44100. Only used if plugin have
4179 zero inputs.
4180
4181 @item nb_samples, n
4182 Set the number of samples per channel per each output frame, default
4183 is 1024. Only used if plugin have zero inputs.
4184
4185 @item duration, d
4186 Set the minimum duration of the sourced audio. See
4187 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
4188 for the accepted syntax.
4189 Note that the resulting duration may be greater than the specified duration,
4190 as the generated audio is always cut at the end of a complete frame.
4191 If not specified, or the expressed duration is negative, the audio is
4192 supposed to be generated forever.
4193 Only used if plugin have zero inputs.
4194
4195 @end table
4196
4197 @subsection Examples
4198
4199 @itemize
4200 @item
4201 List all available plugins within amp (LADSPA example plugin) library:
4202 @example
4203 ladspa=file=amp
4204 @end example
4205
4206 @item
4207 List all available controls and their valid ranges for @code{vcf_notch}
4208 plugin from @code{VCF} library:
4209 @example
4210 ladspa=f=vcf:p=vcf_notch:c=help
4211 @end example
4212
4213 @item
4214 Simulate low quality audio equipment using @code{Computer Music Toolkit} (CMT)
4215 plugin library:
4216 @example
4217 ladspa=file=cmt:plugin=lofi:controls=c0=22|c1=12|c2=12
4218 @end example
4219
4220 @item
4221 Add reverberation to the audio using TAP-plugins
4222 (Tom's Audio Processing plugins):
4223 @example
4224 ladspa=file=tap_reverb:tap_reverb
4225 @end example
4226
4227 @item
4228 Generate white noise, with 0.2 amplitude:
4229 @example
4230 ladspa=file=cmt:noise_source_white:c=c0=.2
4231 @end example
4232
4233 @item
4234 Generate 20 bpm clicks using plugin @code{C* Click - Metronome} from the
4235 @code{C* Audio Plugin Suite} (CAPS) library:
4236 @example
4237 ladspa=file=caps:Click:c=c1=20'
4238 @end example
4239
4240 @item
4241 Apply @code{C* Eq10X2 - Stereo 10-band equaliser} effect:
4242 @example
4243 ladspa=caps:Eq10X2:c=c0=-48|c9=-24|c3=12|c4=2
4244 @end example
4245
4246 @item
4247 Increase volume by 20dB using fast lookahead limiter from Steve Harris
4248 @code{SWH Plugins} collection:
4249 @example
4250 ladspa=fast_lookahead_limiter_1913:fastLookaheadLimiter:20|0|2
4251 @end example
4252
4253 @item
4254 Attenuate low frequencies using Multiband EQ from Steve Harris
4255 @code{SWH Plugins} collection:
4256 @example
4257 ladspa=mbeq_1197:mbeq:-24|-24|-24|0|0|0|0|0|0|0|0|0|0|0|0
4258 @end example
4259
4260 @item
4261 Reduce stereo image using @code{Narrower} from the @code{C* Audio Plugin Suite}
4262 (CAPS) library:
4263 @example
4264 ladspa=caps:Narrower
4265 @end example
4266
4267 @item
4268 Another white noise, now using @code{C* Audio Plugin Suite} (CAPS) library:
4269 @example
4270 ladspa=caps:White:.2
4271 @end example
4272
4273 @item
4274 Some fractal noise, using @code{C* Audio Plugin Suite} (CAPS) library:
4275 @example
4276 ladspa=caps:Fractal:c=c1=1
4277 @end example
4278
4279 @item
4280 Dynamic volume normalization using @code{VLevel} plugin:
4281 @example
4282 ladspa=vlevel-ladspa:vlevel_mono
4283 @end example
4284 @end itemize
4285
4286 @subsection Commands
4287
4288 This filter supports the following commands:
4289 @table @option
4290 @item cN
4291 Modify the @var{N}-th control value.
4292
4293 If the specified value is not valid, it is ignored and prior one is kept.
4294 @end table
4295
4296 @section loudnorm
4297
4298 EBU R128 loudness normalization. Includes both dynamic and linear normalization modes.
4299 Support for both single pass (livestreams, files) and double pass (files) modes.
4300 This algorithm can target IL, LRA, and maximum true peak. In dynamic mode, to accurately
4301 detect true peaks, the audio stream will be upsampled to 192 kHz.
4302 Use the @code{-ar} option or @code{aresample} filter to explicitly set an output sample rate.
4303
4304 The filter accepts the following options:
4305
4306 @table @option
4307 @item I, i
4308 Set integrated loudness target.
4309 Range is -70.0 - -5.0. Default value is -24.0.
4310
4311 @item LRA, lra
4312 Set loudness range target.
4313 Range is 1.0 - 20.0. Default value is 7.0.
4314
4315 @item TP, tp
4316 Set maximum true peak.
4317 Range is -9.0 - +0.0. Default value is -2.0.
4318
4319 @item measured_I, measured_i
4320 Measured IL of input file.
4321 Range is -99.0 - +0.0.
4322
4323 @item measured_LRA, measured_lra
4324 Measured LRA of input file.
4325 Range is  0.0 - 99.0.
4326
4327 @item measured_TP, measured_tp
4328 Measured true peak of input file.
4329 Range is  -99.0 - +99.0.
4330
4331 @item measured_thresh
4332 Measured threshold of input file.
4333 Range is -99.0 - +0.0.
4334
4335 @item offset
4336 Set offset gain. Gain is applied before the true-peak limiter.
4337 Range is  -99.0 - +99.0. Default is +0.0.
4338
4339 @item linear
4340 Normalize by linearly scaling the source audio.
4341 @code{measured_I}, @code{measured_LRA}, @code{measured_TP},
4342 and @code{measured_thresh} must all be specified. Target LRA shouldn't
4343 be lower than source LRA and the change in integrated loudness shouldn't
4344 result in a true peak which exceeds the target TP. If any of these
4345 conditions aren't met, normalization mode will revert to @var{dynamic}.
4346 Options are @code{true} or @code{false}. Default is @code{true}.
4347
4348 @item dual_mono
4349 Treat mono input files as "dual-mono". If a mono file is intended for playback
4350 on a stereo system, its EBU R128 measurement will be perceptually incorrect.
4351 If set to @code{true}, this option will compensate for this effect.
4352 Multi-channel input files are not affected by this option.
4353 Options are true or false. Default is false.
4354
4355 @item print_format
4356 Set print format for stats. Options are summary, json, or none.
4357 Default value is none.
4358 @end table
4359
4360 @section lowpass
4361
4362 Apply a low-pass filter with 3dB point frequency.
4363 The filter can be either single-pole or double-pole (the default).
4364 The filter roll off at 6dB per pole per octave (20dB per pole per decade).
4365
4366 The filter accepts the following options:
4367
4368 @table @option
4369 @item frequency, f
4370 Set frequency in Hz. Default is 500.
4371
4372 @item poles, p
4373 Set number of poles. Default is 2.
4374
4375 @item width_type, t
4376 Set method to specify band-width of filter.
4377 @table @option
4378 @item h
4379 Hz
4380 @item q
4381 Q-Factor
4382 @item o
4383 octave
4384 @item s
4385 slope
4386 @item k
4387 kHz
4388 @end table
4389
4390 @item width, w
4391 Specify the band-width of a filter in width_type units.
4392 Applies only to double-pole filter.
4393 The default is 0.707q and gives a Butterworth response.
4394
4395 @item mix, m
4396 How much to use filtered signal in output. Default is 1.
4397 Range is between 0 and 1.
4398
4399 @item channels, c
4400 Specify which channels to filter, by default all available are filtered.
4401
4402 @item normalize, n
4403 Normalize biquad coefficients, by default is disabled.
4404 Enabling it will normalize magnitude response at DC to 0dB.
4405 @end table
4406
4407 @subsection Examples
4408 @itemize
4409 @item
4410 Lowpass only LFE channel, it LFE is not present it does nothing:
4411 @example
4412 lowpass=c=LFE
4413 @end example
4414 @end itemize
4415
4416 @subsection Commands
4417
4418 This filter supports the following commands:
4419 @table @option
4420 @item frequency, f
4421 Change lowpass frequency.
4422 Syntax for the command is : "@var{frequency}"
4423
4424 @item width_type, t
4425 Change lowpass width_type.
4426 Syntax for the command is : "@var{width_type}"
4427
4428 @item width, w
4429 Change lowpass width.
4430 Syntax for the command is : "@var{width}"
4431
4432 @item mix, m
4433 Change lowpass mix.
4434 Syntax for the command is : "@var{mix}"
4435 @end table
4436
4437 @section lv2
4438
4439 Load a LV2 (LADSPA Version 2) plugin.
4440
4441 To enable compilation of this filter you need to configure FFmpeg with
4442 @code{--enable-lv2}.
4443
4444 @table @option
4445 @item plugin, p
4446 Specifies the plugin URI. You may need to escape ':'.
4447
4448 @item controls, c
4449 Set the '|' separated list of controls which are zero or more floating point
4450 values that determine the behavior of the loaded plugin (for example delay,
4451 threshold or gain).
4452 If @option{controls} is set to @code{help}, all available controls and
4453 their valid ranges are printed.
4454
4455 @item sample_rate, s
4456 Specify the sample rate, default to 44100. Only used if plugin have
4457 zero inputs.
4458
4459 @item nb_samples, n
4460 Set the number of samples per channel per each output frame, default
4461 is 1024. Only used if plugin have zero inputs.
4462
4463 @item duration, d
4464 Set the minimum duration of the sourced audio. See
4465 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
4466 for the accepted syntax.
4467 Note that the resulting duration may be greater than the specified duration,
4468 as the generated audio is always cut at the end of a complete frame.
4469 If not specified, or the expressed duration is negative, the audio is
4470 supposed to be generated forever.
4471 Only used if plugin have zero inputs.
4472 @end table
4473
4474 @subsection Examples
4475
4476 @itemize
4477 @item
4478 Apply bass enhancer plugin from Calf:
4479 @example
4480 lv2=p=http\\\\://calf.sourceforge.net/plugins/BassEnhancer:c=amount=2
4481 @end example
4482
4483 @item
4484 Apply vinyl plugin from Calf:
4485 @example
4486 lv2=p=http\\\\://calf.sourceforge.net/plugins/Vinyl:c=drone=0.2|aging=0.5
4487 @end example
4488
4489 @item
4490 Apply bit crusher plugin from ArtyFX:
4491 @example
4492 lv2=p=http\\\\://www.openavproductions.com/artyfx#bitta:c=crush=0.3
4493 @end example
4494 @end itemize
4495
4496 @section mcompand
4497 Multiband Compress or expand the audio's dynamic range.
4498
4499 The input audio is divided into bands using 4th order Linkwitz-Riley IIRs.
4500 This is akin to the crossover of a loudspeaker, and results in flat frequency
4501 response when absent compander action.
4502
4503 It accepts the following parameters:
4504
4505 @table @option
4506 @item args
4507 This option syntax is:
4508 attack,decay,[attack,decay..] soft-knee points crossover_frequency [delay [initial_volume [gain]]] | attack,decay ...
4509 For explanation of each item refer to compand filter documentation.
4510 @end table
4511
4512 @anchor{pan}
4513 @section pan
4514
4515 Mix channels with specific gain levels. The filter accepts the output
4516 channel layout followed by a set of channels definitions.
4517
4518 This filter is also designed to efficiently remap the channels of an audio
4519 stream.
4520
4521 The filter accepts parameters of the form:
4522 "@var{l}|@var{outdef}|@var{outdef}|..."
4523
4524 @table @option
4525 @item l
4526 output channel layout or number of channels
4527
4528 @item outdef
4529 output channel specification, of the form:
4530 "@var{out_name}=[@var{gain}*]@var{in_name}[(+-)[@var{gain}*]@var{in_name}...]"
4531
4532 @item out_name
4533 output channel to define, either a channel name (FL, FR, etc.) or a channel
4534 number (c0, c1, etc.)
4535
4536 @item gain
4537 multiplicative coefficient for the channel, 1 leaving the volume unchanged
4538
4539 @item in_name
4540 input channel to use, see out_name for details; it is not possible to mix
4541 named and numbered input channels
4542 @end table
4543
4544 If the `=' in a channel specification is replaced by `<', then the gains for
4545 that specification will be renormalized so that the total is 1, thus
4546 avoiding clipping noise.
4547
4548 @subsection Mixing examples
4549
4550 For example, if you want to down-mix from stereo to mono, but with a bigger
4551 factor for the left channel:
4552 @example
4553 pan=1c|c0=0.9*c0+0.1*c1
4554 @end example
4555
4556 A customized down-mix to stereo that works automatically for 3-, 4-, 5- and
4557 7-channels surround:
4558 @example
4559 pan=stereo| FL < FL + 0.5*FC + 0.6*BL + 0.6*SL | FR < FR + 0.5*FC + 0.6*BR + 0.6*SR
4560 @end example
4561
4562 Note that @command{ffmpeg} integrates a default down-mix (and up-mix) system
4563 that should be preferred (see "-ac" option) unless you have very specific
4564 needs.
4565
4566 @subsection Remapping examples
4567
4568 The channel remapping will be effective if, and only if:
4569
4570 @itemize
4571 @item gain coefficients are zeroes or ones,
4572 @item only one input per channel output,
4573 @end itemize
4574
4575 If all these conditions are satisfied, the filter will notify the user ("Pure
4576 channel mapping detected"), and use an optimized and lossless method to do the
4577 remapping.
4578
4579 For example, if you have a 5.1 source and want a stereo audio stream by
4580 dropping the extra channels:
4581 @example
4582 pan="stereo| c0=FL | c1=FR"
4583 @end example
4584
4585 Given the same source, you can also switch front left and front right channels
4586 and keep the input channel layout:
4587 @example
4588 pan="5.1| c0=c1 | c1=c0 | c2=c2 | c3=c3 | c4=c4 | c5=c5"
4589 @end example
4590
4591 If the input is a stereo audio stream, you can mute the front left channel (and
4592 still keep the stereo channel layout) with:
4593 @example
4594 pan="stereo|c1=c1"
4595 @end example
4596
4597 Still with a stereo audio stream input, you can copy the right channel in both
4598 front left and right:
4599 @example
4600 pan="stereo| c0=FR | c1=FR"
4601 @end example
4602
4603 @section replaygain
4604
4605 ReplayGain scanner filter. This filter takes an audio stream as an input and
4606 outputs it unchanged.
4607 At end of filtering it displays @code{track_gain} and @code{track_peak}.
4608
4609 @section resample
4610
4611 Convert the audio sample format, sample rate and channel layout. It is
4612 not meant to be used directly.
4613
4614 @section rubberband
4615 Apply time-stretching and pitch-shifting with librubberband.
4616
4617 To enable compilation of this filter, you need to configure FFmpeg with
4618 @code{--enable-librubberband}.
4619
4620 The filter accepts the following options:
4621
4622 @table @option
4623 @item tempo
4624 Set tempo scale factor.
4625
4626 @item pitch
4627 Set pitch scale factor.
4628
4629 @item transients
4630 Set transients detector.
4631 Possible values are:
4632 @table @var
4633 @item crisp
4634 @item mixed
4635 @item smooth
4636 @end table
4637
4638 @item detector
4639 Set detector.
4640 Possible values are:
4641 @table @var
4642 @item compound
4643 @item percussive
4644 @item soft
4645 @end table
4646
4647 @item phase
4648 Set phase.
4649 Possible values are:
4650 @table @var
4651 @item laminar
4652 @item independent
4653 @end table
4654
4655 @item window
4656 Set processing window size.
4657 Possible values are:
4658 @table @var
4659 @item standard
4660 @item short
4661 @item long
4662 @end table
4663
4664 @item smoothing
4665 Set smoothing.
4666 Possible values are:
4667 @table @var
4668 @item off
4669 @item on
4670 @end table
4671
4672 @item formant
4673 Enable formant preservation when shift pitching.
4674 Possible values are:
4675 @table @var
4676 @item shifted
4677 @item preserved
4678 @end table
4679
4680 @item pitchq
4681 Set pitch quality.
4682 Possible values are:
4683 @table @var
4684 @item quality
4685 @item speed
4686 @item consistency
4687 @end table
4688
4689 @item channels
4690 Set channels.
4691 Possible values are:
4692 @table @var
4693 @item apart
4694 @item together
4695 @end table
4696 @end table
4697
4698 @subsection Commands
4699
4700 This filter supports the following commands:
4701 @table @option
4702 @item tempo
4703 Change filter tempo scale factor.
4704 Syntax for the command is : "@var{tempo}"
4705
4706 @item pitch
4707 Change filter pitch scale factor.
4708 Syntax for the command is : "@var{pitch}"
4709 @end table
4710
4711 @section sidechaincompress
4712
4713 This filter acts like normal compressor but has the ability to compress
4714 detected signal using second input signal.
4715 It needs two input streams and returns one output stream.
4716 First input stream will be processed depending on second stream signal.
4717 The filtered signal then can be filtered with other filters in later stages of
4718 processing. See @ref{pan} and @ref{amerge} filter.
4719
4720 The filter accepts the following options:
4721
4722 @table @option
4723 @item level_in
4724 Set input gain. Default is 1. Range is between 0.015625 and 64.
4725
4726 @item mode
4727 Set mode of compressor operation. Can be @code{upward} or @code{downward}.
4728 Default is @code{downward}.
4729
4730 @item threshold
4731 If a signal of second stream raises above this level it will affect the gain
4732 reduction of first stream.
4733 By default is 0.125. Range is between 0.00097563 and 1.
4734
4735 @item ratio
4736 Set a ratio about which the signal is reduced. 1:2 means that if the level
4737 raised 4dB above the threshold, it will be only 2dB above after the reduction.
4738 Default is 2. Range is between 1 and 20.
4739
4740 @item attack
4741 Amount of milliseconds the signal has to rise above the threshold before gain
4742 reduction starts. Default is 20. Range is between 0.01 and 2000.
4743
4744 @item release
4745 Amount of milliseconds the signal has to fall below the threshold before
4746 reduction is decreased again. Default is 250. Range is between 0.01 and 9000.
4747
4748 @item makeup
4749 Set the amount by how much signal will be amplified after processing.
4750 Default is 1. Range is from 1 to 64.
4751
4752 @item knee
4753 Curve the sharp knee around the threshold to enter gain reduction more softly.
4754 Default is 2.82843. Range is between 1 and 8.
4755
4756 @item link
4757 Choose if the @code{average} level between all channels of side-chain stream
4758 or the louder(@code{maximum}) channel of side-chain stream affects the
4759 reduction. Default is @code{average}.
4760
4761 @item detection
4762 Should the exact signal be taken in case of @code{peak} or an RMS one in case
4763 of @code{rms}. Default is @code{rms} which is mainly smoother.
4764
4765 @item level_sc
4766 Set sidechain gain. Default is 1. Range is between 0.015625 and 64.
4767
4768 @item mix
4769 How much to use compressed signal in output. Default is 1.
4770 Range is between 0 and 1.
4771 @end table
4772
4773 @subsection Commands
4774
4775 This filter supports the all above options as @ref{commands}.
4776
4777 @subsection Examples
4778
4779 @itemize
4780 @item
4781 Full ffmpeg example taking 2 audio inputs, 1st input to be compressed
4782 depending on the signal of 2nd input and later compressed signal to be
4783 merged with 2nd input:
4784 @example
4785 ffmpeg -i main.flac -i sidechain.flac -filter_complex "[1:a]asplit=2[sc][mix];[0:a][sc]sidechaincompress[compr];[compr][mix]amerge"
4786 @end example
4787 @end itemize
4788
4789 @section sidechaingate
4790
4791 A sidechain gate acts like a normal (wideband) gate but has the ability to
4792 filter the detected signal before sending it to the gain reduction stage.
4793 Normally a gate uses the full range signal to detect a level above the
4794 threshold.
4795 For example: If you cut all lower frequencies from your sidechain signal
4796 the gate will decrease the volume of your track only if not enough highs
4797 appear. With this technique you are able to reduce the resonation of a
4798 natural drum or remove "rumbling" of muted strokes from a heavily distorted
4799 guitar.
4800 It needs two input streams and returns one output stream.
4801 First input stream will be processed depending on second stream signal.
4802
4803 The filter accepts the following options:
4804
4805 @table @option
4806 @item level_in
4807 Set input level before filtering.
4808 Default is 1. Allowed range is from 0.015625 to 64.
4809
4810 @item mode
4811 Set the mode of operation. Can be @code{upward} or @code{downward}.
4812 Default is @code{downward}. If set to @code{upward} mode, higher parts of signal
4813 will be amplified, expanding dynamic range in upward direction.
4814 Otherwise, in case of @code{downward} lower parts of signal will be reduced.
4815
4816 @item range
4817 Set the level of gain reduction when the signal is below the threshold.
4818 Default is 0.06125. Allowed range is from 0 to 1.
4819 Setting this to 0 disables reduction and then filter behaves like expander.
4820
4821 @item threshold
4822 If a signal rises above this level the gain reduction is released.
4823 Default is 0.125. Allowed range is from 0 to 1.
4824
4825 @item ratio
4826 Set a ratio about which the signal is reduced.
4827 Default is 2. Allowed range is from 1 to 9000.
4828
4829 @item attack
4830 Amount of milliseconds the signal has to rise above the threshold before gain
4831 reduction stops.
4832 Default is 20 milliseconds. Allowed range is from 0.01 to 9000.
4833
4834 @item release
4835 Amount of milliseconds the signal has to fall below the threshold before the
4836 reduction is increased again. Default is 250 milliseconds.
4837 Allowed range is from 0.01 to 9000.
4838
4839 @item makeup
4840 Set amount of amplification of signal after processing.
4841 Default is 1. Allowed range is from 1 to 64.
4842
4843 @item knee
4844 Curve the sharp knee around the threshold to enter gain reduction more softly.
4845 Default is 2.828427125. Allowed range is from 1 to 8.
4846
4847 @item detection
4848 Choose if exact signal should be taken for detection or an RMS like one.
4849 Default is rms. Can be peak or rms.
4850
4851 @item link
4852 Choose if the average level between all channels or the louder channel affects
4853 the reduction.
4854 Default is average. Can be average or maximum.
4855
4856 @item level_sc
4857 Set sidechain gain. Default is 1. Range is from 0.015625 to 64.
4858 @end table
4859
4860 @section silencedetect
4861
4862 Detect silence in an audio stream.
4863
4864 This filter logs a message when it detects that the input audio volume is less
4865 or equal to a noise tolerance value for a duration greater or equal to the
4866 minimum detected noise duration.
4867
4868 The printed times and duration are expressed in seconds. The
4869 @code{lavfi.silence_start} or @code{lavfi.silence_start.X} metadata key
4870 is set on the first frame whose timestamp equals or exceeds the detection
4871 duration and it contains the timestamp of the first frame of the silence.
4872
4873 The @code{lavfi.silence_duration} or @code{lavfi.silence_duration.X}
4874 and @code{lavfi.silence_end} or @code{lavfi.silence_end.X} metadata
4875 keys are set on the first frame after the silence. If @option{mono} is
4876 enabled, and each channel is evaluated separately, the @code{.X}
4877 suffixed keys are used, and @code{X} corresponds to the channel number.
4878
4879 The filter accepts the following options:
4880
4881 @table @option
4882 @item noise, n
4883 Set noise tolerance. Can be specified in dB (in case "dB" is appended to the
4884 specified value) or amplitude ratio. Default is -60dB, or 0.001.
4885
4886 @item duration, d
4887 Set silence duration until notification (default is 2 seconds). See
4888 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
4889 for the accepted syntax.
4890
4891 @item mono, m
4892 Process each channel separately, instead of combined. By default is disabled.
4893 @end table
4894
4895 @subsection Examples
4896
4897 @itemize
4898 @item
4899 Detect 5 seconds of silence with -50dB noise tolerance:
4900 @example
4901 silencedetect=n=-50dB:d=5
4902 @end example
4903
4904 @item
4905 Complete example with @command{ffmpeg} to detect silence with 0.0001 noise
4906 tolerance in @file{silence.mp3}:
4907 @example
4908 ffmpeg -i silence.mp3 -af silencedetect=noise=0.0001 -f null -
4909 @end example
4910 @end itemize
4911
4912 @section silenceremove
4913
4914 Remove silence from the beginning, middle or end of the audio.
4915
4916 The filter accepts the following options:
4917
4918 @table @option
4919 @item start_periods
4920 This value is used to indicate if audio should be trimmed at beginning of
4921 the audio. A value of zero indicates no silence should be trimmed from the
4922 beginning. When specifying a non-zero value, it trims audio up until it
4923 finds non-silence. Normally, when trimming silence from beginning of audio
4924 the @var{start_periods} will be @code{1} but it can be increased to higher
4925 values to trim all audio up to specific count of non-silence periods.
4926 Default value is @code{0}.
4927
4928 @item start_duration
4929 Specify the amount of time that non-silence must be detected before it stops
4930 trimming audio. By increasing the duration, bursts of noises can be treated
4931 as silence and trimmed off. Default value is @code{0}.
4932
4933 @item start_threshold
4934 This indicates what sample value should be treated as silence. For digital
4935 audio, a value of @code{0} may be fine but for audio recorded from analog,
4936 you may wish to increase the value to account for background noise.
4937 Can be specified in dB (in case "dB" is appended to the specified value)
4938 or amplitude ratio. Default value is @code{0}.
4939
4940 @item start_silence
4941 Specify max duration of silence at beginning that will be kept after
4942 trimming. Default is 0, which is equal to trimming all samples detected
4943 as silence.
4944
4945 @item start_mode
4946 Specify mode of detection of silence end in start of multi-channel audio.
4947 Can be @var{any} or @var{all}. Default is @var{any}.
4948 With @var{any}, any sample that is detected as non-silence will cause
4949 stopped trimming of silence.
4950 With @var{all}, only if all channels are detected as non-silence will cause
4951 stopped trimming of silence.
4952
4953 @item stop_periods
4954 Set the count for trimming silence from the end of audio.
4955 To remove silence from the middle of a file, specify a @var{stop_periods}
4956 that is negative. This value is then treated as a positive value and is
4957 used to indicate the effect should restart processing as specified by
4958 @var{start_periods}, making it suitable for removing periods of silence
4959 in the middle of the audio.
4960 Default value is @code{0}.
4961
4962 @item stop_duration
4963 Specify a duration of silence that must exist before audio is not copied any
4964 more. By specifying a higher duration, silence that is wanted can be left in
4965 the audio.
4966 Default value is @code{0}.
4967
4968 @item stop_threshold
4969 This is the same as @option{start_threshold} but for trimming silence from
4970 the end of audio.
4971 Can be specified in dB (in case "dB" is appended to the specified value)
4972 or amplitude ratio. Default value is @code{0}.
4973
4974 @item stop_silence
4975 Specify max duration of silence at end that will be kept after
4976 trimming. Default is 0, which is equal to trimming all samples detected
4977 as silence.
4978
4979 @item stop_mode
4980 Specify mode of detection of silence start in end of multi-channel audio.
4981 Can be @var{any} or @var{all}. Default is @var{any}.
4982 With @var{any}, any sample that is detected as non-silence will cause
4983 stopped trimming of silence.
4984 With @var{all}, only if all channels are detected as non-silence will cause
4985 stopped trimming of silence.
4986
4987 @item detection
4988 Set how is silence detected. Can be @code{rms} or @code{peak}. Second is faster
4989 and works better with digital silence which is exactly 0.
4990 Default value is @code{rms}.
4991
4992 @item window
4993 Set duration in number of seconds used to calculate size of window in number
4994 of samples for detecting silence.
4995 Default value is @code{0.02}. Allowed range is from @code{0} to @code{10}.
4996 @end table
4997
4998 @subsection Examples
4999
5000 @itemize
5001 @item
5002 The following example shows how this filter can be used to start a recording
5003 that does not contain the delay at the start which usually occurs between
5004 pressing the record button and the start of the performance:
5005 @example
5006 silenceremove=start_periods=1:start_duration=5:start_threshold=0.02
5007 @end example
5008
5009 @item
5010 Trim all silence encountered from beginning to end where there is more than 1
5011 second of silence in audio:
5012 @example
5013 silenceremove=stop_periods=-1:stop_duration=1:stop_threshold=-90dB
5014 @end example
5015
5016 @item
5017 Trim all digital silence samples, using peak detection, from beginning to end
5018 where there is more than 0 samples of digital silence in audio and digital
5019 silence is detected in all channels at same positions in stream:
5020 @example
5021 silenceremove=window=0:detection=peak:stop_mode=all:start_mode=all:stop_periods=-1:stop_threshold=0
5022 @end example
5023 @end itemize
5024
5025 @section sofalizer
5026
5027 SOFAlizer uses head-related transfer functions (HRTFs) to create virtual
5028 loudspeakers around the user for binaural listening via headphones (audio
5029 formats up to 9 channels supported).
5030 The HRTFs are stored in SOFA files (see @url{http://www.sofacoustics.org/} for a database).
5031 SOFAlizer is developed at the Acoustics Research Institute (ARI) of the
5032 Austrian Academy of Sciences.
5033
5034 To enable compilation of this filter you need to configure FFmpeg with
5035 @code{--enable-libmysofa}.
5036
5037 The filter accepts the following options:
5038
5039 @table @option
5040 @item sofa
5041 Set the SOFA file used for rendering.
5042
5043 @item gain
5044 Set gain applied to audio. Value is in dB. Default is 0.
5045
5046 @item rotation
5047 Set rotation of virtual loudspeakers in deg. Default is 0.
5048
5049 @item elevation
5050 Set elevation of virtual speakers in deg. Default is 0.
5051
5052 @item radius
5053 Set distance in meters between loudspeakers and the listener with near-field
5054 HRTFs. Default is 1.
5055
5056 @item type
5057 Set processing type. Can be @var{time} or @var{freq}. @var{time} is
5058 processing audio in time domain which is slow.
5059 @var{freq} is processing audio in frequency domain which is fast.
5060 Default is @var{freq}.
5061
5062 @item speakers
5063 Set custom positions of virtual loudspeakers. Syntax for this option is:
5064 <CH> <AZIM> <ELEV>[|<CH> <AZIM> <ELEV>|...].
5065 Each virtual loudspeaker is described with short channel name following with
5066 azimuth and elevation in degrees.
5067 Each virtual loudspeaker description is separated by '|'.
5068 For example to override front left and front right channel positions use:
5069 'speakers=FL 45 15|FR 345 15'.
5070 Descriptions with unrecognised channel names are ignored.
5071
5072 @item lfegain
5073 Set custom gain for LFE channels. Value is in dB. Default is 0.
5074
5075 @item framesize
5076 Set custom frame size in number of samples. Default is 1024.
5077 Allowed range is from 1024 to 96000. Only used if option @samp{type}
5078 is set to @var{freq}.
5079
5080 @item normalize
5081 Should all IRs be normalized upon importing SOFA file.
5082 By default is enabled.
5083
5084 @item interpolate
5085 Should nearest IRs be interpolated with neighbor IRs if exact position
5086 does not match. By default is disabled.
5087
5088 @item minphase
5089 Minphase all IRs upon loading of SOFA file. By default is disabled.
5090
5091 @item anglestep
5092 Set neighbor search angle step. Only used if option @var{interpolate} is enabled.
5093
5094 @item radstep
5095 Set neighbor search radius step. Only used if option @var{interpolate} is enabled.
5096 @end table
5097
5098 @subsection Examples
5099
5100 @itemize
5101 @item
5102 Using ClubFritz6 sofa file:
5103 @example
5104 sofalizer=sofa=/path/to/ClubFritz6.sofa:type=freq:radius=1
5105 @end example
5106
5107 @item
5108 Using ClubFritz12 sofa file and bigger radius with small rotation:
5109 @example
5110 sofalizer=sofa=/path/to/ClubFritz12.sofa:type=freq:radius=2:rotation=5
5111 @end example
5112
5113 @item
5114 Similar as above but with custom speaker positions for front left, front right, back left and back right
5115 and also with custom gain:
5116 @example
5117 "sofalizer=sofa=/path/to/ClubFritz6.sofa:type=freq:radius=2:speakers=FL 45|FR 315|BL 135|BR 225:gain=28"
5118 @end example
5119 @end itemize
5120
5121 @section stereotools
5122
5123 This filter has some handy utilities to manage stereo signals, for converting
5124 M/S stereo recordings to L/R signal while having control over the parameters
5125 or spreading the stereo image of master track.
5126
5127 The filter accepts the following options:
5128
5129 @table @option
5130 @item level_in
5131 Set input level before filtering for both channels. Defaults is 1.
5132 Allowed range is from 0.015625 to 64.
5133
5134 @item level_out
5135 Set output level after filtering for both channels. Defaults is 1.
5136 Allowed range is from 0.015625 to 64.
5137
5138 @item balance_in
5139 Set input balance between both channels. Default is 0.
5140 Allowed range is from -1 to 1.
5141
5142 @item balance_out
5143 Set output balance between both channels. Default is 0.
5144 Allowed range is from -1 to 1.
5145
5146 @item softclip
5147 Enable softclipping. Results in analog distortion instead of harsh digital 0dB
5148 clipping. Disabled by default.
5149
5150 @item mutel
5151 Mute the left channel. Disabled by default.
5152
5153 @item muter
5154 Mute the right channel. Disabled by default.
5155
5156 @item phasel
5157 Change the phase of the left channel. Disabled by default.
5158
5159 @item phaser
5160 Change the phase of the right channel. Disabled by default.
5161
5162 @item mode
5163 Set stereo mode. Available values are:
5164
5165 @table @samp
5166 @item lr>lr
5167 Left/Right to Left/Right, this is default.
5168
5169 @item lr>ms
5170 Left/Right to Mid/Side.
5171
5172 @item ms>lr
5173 Mid/Side to Left/Right.
5174
5175 @item lr>ll
5176 Left/Right to Left/Left.
5177
5178 @item lr>rr
5179 Left/Right to Right/Right.
5180
5181 @item lr>l+r
5182 Left/Right to Left + Right.
5183
5184 @item lr>rl
5185 Left/Right to Right/Left.
5186
5187 @item ms>ll
5188 Mid/Side to Left/Left.
5189
5190 @item ms>rr
5191 Mid/Side to Right/Right.
5192 @end table
5193
5194 @item slev
5195 Set level of side signal. Default is 1.
5196 Allowed range is from 0.015625 to 64.
5197
5198 @item sbal
5199 Set balance of side signal. Default is 0.
5200 Allowed range is from -1 to 1.
5201
5202 @item mlev
5203 Set level of the middle signal. Default is 1.
5204 Allowed range is from 0.015625 to 64.
5205
5206 @item mpan
5207 Set middle signal pan. Default is 0. Allowed range is from -1 to 1.
5208
5209 @item base
5210 Set stereo base between mono and inversed channels. Default is 0.
5211 Allowed range is from -1 to 1.
5212
5213 @item delay
5214 Set delay in milliseconds how much to delay left from right channel and
5215 vice versa. Default is 0. Allowed range is from -20 to 20.
5216
5217 @item sclevel
5218 Set S/C level. Default is 1. Allowed range is from 1 to 100.
5219
5220 @item phase
5221 Set the stereo phase in degrees. Default is 0. Allowed range is from 0 to 360.
5222
5223 @item bmode_in, bmode_out
5224 Set balance mode for balance_in/balance_out option.
5225
5226 Can be one of the following:
5227
5228 @table @samp
5229 @item balance
5230 Classic balance mode. Attenuate one channel at time.
5231 Gain is raised up to 1.
5232
5233 @item amplitude
5234 Similar as classic mode above but gain is raised up to 2.
5235
5236 @item power
5237 Equal power distribution, from -6dB to +6dB range.
5238 @end table
5239 @end table
5240
5241 @subsection Examples
5242
5243 @itemize
5244 @item
5245 Apply karaoke like effect:
5246 @example
5247 stereotools=mlev=0.015625
5248 @end example
5249
5250 @item
5251 Convert M/S signal to L/R:
5252 @example
5253 "stereotools=mode=ms>lr"
5254 @end example
5255 @end itemize
5256
5257 @section stereowiden
5258
5259 This filter enhance the stereo effect by suppressing signal common to both
5260 channels and by delaying the signal of left into right and vice versa,
5261 thereby widening the stereo effect.
5262
5263 The filter accepts the following options:
5264
5265 @table @option
5266 @item delay
5267 Time in milliseconds of the delay of left signal into right and vice versa.
5268 Default is 20 milliseconds.
5269
5270 @item feedback
5271 Amount of gain in delayed signal into right and vice versa. Gives a delay
5272 effect of left signal in right output and vice versa which gives widening
5273 effect. Default is 0.3.
5274
5275 @item crossfeed
5276 Cross feed of left into right with inverted phase. This helps in suppressing
5277 the mono. If the value is 1 it will cancel all the signal common to both
5278 channels. Default is 0.3.
5279
5280 @item drymix
5281 Set level of input signal of original channel. Default is 0.8.
5282 @end table
5283
5284 @subsection Commands
5285
5286 This filter supports the all above options except @code{delay} as @ref{commands}.
5287
5288 @section superequalizer
5289 Apply 18 band equalizer.
5290
5291 The filter accepts the following options:
5292 @table @option
5293 @item 1b
5294 Set 65Hz band gain.
5295 @item 2b
5296 Set 92Hz band gain.
5297 @item 3b
5298 Set 131Hz band gain.
5299 @item 4b
5300 Set 185Hz band gain.
5301 @item 5b
5302 Set 262Hz band gain.
5303 @item 6b
5304 Set 370Hz band gain.
5305 @item 7b
5306 Set 523Hz band gain.
5307 @item 8b
5308 Set 740Hz band gain.
5309 @item 9b
5310 Set 1047Hz band gain.
5311 @item 10b
5312 Set 1480Hz band gain.
5313 @item 11b
5314 Set 2093Hz band gain.
5315 @item 12b
5316 Set 2960Hz band gain.
5317 @item 13b
5318 Set 4186Hz band gain.
5319 @item 14b
5320 Set 5920Hz band gain.
5321 @item 15b
5322 Set 8372Hz band gain.
5323 @item 16b
5324 Set 11840Hz band gain.
5325 @item 17b
5326 Set 16744Hz band gain.
5327 @item 18b
5328 Set 20000Hz band gain.
5329 @end table
5330
5331 @section surround
5332 Apply audio surround upmix filter.
5333
5334 This filter allows to produce multichannel output from audio stream.
5335
5336 The filter accepts the following options:
5337
5338 @table @option
5339 @item chl_out
5340 Set output channel layout. By default, this is @var{5.1}.
5341
5342 See @ref{channel layout syntax,,the Channel Layout section in the ffmpeg-utils(1) manual,ffmpeg-utils}
5343 for the required syntax.
5344
5345 @item chl_in
5346 Set input channel layout. By default, this is @var{stereo}.
5347
5348 See @ref{channel layout syntax,,the Channel Layout section in the ffmpeg-utils(1) manual,ffmpeg-utils}
5349 for the required syntax.
5350
5351 @item level_in
5352 Set input volume level. By default, this is @var{1}.
5353
5354 @item level_out
5355 Set output volume level. By default, this is @var{1}.
5356
5357 @item lfe
5358 Enable LFE channel output if output channel layout has it. By default, this is enabled.
5359
5360 @item lfe_low
5361 Set LFE low cut off frequency. By default, this is @var{128} Hz.
5362
5363 @item lfe_high
5364 Set LFE high cut off frequency. By default, this is @var{256} Hz.
5365
5366 @item lfe_mode
5367 Set LFE mode, can be @var{add} or @var{sub}. Default is @var{add}.
5368 In @var{add} mode, LFE channel is created from input audio and added to output.
5369 In @var{sub} mode, LFE channel is created from input audio and added to output but
5370 also all non-LFE output channels are subtracted with output LFE channel.
5371
5372 @item angle
5373 Set angle of stereo surround transform, Allowed range is from @var{0} to @var{360}.
5374 Default is @var{90}.
5375
5376 @item fc_in
5377 Set front center input volume. By default, this is @var{1}.
5378
5379 @item fc_out
5380 Set front center output volume. By default, this is @var{1}.
5381
5382 @item fl_in
5383 Set front left input volume. By default, this is @var{1}.
5384
5385 @item fl_out
5386 Set front left output volume. By default, this is @var{1}.
5387
5388 @item fr_in
5389 Set front right input volume. By default, this is @var{1}.
5390
5391 @item fr_out
5392 Set front right output volume. By default, this is @var{1}.
5393
5394 @item sl_in
5395 Set side left input volume. By default, this is @var{1}.
5396
5397 @item sl_out
5398 Set side left output volume. By default, this is @var{1}.
5399
5400 @item sr_in
5401 Set side right input volume. By default, this is @var{1}.
5402
5403 @item sr_out
5404 Set side right output volume. By default, this is @var{1}.
5405
5406 @item bl_in
5407 Set back left input volume. By default, this is @var{1}.
5408
5409 @item bl_out
5410 Set back left output volume. By default, this is @var{1}.
5411
5412 @item br_in
5413 Set back right input volume. By default, this is @var{1}.
5414
5415 @item br_out
5416 Set back right output volume. By default, this is @var{1}.
5417
5418 @item bc_in
5419 Set back center input volume. By default, this is @var{1}.
5420
5421 @item bc_out
5422 Set back center output volume. By default, this is @var{1}.
5423
5424 @item lfe_in
5425 Set LFE input volume. By default, this is @var{1}.
5426
5427 @item lfe_out
5428 Set LFE output volume. By default, this is @var{1}.
5429
5430 @item allx
5431 Set spread usage of stereo image across X axis for all channels.
5432
5433 @item ally
5434 Set spread usage of stereo image across Y axis for all channels.
5435
5436 @item fcx, flx, frx, blx, brx, slx, srx, bcx
5437 Set spread usage of stereo image across X axis for each channel.
5438
5439 @item fcy, fly, fry, bly, bry, sly, sry, bcy
5440 Set spread usage of stereo image across Y axis for each channel.
5441
5442 @item win_size
5443 Set window size. Allowed range is from @var{1024} to @var{65536}. Default size is @var{4096}.
5444
5445 @item win_func
5446 Set window function.
5447
5448 It accepts the following values:
5449 @table @samp
5450 @item rect
5451 @item bartlett
5452 @item hann, hanning
5453 @item hamming
5454 @item blackman
5455 @item welch
5456 @item flattop
5457 @item bharris
5458 @item bnuttall
5459 @item bhann
5460 @item sine
5461 @item nuttall
5462 @item lanczos
5463 @item gauss
5464 @item tukey
5465 @item dolph
5466 @item cauchy
5467 @item parzen
5468 @item poisson
5469 @item bohman
5470 @end table
5471 Default is @code{hann}.
5472
5473 @item overlap
5474 Set window overlap. If set to 1, the recommended overlap for selected
5475 window function will be picked. Default is @code{0.5}.
5476 @end table
5477
5478 @section treble, highshelf
5479
5480 Boost or cut treble (upper) frequencies of the audio using a two-pole
5481 shelving filter with a response similar to that of a standard
5482 hi-fi's tone-controls. This is also known as shelving equalisation (EQ).
5483
5484 The filter accepts the following options:
5485
5486 @table @option
5487 @item gain, g
5488 Give the gain at whichever is the lower of ~22 kHz and the
5489 Nyquist frequency. Its useful range is about -20 (for a large cut)
5490 to +20 (for a large boost). Beware of clipping when using a positive gain.
5491
5492 @item frequency, f
5493 Set the filter's central frequency and so can be used
5494 to extend or reduce the frequency range to be boosted or cut.
5495 The default value is @code{3000} Hz.
5496
5497 @item width_type, t
5498 Set method to specify band-width of filter.
5499 @table @option
5500 @item h
5501 Hz
5502 @item q
5503 Q-Factor
5504 @item o
5505 octave
5506 @item s
5507 slope
5508 @item k
5509 kHz
5510 @end table
5511
5512 @item width, w
5513 Determine how steep is the filter's shelf transition.
5514
5515 @item mix, m
5516 How much to use filtered signal in output. Default is 1.
5517 Range is between 0 and 1.
5518
5519 @item channels, c
5520 Specify which channels to filter, by default all available are filtered.
5521
5522 @item normalize, n
5523 Normalize biquad coefficients, by default is disabled.
5524 Enabling it will normalize magnitude response at DC to 0dB.
5525 @end table
5526
5527 @subsection Commands
5528
5529 This filter supports the following commands:
5530 @table @option
5531 @item frequency, f
5532 Change treble frequency.
5533 Syntax for the command is : "@var{frequency}"
5534
5535 @item width_type, t
5536 Change treble width_type.
5537 Syntax for the command is : "@var{width_type}"
5538
5539 @item width, w
5540 Change treble width.
5541 Syntax for the command is : "@var{width}"
5542
5543 @item gain, g
5544 Change treble gain.
5545 Syntax for the command is : "@var{gain}"
5546
5547 @item mix, m
5548 Change treble mix.
5549 Syntax for the command is : "@var{mix}"
5550 @end table
5551
5552 @section tremolo
5553
5554 Sinusoidal amplitude modulation.
5555
5556 The filter accepts the following options:
5557
5558 @table @option
5559 @item f
5560 Modulation frequency in Hertz. Modulation frequencies in the subharmonic range
5561 (20 Hz or lower) will result in a tremolo effect.
5562 This filter may also be used as a ring modulator by specifying
5563 a modulation frequency higher than 20 Hz.
5564 Range is 0.1 - 20000.0. Default value is 5.0 Hz.
5565
5566 @item d
5567 Depth of modulation as a percentage. Range is 0.0 - 1.0.
5568 Default value is 0.5.
5569 @end table
5570
5571 @section vibrato
5572
5573 Sinusoidal phase modulation.
5574
5575 The filter accepts the following options:
5576
5577 @table @option
5578 @item f
5579 Modulation frequency in Hertz.
5580 Range is 0.1 - 20000.0. Default value is 5.0 Hz.
5581
5582 @item d
5583 Depth of modulation as a percentage. Range is 0.0 - 1.0.
5584 Default value is 0.5.
5585 @end table
5586
5587 @section volume
5588
5589 Adjust the input audio volume.
5590
5591 It accepts the following parameters:
5592 @table @option
5593
5594 @item volume
5595 Set audio volume expression.
5596
5597 Output values are clipped to the maximum value.
5598
5599 The output audio volume is given by the relation:
5600 @example
5601 @var{output_volume} = @var{volume} * @var{input_volume}
5602 @end example
5603
5604 The default value for @var{volume} is "1.0".
5605
5606 @item precision
5607 This parameter represents the mathematical precision.
5608
5609 It determines which input sample formats will be allowed, which affects the
5610 precision of the volume scaling.
5611
5612 @table @option
5613 @item fixed
5614 8-bit fixed-point; this limits input sample format to U8, S16, and S32.
5615 @item float
5616 32-bit floating-point; this limits input sample format to FLT. (default)
5617 @item double
5618 64-bit floating-point; this limits input sample format to DBL.
5619 @end table
5620
5621 @item replaygain
5622 Choose the behaviour on encountering ReplayGain side data in input frames.
5623
5624 @table @option
5625 @item drop
5626 Remove ReplayGain side data, ignoring its contents (the default).
5627
5628 @item ignore
5629 Ignore ReplayGain side data, but leave it in the frame.
5630
5631 @item track
5632 Prefer the track gain, if present.
5633
5634 @item album
5635 Prefer the album gain, if present.
5636 @end table
5637
5638 @item replaygain_preamp
5639 Pre-amplification gain in dB to apply to the selected replaygain gain.
5640
5641 Default value for @var{replaygain_preamp} is 0.0.
5642
5643 @item replaygain_noclip
5644 Prevent clipping by limiting the gain applied.
5645
5646 Default value for @var{replaygain_noclip} is 1.
5647
5648 @item eval
5649 Set when the volume expression is evaluated.
5650
5651 It accepts the following values:
5652 @table @samp
5653 @item once
5654 only evaluate expression once during the filter initialization, or
5655 when the @samp{volume} command is sent
5656
5657 @item frame
5658 evaluate expression for each incoming frame
5659 @end table
5660
5661 Default value is @samp{once}.
5662 @end table
5663
5664 The volume expression can contain the following parameters.
5665
5666 @table @option
5667 @item n
5668 frame number (starting at zero)
5669 @item nb_channels
5670 number of channels
5671 @item nb_consumed_samples
5672 number of samples consumed by the filter
5673 @item nb_samples
5674 number of samples in the current frame
5675 @item pos
5676 original frame position in the file
5677 @item pts
5678 frame PTS
5679 @item sample_rate
5680 sample rate
5681 @item startpts
5682 PTS at start of stream
5683 @item startt
5684 time at start of stream
5685 @item t
5686 frame time
5687 @item tb
5688 timestamp timebase
5689 @item volume
5690 last set volume value
5691 @end table
5692
5693 Note that when @option{eval} is set to @samp{once} only the
5694 @var{sample_rate} and @var{tb} variables are available, all other
5695 variables will evaluate to NAN.
5696
5697 @subsection Commands
5698
5699 This filter supports the following commands:
5700 @table @option
5701 @item volume
5702 Modify the volume expression.
5703 The command accepts the same syntax of the corresponding option.
5704
5705 If the specified expression is not valid, it is kept at its current
5706 value.
5707 @end table
5708
5709 @subsection Examples
5710
5711 @itemize
5712 @item
5713 Halve the input audio volume:
5714 @example
5715 volume=volume=0.5
5716 volume=volume=1/2
5717 volume=volume=-6.0206dB
5718 @end example
5719
5720 In all the above example the named key for @option{volume} can be
5721 omitted, for example like in:
5722 @example
5723 volume=0.5
5724 @end example
5725
5726 @item
5727 Increase input audio power by 6 decibels using fixed-point precision:
5728 @example
5729 volume=volume=6dB:precision=fixed
5730 @end example
5731
5732 @item
5733 Fade volume after time 10 with an annihilation period of 5 seconds:
5734 @example
5735 volume='if(lt(t,10),1,max(1-(t-10)/5,0))':eval=frame
5736 @end example
5737 @end itemize
5738
5739 @section volumedetect
5740
5741 Detect the volume of the input video.
5742
5743 The filter has no parameters. The input is not modified. Statistics about
5744 the volume will be printed in the log when the input stream end is reached.
5745
5746 In particular it will show the mean volume (root mean square), maximum
5747 volume (on a per-sample basis), and the beginning of a histogram of the
5748 registered volume values (from the maximum value to a cumulated 1/1000 of
5749 the samples).
5750
5751 All volumes are in decibels relative to the maximum PCM value.
5752
5753 @subsection Examples
5754
5755 Here is an excerpt of the output:
5756 @example
5757 [Parsed_volumedetect_0 @ 0xa23120] mean_volume: -27 dB
5758 [Parsed_volumedetect_0 @ 0xa23120] max_volume: -4 dB
5759 [Parsed_volumedetect_0 @ 0xa23120] histogram_4db: 6
5760 [Parsed_volumedetect_0 @ 0xa23120] histogram_5db: 62
5761 [Parsed_volumedetect_0 @ 0xa23120] histogram_6db: 286
5762 [Parsed_volumedetect_0 @ 0xa23120] histogram_7db: 1042
5763 [Parsed_volumedetect_0 @ 0xa23120] histogram_8db: 2551
5764 [Parsed_volumedetect_0 @ 0xa23120] histogram_9db: 4609
5765 [Parsed_volumedetect_0 @ 0xa23120] histogram_10db: 8409
5766 @end example
5767
5768 It means that:
5769 @itemize
5770 @item
5771 The mean square energy is approximately -27 dB, or 10^-2.7.
5772 @item
5773 The largest sample is at -4 dB, or more precisely between -4 dB and -5 dB.
5774 @item
5775 There are 6 samples at -4 dB, 62 at -5 dB, 286 at -6 dB, etc.
5776 @end itemize
5777
5778 In other words, raising the volume by +4 dB does not cause any clipping,
5779 raising it by +5 dB causes clipping for 6 samples, etc.
5780
5781 @c man end AUDIO FILTERS
5782
5783 @chapter Audio Sources
5784 @c man begin AUDIO SOURCES
5785
5786 Below is a description of the currently available audio sources.
5787
5788 @section abuffer
5789
5790 Buffer audio frames, and make them available to the filter chain.
5791
5792 This source is mainly intended for a programmatic use, in particular
5793 through the interface defined in @file{libavfilter/asrc_abuffer.h}.
5794
5795 It accepts the following parameters:
5796 @table @option
5797
5798 @item time_base
5799 The timebase which will be used for timestamps of submitted frames. It must be
5800 either a floating-point number or in @var{numerator}/@var{denominator} form.
5801
5802 @item sample_rate
5803 The sample rate of the incoming audio buffers.
5804
5805 @item sample_fmt
5806 The sample format of the incoming audio buffers.
5807 Either a sample format name or its corresponding integer representation from
5808 the enum AVSampleFormat in @file{libavutil/samplefmt.h}
5809
5810 @item channel_layout
5811 The channel layout of the incoming audio buffers.
5812 Either a channel layout name from channel_layout_map in
5813 @file{libavutil/channel_layout.c} or its corresponding integer representation
5814 from the AV_CH_LAYOUT_* macros in @file{libavutil/channel_layout.h}
5815
5816 @item channels
5817 The number of channels of the incoming audio buffers.
5818 If both @var{channels} and @var{channel_layout} are specified, then they
5819 must be consistent.
5820
5821 @end table
5822
5823 @subsection Examples
5824
5825 @example
5826 abuffer=sample_rate=44100:sample_fmt=s16p:channel_layout=stereo
5827 @end example
5828
5829 will instruct the source to accept planar 16bit signed stereo at 44100Hz.
5830 Since the sample format with name "s16p" corresponds to the number
5831 6 and the "stereo" channel layout corresponds to the value 0x3, this is
5832 equivalent to:
5833 @example
5834 abuffer=sample_rate=44100:sample_fmt=6:channel_layout=0x3
5835 @end example
5836
5837 @section aevalsrc
5838
5839 Generate an audio signal specified by an expression.
5840
5841 This source accepts in input one or more expressions (one for each
5842 channel), which are evaluated and used to generate a corresponding
5843 audio signal.
5844
5845 This source accepts the following options:
5846
5847 @table @option
5848 @item exprs
5849 Set the '|'-separated expressions list for each separate channel. In case the
5850 @option{channel_layout} option is not specified, the selected channel layout
5851 depends on the number of provided expressions. Otherwise the last
5852 specified expression is applied to the remaining output channels.
5853
5854 @item channel_layout, c
5855 Set the channel layout. The number of channels in the specified layout
5856 must be equal to the number of specified expressions.
5857
5858 @item duration, d
5859 Set the minimum duration of the sourced audio. See
5860 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
5861 for the accepted syntax.
5862 Note that the resulting duration may be greater than the specified
5863 duration, as the generated audio is always cut at the end of a
5864 complete frame.
5865
5866 If not specified, or the expressed duration is negative, the audio is
5867 supposed to be generated forever.
5868
5869 @item nb_samples, n
5870 Set the number of samples per channel per each output frame,
5871 default to 1024.
5872
5873 @item sample_rate, s
5874 Specify the sample rate, default to 44100.
5875 @end table
5876
5877 Each expression in @var{exprs} can contain the following constants:
5878
5879 @table @option
5880 @item n
5881 number of the evaluated sample, starting from 0
5882
5883 @item t
5884 time of the evaluated sample expressed in seconds, starting from 0
5885
5886 @item s
5887 sample rate
5888
5889 @end table
5890
5891 @subsection Examples
5892
5893 @itemize
5894 @item
5895 Generate silence:
5896 @example
5897 aevalsrc=0
5898 @end example
5899
5900 @item
5901 Generate a sin signal with frequency of 440 Hz, set sample rate to
5902 8000 Hz:
5903 @example
5904 aevalsrc="sin(440*2*PI*t):s=8000"
5905 @end example
5906
5907 @item
5908 Generate a two channels signal, specify the channel layout (Front
5909 Center + Back Center) explicitly:
5910 @example
5911 aevalsrc="sin(420*2*PI*t)|cos(430*2*PI*t):c=FC|BC"
5912 @end example
5913
5914 @item
5915 Generate white noise:
5916 @example
5917 aevalsrc="-2+random(0)"
5918 @end example
5919
5920 @item
5921 Generate an amplitude modulated signal:
5922 @example
5923 aevalsrc="sin(10*2*PI*t)*sin(880*2*PI*t)"
5924 @end example
5925
5926 @item
5927 Generate 2.5 Hz binaural beats on a 360 Hz carrier:
5928 @example
5929 aevalsrc="0.1*sin(2*PI*(360-2.5/2)*t) | 0.1*sin(2*PI*(360+2.5/2)*t)"
5930 @end example
5931
5932 @end itemize
5933
5934 @section afirsrc
5935
5936 Generate a FIR coefficients using frequency sampling method.
5937
5938 The resulting stream can be used with @ref{afir} filter for filtering the audio signal.
5939
5940 The filter accepts the following options:
5941
5942 @table @option
5943 @item taps, t
5944 Set number of filter coefficents in output audio stream.
5945 Default value is 1025.
5946
5947 @item frequency, f
5948 Set frequency points from where magnitude and phase are set.
5949 This must be in non decreasing order, and first element must be 0, while last element
5950 must be 1. Elements are separated by white spaces.
5951
5952 @item magnitude, m
5953 Set magnitude value for every frequency point set by @option{frequency}.
5954 Number of values must be same as number of frequency points.
5955 Values are separated by white spaces.
5956
5957 @item phase, p
5958 Set phase value for every frequency point set by @option{frequency}.
5959 Number of values must be same as number of frequency points.
5960 Values are separated by white spaces.
5961
5962 @item sample_rate, r
5963 Set sample rate, default is 44100.
5964
5965 @item nb_samples, n
5966 Set number of samples per each frame. Default is 1024.
5967
5968 @item win_func, w
5969 Set window function. Default is blackman.
5970 @end table
5971
5972 @section anullsrc
5973
5974 The null audio source, return unprocessed audio frames. It is mainly useful
5975 as a template and to be employed in analysis / debugging tools, or as
5976 the source for filters which ignore the input data (for example the sox
5977 synth filter).
5978
5979 This source accepts the following options:
5980
5981 @table @option
5982
5983 @item channel_layout, cl
5984
5985 Specifies the channel layout, and can be either an integer or a string
5986 representing a channel layout. The default value of @var{channel_layout}
5987 is "stereo".
5988
5989 Check the channel_layout_map definition in
5990 @file{libavutil/channel_layout.c} for the mapping between strings and
5991 channel layout values.
5992
5993 @item sample_rate, r
5994 Specifies the sample rate, and defaults to 44100.
5995
5996 @item nb_samples, n
5997 Set the number of samples per requested frames.
5998
5999 @end table
6000
6001 @subsection Examples
6002
6003 @itemize
6004 @item
6005 Set the sample rate to 48000 Hz and the channel layout to AV_CH_LAYOUT_MONO.
6006 @example
6007 anullsrc=r=48000:cl=4
6008 @end example
6009
6010 @item
6011 Do the same operation with a more obvious syntax:
6012 @example
6013 anullsrc=r=48000:cl=mono
6014 @end example
6015 @end itemize
6016
6017 All the parameters need to be explicitly defined.
6018
6019 @section flite
6020
6021 Synthesize a voice utterance using the libflite library.
6022
6023 To enable compilation of this filter you need to configure FFmpeg with
6024 @code{--enable-libflite}.
6025
6026 Note that versions of the flite library prior to 2.0 are not thread-safe.
6027
6028 The filter accepts the following options:
6029
6030 @table @option
6031
6032 @item list_voices
6033 If set to 1, list the names of the available voices and exit
6034 immediately. Default value is 0.
6035
6036 @item nb_samples, n
6037 Set the maximum number of samples per frame. Default value is 512.
6038
6039 @item textfile
6040 Set the filename containing the text to speak.
6041
6042 @item text
6043 Set the text to speak.
6044
6045 @item voice, v
6046 Set the voice to use for the speech synthesis. Default value is
6047 @code{kal}. See also the @var{list_voices} option.
6048 @end table
6049
6050 @subsection Examples
6051
6052 @itemize
6053 @item
6054 Read from file @file{speech.txt}, and synthesize the text using the
6055 standard flite voice:
6056 @example
6057 flite=textfile=speech.txt
6058 @end example
6059
6060 @item
6061 Read the specified text selecting the @code{slt} voice:
6062 @example
6063 flite=text='So fare thee well, poor devil of a Sub-Sub, whose commentator I am':voice=slt
6064 @end example
6065
6066 @item
6067 Input text to ffmpeg:
6068 @example
6069 ffmpeg -f lavfi -i flite=text='So fare thee well, poor devil of a Sub-Sub, whose commentator I am':voice=slt
6070 @end example
6071
6072 @item
6073 Make @file{ffplay} speak the specified text, using @code{flite} and
6074 the @code{lavfi} device:
6075 @example
6076 ffplay -f lavfi flite=text='No more be grieved for which that thou hast done.'
6077 @end example
6078 @end itemize
6079
6080 For more information about libflite, check:
6081 @url{http://www.festvox.org/flite/}
6082
6083 @section anoisesrc
6084
6085 Generate a noise audio signal.
6086
6087 The filter accepts the following options:
6088
6089 @table @option
6090 @item sample_rate, r
6091 Specify the sample rate. Default value is 48000 Hz.
6092
6093 @item amplitude, a
6094 Specify the amplitude (0.0 - 1.0) of the generated audio stream. Default value
6095 is 1.0.
6096
6097 @item duration, d
6098 Specify the duration of the generated audio stream. Not specifying this option
6099 results in noise with an infinite length.
6100
6101 @item color, colour, c
6102 Specify the color of noise. Available noise colors are white, pink, brown,
6103 blue, violet and velvet. Default color is white.
6104
6105 @item seed, s
6106 Specify a value used to seed the PRNG.
6107
6108 @item nb_samples, n
6109 Set the number of samples per each output frame, default is 1024.
6110 @end table
6111
6112 @subsection Examples
6113
6114 @itemize
6115
6116 @item
6117 Generate 60 seconds of pink noise, with a 44.1 kHz sampling rate and an amplitude of 0.5:
6118 @example
6119 anoisesrc=d=60:c=pink:r=44100:a=0.5
6120 @end example
6121 @end itemize
6122
6123 @section hilbert
6124
6125 Generate odd-tap Hilbert transform FIR coefficients.
6126
6127 The resulting stream can be used with @ref{afir} filter for phase-shifting
6128 the signal by 90 degrees.
6129
6130 This is used in many matrix coding schemes and for analytic signal generation.
6131 The process is often written as a multiplication by i (or j), the imaginary unit.
6132
6133 The filter accepts the following options:
6134
6135 @table @option
6136
6137 @item sample_rate, s
6138 Set sample rate, default is 44100.
6139
6140 @item taps, t
6141 Set length of FIR filter, default is 22051.
6142
6143 @item nb_samples, n
6144 Set number of samples per each frame.
6145
6146 @item win_func, w
6147 Set window function to be used when generating FIR coefficients.
6148 @end table
6149
6150 @section sinc
6151
6152 Generate a sinc kaiser-windowed low-pass, high-pass, band-pass, or band-reject FIR coefficients.
6153
6154 The resulting stream can be used with @ref{afir} filter for filtering the audio signal.
6155
6156 The filter accepts the following options:
6157
6158 @table @option
6159 @item sample_rate, r
6160 Set sample rate, default is 44100.
6161
6162 @item nb_samples, n
6163 Set number of samples per each frame. Default is 1024.
6164
6165 @item hp
6166 Set high-pass frequency. Default is 0.
6167
6168 @item lp
6169 Set low-pass frequency. Default is 0.
6170 If high-pass frequency is lower than low-pass frequency and low-pass frequency
6171 is higher than 0 then filter will create band-pass filter coefficients,
6172 otherwise band-reject filter coefficients.
6173
6174 @item phase
6175 Set filter phase response. Default is 50. Allowed range is from 0 to 100.
6176
6177 @item beta
6178 Set Kaiser window beta.
6179
6180 @item att
6181 Set stop-band attenuation. Default is 120dB, allowed range is from 40 to 180 dB.
6182
6183 @item round
6184 Enable rounding, by default is disabled.
6185
6186 @item hptaps
6187 Set number of taps for high-pass filter.
6188
6189 @item lptaps
6190 Set number of taps for low-pass filter.
6191 @end table
6192
6193 @section sine
6194
6195 Generate an audio signal made of a sine wave with amplitude 1/8.
6196
6197 The audio signal is bit-exact.
6198
6199 The filter accepts the following options:
6200
6201 @table @option
6202
6203 @item frequency, f
6204 Set the carrier frequency. Default is 440 Hz.
6205
6206 @item beep_factor, b
6207 Enable a periodic beep every second with frequency @var{beep_factor} times
6208 the carrier frequency. Default is 0, meaning the beep is disabled.
6209
6210 @item sample_rate, r
6211 Specify the sample rate, default is 44100.
6212
6213 @item duration, d
6214 Specify the duration of the generated audio stream.
6215
6216 @item samples_per_frame
6217 Set the number of samples per output frame.
6218
6219 The expression can contain the following constants:
6220
6221 @table @option
6222 @item n
6223 The (sequential) number of the output audio frame, starting from 0.
6224
6225 @item pts
6226 The PTS (Presentation TimeStamp) of the output audio frame,
6227 expressed in @var{TB} units.
6228
6229 @item t
6230 The PTS of the output audio frame, expressed in seconds.
6231
6232 @item TB
6233 The timebase of the output audio frames.
6234 @end table
6235
6236 Default is @code{1024}.
6237 @end table
6238
6239 @subsection Examples
6240
6241 @itemize
6242
6243 @item
6244 Generate a simple 440 Hz sine wave:
6245 @example
6246 sine
6247 @end example
6248
6249 @item
6250 Generate a 220 Hz sine wave with a 880 Hz beep each second, for 5 seconds:
6251 @example
6252 sine=220:4:d=5
6253 sine=f=220:b=4:d=5
6254 sine=frequency=220:beep_factor=4:duration=5
6255 @end example
6256
6257 @item
6258 Generate a 1 kHz sine wave following @code{1602,1601,1602,1601,1602} NTSC
6259 pattern:
6260 @example
6261 sine=1000:samples_per_frame='st(0,mod(n,5)); 1602-not(not(eq(ld(0),1)+eq(ld(0),3)))'
6262 @end example
6263 @end itemize
6264
6265 @c man end AUDIO SOURCES
6266
6267 @chapter Audio Sinks
6268 @c man begin AUDIO SINKS
6269
6270 Below is a description of the currently available audio sinks.
6271
6272 @section abuffersink
6273
6274 Buffer audio frames, and make them available to the end of filter chain.
6275
6276 This sink is mainly intended for programmatic use, in particular
6277 through the interface defined in @file{libavfilter/buffersink.h}
6278 or the options system.
6279
6280 It accepts a pointer to an AVABufferSinkContext structure, which
6281 defines the incoming buffers' formats, to be passed as the opaque
6282 parameter to @code{avfilter_init_filter} for initialization.
6283 @section anullsink
6284
6285 Null audio sink; do absolutely nothing with the input audio. It is
6286 mainly useful as a template and for use in analysis / debugging
6287 tools.
6288
6289 @c man end AUDIO SINKS
6290
6291 @chapter Video Filters
6292 @c man begin VIDEO FILTERS
6293
6294 When you configure your FFmpeg build, you can disable any of the
6295 existing filters using @code{--disable-filters}.
6296 The configure output will show the video filters included in your
6297 build.
6298
6299 Below is a description of the currently available video filters.
6300
6301 @section addroi
6302
6303 Mark a region of interest in a video frame.
6304
6305 The frame data is passed through unchanged, but metadata is attached
6306 to the frame indicating regions of interest which can affect the
6307 behaviour of later encoding.  Multiple regions can be marked by
6308 applying the filter multiple times.
6309
6310 @table @option
6311 @item x
6312 Region distance in pixels from the left edge of the frame.
6313 @item y
6314 Region distance in pixels from the top edge of the frame.
6315 @item w
6316 Region width in pixels.
6317 @item h
6318 Region height in pixels.
6319
6320 The parameters @var{x}, @var{y}, @var{w} and @var{h} are expressions,
6321 and may contain the following variables:
6322 @table @option
6323 @item iw
6324 Width of the input frame.
6325 @item ih
6326 Height of the input frame.
6327 @end table
6328
6329 @item qoffset
6330 Quantisation offset to apply within the region.
6331
6332 This must be a real value in the range -1 to +1.  A value of zero
6333 indicates no quality change.  A negative value asks for better quality
6334 (less quantisation), while a positive value asks for worse quality
6335 (greater quantisation).
6336
6337 The range is calibrated so that the extreme values indicate the
6338 largest possible offset - if the rest of the frame is encoded with the
6339 worst possible quality, an offset of -1 indicates that this region
6340 should be encoded with the best possible quality anyway.  Intermediate
6341 values are then interpolated in some codec-dependent way.
6342
6343 For example, in 10-bit H.264 the quantisation parameter varies between
6344 -12 and 51.  A typical qoffset value of -1/10 therefore indicates that
6345 this region should be encoded with a QP around one-tenth of the full
6346 range better than the rest of the frame.  So, if most of the frame
6347 were to be encoded with a QP of around 30, this region would get a QP
6348 of around 24 (an offset of approximately -1/10 * (51 - -12) = -6.3).
6349 An extreme value of -1 would indicate that this region should be
6350 encoded with the best possible quality regardless of the treatment of
6351 the rest of the frame - that is, should be encoded at a QP of -12.
6352 @item clear
6353 If set to true, remove any existing regions of interest marked on the
6354 frame before adding the new one.
6355 @end table
6356
6357 @subsection Examples
6358
6359 @itemize
6360 @item
6361 Mark the centre quarter of the frame as interesting.
6362 @example
6363 addroi=iw/4:ih/4:iw/2:ih/2:-1/10
6364 @end example
6365 @item
6366 Mark the 100-pixel-wide region on the left edge of the frame as very
6367 uninteresting (to be encoded at much lower quality than the rest of
6368 the frame).
6369 @example
6370 addroi=0:0:100:ih:+1/5
6371 @end example
6372 @end itemize
6373
6374 @section alphaextract
6375
6376 Extract the alpha component from the input as a grayscale video. This
6377 is especially useful with the @var{alphamerge} filter.
6378
6379 @section alphamerge
6380
6381 Add or replace the alpha component of the primary input with the
6382 grayscale value of a second input. This is intended for use with
6383 @var{alphaextract} to allow the transmission or storage of frame
6384 sequences that have alpha in a format that doesn't support an alpha
6385 channel.
6386
6387 For example, to reconstruct full frames from a normal YUV-encoded video
6388 and a separate video created with @var{alphaextract}, you might use:
6389 @example
6390 movie=in_alpha.mkv [alpha]; [in][alpha] alphamerge [out]
6391 @end example
6392
6393 Since this filter is designed for reconstruction, it operates on frame
6394 sequences without considering timestamps, and terminates when either
6395 input reaches end of stream. This will cause problems if your encoding
6396 pipeline drops frames. If you're trying to apply an image as an
6397 overlay to a video stream, consider the @var{overlay} filter instead.
6398
6399 @section amplify
6400
6401 Amplify differences between current pixel and pixels of adjacent frames in
6402 same pixel location.
6403
6404 This filter accepts the following options:
6405
6406 @table @option
6407 @item radius
6408 Set frame radius. Default is 2. Allowed range is from 1 to 63.
6409 For example radius of 3 will instruct filter to calculate average of 7 frames.
6410
6411 @item factor
6412 Set factor to amplify difference. Default is 2. Allowed range is from 0 to 65535.
6413
6414 @item threshold
6415 Set threshold for difference amplification. Any difference greater or equal to
6416 this value will not alter source pixel. Default is 10.
6417 Allowed range is from 0 to 65535.
6418
6419 @item tolerance
6420 Set tolerance for difference amplification. Any difference lower to
6421 this value will not alter source pixel. Default is 0.
6422 Allowed range is from 0 to 65535.
6423
6424 @item low
6425 Set lower limit for changing source pixel. Default is 65535. Allowed range is from 0 to 65535.
6426 This option controls maximum possible value that will decrease source pixel value.
6427
6428 @item high
6429 Set high limit for changing source pixel. Default is 65535. Allowed range is from 0 to 65535.
6430 This option controls maximum possible value that will increase source pixel value.
6431
6432 @item planes
6433 Set which planes to filter. Default is all. Allowed range is from 0 to 15.
6434 @end table
6435
6436 @subsection Commands
6437
6438 This filter supports the following @ref{commands} that corresponds to option of same name:
6439 @table @option
6440 @item factor
6441 @item threshold
6442 @item tolerance
6443 @item low
6444 @item high
6445 @item planes
6446 @end table
6447
6448 @section ass
6449
6450 Same as the @ref{subtitles} filter, except that it doesn't require libavcodec
6451 and libavformat to work. On the other hand, it is limited to ASS (Advanced
6452 Substation Alpha) subtitles files.
6453
6454 This filter accepts the following option in addition to the common options from
6455 the @ref{subtitles} filter:
6456
6457 @table @option
6458 @item shaping
6459 Set the shaping engine
6460
6461 Available values are:
6462 @table @samp
6463 @item auto
6464 The default libass shaping engine, which is the best available.
6465 @item simple
6466 Fast, font-agnostic shaper that can do only substitutions
6467 @item complex
6468 Slower shaper using OpenType for substitutions and positioning
6469 @end table
6470
6471 The default is @code{auto}.
6472 @end table
6473
6474 @section atadenoise
6475 Apply an Adaptive Temporal Averaging Denoiser to the video input.
6476
6477 The filter accepts the following options:
6478
6479 @table @option
6480 @item 0a
6481 Set threshold A for 1st plane. Default is 0.02.
6482 Valid range is 0 to 0.3.
6483
6484 @item 0b
6485 Set threshold B for 1st plane. Default is 0.04.
6486 Valid range is 0 to 5.
6487
6488 @item 1a
6489 Set threshold A for 2nd plane. Default is 0.02.
6490 Valid range is 0 to 0.3.
6491
6492 @item 1b
6493 Set threshold B for 2nd plane. Default is 0.04.
6494 Valid range is 0 to 5.
6495
6496 @item 2a
6497 Set threshold A for 3rd plane. Default is 0.02.
6498 Valid range is 0 to 0.3.
6499
6500 @item 2b
6501 Set threshold B for 3rd plane. Default is 0.04.
6502 Valid range is 0 to 5.
6503
6504 Threshold A is designed to react on abrupt changes in the input signal and
6505 threshold B is designed to react on continuous changes in the input signal.
6506
6507 @item s
6508 Set number of frames filter will use for averaging. Default is 9. Must be odd
6509 number in range [5, 129].
6510
6511 @item p
6512 Set what planes of frame filter will use for averaging. Default is all.
6513
6514 @item a
6515 Set what variant of algorithm filter will use for averaging. Default is @code{p} parallel.
6516 Alternatively can be set to @code{s} serial.
6517
6518 Parallel can be faster then serial, while other way around is never true.
6519 Parallel will abort early on first change being greater then thresholds, while serial
6520 will continue processing other side of frames if they are equal or bellow thresholds.
6521 @end table
6522
6523 @subsection Commands
6524 This filter supports same @ref{commands} as options except option @code{s}.
6525 The command accepts the same syntax of the corresponding option.
6526
6527 @section avgblur
6528
6529 Apply average blur filter.
6530
6531 The filter accepts the following options:
6532
6533 @table @option
6534 @item sizeX
6535 Set horizontal radius size.
6536
6537 @item planes
6538 Set which planes to filter. By default all planes are filtered.
6539
6540 @item sizeY
6541 Set vertical radius size, if zero it will be same as @code{sizeX}.
6542 Default is @code{0}.
6543 @end table
6544
6545 @subsection Commands
6546 This filter supports same commands as options.
6547 The command accepts the same syntax of the corresponding option.
6548
6549 If the specified expression is not valid, it is kept at its current
6550 value.
6551
6552 @section bbox
6553
6554 Compute the bounding box for the non-black pixels in the input frame
6555 luminance plane.
6556
6557 This filter computes the bounding box containing all the pixels with a
6558 luminance value greater than the minimum allowed value.
6559 The parameters describing the bounding box are printed on the filter
6560 log.
6561
6562 The filter accepts the following option:
6563
6564 @table @option
6565 @item min_val
6566 Set the minimal luminance value. Default is @code{16}.
6567 @end table
6568
6569 @section bilateral
6570 Apply bilateral filter, spatial smoothing while preserving edges.
6571
6572 The filter accepts the following options:
6573 @table @option
6574 @item sigmaS
6575 Set sigma of gaussian function to calculate spatial weight.
6576 Allowed range is 0 to 10. Default is 0.1.
6577
6578 @item sigmaR
6579 Set sigma of gaussian function to calculate range weight.
6580 Allowed range is 0 to 1. Default is 0.1.
6581
6582 @item planes
6583 Set planes to filter. Default is first only.
6584 @end table
6585
6586 @section bitplanenoise
6587
6588 Show and measure bit plane noise.
6589
6590 The filter accepts the following options:
6591
6592 @table @option
6593 @item bitplane
6594 Set which plane to analyze. Default is @code{1}.
6595
6596 @item filter
6597 Filter out noisy pixels from @code{bitplane} set above.
6598 Default is disabled.
6599 @end table
6600
6601 @section blackdetect
6602
6603 Detect video intervals that are (almost) completely black. Can be
6604 useful to detect chapter transitions, commercials, or invalid
6605 recordings.
6606
6607 The filter outputs its detection analysis to both the log as well as
6608 frame metadata. If a black segment of at least the specified minimum
6609 duration is found, a line with the start and end timestamps as well
6610 as duration is printed to the log with level @code{info}. In addition,
6611 a log line with level @code{debug} is printed per frame showing the
6612 black amount detected for that frame.
6613
6614 The filter also attaches metadata to the first frame of a black
6615 segment with key @code{lavfi.black_start} and to the first frame
6616 after the black segment ends with key @code{lavfi.black_end}. The
6617 value is the frame's timestamp. This metadata is added regardless
6618 of the minimum duration specified.
6619
6620 The filter accepts the following options:
6621
6622 @table @option
6623 @item black_min_duration, d
6624 Set the minimum detected black duration expressed in seconds. It must
6625 be a non-negative floating point number.
6626
6627 Default value is 2.0.
6628
6629 @item picture_black_ratio_th, pic_th
6630 Set the threshold for considering a picture "black".
6631 Express the minimum value for the ratio:
6632 @example
6633 @var{nb_black_pixels} / @var{nb_pixels}
6634 @end example
6635
6636 for which a picture is considered black.
6637 Default value is 0.98.
6638
6639 @item pixel_black_th, pix_th
6640 Set the threshold for considering a pixel "black".
6641
6642 The threshold expresses the maximum pixel luminance value for which a
6643 pixel is considered "black". The provided value is scaled according to
6644 the following equation:
6645 @example
6646 @var{absolute_threshold} = @var{luminance_minimum_value} + @var{pixel_black_th} * @var{luminance_range_size}
6647 @end example
6648
6649 @var{luminance_range_size} and @var{luminance_minimum_value} depend on
6650 the input video format, the range is [0-255] for YUV full-range
6651 formats and [16-235] for YUV non full-range formats.
6652
6653 Default value is 0.10.
6654 @end table
6655
6656 The following example sets the maximum pixel threshold to the minimum
6657 value, and detects only black intervals of 2 or more seconds:
6658 @example
6659 blackdetect=d=2:pix_th=0.00
6660 @end example
6661
6662 @section blackframe
6663
6664 Detect frames that are (almost) completely black. Can be useful to
6665 detect chapter transitions or commercials. Output lines consist of
6666 the frame number of the detected frame, the percentage of blackness,
6667 the position in the file if known or -1 and the timestamp in seconds.
6668
6669 In order to display the output lines, you need to set the loglevel at
6670 least to the AV_LOG_INFO value.
6671
6672 This filter exports frame metadata @code{lavfi.blackframe.pblack}.
6673 The value represents the percentage of pixels in the picture that
6674 are below the threshold value.
6675
6676 It accepts the following parameters:
6677
6678 @table @option
6679
6680 @item amount
6681 The percentage of the pixels that have to be below the threshold; it defaults to
6682 @code{98}.
6683
6684 @item threshold, thresh
6685 The threshold below which a pixel value is considered black; it defaults to
6686 @code{32}.
6687
6688 @end table
6689
6690 @anchor{blend}
6691 @section blend
6692
6693 Blend two video frames into each other.
6694
6695 The @code{blend} filter takes two input streams and outputs one
6696 stream, the first input is the "top" layer and second input is
6697 "bottom" layer.  By default, the output terminates when the longest input terminates.
6698
6699 The @code{tblend} (time blend) filter takes two consecutive frames
6700 from one single stream, and outputs the result obtained by blending
6701 the new frame on top of the old frame.
6702
6703 A description of the accepted options follows.
6704
6705 @table @option
6706 @item c0_mode
6707 @item c1_mode
6708 @item c2_mode
6709 @item c3_mode
6710 @item all_mode
6711 Set blend mode for specific pixel component or all pixel components in case
6712 of @var{all_mode}. Default value is @code{normal}.
6713
6714 Available values for component modes are:
6715 @table @samp
6716 @item addition
6717 @item grainmerge
6718 @item and
6719 @item average
6720 @item burn
6721 @item darken
6722 @item difference
6723 @item grainextract
6724 @item divide
6725 @item dodge
6726 @item freeze
6727 @item exclusion
6728 @item extremity
6729 @item glow
6730 @item hardlight
6731 @item hardmix
6732 @item heat
6733 @item lighten
6734 @item linearlight
6735 @item multiply
6736 @item multiply128
6737 @item negation
6738 @item normal
6739 @item or
6740 @item overlay
6741 @item phoenix
6742 @item pinlight
6743 @item reflect
6744 @item screen
6745 @item softlight
6746 @item subtract
6747 @item vividlight
6748 @item xor
6749 @end table
6750
6751 @item c0_opacity
6752 @item c1_opacity
6753 @item c2_opacity
6754 @item c3_opacity
6755 @item all_opacity
6756 Set blend opacity for specific pixel component or all pixel components in case
6757 of @var{all_opacity}. Only used in combination with pixel component blend modes.
6758
6759 @item c0_expr
6760 @item c1_expr
6761 @item c2_expr
6762 @item c3_expr
6763 @item all_expr
6764 Set blend expression for specific pixel component or all pixel components in case
6765 of @var{all_expr}. Note that related mode options will be ignored if those are set.
6766
6767 The expressions can use the following variables:
6768
6769 @table @option
6770 @item N
6771 The sequential number of the filtered frame, starting from @code{0}.
6772
6773 @item X
6774 @item Y
6775 the coordinates of the current sample
6776
6777 @item W
6778 @item H
6779 the width and height of currently filtered plane
6780
6781 @item SW
6782 @item SH
6783 Width and height scale for the plane being filtered. It is the
6784 ratio between the dimensions of the current plane to the luma plane,
6785 e.g. for a @code{yuv420p} frame, the values are @code{1,1} for
6786 the luma plane and @code{0.5,0.5} for the chroma planes.
6787
6788 @item T
6789 Time of the current frame, expressed in seconds.
6790
6791 @item TOP, A
6792 Value of pixel component at current location for first video frame (top layer).
6793
6794 @item BOTTOM, B
6795 Value of pixel component at current location for second video frame (bottom layer).
6796 @end table
6797 @end table
6798
6799 The @code{blend} filter also supports the @ref{framesync} options.
6800
6801 @subsection Examples
6802
6803 @itemize
6804 @item
6805 Apply transition from bottom layer to top layer in first 10 seconds:
6806 @example
6807 blend=all_expr='A*(if(gte(T,10),1,T/10))+B*(1-(if(gte(T,10),1,T/10)))'
6808 @end example
6809
6810 @item
6811 Apply linear horizontal transition from top layer to bottom layer:
6812 @example
6813 blend=all_expr='A*(X/W)+B*(1-X/W)'
6814 @end example
6815
6816 @item
6817 Apply 1x1 checkerboard effect:
6818 @example
6819 blend=all_expr='if(eq(mod(X,2),mod(Y,2)),A,B)'
6820 @end example
6821
6822 @item
6823 Apply uncover left effect:
6824 @example
6825 blend=all_expr='if(gte(N*SW+X,W),A,B)'
6826 @end example
6827
6828 @item
6829 Apply uncover down effect:
6830 @example
6831 blend=all_expr='if(gte(Y-N*SH,0),A,B)'
6832 @end example
6833
6834 @item
6835 Apply uncover up-left effect:
6836 @example
6837 blend=all_expr='if(gte(T*SH*40+Y,H)*gte((T*40*SW+X)*W/H,W),A,B)'
6838 @end example
6839
6840 @item
6841 Split diagonally video and shows top and bottom layer on each side:
6842 @example
6843 blend=all_expr='if(gt(X,Y*(W/H)),A,B)'
6844 @end example
6845
6846 @item
6847 Display differences between the current and the previous frame:
6848 @example
6849 tblend=all_mode=grainextract
6850 @end example
6851 @end itemize
6852
6853 @section bm3d
6854
6855 Denoise frames using Block-Matching 3D algorithm.
6856
6857 The filter accepts the following options.
6858
6859 @table @option
6860 @item sigma
6861 Set denoising strength. Default value is 1.
6862 Allowed range is from 0 to 999.9.
6863 The denoising algorithm is very sensitive to sigma, so adjust it
6864 according to the source.
6865
6866 @item block
6867 Set local patch size. This sets dimensions in 2D.
6868
6869 @item bstep
6870 Set sliding step for processing blocks. Default value is 4.
6871 Allowed range is from 1 to 64.
6872 Smaller values allows processing more reference blocks and is slower.
6873
6874 @item group
6875 Set maximal number of similar blocks for 3rd dimension. Default value is 1.
6876 When set to 1, no block matching is done. Larger values allows more blocks
6877 in single group.
6878 Allowed range is from 1 to 256.
6879
6880 @item range
6881 Set radius for search block matching. Default is 9.
6882 Allowed range is from 1 to INT32_MAX.
6883
6884 @item mstep
6885 Set step between two search locations for block matching. Default is 1.
6886 Allowed range is from 1 to 64. Smaller is slower.
6887
6888 @item thmse
6889 Set threshold of mean square error for block matching. Valid range is 0 to
6890 INT32_MAX.
6891
6892 @item hdthr
6893 Set thresholding parameter for hard thresholding in 3D transformed domain.
6894 Larger values results in stronger hard-thresholding filtering in frequency
6895 domain.
6896
6897 @item estim
6898 Set filtering estimation mode. Can be @code{basic} or @code{final}.
6899 Default is @code{basic}.
6900
6901 @item ref
6902 If enabled, filter will use 2nd stream for block matching.
6903 Default is disabled for @code{basic} value of @var{estim} option,
6904 and always enabled if value of @var{estim} is @code{final}.
6905
6906 @item planes
6907 Set planes to filter. Default is all available except alpha.
6908 @end table
6909
6910 @subsection Examples
6911
6912 @itemize
6913 @item
6914 Basic filtering with bm3d:
6915 @example
6916 bm3d=sigma=3:block=4:bstep=2:group=1:estim=basic
6917 @end example
6918
6919 @item
6920 Same as above, but filtering only luma:
6921 @example
6922 bm3d=sigma=3:block=4:bstep=2:group=1:estim=basic:planes=1
6923 @end example
6924
6925 @item
6926 Same as above, but with both estimation modes:
6927 @example
6928 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
6929 @end example
6930
6931 @item
6932 Same as above, but prefilter with @ref{nlmeans} filter instead:
6933 @example
6934 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
6935 @end example
6936 @end itemize
6937
6938 @section boxblur
6939
6940 Apply a boxblur algorithm to the input video.
6941
6942 It accepts the following parameters:
6943
6944 @table @option
6945
6946 @item luma_radius, lr
6947 @item luma_power, lp
6948 @item chroma_radius, cr
6949 @item chroma_power, cp
6950 @item alpha_radius, ar
6951 @item alpha_power, ap
6952
6953 @end table
6954
6955 A description of the accepted options follows.
6956
6957 @table @option
6958 @item luma_radius, lr
6959 @item chroma_radius, cr
6960 @item alpha_radius, ar
6961 Set an expression for the box radius in pixels used for blurring the
6962 corresponding input plane.
6963
6964 The radius value must be a non-negative number, and must not be
6965 greater than the value of the expression @code{min(w,h)/2} for the
6966 luma and alpha planes, and of @code{min(cw,ch)/2} for the chroma
6967 planes.
6968
6969 Default value for @option{luma_radius} is "2". If not specified,
6970 @option{chroma_radius} and @option{alpha_radius} default to the
6971 corresponding value set for @option{luma_radius}.
6972
6973 The expressions can contain the following constants:
6974 @table @option
6975 @item w
6976 @item h
6977 The input width and height in pixels.
6978
6979 @item cw
6980 @item ch
6981 The input chroma image width and height in pixels.
6982
6983 @item hsub
6984 @item vsub
6985 The horizontal and vertical chroma subsample values. For example, for the
6986 pixel format "yuv422p", @var{hsub} is 2 and @var{vsub} is 1.
6987 @end table
6988
6989 @item luma_power, lp
6990 @item chroma_power, cp
6991 @item alpha_power, ap
6992 Specify how many times the boxblur filter is applied to the
6993 corresponding plane.
6994
6995 Default value for @option{luma_power} is 2. If not specified,
6996 @option{chroma_power} and @option{alpha_power} default to the
6997 corresponding value set for @option{luma_power}.
6998
6999 A value of 0 will disable the effect.
7000 @end table
7001
7002 @subsection Examples
7003
7004 @itemize
7005 @item
7006 Apply a boxblur filter with the luma, chroma, and alpha radii
7007 set to 2:
7008 @example
7009 boxblur=luma_radius=2:luma_power=1
7010 boxblur=2:1
7011 @end example
7012
7013 @item
7014 Set the luma radius to 2, and alpha and chroma radius to 0:
7015 @example
7016 boxblur=2:1:cr=0:ar=0
7017 @end example
7018
7019 @item
7020 Set the luma and chroma radii to a fraction of the video dimension:
7021 @example
7022 boxblur=luma_radius=min(h\,w)/10:luma_power=1:chroma_radius=min(cw\,ch)/10:chroma_power=1
7023 @end example
7024 @end itemize
7025
7026 @section bwdif
7027
7028 Deinterlace the input video ("bwdif" stands for "Bob Weaver
7029 Deinterlacing Filter").
7030
7031 Motion adaptive deinterlacing based on yadif with the use of w3fdif and cubic
7032 interpolation algorithms.
7033 It accepts the following parameters:
7034
7035 @table @option
7036 @item mode
7037 The interlacing mode to adopt. It accepts one of the following values:
7038
7039 @table @option
7040 @item 0, send_frame
7041 Output one frame for each frame.
7042 @item 1, send_field
7043 Output one frame for each field.
7044 @end table
7045
7046 The default value is @code{send_field}.
7047
7048 @item parity
7049 The picture field parity assumed for the input interlaced video. It accepts one
7050 of the following values:
7051
7052 @table @option
7053 @item 0, tff
7054 Assume the top field is first.
7055 @item 1, bff
7056 Assume the bottom field is first.
7057 @item -1, auto
7058 Enable automatic detection of field parity.
7059 @end table
7060
7061 The default value is @code{auto}.
7062 If the interlacing is unknown or the decoder does not export this information,
7063 top field first will be assumed.
7064
7065 @item deint
7066 Specify which frames to deinterlace. Accepts one of the following
7067 values:
7068
7069 @table @option
7070 @item 0, all
7071 Deinterlace all frames.
7072 @item 1, interlaced
7073 Only deinterlace frames marked as interlaced.
7074 @end table
7075
7076 The default value is @code{all}.
7077 @end table
7078
7079 @section cas
7080
7081 Apply Contrast Adaptive Sharpen filter to video stream.
7082
7083 The filter accepts the following options:
7084
7085 @table @option
7086 @item strength
7087 Set the sharpening strength. Default value is 0.
7088
7089 @item planes
7090 Set planes to filter. Default value is to filter all
7091 planes except alpha plane.
7092 @end table
7093
7094 @section chromahold
7095 Remove all color information for all colors except for certain one.
7096
7097 The filter accepts the following options:
7098
7099 @table @option
7100 @item color
7101 The color which will not be replaced with neutral chroma.
7102
7103 @item similarity
7104 Similarity percentage with the above color.
7105 0.01 matches only the exact key color, while 1.0 matches everything.
7106
7107 @item blend
7108 Blend percentage.
7109 0.0 makes pixels either fully gray, or not gray at all.
7110 Higher values result in more preserved color.
7111
7112 @item yuv
7113 Signals that the color passed is already in YUV instead of RGB.
7114
7115 Literal colors like "green" or "red" don't make sense with this enabled anymore.
7116 This can be used to pass exact YUV values as hexadecimal numbers.
7117 @end table
7118
7119 @subsection Commands
7120 This filter supports same @ref{commands} as options.
7121 The command accepts the same syntax of the corresponding option.
7122
7123 If the specified expression is not valid, it is kept at its current
7124 value.
7125
7126 @section chromakey
7127 YUV colorspace color/chroma keying.
7128
7129 The filter accepts the following options:
7130
7131 @table @option
7132 @item color
7133 The color which will be replaced with transparency.
7134
7135 @item similarity
7136 Similarity percentage with the key color.
7137
7138 0.01 matches only the exact key color, while 1.0 matches everything.
7139
7140 @item blend
7141 Blend percentage.
7142
7143 0.0 makes pixels either fully transparent, or not transparent at all.
7144
7145 Higher values result in semi-transparent pixels, with a higher transparency
7146 the more similar the pixels color is to the key color.
7147
7148 @item yuv
7149 Signals that the color passed is already in YUV instead of RGB.
7150
7151 Literal colors like "green" or "red" don't make sense with this enabled anymore.
7152 This can be used to pass exact YUV values as hexadecimal numbers.
7153 @end table
7154
7155 @subsection Commands
7156 This filter supports same @ref{commands} as options.
7157 The command accepts the same syntax of the corresponding option.
7158
7159 If the specified expression is not valid, it is kept at its current
7160 value.
7161
7162 @subsection Examples
7163
7164 @itemize
7165 @item
7166 Make every green pixel in the input image transparent:
7167 @example
7168 ffmpeg -i input.png -vf chromakey=green out.png
7169 @end example
7170
7171 @item
7172 Overlay a greenscreen-video on top of a static black background.
7173 @example
7174 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
7175 @end example
7176 @end itemize
7177
7178 @section chromashift
7179 Shift chroma pixels horizontally and/or vertically.
7180
7181 The filter accepts the following options:
7182 @table @option
7183 @item cbh
7184 Set amount to shift chroma-blue horizontally.
7185 @item cbv
7186 Set amount to shift chroma-blue vertically.
7187 @item crh
7188 Set amount to shift chroma-red horizontally.
7189 @item crv
7190 Set amount to shift chroma-red vertically.
7191 @item edge
7192 Set edge mode, can be @var{smear}, default, or @var{warp}.
7193 @end table
7194
7195 @subsection Commands
7196
7197 This filter supports the all above options as @ref{commands}.
7198
7199 @section ciescope
7200
7201 Display CIE color diagram with pixels overlaid onto it.
7202
7203 The filter accepts the following options:
7204
7205 @table @option
7206 @item system
7207 Set color system.
7208
7209 @table @samp
7210 @item ntsc, 470m
7211 @item ebu, 470bg
7212 @item smpte
7213 @item 240m
7214 @item apple
7215 @item widergb
7216 @item cie1931
7217 @item rec709, hdtv
7218 @item uhdtv, rec2020
7219 @item dcip3
7220 @end table
7221
7222 @item cie
7223 Set CIE system.
7224
7225 @table @samp
7226 @item xyy
7227 @item ucs
7228 @item luv
7229 @end table
7230
7231 @item gamuts
7232 Set what gamuts to draw.
7233
7234 See @code{system} option for available values.
7235
7236 @item size, s
7237 Set ciescope size, by default set to 512.
7238
7239 @item intensity, i
7240 Set intensity used to map input pixel values to CIE diagram.
7241
7242 @item contrast
7243 Set contrast used to draw tongue colors that are out of active color system gamut.
7244
7245 @item corrgamma
7246 Correct gamma displayed on scope, by default enabled.
7247
7248 @item showwhite
7249 Show white point on CIE diagram, by default disabled.
7250
7251 @item gamma
7252 Set input gamma. Used only with XYZ input color space.
7253 @end table
7254
7255 @section codecview
7256
7257 Visualize information exported by some codecs.
7258
7259 Some codecs can export information through frames using side-data or other
7260 means. For example, some MPEG based codecs export motion vectors through the
7261 @var{export_mvs} flag in the codec @option{flags2} option.
7262
7263 The filter accepts the following option:
7264
7265 @table @option
7266 @item mv
7267 Set motion vectors to visualize.
7268
7269 Available flags for @var{mv} are:
7270
7271 @table @samp
7272 @item pf
7273 forward predicted MVs of P-frames
7274 @item bf
7275 forward predicted MVs of B-frames
7276 @item bb
7277 backward predicted MVs of B-frames
7278 @end table
7279
7280 @item qp
7281 Display quantization parameters using the chroma planes.
7282
7283 @item mv_type, mvt
7284 Set motion vectors type to visualize. Includes MVs from all frames unless specified by @var{frame_type} option.
7285
7286 Available flags for @var{mv_type} are:
7287
7288 @table @samp
7289 @item fp
7290 forward predicted MVs
7291 @item bp
7292 backward predicted MVs
7293 @end table
7294
7295 @item frame_type, ft
7296 Set frame type to visualize motion vectors of.
7297
7298 Available flags for @var{frame_type} are:
7299
7300 @table @samp
7301 @item if
7302 intra-coded frames (I-frames)
7303 @item pf
7304 predicted frames (P-frames)
7305 @item bf
7306 bi-directionally predicted frames (B-frames)
7307 @end table
7308 @end table
7309
7310 @subsection Examples
7311
7312 @itemize
7313 @item
7314 Visualize forward predicted MVs of all frames using @command{ffplay}:
7315 @example
7316 ffplay -flags2 +export_mvs input.mp4 -vf codecview=mv_type=fp
7317 @end example
7318
7319 @item
7320 Visualize multi-directionals MVs of P and B-Frames using @command{ffplay}:
7321 @example
7322 ffplay -flags2 +export_mvs input.mp4 -vf codecview=mv=pf+bf+bb
7323 @end example
7324 @end itemize
7325
7326 @section colorbalance
7327 Modify intensity of primary colors (red, green and blue) of input frames.
7328
7329 The filter allows an input frame to be adjusted in the shadows, midtones or highlights
7330 regions for the red-cyan, green-magenta or blue-yellow balance.
7331
7332 A positive adjustment value shifts the balance towards the primary color, a negative
7333 value towards the complementary color.
7334
7335 The filter accepts the following options:
7336
7337 @table @option
7338 @item rs
7339 @item gs
7340 @item bs
7341 Adjust red, green and blue shadows (darkest pixels).
7342
7343 @item rm
7344 @item gm
7345 @item bm
7346 Adjust red, green and blue midtones (medium pixels).
7347
7348 @item rh
7349 @item gh
7350 @item bh
7351 Adjust red, green and blue highlights (brightest pixels).
7352
7353 Allowed ranges for options are @code{[-1.0, 1.0]}. Defaults are @code{0}.
7354
7355 @item pl
7356 Preserve lightness when changing color balance. Default is disabled.
7357 @end table
7358
7359 @subsection Examples
7360
7361 @itemize
7362 @item
7363 Add red color cast to shadows:
7364 @example
7365 colorbalance=rs=.3
7366 @end example
7367 @end itemize
7368
7369 @subsection Commands
7370
7371 This filter supports the all above options as @ref{commands}.
7372
7373 @section colorchannelmixer
7374
7375 Adjust video input frames by re-mixing color channels.
7376
7377 This filter modifies a color channel by adding the values associated to
7378 the other channels of the same pixels. For example if the value to
7379 modify is red, the output value will be:
7380 @example
7381 @var{red}=@var{red}*@var{rr} + @var{blue}*@var{rb} + @var{green}*@var{rg} + @var{alpha}*@var{ra}
7382 @end example
7383
7384 The filter accepts the following options:
7385
7386 @table @option
7387 @item rr
7388 @item rg
7389 @item rb
7390 @item ra
7391 Adjust contribution of input red, green, blue and alpha channels for output red channel.
7392 Default is @code{1} for @var{rr}, and @code{0} for @var{rg}, @var{rb} and @var{ra}.
7393
7394 @item gr
7395 @item gg
7396 @item gb
7397 @item ga
7398 Adjust contribution of input red, green, blue and alpha channels for output green channel.
7399 Default is @code{1} for @var{gg}, and @code{0} for @var{gr}, @var{gb} and @var{ga}.
7400
7401 @item br
7402 @item bg
7403 @item bb
7404 @item ba
7405 Adjust contribution of input red, green, blue and alpha channels for output blue channel.
7406 Default is @code{1} for @var{bb}, and @code{0} for @var{br}, @var{bg} and @var{ba}.
7407
7408 @item ar
7409 @item ag
7410 @item ab
7411 @item aa
7412 Adjust contribution of input red, green, blue and alpha channels for output alpha channel.
7413 Default is @code{1} for @var{aa}, and @code{0} for @var{ar}, @var{ag} and @var{ab}.
7414
7415 Allowed ranges for options are @code{[-2.0, 2.0]}.
7416 @end table
7417
7418 @subsection Examples
7419
7420 @itemize
7421 @item
7422 Convert source to grayscale:
7423 @example
7424 colorchannelmixer=.3:.4:.3:0:.3:.4:.3:0:.3:.4:.3
7425 @end example
7426 @item
7427 Simulate sepia tones:
7428 @example
7429 colorchannelmixer=.393:.769:.189:0:.349:.686:.168:0:.272:.534:.131
7430 @end example
7431 @end itemize
7432
7433 @subsection Commands
7434
7435 This filter supports the all above options as @ref{commands}.
7436
7437 @section colorkey
7438 RGB colorspace color keying.
7439
7440 The filter accepts the following options:
7441
7442 @table @option
7443 @item color
7444 The color which will be replaced with transparency.
7445
7446 @item similarity
7447 Similarity percentage with the key color.
7448
7449 0.01 matches only the exact key color, while 1.0 matches everything.
7450
7451 @item blend
7452 Blend percentage.
7453
7454 0.0 makes pixels either fully transparent, or not transparent at all.
7455
7456 Higher values result in semi-transparent pixels, with a higher transparency
7457 the more similar the pixels color is to the key color.
7458 @end table
7459
7460 @subsection Examples
7461
7462 @itemize
7463 @item
7464 Make every green pixel in the input image transparent:
7465 @example
7466 ffmpeg -i input.png -vf colorkey=green out.png
7467 @end example
7468
7469 @item
7470 Overlay a greenscreen-video on top of a static background image.
7471 @example
7472 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
7473 @end example
7474 @end itemize
7475
7476 @subsection Commands
7477 This filter supports same @ref{commands} as options.
7478 The command accepts the same syntax of the corresponding option.
7479
7480 If the specified expression is not valid, it is kept at its current
7481 value.
7482
7483 @section colorhold
7484 Remove all color information for all RGB colors except for certain one.
7485
7486 The filter accepts the following options:
7487
7488 @table @option
7489 @item color
7490 The color which will not be replaced with neutral gray.
7491
7492 @item similarity
7493 Similarity percentage with the above color.
7494 0.01 matches only the exact key color, while 1.0 matches everything.
7495
7496 @item blend
7497 Blend percentage. 0.0 makes pixels fully gray.
7498 Higher values result in more preserved color.
7499 @end table
7500
7501 @subsection Commands
7502 This filter supports same @ref{commands} as options.
7503 The command accepts the same syntax of the corresponding option.
7504
7505 If the specified expression is not valid, it is kept at its current
7506 value.
7507
7508 @section colorlevels
7509
7510 Adjust video input frames using levels.
7511
7512 The filter accepts the following options:
7513
7514 @table @option
7515 @item rimin
7516 @item gimin
7517 @item bimin
7518 @item aimin
7519 Adjust red, green, blue and alpha input black point.
7520 Allowed ranges for options are @code{[-1.0, 1.0]}. Defaults are @code{0}.
7521
7522 @item rimax
7523 @item gimax
7524 @item bimax
7525 @item aimax
7526 Adjust red, green, blue and alpha input white point.
7527 Allowed ranges for options are @code{[-1.0, 1.0]}. Defaults are @code{1}.
7528
7529 Input levels are used to lighten highlights (bright tones), darken shadows
7530 (dark tones), change the balance of bright and dark tones.
7531
7532 @item romin
7533 @item gomin
7534 @item bomin
7535 @item aomin
7536 Adjust red, green, blue and alpha output black point.
7537 Allowed ranges for options are @code{[0, 1.0]}. Defaults are @code{0}.
7538
7539 @item romax
7540 @item gomax
7541 @item bomax
7542 @item aomax
7543 Adjust red, green, blue and alpha output white point.
7544 Allowed ranges for options are @code{[0, 1.0]}. Defaults are @code{1}.
7545
7546 Output levels allows manual selection of a constrained output level range.
7547 @end table
7548
7549 @subsection Examples
7550
7551 @itemize
7552 @item
7553 Make video output darker:
7554 @example
7555 colorlevels=rimin=0.058:gimin=0.058:bimin=0.058
7556 @end example
7557
7558 @item
7559 Increase contrast:
7560 @example
7561 colorlevels=rimin=0.039:gimin=0.039:bimin=0.039:rimax=0.96:gimax=0.96:bimax=0.96
7562 @end example
7563
7564 @item
7565 Make video output lighter:
7566 @example
7567 colorlevels=rimax=0.902:gimax=0.902:bimax=0.902
7568 @end example
7569
7570 @item
7571 Increase brightness:
7572 @example
7573 colorlevels=romin=0.5:gomin=0.5:bomin=0.5
7574 @end example
7575 @end itemize
7576
7577 @subsection Commands
7578
7579 This filter supports the all above options as @ref{commands}.
7580
7581 @section colormatrix
7582
7583 Convert color matrix.
7584
7585 The filter accepts the following options:
7586
7587 @table @option
7588 @item src
7589 @item dst
7590 Specify the source and destination color matrix. Both values must be
7591 specified.
7592
7593 The accepted values are:
7594 @table @samp
7595 @item bt709
7596 BT.709
7597
7598 @item fcc
7599 FCC
7600
7601 @item bt601
7602 BT.601
7603
7604 @item bt470
7605 BT.470
7606
7607 @item bt470bg
7608 BT.470BG
7609
7610 @item smpte170m
7611 SMPTE-170M
7612
7613 @item smpte240m
7614 SMPTE-240M
7615
7616 @item bt2020
7617 BT.2020
7618 @end table
7619 @end table
7620
7621 For example to convert from BT.601 to SMPTE-240M, use the command:
7622 @example
7623 colormatrix=bt601:smpte240m
7624 @end example
7625
7626 @section colorspace
7627
7628 Convert colorspace, transfer characteristics or color primaries.
7629 Input video needs to have an even size.
7630
7631 The filter accepts the following options:
7632
7633 @table @option
7634 @anchor{all}
7635 @item all
7636 Specify all color properties at once.
7637
7638 The accepted values are:
7639 @table @samp
7640 @item bt470m
7641 BT.470M
7642
7643 @item bt470bg
7644 BT.470BG
7645
7646 @item bt601-6-525
7647 BT.601-6 525
7648
7649 @item bt601-6-625
7650 BT.601-6 625
7651
7652 @item bt709
7653 BT.709
7654
7655 @item smpte170m
7656 SMPTE-170M
7657
7658 @item smpte240m
7659 SMPTE-240M
7660
7661 @item bt2020
7662 BT.2020
7663
7664 @end table
7665
7666 @anchor{space}
7667 @item space
7668 Specify output colorspace.
7669
7670 The accepted values are:
7671 @table @samp
7672 @item bt709
7673 BT.709
7674
7675 @item fcc
7676 FCC
7677
7678 @item bt470bg
7679 BT.470BG or BT.601-6 625
7680
7681 @item smpte170m
7682 SMPTE-170M or BT.601-6 525
7683
7684 @item smpte240m
7685 SMPTE-240M
7686
7687 @item ycgco
7688 YCgCo
7689
7690 @item bt2020ncl
7691 BT.2020 with non-constant luminance
7692
7693 @end table
7694
7695 @anchor{trc}
7696 @item trc
7697 Specify output transfer characteristics.
7698
7699 The accepted values are:
7700 @table @samp
7701 @item bt709
7702 BT.709
7703
7704 @item bt470m
7705 BT.470M
7706
7707 @item bt470bg
7708 BT.470BG
7709
7710 @item gamma22
7711 Constant gamma of 2.2
7712
7713 @item gamma28
7714 Constant gamma of 2.8
7715
7716 @item smpte170m
7717 SMPTE-170M, BT.601-6 625 or BT.601-6 525
7718
7719 @item smpte240m
7720 SMPTE-240M
7721
7722 @item srgb
7723 SRGB
7724
7725 @item iec61966-2-1
7726 iec61966-2-1
7727
7728 @item iec61966-2-4
7729 iec61966-2-4
7730
7731 @item xvycc
7732 xvycc
7733
7734 @item bt2020-10
7735 BT.2020 for 10-bits content
7736
7737 @item bt2020-12
7738 BT.2020 for 12-bits content
7739
7740 @end table
7741
7742 @anchor{primaries}
7743 @item primaries
7744 Specify output color primaries.
7745
7746 The accepted values are:
7747 @table @samp
7748 @item bt709
7749 BT.709
7750
7751 @item bt470m
7752 BT.470M
7753
7754 @item bt470bg
7755 BT.470BG or BT.601-6 625
7756
7757 @item smpte170m
7758 SMPTE-170M or BT.601-6 525
7759
7760 @item smpte240m
7761 SMPTE-240M
7762
7763 @item film
7764 film
7765
7766 @item smpte431
7767 SMPTE-431
7768
7769 @item smpte432
7770 SMPTE-432
7771
7772 @item bt2020
7773 BT.2020
7774
7775 @item jedec-p22
7776 JEDEC P22 phosphors
7777
7778 @end table
7779
7780 @anchor{range}
7781 @item range
7782 Specify output color range.
7783
7784 The accepted values are:
7785 @table @samp
7786 @item tv
7787 TV (restricted) range
7788
7789 @item mpeg
7790 MPEG (restricted) range
7791
7792 @item pc
7793 PC (full) range
7794
7795 @item jpeg
7796 JPEG (full) range
7797
7798 @end table
7799
7800 @item format
7801 Specify output color format.
7802
7803 The accepted values are:
7804 @table @samp
7805 @item yuv420p
7806 YUV 4:2:0 planar 8-bits
7807
7808 @item yuv420p10
7809 YUV 4:2:0 planar 10-bits
7810
7811 @item yuv420p12
7812 YUV 4:2:0 planar 12-bits
7813
7814 @item yuv422p
7815 YUV 4:2:2 planar 8-bits
7816
7817 @item yuv422p10
7818 YUV 4:2:2 planar 10-bits
7819
7820 @item yuv422p12
7821 YUV 4:2:2 planar 12-bits
7822
7823 @item yuv444p
7824 YUV 4:4:4 planar 8-bits
7825
7826 @item yuv444p10
7827 YUV 4:4:4 planar 10-bits
7828
7829 @item yuv444p12
7830 YUV 4:4:4 planar 12-bits
7831
7832 @end table
7833
7834 @item fast
7835 Do a fast conversion, which skips gamma/primary correction. This will take
7836 significantly less CPU, but will be mathematically incorrect. To get output
7837 compatible with that produced by the colormatrix filter, use fast=1.
7838
7839 @item dither
7840 Specify dithering mode.
7841
7842 The accepted values are:
7843 @table @samp
7844 @item none
7845 No dithering
7846
7847 @item fsb
7848 Floyd-Steinberg dithering
7849 @end table
7850
7851 @item wpadapt
7852 Whitepoint adaptation mode.
7853
7854 The accepted values are:
7855 @table @samp
7856 @item bradford
7857 Bradford whitepoint adaptation
7858
7859 @item vonkries
7860 von Kries whitepoint adaptation
7861
7862 @item identity
7863 identity whitepoint adaptation (i.e. no whitepoint adaptation)
7864 @end table
7865
7866 @item iall
7867 Override all input properties at once. Same accepted values as @ref{all}.
7868
7869 @item ispace
7870 Override input colorspace. Same accepted values as @ref{space}.
7871
7872 @item iprimaries
7873 Override input color primaries. Same accepted values as @ref{primaries}.
7874
7875 @item itrc
7876 Override input transfer characteristics. Same accepted values as @ref{trc}.
7877
7878 @item irange
7879 Override input color range. Same accepted values as @ref{range}.
7880
7881 @end table
7882
7883 The filter converts the transfer characteristics, color space and color
7884 primaries to the specified user values. The output value, if not specified,
7885 is set to a default value based on the "all" property. If that property is
7886 also not specified, the filter will log an error. The output color range and
7887 format default to the same value as the input color range and format. The
7888 input transfer characteristics, color space, color primaries and color range
7889 should be set on the input data. If any of these are missing, the filter will
7890 log an error and no conversion will take place.
7891
7892 For example to convert the input to SMPTE-240M, use the command:
7893 @example
7894 colorspace=smpte240m
7895 @end example
7896
7897 @section convolution
7898
7899 Apply convolution of 3x3, 5x5, 7x7 or horizontal/vertical up to 49 elements.
7900
7901 The filter accepts the following options:
7902
7903 @table @option
7904 @item 0m
7905 @item 1m
7906 @item 2m
7907 @item 3m
7908 Set matrix for each plane.
7909 Matrix is sequence of 9, 25 or 49 signed integers in @var{square} mode,
7910 and from 1 to 49 odd number of signed integers in @var{row} mode.
7911
7912 @item 0rdiv
7913 @item 1rdiv
7914 @item 2rdiv
7915 @item 3rdiv
7916 Set multiplier for calculated value for each plane.
7917 If unset or 0, it will be sum of all matrix elements.
7918
7919 @item 0bias
7920 @item 1bias
7921 @item 2bias
7922 @item 3bias
7923 Set bias for each plane. This value is added to the result of the multiplication.
7924 Useful for making the overall image brighter or darker. Default is 0.0.
7925
7926 @item 0mode
7927 @item 1mode
7928 @item 2mode
7929 @item 3mode
7930 Set matrix mode for each plane. Can be @var{square}, @var{row} or @var{column}.
7931 Default is @var{square}.
7932 @end table
7933
7934 @subsection Examples
7935
7936 @itemize
7937 @item
7938 Apply sharpen:
7939 @example
7940 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"
7941 @end example
7942
7943 @item
7944 Apply blur:
7945 @example
7946 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"
7947 @end example
7948
7949 @item
7950 Apply edge enhance:
7951 @example
7952 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"
7953 @end example
7954
7955 @item
7956 Apply edge detect:
7957 @example
7958 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"
7959 @end example
7960
7961 @item
7962 Apply laplacian edge detector which includes diagonals:
7963 @example
7964 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"
7965 @end example
7966
7967 @item
7968 Apply emboss:
7969 @example
7970 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"
7971 @end example
7972 @end itemize
7973
7974 @section convolve
7975
7976 Apply 2D convolution of video stream in frequency domain using second stream
7977 as impulse.
7978
7979 The filter accepts the following options:
7980
7981 @table @option
7982 @item planes
7983 Set which planes to process.
7984
7985 @item impulse
7986 Set which impulse video frames will be processed, can be @var{first}
7987 or @var{all}. Default is @var{all}.
7988 @end table
7989
7990 The @code{convolve} filter also supports the @ref{framesync} options.
7991
7992 @section copy
7993
7994 Copy the input video source unchanged to the output. This is mainly useful for
7995 testing purposes.
7996
7997 @anchor{coreimage}
7998 @section coreimage
7999 Video filtering on GPU using Apple's CoreImage API on OSX.
8000
8001 Hardware acceleration is based on an OpenGL context. Usually, this means it is
8002 processed by video hardware. However, software-based OpenGL implementations
8003 exist which means there is no guarantee for hardware processing. It depends on
8004 the respective OSX.
8005
8006 There are many filters and image generators provided by Apple that come with a
8007 large variety of options. The filter has to be referenced by its name along
8008 with its options.
8009
8010 The coreimage filter accepts the following options:
8011 @table @option
8012 @item list_filters
8013 List all available filters and generators along with all their respective
8014 options as well as possible minimum and maximum values along with the default
8015 values.
8016 @example
8017 list_filters=true
8018 @end example
8019
8020 @item filter
8021 Specify all filters by their respective name and options.
8022 Use @var{list_filters} to determine all valid filter names and options.
8023 Numerical options are specified by a float value and are automatically clamped
8024 to their respective value range.  Vector and color options have to be specified
8025 by a list of space separated float values. Character escaping has to be done.
8026 A special option name @code{default} is available to use default options for a
8027 filter.
8028
8029 It is required to specify either @code{default} or at least one of the filter options.
8030 All omitted options are used with their default values.
8031 The syntax of the filter string is as follows:
8032 @example
8033 filter=<NAME>@@<OPTION>=<VALUE>[@@<OPTION>=<VALUE>][@@...][#<NAME>@@<OPTION>=<VALUE>[@@<OPTION>=<VALUE>][@@...]][#...]
8034 @end example
8035
8036 @item output_rect
8037 Specify a rectangle where the output of the filter chain is copied into the
8038 input image. It is given by a list of space separated float values:
8039 @example
8040 output_rect=x\ y\ width\ height
8041 @end example
8042 If not given, the output rectangle equals the dimensions of the input image.
8043 The output rectangle is automatically cropped at the borders of the input
8044 image. Negative values are valid for each component.
8045 @example
8046 output_rect=25\ 25\ 100\ 100
8047 @end example
8048 @end table
8049
8050 Several filters can be chained for successive processing without GPU-HOST
8051 transfers allowing for fast processing of complex filter chains.
8052 Currently, only filters with zero (generators) or exactly one (filters) input
8053 image and one output image are supported. Also, transition filters are not yet
8054 usable as intended.
8055
8056 Some filters generate output images with additional padding depending on the
8057 respective filter kernel. The padding is automatically removed to ensure the
8058 filter output has the same size as the input image.
8059
8060 For image generators, the size of the output image is determined by the
8061 previous output image of the filter chain or the input image of the whole
8062 filterchain, respectively. The generators do not use the pixel information of
8063 this image to generate their output. However, the generated output is
8064 blended onto this image, resulting in partial or complete coverage of the
8065 output image.
8066
8067 The @ref{coreimagesrc} video source can be used for generating input images
8068 which are directly fed into the filter chain. By using it, providing input
8069 images by another video source or an input video is not required.
8070
8071 @subsection Examples
8072
8073 @itemize
8074
8075 @item
8076 List all filters available:
8077 @example
8078 coreimage=list_filters=true
8079 @end example
8080
8081 @item
8082 Use the CIBoxBlur filter with default options to blur an image:
8083 @example
8084 coreimage=filter=CIBoxBlur@@default
8085 @end example
8086
8087 @item
8088 Use a filter chain with CISepiaTone at default values and CIVignetteEffect with
8089 its center at 100x100 and a radius of 50 pixels:
8090 @example
8091 coreimage=filter=CIBoxBlur@@default#CIVignetteEffect@@inputCenter=100\ 100@@inputRadius=50
8092 @end example
8093
8094 @item
8095 Use nullsrc and CIQRCodeGenerator to create a QR code for the FFmpeg homepage,
8096 given as complete and escaped command-line for Apple's standard bash shell:
8097 @example
8098 ffmpeg -f lavfi -i nullsrc=s=100x100,coreimage=filter=CIQRCodeGenerator@@inputMessage=https\\\\\://FFmpeg.org/@@inputCorrectionLevel=H -frames:v 1 QRCode.png
8099 @end example
8100 @end itemize
8101
8102 @section cover_rect
8103
8104 Cover a rectangular object
8105
8106 It accepts the following options:
8107
8108 @table @option
8109 @item cover
8110 Filepath of the optional cover image, needs to be in yuv420.
8111
8112 @item mode
8113 Set covering mode.
8114
8115 It accepts the following values:
8116 @table @samp
8117 @item cover
8118 cover it by the supplied image
8119 @item blur
8120 cover it by interpolating the surrounding pixels
8121 @end table
8122
8123 Default value is @var{blur}.
8124 @end table
8125
8126 @subsection Examples
8127
8128 @itemize
8129 @item
8130 Cover a rectangular object by the supplied image of a given video using @command{ffmpeg}:
8131 @example
8132 ffmpeg -i file.ts -vf find_rect=newref.pgm,cover_rect=cover.jpg:mode=cover new.mkv
8133 @end example
8134 @end itemize
8135
8136 @section crop
8137
8138 Crop the input video to given dimensions.
8139
8140 It accepts the following parameters:
8141
8142 @table @option
8143 @item w, out_w
8144 The width of the output video. It defaults to @code{iw}.
8145 This expression is evaluated only once during the filter
8146 configuration, or when the @samp{w} or @samp{out_w} command is sent.
8147
8148 @item h, out_h
8149 The height of the output video. It defaults to @code{ih}.
8150 This expression is evaluated only once during the filter
8151 configuration, or when the @samp{h} or @samp{out_h} command is sent.
8152
8153 @item x
8154 The horizontal position, in the input video, of the left edge of the output
8155 video. It defaults to @code{(in_w-out_w)/2}.
8156 This expression is evaluated per-frame.
8157
8158 @item y
8159 The vertical position, in the input video, of the top edge of the output video.
8160 It defaults to @code{(in_h-out_h)/2}.
8161 This expression is evaluated per-frame.
8162
8163 @item keep_aspect
8164 If set to 1 will force the output display aspect ratio
8165 to be the same of the input, by changing the output sample aspect
8166 ratio. It defaults to 0.
8167
8168 @item exact
8169 Enable exact cropping. If enabled, subsampled videos will be cropped at exact
8170 width/height/x/y as specified and will not be rounded to nearest smaller value.
8171 It defaults to 0.
8172 @end table
8173
8174 The @var{out_w}, @var{out_h}, @var{x}, @var{y} parameters are
8175 expressions containing the following constants:
8176
8177 @table @option
8178 @item x
8179 @item y
8180 The computed values for @var{x} and @var{y}. They are evaluated for
8181 each new frame.
8182
8183 @item in_w
8184 @item in_h
8185 The input width and height.
8186
8187 @item iw
8188 @item ih
8189 These are the same as @var{in_w} and @var{in_h}.
8190
8191 @item out_w
8192 @item out_h
8193 The output (cropped) width and height.
8194
8195 @item ow
8196 @item oh
8197 These are the same as @var{out_w} and @var{out_h}.
8198
8199 @item a
8200 same as @var{iw} / @var{ih}
8201
8202 @item sar
8203 input sample aspect ratio
8204
8205 @item dar
8206 input display aspect ratio, it is the same as (@var{iw} / @var{ih}) * @var{sar}
8207
8208 @item hsub
8209 @item vsub
8210 horizontal and vertical chroma subsample values. For example for the
8211 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
8212
8213 @item n
8214 The number of the input frame, starting from 0.
8215
8216 @item pos
8217 the position in the file of the input frame, NAN if unknown
8218
8219 @item t
8220 The timestamp expressed in seconds. It's NAN if the input timestamp is unknown.
8221
8222 @end table
8223
8224 The expression for @var{out_w} may depend on the value of @var{out_h},
8225 and the expression for @var{out_h} may depend on @var{out_w}, but they
8226 cannot depend on @var{x} and @var{y}, as @var{x} and @var{y} are
8227 evaluated after @var{out_w} and @var{out_h}.
8228
8229 The @var{x} and @var{y} parameters specify the expressions for the
8230 position of the top-left corner of the output (non-cropped) area. They
8231 are evaluated for each frame. If the evaluated value is not valid, it
8232 is approximated to the nearest valid value.
8233
8234 The expression for @var{x} may depend on @var{y}, and the expression
8235 for @var{y} may depend on @var{x}.
8236
8237 @subsection Examples
8238
8239 @itemize
8240 @item
8241 Crop area with size 100x100 at position (12,34).
8242 @example
8243 crop=100:100:12:34
8244 @end example
8245
8246 Using named options, the example above becomes:
8247 @example
8248 crop=w=100:h=100:x=12:y=34
8249 @end example
8250
8251 @item
8252 Crop the central input area with size 100x100:
8253 @example
8254 crop=100:100
8255 @end example
8256
8257 @item
8258 Crop the central input area with size 2/3 of the input video:
8259 @example
8260 crop=2/3*in_w:2/3*in_h
8261 @end example
8262
8263 @item
8264 Crop the input video central square:
8265 @example
8266 crop=out_w=in_h
8267 crop=in_h
8268 @end example
8269
8270 @item
8271 Delimit the rectangle with the top-left corner placed at position
8272 100:100 and the right-bottom corner corresponding to the right-bottom
8273 corner of the input image.
8274 @example
8275 crop=in_w-100:in_h-100:100:100
8276 @end example
8277
8278 @item
8279 Crop 10 pixels from the left and right borders, and 20 pixels from
8280 the top and bottom borders
8281 @example
8282 crop=in_w-2*10:in_h-2*20
8283 @end example
8284
8285 @item
8286 Keep only the bottom right quarter of the input image:
8287 @example
8288 crop=in_w/2:in_h/2:in_w/2:in_h/2
8289 @end example
8290
8291 @item
8292 Crop height for getting Greek harmony:
8293 @example
8294 crop=in_w:1/PHI*in_w
8295 @end example
8296
8297 @item
8298 Apply trembling effect:
8299 @example
8300 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)
8301 @end example
8302
8303 @item
8304 Apply erratic camera effect depending on timestamp:
8305 @example
8306 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)"
8307 @end example
8308
8309 @item
8310 Set x depending on the value of y:
8311 @example
8312 crop=in_w/2:in_h/2:y:10+10*sin(n/10)
8313 @end example
8314 @end itemize
8315
8316 @subsection Commands
8317
8318 This filter supports the following commands:
8319 @table @option
8320 @item w, out_w
8321 @item h, out_h
8322 @item x
8323 @item y
8324 Set width/height of the output video and the horizontal/vertical position
8325 in the input video.
8326 The command accepts the same syntax of the corresponding option.
8327
8328 If the specified expression is not valid, it is kept at its current
8329 value.
8330 @end table
8331
8332 @section cropdetect
8333
8334 Auto-detect the crop size.
8335
8336 It calculates the necessary cropping parameters and prints the
8337 recommended parameters via the logging system. The detected dimensions
8338 correspond to the non-black area of the input video.
8339
8340 It accepts the following parameters:
8341
8342 @table @option
8343
8344 @item limit
8345 Set higher black value threshold, which can be optionally specified
8346 from nothing (0) to everything (255 for 8-bit based formats). An intensity
8347 value greater to the set value is considered non-black. It defaults to 24.
8348 You can also specify a value between 0.0 and 1.0 which will be scaled depending
8349 on the bitdepth of the pixel format.
8350
8351 @item round
8352 The value which the width/height should be divisible by. It defaults to
8353 16. The offset is automatically adjusted to center the video. Use 2 to
8354 get only even dimensions (needed for 4:2:2 video). 16 is best when
8355 encoding to most video codecs.
8356
8357 @item reset_count, reset
8358 Set the counter that determines after how many frames cropdetect will
8359 reset the previously detected largest video area and start over to
8360 detect the current optimal crop area. Default value is 0.
8361
8362 This can be useful when channel logos distort the video area. 0
8363 indicates 'never reset', and returns the largest area encountered during
8364 playback.
8365 @end table
8366
8367 @anchor{cue}
8368 @section cue
8369
8370 Delay video filtering until a given wallclock timestamp. The filter first
8371 passes on @option{preroll} amount of frames, then it buffers at most
8372 @option{buffer} amount of frames and waits for the cue. After reaching the cue
8373 it forwards the buffered frames and also any subsequent frames coming in its
8374 input.
8375
8376 The filter can be used synchronize the output of multiple ffmpeg processes for
8377 realtime output devices like decklink. By putting the delay in the filtering
8378 chain and pre-buffering frames the process can pass on data to output almost
8379 immediately after the target wallclock timestamp is reached.
8380
8381 Perfect frame accuracy cannot be guaranteed, but the result is good enough for
8382 some use cases.
8383
8384 @table @option
8385
8386 @item cue
8387 The cue timestamp expressed in a UNIX timestamp in microseconds. Default is 0.
8388
8389 @item preroll
8390 The duration of content to pass on as preroll expressed in seconds. Default is 0.
8391
8392 @item buffer
8393 The maximum duration of content to buffer before waiting for the cue expressed
8394 in seconds. Default is 0.
8395
8396 @end table
8397
8398 @anchor{curves}
8399 @section curves
8400
8401 Apply color adjustments using curves.
8402
8403 This filter is similar to the Adobe Photoshop and GIMP curves tools. Each
8404 component (red, green and blue) has its values defined by @var{N} key points
8405 tied from each other using a smooth curve. The x-axis represents the pixel
8406 values from the input frame, and the y-axis the new pixel values to be set for
8407 the output frame.
8408
8409 By default, a component curve is defined by the two points @var{(0;0)} and
8410 @var{(1;1)}. This creates a straight line where each original pixel value is
8411 "adjusted" to its own value, which means no change to the image.
8412
8413 The filter allows you to redefine these two points and add some more. A new
8414 curve (using a natural cubic spline interpolation) will be define to pass
8415 smoothly through all these new coordinates. The new defined points needs to be
8416 strictly increasing over the x-axis, and their @var{x} and @var{y} values must
8417 be in the @var{[0;1]} interval.  If the computed curves happened to go outside
8418 the vector spaces, the values will be clipped accordingly.
8419
8420 The filter accepts the following options:
8421
8422 @table @option
8423 @item preset
8424 Select one of the available color presets. This option can be used in addition
8425 to the @option{r}, @option{g}, @option{b} parameters; in this case, the later
8426 options takes priority on the preset values.
8427 Available presets are:
8428 @table @samp
8429 @item none
8430 @item color_negative
8431 @item cross_process
8432 @item darker
8433 @item increase_contrast
8434 @item lighter
8435 @item linear_contrast
8436 @item medium_contrast
8437 @item negative
8438 @item strong_contrast
8439 @item vintage
8440 @end table
8441 Default is @code{none}.
8442 @item master, m
8443 Set the master key points. These points will define a second pass mapping. It
8444 is sometimes called a "luminance" or "value" mapping. It can be used with
8445 @option{r}, @option{g}, @option{b} or @option{all} since it acts like a
8446 post-processing LUT.
8447 @item red, r
8448 Set the key points for the red component.
8449 @item green, g
8450 Set the key points for the green component.
8451 @item blue, b
8452 Set the key points for the blue component.
8453 @item all
8454 Set the key points for all components (not including master).
8455 Can be used in addition to the other key points component
8456 options. In this case, the unset component(s) will fallback on this
8457 @option{all} setting.
8458 @item psfile
8459 Specify a Photoshop curves file (@code{.acv}) to import the settings from.
8460 @item plot
8461 Save Gnuplot script of the curves in specified file.
8462 @end table
8463
8464 To avoid some filtergraph syntax conflicts, each key points list need to be
8465 defined using the following syntax: @code{x0/y0 x1/y1 x2/y2 ...}.
8466
8467 @subsection Examples
8468
8469 @itemize
8470 @item
8471 Increase slightly the middle level of blue:
8472 @example
8473 curves=blue='0/0 0.5/0.58 1/1'
8474 @end example
8475
8476 @item
8477 Vintage effect:
8478 @example
8479 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'
8480 @end example
8481 Here we obtain the following coordinates for each components:
8482 @table @var
8483 @item red
8484 @code{(0;0.11) (0.42;0.51) (1;0.95)}
8485 @item green
8486 @code{(0;0) (0.50;0.48) (1;1)}
8487 @item blue
8488 @code{(0;0.22) (0.49;0.44) (1;0.80)}
8489 @end table
8490
8491 @item
8492 The previous example can also be achieved with the associated built-in preset:
8493 @example
8494 curves=preset=vintage
8495 @end example
8496
8497 @item
8498 Or simply:
8499 @example
8500 curves=vintage
8501 @end example
8502
8503 @item
8504 Use a Photoshop preset and redefine the points of the green component:
8505 @example
8506 curves=psfile='MyCurvesPresets/purple.acv':green='0/0 0.45/0.53 1/1'
8507 @end example
8508
8509 @item
8510 Check out the curves of the @code{cross_process} profile using @command{ffmpeg}
8511 and @command{gnuplot}:
8512 @example
8513 ffmpeg -f lavfi -i color -vf curves=cross_process:plot=/tmp/curves.plt -frames:v 1 -f null -
8514 gnuplot -p /tmp/curves.plt
8515 @end example
8516 @end itemize
8517
8518 @section datascope
8519
8520 Video data analysis filter.
8521
8522 This filter shows hexadecimal pixel values of part of video.
8523
8524 The filter accepts the following options:
8525
8526 @table @option
8527 @item size, s
8528 Set output video size.
8529
8530 @item x
8531 Set x offset from where to pick pixels.
8532
8533 @item y
8534 Set y offset from where to pick pixels.
8535
8536 @item mode
8537 Set scope mode, can be one of the following:
8538 @table @samp
8539 @item mono
8540 Draw hexadecimal pixel values with white color on black background.
8541
8542 @item color
8543 Draw hexadecimal pixel values with input video pixel color on black
8544 background.
8545
8546 @item color2
8547 Draw hexadecimal pixel values on color background picked from input video,
8548 the text color is picked in such way so its always visible.
8549 @end table
8550
8551 @item axis
8552 Draw rows and columns numbers on left and top of video.
8553
8554 @item opacity
8555 Set background opacity.
8556
8557 @item format
8558 Set display number format. Can be @code{hex}, or @code{dec}. Default is @code{hex}.
8559 @end table
8560
8561 @section dctdnoiz
8562
8563 Denoise frames using 2D DCT (frequency domain filtering).
8564
8565 This filter is not designed for real time.
8566
8567 The filter accepts the following options:
8568
8569 @table @option
8570 @item sigma, s
8571 Set the noise sigma constant.
8572
8573 This @var{sigma} defines a hard threshold of @code{3 * sigma}; every DCT
8574 coefficient (absolute value) below this threshold with be dropped.
8575
8576 If you need a more advanced filtering, see @option{expr}.
8577
8578 Default is @code{0}.
8579
8580 @item overlap
8581 Set number overlapping pixels for each block. Since the filter can be slow, you
8582 may want to reduce this value, at the cost of a less effective filter and the
8583 risk of various artefacts.
8584
8585 If the overlapping value doesn't permit processing the whole input width or
8586 height, a warning will be displayed and according borders won't be denoised.
8587
8588 Default value is @var{blocksize}-1, which is the best possible setting.
8589
8590 @item expr, e
8591 Set the coefficient factor expression.
8592
8593 For each coefficient of a DCT block, this expression will be evaluated as a
8594 multiplier value for the coefficient.
8595
8596 If this is option is set, the @option{sigma} option will be ignored.
8597
8598 The absolute value of the coefficient can be accessed through the @var{c}
8599 variable.
8600
8601 @item n
8602 Set the @var{blocksize} using the number of bits. @code{1<<@var{n}} defines the
8603 @var{blocksize}, which is the width and height of the processed blocks.
8604
8605 The default value is @var{3} (8x8) and can be raised to @var{4} for a
8606 @var{blocksize} of 16x16. Note that changing this setting has huge consequences
8607 on the speed processing. Also, a larger block size does not necessarily means a
8608 better de-noising.
8609 @end table
8610
8611 @subsection Examples
8612
8613 Apply a denoise with a @option{sigma} of @code{4.5}:
8614 @example
8615 dctdnoiz=4.5
8616 @end example
8617
8618 The same operation can be achieved using the expression system:
8619 @example
8620 dctdnoiz=e='gte(c, 4.5*3)'
8621 @end example
8622
8623 Violent denoise using a block size of @code{16x16}:
8624 @example
8625 dctdnoiz=15:n=4
8626 @end example
8627
8628 @section deband
8629
8630 Remove banding artifacts from input video.
8631 It works by replacing banded pixels with average value of referenced pixels.
8632
8633 The filter accepts the following options:
8634
8635 @table @option
8636 @item 1thr
8637 @item 2thr
8638 @item 3thr
8639 @item 4thr
8640 Set banding detection threshold for each plane. Default is 0.02.
8641 Valid range is 0.00003 to 0.5.
8642 If difference between current pixel and reference pixel is less than threshold,
8643 it will be considered as banded.
8644
8645 @item range, r
8646 Banding detection range in pixels. Default is 16. If positive, random number
8647 in range 0 to set value will be used. If negative, exact absolute value
8648 will be used.
8649 The range defines square of four pixels around current pixel.
8650
8651 @item direction, d
8652 Set direction in radians from which four pixel will be compared. If positive,
8653 random direction from 0 to set direction will be picked. If negative, exact of
8654 absolute value will be picked. For example direction 0, -PI or -2*PI radians
8655 will pick only pixels on same row and -PI/2 will pick only pixels on same
8656 column.
8657
8658 @item blur, b
8659 If enabled, current pixel is compared with average value of all four
8660 surrounding pixels. The default is enabled. If disabled current pixel is
8661 compared with all four surrounding pixels. The pixel is considered banded
8662 if only all four differences with surrounding pixels are less than threshold.
8663
8664 @item coupling, c
8665 If enabled, current pixel is changed if and only if all pixel components are banded,
8666 e.g. banding detection threshold is triggered for all color components.
8667 The default is disabled.
8668 @end table
8669
8670 @section deblock
8671
8672 Remove blocking artifacts from input video.
8673
8674 The filter accepts the following options:
8675
8676 @table @option
8677 @item filter
8678 Set filter type, can be @var{weak} or @var{strong}. Default is @var{strong}.
8679 This controls what kind of deblocking is applied.
8680
8681 @item block
8682 Set size of block, allowed range is from 4 to 512. Default is @var{8}.
8683
8684 @item alpha
8685 @item beta
8686 @item gamma
8687 @item delta
8688 Set blocking detection thresholds. Allowed range is 0 to 1.
8689 Defaults are: @var{0.098} for @var{alpha} and @var{0.05} for the rest.
8690 Using higher threshold gives more deblocking strength.
8691 Setting @var{alpha} controls threshold detection at exact edge of block.
8692 Remaining options controls threshold detection near the edge. Each one for
8693 below/above or left/right. Setting any of those to @var{0} disables
8694 deblocking.
8695
8696 @item planes
8697 Set planes to filter. Default is to filter all available planes.
8698 @end table
8699
8700 @subsection Examples
8701
8702 @itemize
8703 @item
8704 Deblock using weak filter and block size of 4 pixels.
8705 @example
8706 deblock=filter=weak:block=4
8707 @end example
8708
8709 @item
8710 Deblock using strong filter, block size of 4 pixels and custom thresholds for
8711 deblocking more edges.
8712 @example
8713 deblock=filter=strong:block=4:alpha=0.12:beta=0.07:gamma=0.06:delta=0.05
8714 @end example
8715
8716 @item
8717 Similar as above, but filter only first plane.
8718 @example
8719 deblock=filter=strong:block=4:alpha=0.12:beta=0.07:gamma=0.06:delta=0.05:planes=1
8720 @end example
8721
8722 @item
8723 Similar as above, but filter only second and third plane.
8724 @example
8725 deblock=filter=strong:block=4:alpha=0.12:beta=0.07:gamma=0.06:delta=0.05:planes=6
8726 @end example
8727 @end itemize
8728
8729 @anchor{decimate}
8730 @section decimate
8731
8732 Drop duplicated frames at regular intervals.
8733
8734 The filter accepts the following options:
8735
8736 @table @option
8737 @item cycle
8738 Set the number of frames from which one will be dropped. Setting this to
8739 @var{N} means one frame in every batch of @var{N} frames will be dropped.
8740 Default is @code{5}.
8741
8742 @item dupthresh
8743 Set the threshold for duplicate detection. If the difference metric for a frame
8744 is less than or equal to this value, then it is declared as duplicate. Default
8745 is @code{1.1}
8746
8747 @item scthresh
8748 Set scene change threshold. Default is @code{15}.
8749
8750 @item blockx
8751 @item blocky
8752 Set the size of the x and y-axis blocks used during metric calculations.
8753 Larger blocks give better noise suppression, but also give worse detection of
8754 small movements. Must be a power of two. Default is @code{32}.
8755
8756 @item ppsrc
8757 Mark main input as a pre-processed input and activate clean source input
8758 stream. This allows the input to be pre-processed with various filters to help
8759 the metrics calculation while keeping the frame selection lossless. When set to
8760 @code{1}, the first stream is for the pre-processed input, and the second
8761 stream is the clean source from where the kept frames are chosen. Default is
8762 @code{0}.
8763
8764 @item chroma
8765 Set whether or not chroma is considered in the metric calculations. Default is
8766 @code{1}.
8767 @end table
8768
8769 @section deconvolve
8770
8771 Apply 2D deconvolution of video stream in frequency domain using second stream
8772 as impulse.
8773
8774 The filter accepts the following options:
8775
8776 @table @option
8777 @item planes
8778 Set which planes to process.
8779
8780 @item impulse
8781 Set which impulse video frames will be processed, can be @var{first}
8782 or @var{all}. Default is @var{all}.
8783
8784 @item noise
8785 Set noise when doing divisions. Default is @var{0.0000001}. Useful when width
8786 and height are not same and not power of 2 or if stream prior to convolving
8787 had noise.
8788 @end table
8789
8790 The @code{deconvolve} filter also supports the @ref{framesync} options.
8791
8792 @section dedot
8793
8794 Reduce cross-luminance (dot-crawl) and cross-color (rainbows) from video.
8795
8796 It accepts the following options:
8797
8798 @table @option
8799 @item m
8800 Set mode of operation. Can be combination of @var{dotcrawl} for cross-luminance reduction and/or
8801 @var{rainbows} for cross-color reduction.
8802
8803 @item lt
8804 Set spatial luma threshold. Lower values increases reduction of cross-luminance.
8805
8806 @item tl
8807 Set tolerance for temporal luma. Higher values increases reduction of cross-luminance.
8808
8809 @item tc
8810 Set tolerance for chroma temporal variation. Higher values increases reduction of cross-color.
8811
8812 @item ct
8813 Set temporal chroma threshold. Lower values increases reduction of cross-color.
8814 @end table
8815
8816 @section deflate
8817
8818 Apply deflate effect to the video.
8819
8820 This filter replaces the pixel by the local(3x3) average by taking into account
8821 only values lower than the pixel.
8822
8823 It accepts the following options:
8824
8825 @table @option
8826 @item threshold0
8827 @item threshold1
8828 @item threshold2
8829 @item threshold3
8830 Limit the maximum change for each plane, default is 65535.
8831 If 0, plane will remain unchanged.
8832 @end table
8833
8834 @subsection Commands
8835
8836 This filter supports the all above options as @ref{commands}.
8837
8838 @section deflicker
8839
8840 Remove temporal frame luminance variations.
8841
8842 It accepts the following options:
8843
8844 @table @option
8845 @item size, s
8846 Set moving-average filter size in frames. Default is 5. Allowed range is 2 - 129.
8847
8848 @item mode, m
8849 Set averaging mode to smooth temporal luminance variations.
8850
8851 Available values are:
8852 @table @samp
8853 @item am
8854 Arithmetic mean
8855
8856 @item gm
8857 Geometric mean
8858
8859 @item hm
8860 Harmonic mean
8861
8862 @item qm
8863 Quadratic mean
8864
8865 @item cm
8866 Cubic mean
8867
8868 @item pm
8869 Power mean
8870
8871 @item median
8872 Median
8873 @end table
8874
8875 @item bypass
8876 Do not actually modify frame. Useful when one only wants metadata.
8877 @end table
8878
8879 @section dejudder
8880
8881 Remove judder produced by partially interlaced telecined content.
8882
8883 Judder can be introduced, for instance, by @ref{pullup} filter. If the original
8884 source was partially telecined content then the output of @code{pullup,dejudder}
8885 will have a variable frame rate. May change the recorded frame rate of the
8886 container. Aside from that change, this filter will not affect constant frame
8887 rate video.
8888
8889 The option available in this filter is:
8890 @table @option
8891
8892 @item cycle
8893 Specify the length of the window over which the judder repeats.
8894
8895 Accepts any integer greater than 1. Useful values are:
8896 @table @samp
8897
8898 @item 4
8899 If the original was telecined from 24 to 30 fps (Film to NTSC).
8900
8901 @item 5
8902 If the original was telecined from 25 to 30 fps (PAL to NTSC).
8903
8904 @item 20
8905 If a mixture of the two.
8906 @end table
8907
8908 The default is @samp{4}.
8909 @end table
8910
8911 @section delogo
8912
8913 Suppress a TV station logo by a simple interpolation of the surrounding
8914 pixels. Just set a rectangle covering the logo and watch it disappear
8915 (and sometimes something even uglier appear - your mileage may vary).
8916
8917 It accepts the following parameters:
8918 @table @option
8919
8920 @item x
8921 @item y
8922 Specify the top left corner coordinates of the logo. They must be
8923 specified.
8924
8925 @item w
8926 @item h
8927 Specify the width and height of the logo to clear. They must be
8928 specified.
8929
8930 @item band, t
8931 Specify the thickness of the fuzzy edge of the rectangle (added to
8932 @var{w} and @var{h}). The default value is 1. This option is
8933 deprecated, setting higher values should no longer be necessary and
8934 is not recommended.
8935
8936 @item show
8937 When set to 1, a green rectangle is drawn on the screen to simplify
8938 finding the right @var{x}, @var{y}, @var{w}, and @var{h} parameters.
8939 The default value is 0.
8940
8941 The rectangle is drawn on the outermost pixels which will be (partly)
8942 replaced with interpolated values. The values of the next pixels
8943 immediately outside this rectangle in each direction will be used to
8944 compute the interpolated pixel values inside the rectangle.
8945
8946 @end table
8947
8948 @subsection Examples
8949
8950 @itemize
8951 @item
8952 Set a rectangle covering the area with top left corner coordinates 0,0
8953 and size 100x77, and a band of size 10:
8954 @example
8955 delogo=x=0:y=0:w=100:h=77:band=10
8956 @end example
8957
8958 @end itemize
8959
8960 @anchor{derain}
8961 @section derain
8962
8963 Remove the rain in the input image/video by applying the derain methods based on
8964 convolutional neural networks. Supported models:
8965
8966 @itemize
8967 @item
8968 Recurrent Squeeze-and-Excitation Context Aggregation Net (RESCAN).
8969 See @url{http://openaccess.thecvf.com/content_ECCV_2018/papers/Xia_Li_Recurrent_Squeeze-and-Excitation_Context_ECCV_2018_paper.pdf}.
8970 @end itemize
8971
8972 Training as well as model generation scripts are provided in
8973 the repository at @url{https://github.com/XueweiMeng/derain_filter.git}.
8974
8975 Native model files (.model) can be generated from TensorFlow model
8976 files (.pb) by using tools/python/convert.py
8977
8978 The filter accepts the following options:
8979
8980 @table @option
8981 @item filter_type
8982 Specify which filter to use. This option accepts the following values:
8983
8984 @table @samp
8985 @item derain
8986 Derain filter. To conduct derain filter, you need to use a derain model.
8987
8988 @item dehaze
8989 Dehaze filter. To conduct dehaze filter, you need to use a dehaze model.
8990 @end table
8991 Default value is @samp{derain}.
8992
8993 @item dnn_backend
8994 Specify which DNN backend to use for model loading and execution. This option accepts
8995 the following values:
8996
8997 @table @samp
8998 @item native
8999 Native implementation of DNN loading and execution.
9000
9001 @item tensorflow
9002 TensorFlow backend. To enable this backend you
9003 need to install the TensorFlow for C library (see
9004 @url{https://www.tensorflow.org/install/install_c}) and configure FFmpeg with
9005 @code{--enable-libtensorflow}
9006 @end table
9007 Default value is @samp{native}.
9008
9009 @item model
9010 Set path to model file specifying network architecture and its parameters.
9011 Note that different backends use different file formats. TensorFlow and native
9012 backend can load files for only its format.
9013 @end table
9014
9015 It can also be finished with @ref{dnn_processing} filter.
9016
9017 @section deshake
9018
9019 Attempt to fix small changes in horizontal and/or vertical shift. This
9020 filter helps remove camera shake from hand-holding a camera, bumping a
9021 tripod, moving on a vehicle, etc.
9022
9023 The filter accepts the following options:
9024
9025 @table @option
9026
9027 @item x
9028 @item y
9029 @item w
9030 @item h
9031 Specify a rectangular area where to limit the search for motion
9032 vectors.
9033 If desired the search for motion vectors can be limited to a
9034 rectangular area of the frame defined by its top left corner, width
9035 and height. These parameters have the same meaning as the drawbox
9036 filter which can be used to visualise the position of the bounding
9037 box.
9038
9039 This is useful when simultaneous movement of subjects within the frame
9040 might be confused for camera motion by the motion vector search.
9041
9042 If any or all of @var{x}, @var{y}, @var{w} and @var{h} are set to -1
9043 then the full frame is used. This allows later options to be set
9044 without specifying the bounding box for the motion vector search.
9045
9046 Default - search the whole frame.
9047
9048 @item rx
9049 @item ry
9050 Specify the maximum extent of movement in x and y directions in the
9051 range 0-64 pixels. Default 16.
9052
9053 @item edge
9054 Specify how to generate pixels to fill blanks at the edge of the
9055 frame. Available values are:
9056 @table @samp
9057 @item blank, 0
9058 Fill zeroes at blank locations
9059 @item original, 1
9060 Original image at blank locations
9061 @item clamp, 2
9062 Extruded edge value at blank locations
9063 @item mirror, 3
9064 Mirrored edge at blank locations
9065 @end table
9066 Default value is @samp{mirror}.
9067
9068 @item blocksize
9069 Specify the blocksize to use for motion search. Range 4-128 pixels,
9070 default 8.
9071
9072 @item contrast
9073 Specify the contrast threshold for blocks. Only blocks with more than
9074 the specified contrast (difference between darkest and lightest
9075 pixels) will be considered. Range 1-255, default 125.
9076
9077 @item search
9078 Specify the search strategy. Available values are:
9079 @table @samp
9080 @item exhaustive, 0
9081 Set exhaustive search
9082 @item less, 1
9083 Set less exhaustive search.
9084 @end table
9085 Default value is @samp{exhaustive}.
9086
9087 @item filename
9088 If set then a detailed log of the motion search is written to the
9089 specified file.
9090
9091 @end table
9092
9093 @section despill
9094
9095 Remove unwanted contamination of foreground colors, caused by reflected color of
9096 greenscreen or bluescreen.
9097
9098 This filter accepts the following options:
9099
9100 @table @option
9101 @item type
9102 Set what type of despill to use.
9103
9104 @item mix
9105 Set how spillmap will be generated.
9106
9107 @item expand
9108 Set how much to get rid of still remaining spill.
9109
9110 @item red
9111 Controls amount of red in spill area.
9112
9113 @item green
9114 Controls amount of green in spill area.
9115 Should be -1 for greenscreen.
9116
9117 @item blue
9118 Controls amount of blue in spill area.
9119 Should be -1 for bluescreen.
9120
9121 @item brightness
9122 Controls brightness of spill area, preserving colors.
9123
9124 @item alpha
9125 Modify alpha from generated spillmap.
9126 @end table
9127
9128 @section detelecine
9129
9130 Apply an exact inverse of the telecine operation. It requires a predefined
9131 pattern specified using the pattern option which must be the same as that passed
9132 to the telecine filter.
9133
9134 This filter accepts the following options:
9135
9136 @table @option
9137 @item first_field
9138 @table @samp
9139 @item top, t
9140 top field first
9141 @item bottom, b
9142 bottom field first
9143 The default value is @code{top}.
9144 @end table
9145
9146 @item pattern
9147 A string of numbers representing the pulldown pattern you wish to apply.
9148 The default value is @code{23}.
9149
9150 @item start_frame
9151 A number representing position of the first frame with respect to the telecine
9152 pattern. This is to be used if the stream is cut. The default value is @code{0}.
9153 @end table
9154
9155 @section dilation
9156
9157 Apply dilation effect to the video.
9158
9159 This filter replaces the pixel by the local(3x3) maximum.
9160
9161 It accepts the following options:
9162
9163 @table @option
9164 @item threshold0
9165 @item threshold1
9166 @item threshold2
9167 @item threshold3
9168 Limit the maximum change for each plane, default is 65535.
9169 If 0, plane will remain unchanged.
9170
9171 @item coordinates
9172 Flag which specifies the pixel to refer to. Default is 255 i.e. all eight
9173 pixels are used.
9174
9175 Flags to local 3x3 coordinates maps like this:
9176
9177     1 2 3
9178     4   5
9179     6 7 8
9180 @end table
9181
9182 @subsection Commands
9183
9184 This filter supports the all above options as @ref{commands}.
9185
9186 @section displace
9187
9188 Displace pixels as indicated by second and third input stream.
9189
9190 It takes three input streams and outputs one stream, the first input is the
9191 source, and second and third input are displacement maps.
9192
9193 The second input specifies how much to displace pixels along the
9194 x-axis, while the third input specifies how much to displace pixels
9195 along the y-axis.
9196 If one of displacement map streams terminates, last frame from that
9197 displacement map will be used.
9198
9199 Note that once generated, displacements maps can be reused over and over again.
9200
9201 A description of the accepted options follows.
9202
9203 @table @option
9204 @item edge
9205 Set displace behavior for pixels that are out of range.
9206
9207 Available values are:
9208 @table @samp
9209 @item blank
9210 Missing pixels are replaced by black pixels.
9211
9212 @item smear
9213 Adjacent pixels will spread out to replace missing pixels.
9214
9215 @item wrap
9216 Out of range pixels are wrapped so they point to pixels of other side.
9217
9218 @item mirror
9219 Out of range pixels will be replaced with mirrored pixels.
9220 @end table
9221 Default is @samp{smear}.
9222
9223 @end table
9224
9225 @subsection Examples
9226
9227 @itemize
9228 @item
9229 Add ripple effect to rgb input of video size hd720:
9230 @example
9231 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
9232 @end example
9233
9234 @item
9235 Add wave effect to rgb input of video size hd720:
9236 @example
9237 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
9238 @end example
9239 @end itemize
9240
9241 @anchor{dnn_processing}
9242 @section dnn_processing
9243
9244 Do image processing with deep neural networks. It works together with another filter
9245 which converts the pixel format of the Frame to what the dnn network requires.
9246
9247 The filter accepts the following options:
9248
9249 @table @option
9250 @item dnn_backend
9251 Specify which DNN backend to use for model loading and execution. This option accepts
9252 the following values:
9253
9254 @table @samp
9255 @item native
9256 Native implementation of DNN loading and execution.
9257
9258 @item tensorflow
9259 TensorFlow backend. To enable this backend you
9260 need to install the TensorFlow for C library (see
9261 @url{https://www.tensorflow.org/install/install_c}) and configure FFmpeg with
9262 @code{--enable-libtensorflow}
9263 @end table
9264
9265 Default value is @samp{native}.
9266
9267 @item model
9268 Set path to model file specifying network architecture and its parameters.
9269 Note that different backends use different file formats. TensorFlow and native
9270 backend can load files for only its format.
9271
9272 Native model file (.model) can be generated from TensorFlow model file (.pb) by using tools/python/convert.py
9273
9274 @item input
9275 Set the input name of the dnn network.
9276
9277 @item output
9278 Set the output name of the dnn network.
9279
9280 @end table
9281
9282 @subsection Examples
9283
9284 @itemize
9285 @item
9286 Remove rain in rgb24 frame with can.pb (see @ref{derain} filter):
9287 @example
9288 ./ffmpeg -i rain.jpg -vf format=rgb24,dnn_processing=dnn_backend=tensorflow:model=can.pb:input=x:output=y derain.jpg
9289 @end example
9290
9291 @item
9292 Halve the pixel value of the frame with format gray32f:
9293 @example
9294 ffmpeg -i input.jpg -vf format=grayf32,dnn_processing=model=halve_gray_float.model:input=dnn_in:output=dnn_out:dnn_backend=native -y out.native.png
9295 @end example
9296
9297 @item
9298 Handle the Y channel with srcnn.pb (see @ref{sr} filter) for frame with yuv420p (planar YUV formats supported):
9299 @example
9300 ./ffmpeg -i 480p.jpg -vf format=yuv420p,scale=w=iw*2:h=ih*2,dnn_processing=dnn_backend=tensorflow:model=srcnn.pb:input=x:output=y -y srcnn.jpg
9301 @end example
9302
9303 @item
9304 Handle the Y channel with espcn.pb (see @ref{sr} filter), which changes frame size, for format yuv420p (planar YUV formats supported):
9305 @example
9306 ./ffmpeg -i 480p.jpg -vf format=yuv420p,dnn_processing=dnn_backend=tensorflow:model=espcn.pb:input=x:output=y -y tmp.espcn.jpg
9307 @end example
9308
9309 @end itemize
9310
9311 @section drawbox
9312
9313 Draw a colored box on the input image.
9314
9315 It accepts the following parameters:
9316
9317 @table @option
9318 @item x
9319 @item y
9320 The expressions which specify the top left corner coordinates of the box. It defaults to 0.
9321
9322 @item width, w
9323 @item height, h
9324 The expressions which specify the width and height of the box; if 0 they are interpreted as
9325 the input width and height. It defaults to 0.
9326
9327 @item color, c
9328 Specify the color of the box to write. For the general syntax of this option,
9329 check the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}. If the special
9330 value @code{invert} is used, the box edge color is the same as the
9331 video with inverted luma.
9332
9333 @item thickness, t
9334 The expression which sets the thickness of the box edge.
9335 A value of @code{fill} will create a filled box. Default value is @code{3}.
9336
9337 See below for the list of accepted constants.
9338
9339 @item replace
9340 Applicable if the input has alpha. With value @code{1}, the pixels of the painted box
9341 will overwrite the video's color and alpha pixels.
9342 Default is @code{0}, which composites the box onto the input, leaving the video's alpha intact.
9343 @end table
9344
9345 The parameters for @var{x}, @var{y}, @var{w} and @var{h} and @var{t} are expressions containing the
9346 following constants:
9347
9348 @table @option
9349 @item dar
9350 The input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}.
9351
9352 @item hsub
9353 @item vsub
9354 horizontal and vertical chroma subsample values. For example for the
9355 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
9356
9357 @item in_h, ih
9358 @item in_w, iw
9359 The input width and height.
9360
9361 @item sar
9362 The input sample aspect ratio.
9363
9364 @item x
9365 @item y
9366 The x and y offset coordinates where the box is drawn.
9367
9368 @item w
9369 @item h
9370 The width and height of the drawn box.
9371
9372 @item t
9373 The thickness of the drawn box.
9374
9375 These constants allow the @var{x}, @var{y}, @var{w}, @var{h} and @var{t} expressions to refer to
9376 each other, so you may for example specify @code{y=x/dar} or @code{h=w/dar}.
9377
9378 @end table
9379
9380 @subsection Examples
9381
9382 @itemize
9383 @item
9384 Draw a black box around the edge of the input image:
9385 @example
9386 drawbox
9387 @end example
9388
9389 @item
9390 Draw a box with color red and an opacity of 50%:
9391 @example
9392 drawbox=10:20:200:60:red@@0.5
9393 @end example
9394
9395 The previous example can be specified as:
9396 @example
9397 drawbox=x=10:y=20:w=200:h=60:color=red@@0.5
9398 @end example
9399
9400 @item
9401 Fill the box with pink color:
9402 @example
9403 drawbox=x=10:y=10:w=100:h=100:color=pink@@0.5:t=fill
9404 @end example
9405
9406 @item
9407 Draw a 2-pixel red 2.40:1 mask:
9408 @example
9409 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
9410 @end example
9411 @end itemize
9412
9413 @subsection Commands
9414 This filter supports same commands as options.
9415 The command accepts the same syntax of the corresponding option.
9416
9417 If the specified expression is not valid, it is kept at its current
9418 value.
9419
9420 @anchor{drawgraph}
9421 @section drawgraph
9422 Draw a graph using input video metadata.
9423
9424 It accepts the following parameters:
9425
9426 @table @option
9427 @item m1
9428 Set 1st frame metadata key from which metadata values will be used to draw a graph.
9429
9430 @item fg1
9431 Set 1st foreground color expression.
9432
9433 @item m2
9434 Set 2nd frame metadata key from which metadata values will be used to draw a graph.
9435
9436 @item fg2
9437 Set 2nd foreground color expression.
9438
9439 @item m3
9440 Set 3rd frame metadata key from which metadata values will be used to draw a graph.
9441
9442 @item fg3
9443 Set 3rd foreground color expression.
9444
9445 @item m4
9446 Set 4th frame metadata key from which metadata values will be used to draw a graph.
9447
9448 @item fg4
9449 Set 4th foreground color expression.
9450
9451 @item min
9452 Set minimal value of metadata value.
9453
9454 @item max
9455 Set maximal value of metadata value.
9456
9457 @item bg
9458 Set graph background color. Default is white.
9459
9460 @item mode
9461 Set graph mode.
9462
9463 Available values for mode is:
9464 @table @samp
9465 @item bar
9466 @item dot
9467 @item line
9468 @end table
9469
9470 Default is @code{line}.
9471
9472 @item slide
9473 Set slide mode.
9474
9475 Available values for slide is:
9476 @table @samp
9477 @item frame
9478 Draw new frame when right border is reached.
9479
9480 @item replace
9481 Replace old columns with new ones.
9482
9483 @item scroll
9484 Scroll from right to left.
9485
9486 @item rscroll
9487 Scroll from left to right.
9488
9489 @item picture
9490 Draw single picture.
9491 @end table
9492
9493 Default is @code{frame}.
9494
9495 @item size
9496 Set size of graph video. For the syntax of this option, check the
9497 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
9498 The default value is @code{900x256}.
9499
9500 @item rate, r
9501 Set the output frame rate. Default value is @code{25}.
9502
9503 The foreground color expressions can use the following variables:
9504 @table @option
9505 @item MIN
9506 Minimal value of metadata value.
9507
9508 @item MAX
9509 Maximal value of metadata value.
9510
9511 @item VAL
9512 Current metadata key value.
9513 @end table
9514
9515 The color is defined as 0xAABBGGRR.
9516 @end table
9517
9518 Example using metadata from @ref{signalstats} filter:
9519 @example
9520 signalstats,drawgraph=lavfi.signalstats.YAVG:min=0:max=255
9521 @end example
9522
9523 Example using metadata from @ref{ebur128} filter:
9524 @example
9525 ebur128=metadata=1,adrawgraph=lavfi.r128.M:min=-120:max=5
9526 @end example
9527
9528 @section drawgrid
9529
9530 Draw a grid on the input image.
9531
9532 It accepts the following parameters:
9533
9534 @table @option
9535 @item x
9536 @item y
9537 The expressions which specify the coordinates of some point of grid intersection (meant to configure offset). Both default to 0.
9538
9539 @item width, w
9540 @item height, h
9541 The expressions which specify the width and height of the grid cell, if 0 they are interpreted as the
9542 input width and height, respectively, minus @code{thickness}, so image gets
9543 framed. Default to 0.
9544
9545 @item color, c
9546 Specify the color of the grid. For the general syntax of this option,
9547 check the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}. If the special
9548 value @code{invert} is used, the grid color is the same as the
9549 video with inverted luma.
9550
9551 @item thickness, t
9552 The expression which sets the thickness of the grid line. Default value is @code{1}.
9553
9554 See below for the list of accepted constants.
9555
9556 @item replace
9557 Applicable if the input has alpha. With @code{1} the pixels of the painted grid
9558 will overwrite the video's color and alpha pixels.
9559 Default is @code{0}, which composites the grid onto the input, leaving the video's alpha intact.
9560 @end table
9561
9562 The parameters for @var{x}, @var{y}, @var{w} and @var{h} and @var{t} are expressions containing the
9563 following constants:
9564
9565 @table @option
9566 @item dar
9567 The input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}.
9568
9569 @item hsub
9570 @item vsub
9571 horizontal and vertical chroma subsample values. For example for the
9572 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
9573
9574 @item in_h, ih
9575 @item in_w, iw
9576 The input grid cell width and height.
9577
9578 @item sar
9579 The input sample aspect ratio.
9580
9581 @item x
9582 @item y
9583 The x and y coordinates of some point of grid intersection (meant to configure offset).
9584
9585 @item w
9586 @item h
9587 The width and height of the drawn cell.
9588
9589 @item t
9590 The thickness of the drawn cell.
9591
9592 These constants allow the @var{x}, @var{y}, @var{w}, @var{h} and @var{t} expressions to refer to
9593 each other, so you may for example specify @code{y=x/dar} or @code{h=w/dar}.
9594
9595 @end table
9596
9597 @subsection Examples
9598
9599 @itemize
9600 @item
9601 Draw a grid with cell 100x100 pixels, thickness 2 pixels, with color red and an opacity of 50%:
9602 @example
9603 drawgrid=width=100:height=100:thickness=2:color=red@@0.5
9604 @end example
9605
9606 @item
9607 Draw a white 3x3 grid with an opacity of 50%:
9608 @example
9609 drawgrid=w=iw/3:h=ih/3:t=2:c=white@@0.5
9610 @end example
9611 @end itemize
9612
9613 @subsection Commands
9614 This filter supports same commands as options.
9615 The command accepts the same syntax of the corresponding option.
9616
9617 If the specified expression is not valid, it is kept at its current
9618 value.
9619
9620 @anchor{drawtext}
9621 @section drawtext
9622
9623 Draw a text string or text from a specified file on top of a video, using the
9624 libfreetype library.
9625
9626 To enable compilation of this filter, you need to configure FFmpeg with
9627 @code{--enable-libfreetype}.
9628 To enable default font fallback and the @var{font} option you need to
9629 configure FFmpeg with @code{--enable-libfontconfig}.
9630 To enable the @var{text_shaping} option, you need to configure FFmpeg with
9631 @code{--enable-libfribidi}.
9632
9633 @subsection Syntax
9634
9635 It accepts the following parameters:
9636
9637 @table @option
9638
9639 @item box
9640 Used to draw a box around text using the background color.
9641 The value must be either 1 (enable) or 0 (disable).
9642 The default value of @var{box} is 0.
9643
9644 @item boxborderw
9645 Set the width of the border to be drawn around the box using @var{boxcolor}.
9646 The default value of @var{boxborderw} is 0.
9647
9648 @item boxcolor
9649 The color to be used for drawing box around text. For the syntax of this
9650 option, check the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
9651
9652 The default value of @var{boxcolor} is "white".
9653
9654 @item line_spacing
9655 Set the line spacing in pixels of the border to be drawn around the box using @var{box}.
9656 The default value of @var{line_spacing} is 0.
9657
9658 @item borderw
9659 Set the width of the border to be drawn around the text using @var{bordercolor}.
9660 The default value of @var{borderw} is 0.
9661
9662 @item bordercolor
9663 Set the color to be used for drawing border around text. For the syntax of this
9664 option, check the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
9665
9666 The default value of @var{bordercolor} is "black".
9667
9668 @item expansion
9669 Select how the @var{text} is expanded. Can be either @code{none},
9670 @code{strftime} (deprecated) or
9671 @code{normal} (default). See the @ref{drawtext_expansion, Text expansion} section
9672 below for details.
9673
9674 @item basetime
9675 Set a start time for the count. Value is in microseconds. Only applied
9676 in the deprecated strftime expansion mode. To emulate in normal expansion
9677 mode use the @code{pts} function, supplying the start time (in seconds)
9678 as the second argument.
9679
9680 @item fix_bounds
9681 If true, check and fix text coords to avoid clipping.
9682
9683 @item fontcolor
9684 The color to be used for drawing fonts. For the syntax of this option, check
9685 the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
9686
9687 The default value of @var{fontcolor} is "black".
9688
9689 @item fontcolor_expr
9690 String which is expanded the same way as @var{text} to obtain dynamic
9691 @var{fontcolor} value. By default this option has empty value and is not
9692 processed. When this option is set, it overrides @var{fontcolor} option.
9693
9694 @item font
9695 The font family to be used for drawing text. By default Sans.
9696
9697 @item fontfile
9698 The font file to be used for drawing text. The path must be included.
9699 This parameter is mandatory if the fontconfig support is disabled.
9700
9701 @item alpha
9702 Draw the text applying alpha blending. The value can
9703 be a number between 0.0 and 1.0.
9704 The expression accepts the same variables @var{x, y} as well.
9705 The default value is 1.
9706 Please see @var{fontcolor_expr}.
9707
9708 @item fontsize
9709 The font size to be used for drawing text.
9710 The default value of @var{fontsize} is 16.
9711
9712 @item text_shaping
9713 If set to 1, attempt to shape the text (for example, reverse the order of
9714 right-to-left text and join Arabic characters) before drawing it.
9715 Otherwise, just draw the text exactly as given.
9716 By default 1 (if supported).
9717
9718 @item ft_load_flags
9719 The flags to be used for loading the fonts.
9720
9721 The flags map the corresponding flags supported by libfreetype, and are
9722 a combination of the following values:
9723 @table @var
9724 @item default
9725 @item no_scale
9726 @item no_hinting
9727 @item render
9728 @item no_bitmap
9729 @item vertical_layout
9730 @item force_autohint
9731 @item crop_bitmap
9732 @item pedantic
9733 @item ignore_global_advance_width
9734 @item no_recurse
9735 @item ignore_transform
9736 @item monochrome
9737 @item linear_design
9738 @item no_autohint
9739 @end table
9740
9741 Default value is "default".
9742
9743 For more information consult the documentation for the FT_LOAD_*
9744 libfreetype flags.
9745
9746 @item shadowcolor
9747 The color to be used for drawing a shadow behind the drawn text. For the
9748 syntax of this option, check the @ref{color syntax,,"Color" section in the
9749 ffmpeg-utils manual,ffmpeg-utils}.
9750
9751 The default value of @var{shadowcolor} is "black".
9752
9753 @item shadowx
9754 @item shadowy
9755 The x and y offsets for the text shadow position with respect to the
9756 position of the text. They can be either positive or negative
9757 values. The default value for both is "0".
9758
9759 @item start_number
9760 The starting frame number for the n/frame_num variable. The default value
9761 is "0".
9762
9763 @item tabsize
9764 The size in number of spaces to use for rendering the tab.
9765 Default value is 4.
9766
9767 @item timecode
9768 Set the initial timecode representation in "hh:mm:ss[:;.]ff"
9769 format. It can be used with or without text parameter. @var{timecode_rate}
9770 option must be specified.
9771
9772 @item timecode_rate, rate, r
9773 Set the timecode frame rate (timecode only). Value will be rounded to nearest
9774 integer. Minimum value is "1".
9775 Drop-frame timecode is supported for frame rates 30 & 60.
9776
9777 @item tc24hmax
9778 If set to 1, the output of the timecode option will wrap around at 24 hours.
9779 Default is 0 (disabled).
9780
9781 @item text
9782 The text string to be drawn. The text must be a sequence of UTF-8
9783 encoded characters.
9784 This parameter is mandatory if no file is specified with the parameter
9785 @var{textfile}.
9786
9787 @item textfile
9788 A text file containing text to be drawn. The text must be a sequence
9789 of UTF-8 encoded characters.
9790
9791 This parameter is mandatory if no text string is specified with the
9792 parameter @var{text}.
9793
9794 If both @var{text} and @var{textfile} are specified, an error is thrown.
9795
9796 @item reload
9797 If set to 1, the @var{textfile} will be reloaded before each frame.
9798 Be sure to update it atomically, or it may be read partially, or even fail.
9799
9800 @item x
9801 @item y
9802 The expressions which specify the offsets where text will be drawn
9803 within the video frame. They are relative to the top/left border of the
9804 output image.
9805
9806 The default value of @var{x} and @var{y} is "0".
9807
9808 See below for the list of accepted constants and functions.
9809 @end table
9810
9811 The parameters for @var{x} and @var{y} are expressions containing the
9812 following constants and functions:
9813
9814 @table @option
9815 @item dar
9816 input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}
9817
9818 @item hsub
9819 @item vsub
9820 horizontal and vertical chroma subsample values. For example for the
9821 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
9822
9823 @item line_h, lh
9824 the height of each text line
9825
9826 @item main_h, h, H
9827 the input height
9828
9829 @item main_w, w, W
9830 the input width
9831
9832 @item max_glyph_a, ascent
9833 the maximum distance from the baseline to the highest/upper grid
9834 coordinate used to place a glyph outline point, for all the rendered
9835 glyphs.
9836 It is a positive value, due to the grid's orientation with the Y axis
9837 upwards.
9838
9839 @item max_glyph_d, descent
9840 the maximum distance from the baseline to the lowest grid coordinate
9841 used to place a glyph outline point, for all the rendered glyphs.
9842 This is a negative value, due to the grid's orientation, with the Y axis
9843 upwards.
9844
9845 @item max_glyph_h
9846 maximum glyph height, that is the maximum height for all the glyphs
9847 contained in the rendered text, it is equivalent to @var{ascent} -
9848 @var{descent}.
9849
9850 @item max_glyph_w
9851 maximum glyph width, that is the maximum width for all the glyphs
9852 contained in the rendered text
9853
9854 @item n
9855 the number of input frame, starting from 0
9856
9857 @item rand(min, max)
9858 return a random number included between @var{min} and @var{max}
9859
9860 @item sar
9861 The input sample aspect ratio.
9862
9863 @item t
9864 timestamp expressed in seconds, NAN if the input timestamp is unknown
9865
9866 @item text_h, th
9867 the height of the rendered text
9868
9869 @item text_w, tw
9870 the width of the rendered text
9871
9872 @item x
9873 @item y
9874 the x and y offset coordinates where the text is drawn.
9875
9876 These parameters allow the @var{x} and @var{y} expressions to refer
9877 to each other, so you can for example specify @code{y=x/dar}.
9878
9879 @item pict_type
9880 A one character description of the current frame's picture type.
9881
9882 @item pkt_pos
9883 The current packet's position in the input file or stream
9884 (in bytes, from the start of the input). A value of -1 indicates
9885 this info is not available.
9886
9887 @item pkt_duration
9888 The current packet's duration, in seconds.
9889
9890 @item pkt_size
9891 The current packet's size (in bytes).
9892 @end table
9893
9894 @anchor{drawtext_expansion}
9895 @subsection Text expansion
9896
9897 If @option{expansion} is set to @code{strftime},
9898 the filter recognizes strftime() sequences in the provided text and
9899 expands them accordingly. Check the documentation of strftime(). This
9900 feature is deprecated.
9901
9902 If @option{expansion} is set to @code{none}, the text is printed verbatim.
9903
9904 If @option{expansion} is set to @code{normal} (which is the default),
9905 the following expansion mechanism is used.
9906
9907 The backslash character @samp{\}, followed by any character, always expands to
9908 the second character.
9909
9910 Sequences of the form @code{%@{...@}} are expanded. The text between the
9911 braces is a function name, possibly followed by arguments separated by ':'.
9912 If the arguments contain special characters or delimiters (':' or '@}'),
9913 they should be escaped.
9914
9915 Note that they probably must also be escaped as the value for the
9916 @option{text} option in the filter argument string and as the filter
9917 argument in the filtergraph description, and possibly also for the shell,
9918 that makes up to four levels of escaping; using a text file avoids these
9919 problems.
9920
9921 The following functions are available:
9922
9923 @table @command
9924
9925 @item expr, e
9926 The expression evaluation result.
9927
9928 It must take one argument specifying the expression to be evaluated,
9929 which accepts the same constants and functions as the @var{x} and
9930 @var{y} values. Note that not all constants should be used, for
9931 example the text size is not known when evaluating the expression, so
9932 the constants @var{text_w} and @var{text_h} will have an undefined
9933 value.
9934
9935 @item expr_int_format, eif
9936 Evaluate the expression's value and output as formatted integer.
9937
9938 The first argument is the expression to be evaluated, just as for the @var{expr} function.
9939 The second argument specifies the output format. Allowed values are @samp{x},
9940 @samp{X}, @samp{d} and @samp{u}. They are treated exactly as in the
9941 @code{printf} function.
9942 The third parameter is optional and sets the number of positions taken by the output.
9943 It can be used to add padding with zeros from the left.
9944
9945 @item gmtime
9946 The time at which the filter is running, expressed in UTC.
9947 It can accept an argument: a strftime() format string.
9948
9949 @item localtime
9950 The time at which the filter is running, expressed in the local time zone.
9951 It can accept an argument: a strftime() format string.
9952
9953 @item metadata
9954 Frame metadata. Takes one or two arguments.
9955
9956 The first argument is mandatory and specifies the metadata key.
9957
9958 The second argument is optional and specifies a default value, used when the
9959 metadata key is not found or empty.
9960
9961 Available metadata can be identified by inspecting entries
9962 starting with TAG included within each frame section
9963 printed by running @code{ffprobe -show_frames}.
9964
9965 String metadata generated in filters leading to
9966 the drawtext filter are also available.
9967
9968 @item n, frame_num
9969 The frame number, starting from 0.
9970
9971 @item pict_type
9972 A one character description of the current picture type.
9973
9974 @item pts
9975 The timestamp of the current frame.
9976 It can take up to three arguments.
9977
9978 The first argument is the format of the timestamp; it defaults to @code{flt}
9979 for seconds as a decimal number with microsecond accuracy; @code{hms} stands
9980 for a formatted @var{[-]HH:MM:SS.mmm} timestamp with millisecond accuracy.
9981 @code{gmtime} stands for the timestamp of the frame formatted as UTC time;
9982 @code{localtime} stands for the timestamp of the frame formatted as
9983 local time zone time.
9984
9985 The second argument is an offset added to the timestamp.
9986
9987 If the format is set to @code{hms}, a third argument @code{24HH} may be
9988 supplied to present the hour part of the formatted timestamp in 24h format
9989 (00-23).
9990
9991 If the format is set to @code{localtime} or @code{gmtime},
9992 a third argument may be supplied: a strftime() format string.
9993 By default, @var{YYYY-MM-DD HH:MM:SS} format will be used.
9994 @end table
9995
9996 @subsection Commands
9997
9998 This filter supports altering parameters via commands:
9999 @table @option
10000 @item reinit
10001 Alter existing filter parameters.
10002
10003 Syntax for the argument is the same as for filter invocation, e.g.
10004
10005 @example
10006 fontsize=56:fontcolor=green:text='Hello World'
10007 @end example
10008
10009 Full filter invocation with sendcmd would look like this:
10010
10011 @example
10012 sendcmd=c='56.0 drawtext reinit fontsize=56\:fontcolor=green\:text=Hello\\ World'
10013 @end example
10014 @end table
10015
10016 If the entire argument can't be parsed or applied as valid values then the filter will
10017 continue with its existing parameters.
10018
10019 @subsection Examples
10020
10021 @itemize
10022 @item
10023 Draw "Test Text" with font FreeSerif, using the default values for the
10024 optional parameters.
10025
10026 @example
10027 drawtext="fontfile=/usr/share/fonts/truetype/freefont/FreeSerif.ttf: text='Test Text'"
10028 @end example
10029
10030 @item
10031 Draw 'Test Text' with font FreeSerif of size 24 at position x=100
10032 and y=50 (counting from the top-left corner of the screen), text is
10033 yellow with a red box around it. Both the text and the box have an
10034 opacity of 20%.
10035
10036 @example
10037 drawtext="fontfile=/usr/share/fonts/truetype/freefont/FreeSerif.ttf: text='Test Text':\
10038           x=100: y=50: fontsize=24: fontcolor=yellow@@0.2: box=1: boxcolor=red@@0.2"
10039 @end example
10040
10041 Note that the double quotes are not necessary if spaces are not used
10042 within the parameter list.
10043
10044 @item
10045 Show the text at the center of the video frame:
10046 @example
10047 drawtext="fontsize=30:fontfile=FreeSerif.ttf:text='hello world':x=(w-text_w)/2:y=(h-text_h)/2"
10048 @end example
10049
10050 @item
10051 Show the text at a random position, switching to a new position every 30 seconds:
10052 @example
10053 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)"
10054 @end example
10055
10056 @item
10057 Show a text line sliding from right to left in the last row of the video
10058 frame. The file @file{LONG_LINE} is assumed to contain a single line
10059 with no newlines.
10060 @example
10061 drawtext="fontsize=15:fontfile=FreeSerif.ttf:text=LONG_LINE:y=h-line_h:x=-50*t"
10062 @end example
10063
10064 @item
10065 Show the content of file @file{CREDITS} off the bottom of the frame and scroll up.
10066 @example
10067 drawtext="fontsize=20:fontfile=FreeSerif.ttf:textfile=CREDITS:y=h-20*t"
10068 @end example
10069
10070 @item
10071 Draw a single green letter "g", at the center of the input video.
10072 The glyph baseline is placed at half screen height.
10073 @example
10074 drawtext="fontsize=60:fontfile=FreeSerif.ttf:fontcolor=green:text=g:x=(w-max_glyph_w)/2:y=h/2-ascent"
10075 @end example
10076
10077 @item
10078 Show text for 1 second every 3 seconds:
10079 @example
10080 drawtext="fontfile=FreeSerif.ttf:fontcolor=white:x=100:y=x/dar:enable=lt(mod(t\,3)\,1):text='blink'"
10081 @end example
10082
10083 @item
10084 Use fontconfig to set the font. Note that the colons need to be escaped.
10085 @example
10086 drawtext='fontfile=Linux Libertine O-40\:style=Semibold:text=FFmpeg'
10087 @end example
10088
10089 @item
10090 Print the date of a real-time encoding (see strftime(3)):
10091 @example
10092 drawtext='fontfile=FreeSans.ttf:text=%@{localtime\:%a %b %d %Y@}'
10093 @end example
10094
10095 @item
10096 Show text fading in and out (appearing/disappearing):
10097 @example
10098 #!/bin/sh
10099 DS=1.0 # display start
10100 DE=10.0 # display end
10101 FID=1.5 # fade in duration
10102 FOD=5 # fade out duration
10103 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 @}"
10104 @end example
10105
10106 @item
10107 Horizontally align multiple separate texts. Note that @option{max_glyph_a}
10108 and the @option{fontsize} value are included in the @option{y} offset.
10109 @example
10110 drawtext=fontfile=FreeSans.ttf:text=DOG:fontsize=24:x=10:y=20+24-max_glyph_a,
10111 drawtext=fontfile=FreeSans.ttf:text=cow:fontsize=24:x=80:y=20+24-max_glyph_a
10112 @end example
10113
10114 @item
10115 Plot special @var{lavf.image2dec.source_basename} metadata onto each frame if
10116 such metadata exists. Otherwise, plot the string "NA". Note that image2 demuxer
10117 must have option @option{-export_path_metadata 1} for the special metadata fields
10118 to be available for filters.
10119 @example
10120 drawtext="fontsize=20:fontcolor=white:fontfile=FreeSans.ttf:text='%@{metadata\:lavf.image2dec.source_basename\:NA@}':x=10:y=10"
10121 @end example
10122
10123 @end itemize
10124
10125 For more information about libfreetype, check:
10126 @url{http://www.freetype.org/}.
10127
10128 For more information about fontconfig, check:
10129 @url{http://freedesktop.org/software/fontconfig/fontconfig-user.html}.
10130
10131 For more information about libfribidi, check:
10132 @url{http://fribidi.org/}.
10133
10134 @section edgedetect
10135
10136 Detect and draw edges. The filter uses the Canny Edge Detection algorithm.
10137
10138 The filter accepts the following options:
10139
10140 @table @option
10141 @item low
10142 @item high
10143 Set low and high threshold values used by the Canny thresholding
10144 algorithm.
10145
10146 The high threshold selects the "strong" edge pixels, which are then
10147 connected through 8-connectivity with the "weak" edge pixels selected
10148 by the low threshold.
10149
10150 @var{low} and @var{high} threshold values must be chosen in the range
10151 [0,1], and @var{low} should be lesser or equal to @var{high}.
10152
10153 Default value for @var{low} is @code{20/255}, and default value for @var{high}
10154 is @code{50/255}.
10155
10156 @item mode
10157 Define the drawing mode.
10158
10159 @table @samp
10160 @item wires
10161 Draw white/gray wires on black background.
10162
10163 @item colormix
10164 Mix the colors to create a paint/cartoon effect.
10165
10166 @item canny
10167 Apply Canny edge detector on all selected planes.
10168 @end table
10169 Default value is @var{wires}.
10170
10171 @item planes
10172 Select planes for filtering. By default all available planes are filtered.
10173 @end table
10174
10175 @subsection Examples
10176
10177 @itemize
10178 @item
10179 Standard edge detection with custom values for the hysteresis thresholding:
10180 @example
10181 edgedetect=low=0.1:high=0.4
10182 @end example
10183
10184 @item
10185 Painting effect without thresholding:
10186 @example
10187 edgedetect=mode=colormix:high=0
10188 @end example
10189 @end itemize
10190
10191 @section elbg
10192
10193 Apply a posterize effect using the ELBG (Enhanced LBG) algorithm.
10194
10195 For each input image, the filter will compute the optimal mapping from
10196 the input to the output given the codebook length, that is the number
10197 of distinct output colors.
10198
10199 This filter accepts the following options.
10200
10201 @table @option
10202 @item codebook_length, l
10203 Set codebook length. The value must be a positive integer, and
10204 represents the number of distinct output colors. Default value is 256.
10205
10206 @item nb_steps, n
10207 Set the maximum number of iterations to apply for computing the optimal
10208 mapping. The higher the value the better the result and the higher the
10209 computation time. Default value is 1.
10210
10211 @item seed, s
10212 Set a random seed, must be an integer included between 0 and
10213 UINT32_MAX. If not specified, or if explicitly set to -1, the filter
10214 will try to use a good random seed on a best effort basis.
10215
10216 @item pal8
10217 Set pal8 output pixel format. This option does not work with codebook
10218 length greater than 256.
10219 @end table
10220
10221 @section entropy
10222
10223 Measure graylevel entropy in histogram of color channels of video frames.
10224
10225 It accepts the following parameters:
10226
10227 @table @option
10228 @item mode
10229 Can be either @var{normal} or @var{diff}. Default is @var{normal}.
10230
10231 @var{diff} mode measures entropy of histogram delta values, absolute differences
10232 between neighbour histogram values.
10233 @end table
10234
10235 @section eq
10236 Set brightness, contrast, saturation and approximate gamma adjustment.
10237
10238 The filter accepts the following options:
10239
10240 @table @option
10241 @item contrast
10242 Set the contrast expression. The value must be a float value in range
10243 @code{-1000.0} to @code{1000.0}. The default value is "1".
10244
10245 @item brightness
10246 Set the brightness expression. The value must be a float value in
10247 range @code{-1.0} to @code{1.0}. The default value is "0".
10248
10249 @item saturation
10250 Set the saturation expression. The value must be a float in
10251 range @code{0.0} to @code{3.0}. The default value is "1".
10252
10253 @item gamma
10254 Set the gamma expression. The value must be a float in range
10255 @code{0.1} to @code{10.0}.  The default value is "1".
10256
10257 @item gamma_r
10258 Set the gamma expression for red. The value must be a float in
10259 range @code{0.1} to @code{10.0}. The default value is "1".
10260
10261 @item gamma_g
10262 Set the gamma expression for green. The value must be a float in range
10263 @code{0.1} to @code{10.0}. The default value is "1".
10264
10265 @item gamma_b
10266 Set the gamma expression for blue. The value must be a float in range
10267 @code{0.1} to @code{10.0}. The default value is "1".
10268
10269 @item gamma_weight
10270 Set the gamma weight expression. It can be used to reduce the effect
10271 of a high gamma value on bright image areas, e.g. keep them from
10272 getting overamplified and just plain white. The value must be a float
10273 in range @code{0.0} to @code{1.0}. A value of @code{0.0} turns the
10274 gamma correction all the way down while @code{1.0} leaves it at its
10275 full strength. Default is "1".
10276
10277 @item eval
10278 Set when the expressions for brightness, contrast, saturation and
10279 gamma expressions are evaluated.
10280
10281 It accepts the following values:
10282 @table @samp
10283 @item init
10284 only evaluate expressions once during the filter initialization or
10285 when a command is processed
10286
10287 @item frame
10288 evaluate expressions for each incoming frame
10289 @end table
10290
10291 Default value is @samp{init}.
10292 @end table
10293
10294 The expressions accept the following parameters:
10295 @table @option
10296 @item n
10297 frame count of the input frame starting from 0
10298
10299 @item pos
10300 byte position of the corresponding packet in the input file, NAN if
10301 unspecified
10302
10303 @item r
10304 frame rate of the input video, NAN if the input frame rate is unknown
10305
10306 @item t
10307 timestamp expressed in seconds, NAN if the input timestamp is unknown
10308 @end table
10309
10310 @subsection Commands
10311 The filter supports the following commands:
10312
10313 @table @option
10314 @item contrast
10315 Set the contrast expression.
10316
10317 @item brightness
10318 Set the brightness expression.
10319
10320 @item saturation
10321 Set the saturation expression.
10322
10323 @item gamma
10324 Set the gamma expression.
10325
10326 @item gamma_r
10327 Set the gamma_r expression.
10328
10329 @item gamma_g
10330 Set gamma_g expression.
10331
10332 @item gamma_b
10333 Set gamma_b expression.
10334
10335 @item gamma_weight
10336 Set gamma_weight expression.
10337
10338 The command accepts the same syntax of the corresponding option.
10339
10340 If the specified expression is not valid, it is kept at its current
10341 value.
10342
10343 @end table
10344
10345 @section erosion
10346
10347 Apply erosion effect to the video.
10348
10349 This filter replaces the pixel by the local(3x3) minimum.
10350
10351 It accepts the following options:
10352
10353 @table @option
10354 @item threshold0
10355 @item threshold1
10356 @item threshold2
10357 @item threshold3
10358 Limit the maximum change for each plane, default is 65535.
10359 If 0, plane will remain unchanged.
10360
10361 @item coordinates
10362 Flag which specifies the pixel to refer to. Default is 255 i.e. all eight
10363 pixels are used.
10364
10365 Flags to local 3x3 coordinates maps like this:
10366
10367     1 2 3
10368     4   5
10369     6 7 8
10370 @end table
10371
10372 @subsection Commands
10373
10374 This filter supports the all above options as @ref{commands}.
10375
10376 @section extractplanes
10377
10378 Extract color channel components from input video stream into
10379 separate grayscale video streams.
10380
10381 The filter accepts the following option:
10382
10383 @table @option
10384 @item planes
10385 Set plane(s) to extract.
10386
10387 Available values for planes are:
10388 @table @samp
10389 @item y
10390 @item u
10391 @item v
10392 @item a
10393 @item r
10394 @item g
10395 @item b
10396 @end table
10397
10398 Choosing planes not available in the input will result in an error.
10399 That means you cannot select @code{r}, @code{g}, @code{b} planes
10400 with @code{y}, @code{u}, @code{v} planes at same time.
10401 @end table
10402
10403 @subsection Examples
10404
10405 @itemize
10406 @item
10407 Extract luma, u and v color channel component from input video frame
10408 into 3 grayscale outputs:
10409 @example
10410 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
10411 @end example
10412 @end itemize
10413
10414 @section fade
10415
10416 Apply a fade-in/out effect to the input video.
10417
10418 It accepts the following parameters:
10419
10420 @table @option
10421 @item type, t
10422 The effect type can be either "in" for a fade-in, or "out" for a fade-out
10423 effect.
10424 Default is @code{in}.
10425
10426 @item start_frame, s
10427 Specify the number of the frame to start applying the fade
10428 effect at. Default is 0.
10429
10430 @item nb_frames, n
10431 The number of frames that the fade effect lasts. At the end of the
10432 fade-in effect, the output video will have the same intensity as the input video.
10433 At the end of the fade-out transition, the output video will be filled with the
10434 selected @option{color}.
10435 Default is 25.
10436
10437 @item alpha
10438 If set to 1, fade only alpha channel, if one exists on the input.
10439 Default value is 0.
10440
10441 @item start_time, st
10442 Specify the timestamp (in seconds) of the frame to start to apply the fade
10443 effect. If both start_frame and start_time are specified, the fade will start at
10444 whichever comes last.  Default is 0.
10445
10446 @item duration, d
10447 The number of seconds for which the fade effect has to last. At the end of the
10448 fade-in effect the output video will have the same intensity as the input video,
10449 at the end of the fade-out transition the output video will be filled with the
10450 selected @option{color}.
10451 If both duration and nb_frames are specified, duration is used. Default is 0
10452 (nb_frames is used by default).
10453
10454 @item color, c
10455 Specify the color of the fade. Default is "black".
10456 @end table
10457
10458 @subsection Examples
10459
10460 @itemize
10461 @item
10462 Fade in the first 30 frames of video:
10463 @example
10464 fade=in:0:30
10465 @end example
10466
10467 The command above is equivalent to:
10468 @example
10469 fade=t=in:s=0:n=30
10470 @end example
10471
10472 @item
10473 Fade out the last 45 frames of a 200-frame video:
10474 @example
10475 fade=out:155:45
10476 fade=type=out:start_frame=155:nb_frames=45
10477 @end example
10478
10479 @item
10480 Fade in the first 25 frames and fade out the last 25 frames of a 1000-frame video:
10481 @example
10482 fade=in:0:25, fade=out:975:25
10483 @end example
10484
10485 @item
10486 Make the first 5 frames yellow, then fade in from frame 5-24:
10487 @example
10488 fade=in:5:20:color=yellow
10489 @end example
10490
10491 @item
10492 Fade in alpha over first 25 frames of video:
10493 @example
10494 fade=in:0:25:alpha=1
10495 @end example
10496
10497 @item
10498 Make the first 5.5 seconds black, then fade in for 0.5 seconds:
10499 @example
10500 fade=t=in:st=5.5:d=0.5
10501 @end example
10502
10503 @end itemize
10504
10505 @section fftdnoiz
10506 Denoise frames using 3D FFT (frequency domain filtering).
10507
10508 The filter accepts the following options:
10509
10510 @table @option
10511 @item sigma
10512 Set the noise sigma constant. This sets denoising strength.
10513 Default value is 1. Allowed range is from 0 to 30.
10514 Using very high sigma with low overlap may give blocking artifacts.
10515
10516 @item amount
10517 Set amount of denoising. By default all detected noise is reduced.
10518 Default value is 1. Allowed range is from 0 to 1.
10519
10520 @item block
10521 Set size of block, Default is 4, can be 3, 4, 5 or 6.
10522 Actual size of block in pixels is 2 to power of @var{block}, so by default
10523 block size in pixels is 2^4 which is 16.
10524
10525 @item overlap
10526 Set block overlap. Default is 0.5. Allowed range is from 0.2 to 0.8.
10527
10528 @item prev
10529 Set number of previous frames to use for denoising. By default is set to 0.
10530
10531 @item next
10532 Set number of next frames to to use for denoising. By default is set to 0.
10533
10534 @item planes
10535 Set planes which will be filtered, by default are all available filtered
10536 except alpha.
10537 @end table
10538
10539 @section fftfilt
10540 Apply arbitrary expressions to samples in frequency domain
10541
10542 @table @option
10543 @item dc_Y
10544 Adjust the dc value (gain) of the luma plane of the image. The filter
10545 accepts an integer value in range @code{0} to @code{1000}. The default
10546 value is set to @code{0}.
10547
10548 @item dc_U
10549 Adjust the dc value (gain) of the 1st chroma plane of the image. The
10550 filter accepts an integer value in range @code{0} to @code{1000}. The
10551 default value is set to @code{0}.
10552
10553 @item dc_V
10554 Adjust the dc value (gain) of the 2nd chroma plane of the image. The
10555 filter accepts an integer value in range @code{0} to @code{1000}. The
10556 default value is set to @code{0}.
10557
10558 @item weight_Y
10559 Set the frequency domain weight expression for the luma plane.
10560
10561 @item weight_U
10562 Set the frequency domain weight expression for the 1st chroma plane.
10563
10564 @item weight_V
10565 Set the frequency domain weight expression for the 2nd chroma plane.
10566
10567 @item eval
10568 Set when the expressions are evaluated.
10569
10570 It accepts the following values:
10571 @table @samp
10572 @item init
10573 Only evaluate expressions once during the filter initialization.
10574
10575 @item frame
10576 Evaluate expressions for each incoming frame.
10577 @end table
10578
10579 Default value is @samp{init}.
10580
10581 The filter accepts the following variables:
10582 @item X
10583 @item Y
10584 The coordinates of the current sample.
10585
10586 @item W
10587 @item H
10588 The width and height of the image.
10589
10590 @item N
10591 The number of input frame, starting from 0.
10592 @end table
10593
10594 @subsection Examples
10595
10596 @itemize
10597 @item
10598 High-pass:
10599 @example
10600 fftfilt=dc_Y=128:weight_Y='squish(1-(Y+X)/100)'
10601 @end example
10602
10603 @item
10604 Low-pass:
10605 @example
10606 fftfilt=dc_Y=0:weight_Y='squish((Y+X)/100-1)'
10607 @end example
10608
10609 @item
10610 Sharpen:
10611 @example
10612 fftfilt=dc_Y=0:weight_Y='1+squish(1-(Y+X)/100)'
10613 @end example
10614
10615 @item
10616 Blur:
10617 @example
10618 fftfilt=dc_Y=0:weight_Y='exp(-4 * ((Y+X)/(W+H)))'
10619 @end example
10620
10621 @end itemize
10622
10623 @section field
10624
10625 Extract a single field from an interlaced image using stride
10626 arithmetic to avoid wasting CPU time. The output frames are marked as
10627 non-interlaced.
10628
10629 The filter accepts the following options:
10630
10631 @table @option
10632 @item type
10633 Specify whether to extract the top (if the value is @code{0} or
10634 @code{top}) or the bottom field (if the value is @code{1} or
10635 @code{bottom}).
10636 @end table
10637
10638 @section fieldhint
10639
10640 Create new frames by copying the top and bottom fields from surrounding frames
10641 supplied as numbers by the hint file.
10642
10643 @table @option
10644 @item hint
10645 Set file containing hints: absolute/relative frame numbers.
10646
10647 There must be one line for each frame in a clip. Each line must contain two
10648 numbers separated by the comma, optionally followed by @code{-} or @code{+}.
10649 Numbers supplied on each line of file can not be out of [N-1,N+1] where N
10650 is current frame number for @code{absolute} mode or out of [-1, 1] range
10651 for @code{relative} mode. First number tells from which frame to pick up top
10652 field and second number tells from which frame to pick up bottom field.
10653
10654 If optionally followed by @code{+} output frame will be marked as interlaced,
10655 else if followed by @code{-} output frame will be marked as progressive, else
10656 it will be marked same as input frame.
10657 If optionally followed by @code{t} output frame will use only top field, or in
10658 case of @code{b} it will use only bottom field.
10659 If line starts with @code{#} or @code{;} that line is skipped.
10660
10661 @item mode
10662 Can be item @code{absolute} or @code{relative}. Default is @code{absolute}.
10663 @end table
10664
10665 Example of first several lines of @code{hint} file for @code{relative} mode:
10666 @example
10667 0,0 - # first frame
10668 1,0 - # second frame, use third's frame top field and second's frame bottom field
10669 1,0 - # third frame, use fourth's frame top field and third's frame bottom field
10670 1,0 -
10671 0,0 -
10672 0,0 -
10673 1,0 -
10674 1,0 -
10675 1,0 -
10676 0,0 -
10677 0,0 -
10678 1,0 -
10679 1,0 -
10680 1,0 -
10681 0,0 -
10682 @end example
10683
10684 @section fieldmatch
10685
10686 Field matching filter for inverse telecine. It is meant to reconstruct the
10687 progressive frames from a telecined stream. The filter does not drop duplicated
10688 frames, so to achieve a complete inverse telecine @code{fieldmatch} needs to be
10689 followed by a decimation filter such as @ref{decimate} in the filtergraph.
10690
10691 The separation of the field matching and the decimation is notably motivated by
10692 the possibility of inserting a de-interlacing filter fallback between the two.
10693 If the source has mixed telecined and real interlaced content,
10694 @code{fieldmatch} will not be able to match fields for the interlaced parts.
10695 But these remaining combed frames will be marked as interlaced, and thus can be
10696 de-interlaced by a later filter such as @ref{yadif} before decimation.
10697
10698 In addition to the various configuration options, @code{fieldmatch} can take an
10699 optional second stream, activated through the @option{ppsrc} option. If
10700 enabled, the frames reconstruction will be based on the fields and frames from
10701 this second stream. This allows the first input to be pre-processed in order to
10702 help the various algorithms of the filter, while keeping the output lossless
10703 (assuming the fields are matched properly). Typically, a field-aware denoiser,
10704 or brightness/contrast adjustments can help.
10705
10706 Note that this filter uses the same algorithms as TIVTC/TFM (AviSynth project)
10707 and VIVTC/VFM (VapourSynth project). The later is a light clone of TFM from
10708 which @code{fieldmatch} is based on. While the semantic and usage are very
10709 close, some behaviour and options names can differ.
10710
10711 The @ref{decimate} filter currently only works for constant frame rate input.
10712 If your input has mixed telecined (30fps) and progressive content with a lower
10713 framerate like 24fps use the following filterchain to produce the necessary cfr
10714 stream: @code{dejudder,fps=30000/1001,fieldmatch,decimate}.
10715
10716 The filter accepts the following options:
10717
10718 @table @option
10719 @item order
10720 Specify the assumed field order of the input stream. Available values are:
10721
10722 @table @samp
10723 @item auto
10724 Auto detect parity (use FFmpeg's internal parity value).
10725 @item bff
10726 Assume bottom field first.
10727 @item tff
10728 Assume top field first.
10729 @end table
10730
10731 Note that it is sometimes recommended not to trust the parity announced by the
10732 stream.
10733
10734 Default value is @var{auto}.
10735
10736 @item mode
10737 Set the matching mode or strategy to use. @option{pc} mode is the safest in the
10738 sense that it won't risk creating jerkiness due to duplicate frames when
10739 possible, but if there are bad edits or blended fields it will end up
10740 outputting combed frames when a good match might actually exist. On the other
10741 hand, @option{pcn_ub} mode is the most risky in terms of creating jerkiness,
10742 but will almost always find a good frame if there is one. The other values are
10743 all somewhere in between @option{pc} and @option{pcn_ub} in terms of risking
10744 jerkiness and creating duplicate frames versus finding good matches in sections
10745 with bad edits, orphaned fields, blended fields, etc.
10746
10747 More details about p/c/n/u/b are available in @ref{p/c/n/u/b meaning} section.
10748
10749 Available values are:
10750
10751 @table @samp
10752 @item pc
10753 2-way matching (p/c)
10754 @item pc_n
10755 2-way matching, and trying 3rd match if still combed (p/c + n)
10756 @item pc_u
10757 2-way matching, and trying 3rd match (same order) if still combed (p/c + u)
10758 @item pc_n_ub
10759 2-way matching, trying 3rd match if still combed, and trying 4th/5th matches if
10760 still combed (p/c + n + u/b)
10761 @item pcn
10762 3-way matching (p/c/n)
10763 @item pcn_ub
10764 3-way matching, and trying 4th/5th matches if all 3 of the original matches are
10765 detected as combed (p/c/n + u/b)
10766 @end table
10767
10768 The parenthesis at the end indicate the matches that would be used for that
10769 mode assuming @option{order}=@var{tff} (and @option{field} on @var{auto} or
10770 @var{top}).
10771
10772 In terms of speed @option{pc} mode is by far the fastest and @option{pcn_ub} is
10773 the slowest.
10774
10775 Default value is @var{pc_n}.
10776
10777 @item ppsrc
10778 Mark the main input stream as a pre-processed input, and enable the secondary
10779 input stream as the clean source to pick the fields from. See the filter
10780 introduction for more details. It is similar to the @option{clip2} feature from
10781 VFM/TFM.
10782
10783 Default value is @code{0} (disabled).
10784
10785 @item field
10786 Set the field to match from. It is recommended to set this to the same value as
10787 @option{order} unless you experience matching failures with that setting. In
10788 certain circumstances changing the field that is used to match from can have a
10789 large impact on matching performance. Available values are:
10790
10791 @table @samp
10792 @item auto
10793 Automatic (same value as @option{order}).
10794 @item bottom
10795 Match from the bottom field.
10796 @item top
10797 Match from the top field.
10798 @end table
10799
10800 Default value is @var{auto}.
10801
10802 @item mchroma
10803 Set whether or not chroma is included during the match comparisons. In most
10804 cases it is recommended to leave this enabled. You should set this to @code{0}
10805 only if your clip has bad chroma problems such as heavy rainbowing or other
10806 artifacts. Setting this to @code{0} could also be used to speed things up at
10807 the cost of some accuracy.
10808
10809 Default value is @code{1}.
10810
10811 @item y0
10812 @item y1
10813 These define an exclusion band which excludes the lines between @option{y0} and
10814 @option{y1} from being included in the field matching decision. An exclusion
10815 band can be used to ignore subtitles, a logo, or other things that may
10816 interfere with the matching. @option{y0} sets the starting scan line and
10817 @option{y1} sets the ending line; all lines in between @option{y0} and
10818 @option{y1} (including @option{y0} and @option{y1}) will be ignored. Setting
10819 @option{y0} and @option{y1} to the same value will disable the feature.
10820 @option{y0} and @option{y1} defaults to @code{0}.
10821
10822 @item scthresh
10823 Set the scene change detection threshold as a percentage of maximum change on
10824 the luma plane. Good values are in the @code{[8.0, 14.0]} range. Scene change
10825 detection is only relevant in case @option{combmatch}=@var{sc}.  The range for
10826 @option{scthresh} is @code{[0.0, 100.0]}.
10827
10828 Default value is @code{12.0}.
10829
10830 @item combmatch
10831 When @option{combatch} is not @var{none}, @code{fieldmatch} will take into
10832 account the combed scores of matches when deciding what match to use as the
10833 final match. Available values are:
10834
10835 @table @samp
10836 @item none
10837 No final matching based on combed scores.
10838 @item sc
10839 Combed scores are only used when a scene change is detected.
10840 @item full
10841 Use combed scores all the time.
10842 @end table
10843
10844 Default is @var{sc}.
10845
10846 @item combdbg
10847 Force @code{fieldmatch} to calculate the combed metrics for certain matches and
10848 print them. This setting is known as @option{micout} in TFM/VFM vocabulary.
10849 Available values are:
10850
10851 @table @samp
10852 @item none
10853 No forced calculation.
10854 @item pcn
10855 Force p/c/n calculations.
10856 @item pcnub
10857 Force p/c/n/u/b calculations.
10858 @end table
10859
10860 Default value is @var{none}.
10861
10862 @item cthresh
10863 This is the area combing threshold used for combed frame detection. This
10864 essentially controls how "strong" or "visible" combing must be to be detected.
10865 Larger values mean combing must be more visible and smaller values mean combing
10866 can be less visible or strong and still be detected. Valid settings are from
10867 @code{-1} (every pixel will be detected as combed) to @code{255} (no pixel will
10868 be detected as combed). This is basically a pixel difference value. A good
10869 range is @code{[8, 12]}.
10870
10871 Default value is @code{9}.
10872
10873 @item chroma
10874 Sets whether or not chroma is considered in the combed frame decision.  Only
10875 disable this if your source has chroma problems (rainbowing, etc.) that are
10876 causing problems for the combed frame detection with chroma enabled. Actually,
10877 using @option{chroma}=@var{0} is usually more reliable, except for the case
10878 where there is chroma only combing in the source.
10879
10880 Default value is @code{0}.
10881
10882 @item blockx
10883 @item blocky
10884 Respectively set the x-axis and y-axis size of the window used during combed
10885 frame detection. This has to do with the size of the area in which
10886 @option{combpel} pixels are required to be detected as combed for a frame to be
10887 declared combed. See the @option{combpel} parameter description for more info.
10888 Possible values are any number that is a power of 2 starting at 4 and going up
10889 to 512.
10890
10891 Default value is @code{16}.
10892
10893 @item combpel
10894 The number of combed pixels inside any of the @option{blocky} by
10895 @option{blockx} size blocks on the frame for the frame to be detected as
10896 combed. While @option{cthresh} controls how "visible" the combing must be, this
10897 setting controls "how much" combing there must be in any localized area (a
10898 window defined by the @option{blockx} and @option{blocky} settings) on the
10899 frame. Minimum value is @code{0} and maximum is @code{blocky x blockx} (at
10900 which point no frames will ever be detected as combed). This setting is known
10901 as @option{MI} in TFM/VFM vocabulary.
10902
10903 Default value is @code{80}.
10904 @end table
10905
10906 @anchor{p/c/n/u/b meaning}
10907 @subsection p/c/n/u/b meaning
10908
10909 @subsubsection p/c/n
10910
10911 We assume the following telecined stream:
10912
10913 @example
10914 Top fields:     1 2 2 3 4
10915 Bottom fields:  1 2 3 4 4
10916 @end example
10917
10918 The numbers correspond to the progressive frame the fields relate to. Here, the
10919 first two frames are progressive, the 3rd and 4th are combed, and so on.
10920
10921 When @code{fieldmatch} is configured to run a matching from bottom
10922 (@option{field}=@var{bottom}) this is how this input stream get transformed:
10923
10924 @example
10925 Input stream:
10926                 T     1 2 2 3 4
10927                 B     1 2 3 4 4   <-- matching reference
10928
10929 Matches:              c c n n c
10930
10931 Output stream:
10932                 T     1 2 3 4 4
10933                 B     1 2 3 4 4
10934 @end example
10935
10936 As a result of the field matching, we can see that some frames get duplicated.
10937 To perform a complete inverse telecine, you need to rely on a decimation filter
10938 after this operation. See for instance the @ref{decimate} filter.
10939
10940 The same operation now matching from top fields (@option{field}=@var{top})
10941 looks like this:
10942
10943 @example
10944 Input stream:
10945                 T     1 2 2 3 4   <-- matching reference
10946                 B     1 2 3 4 4
10947
10948 Matches:              c c p p c
10949
10950 Output stream:
10951                 T     1 2 2 3 4
10952                 B     1 2 2 3 4
10953 @end example
10954
10955 In these examples, we can see what @var{p}, @var{c} and @var{n} mean;
10956 basically, they refer to the frame and field of the opposite parity:
10957
10958 @itemize
10959 @item @var{p} matches the field of the opposite parity in the previous frame
10960 @item @var{c} matches the field of the opposite parity in the current frame
10961 @item @var{n} matches the field of the opposite parity in the next frame
10962 @end itemize
10963
10964 @subsubsection u/b
10965
10966 The @var{u} and @var{b} matching are a bit special in the sense that they match
10967 from the opposite parity flag. In the following examples, we assume that we are
10968 currently matching the 2nd frame (Top:2, bottom:2). According to the match, a
10969 'x' is placed above and below each matched fields.
10970
10971 With bottom matching (@option{field}=@var{bottom}):
10972 @example
10973 Match:           c         p           n          b          u
10974
10975                  x       x               x        x          x
10976   Top          1 2 2     1 2 2       1 2 2      1 2 2      1 2 2
10977   Bottom       1 2 3     1 2 3       1 2 3      1 2 3      1 2 3
10978                  x         x           x        x              x
10979
10980 Output frames:
10981                  2          1          2          2          2
10982                  2          2          2          1          3
10983 @end example
10984
10985 With top matching (@option{field}=@var{top}):
10986 @example
10987 Match:           c         p           n          b          u
10988
10989                  x         x           x        x              x
10990   Top          1 2 2     1 2 2       1 2 2      1 2 2      1 2 2
10991   Bottom       1 2 3     1 2 3       1 2 3      1 2 3      1 2 3
10992                  x       x               x        x          x
10993
10994 Output frames:
10995                  2          2          2          1          2
10996                  2          1          3          2          2
10997 @end example
10998
10999 @subsection Examples
11000
11001 Simple IVTC of a top field first telecined stream:
11002 @example
11003 fieldmatch=order=tff:combmatch=none, decimate
11004 @end example
11005
11006 Advanced IVTC, with fallback on @ref{yadif} for still combed frames:
11007 @example
11008 fieldmatch=order=tff:combmatch=full, yadif=deint=interlaced, decimate
11009 @end example
11010
11011 @section fieldorder
11012
11013 Transform the field order of the input video.
11014
11015 It accepts the following parameters:
11016
11017 @table @option
11018
11019 @item order
11020 The output field order. Valid values are @var{tff} for top field first or @var{bff}
11021 for bottom field first.
11022 @end table
11023
11024 The default value is @samp{tff}.
11025
11026 The transformation is done by shifting the picture content up or down
11027 by one line, and filling the remaining line with appropriate picture content.
11028 This method is consistent with most broadcast field order converters.
11029
11030 If the input video is not flagged as being interlaced, or it is already
11031 flagged as being of the required output field order, then this filter does
11032 not alter the incoming video.
11033
11034 It is very useful when converting to or from PAL DV material,
11035 which is bottom field first.
11036
11037 For example:
11038 @example
11039 ffmpeg -i in.vob -vf "fieldorder=bff" out.dv
11040 @end example
11041
11042 @section fifo, afifo
11043
11044 Buffer input images and send them when they are requested.
11045
11046 It is mainly useful when auto-inserted by the libavfilter
11047 framework.
11048
11049 It does not take parameters.
11050
11051 @section fillborders
11052
11053 Fill borders of the input video, without changing video stream dimensions.
11054 Sometimes video can have garbage at the four edges and you may not want to
11055 crop video input to keep size multiple of some number.
11056
11057 This filter accepts the following options:
11058
11059 @table @option
11060 @item left
11061 Number of pixels to fill from left border.
11062
11063 @item right
11064 Number of pixels to fill from right border.
11065
11066 @item top
11067 Number of pixels to fill from top border.
11068
11069 @item bottom
11070 Number of pixels to fill from bottom border.
11071
11072 @item mode
11073 Set fill mode.
11074
11075 It accepts the following values:
11076 @table @samp
11077 @item smear
11078 fill pixels using outermost pixels
11079
11080 @item mirror
11081 fill pixels using mirroring
11082
11083 @item fixed
11084 fill pixels with constant value
11085 @end table
11086
11087 Default is @var{smear}.
11088
11089 @item color
11090 Set color for pixels in fixed mode. Default is @var{black}.
11091 @end table
11092
11093 @subsection Commands
11094 This filter supports same @ref{commands} as options.
11095 The command accepts the same syntax of the corresponding option.
11096
11097 If the specified expression is not valid, it is kept at its current
11098 value.
11099
11100 @section find_rect
11101
11102 Find a rectangular object
11103
11104 It accepts the following options:
11105
11106 @table @option
11107 @item object
11108 Filepath of the object image, needs to be in gray8.
11109
11110 @item threshold
11111 Detection threshold, default is 0.5.
11112
11113 @item mipmaps
11114 Number of mipmaps, default is 3.
11115
11116 @item xmin, ymin, xmax, ymax
11117 Specifies the rectangle in which to search.
11118 @end table
11119
11120 @subsection Examples
11121
11122 @itemize
11123 @item
11124 Cover a rectangular object by the supplied image of a given video using @command{ffmpeg}:
11125 @example
11126 ffmpeg -i file.ts -vf find_rect=newref.pgm,cover_rect=cover.jpg:mode=cover new.mkv
11127 @end example
11128 @end itemize
11129
11130 @section floodfill
11131
11132 Flood area with values of same pixel components with another values.
11133
11134 It accepts the following options:
11135 @table @option
11136 @item x
11137 Set pixel x coordinate.
11138
11139 @item y
11140 Set pixel y coordinate.
11141
11142 @item s0
11143 Set source #0 component value.
11144
11145 @item s1
11146 Set source #1 component value.
11147
11148 @item s2
11149 Set source #2 component value.
11150
11151 @item s3
11152 Set source #3 component value.
11153
11154 @item d0
11155 Set destination #0 component value.
11156
11157 @item d1
11158 Set destination #1 component value.
11159
11160 @item d2
11161 Set destination #2 component value.
11162
11163 @item d3
11164 Set destination #3 component value.
11165 @end table
11166
11167 @anchor{format}
11168 @section format
11169
11170 Convert the input video to one of the specified pixel formats.
11171 Libavfilter will try to pick one that is suitable as input to
11172 the next filter.
11173
11174 It accepts the following parameters:
11175 @table @option
11176
11177 @item pix_fmts
11178 A '|'-separated list of pixel format names, such as
11179 "pix_fmts=yuv420p|monow|rgb24".
11180
11181 @end table
11182
11183 @subsection Examples
11184
11185 @itemize
11186 @item
11187 Convert the input video to the @var{yuv420p} format
11188 @example
11189 format=pix_fmts=yuv420p
11190 @end example
11191
11192 Convert the input video to any of the formats in the list
11193 @example
11194 format=pix_fmts=yuv420p|yuv444p|yuv410p
11195 @end example
11196 @end itemize
11197
11198 @anchor{fps}
11199 @section fps
11200
11201 Convert the video to specified constant frame rate by duplicating or dropping
11202 frames as necessary.
11203
11204 It accepts the following parameters:
11205 @table @option
11206
11207 @item fps
11208 The desired output frame rate. The default is @code{25}.
11209
11210 @item start_time
11211 Assume the first PTS should be the given value, in seconds. This allows for
11212 padding/trimming at the start of stream. By default, no assumption is made
11213 about the first frame's expected PTS, so no padding or trimming is done.
11214 For example, this could be set to 0 to pad the beginning with duplicates of
11215 the first frame if a video stream starts after the audio stream or to trim any
11216 frames with a negative PTS.
11217
11218 @item round
11219 Timestamp (PTS) rounding method.
11220
11221 Possible values are:
11222 @table @option
11223 @item zero
11224 round towards 0
11225 @item inf
11226 round away from 0
11227 @item down
11228 round towards -infinity
11229 @item up
11230 round towards +infinity
11231 @item near
11232 round to nearest
11233 @end table
11234 The default is @code{near}.
11235
11236 @item eof_action
11237 Action performed when reading the last frame.
11238
11239 Possible values are:
11240 @table @option
11241 @item round
11242 Use same timestamp rounding method as used for other frames.
11243 @item pass
11244 Pass through last frame if input duration has not been reached yet.
11245 @end table
11246 The default is @code{round}.
11247
11248 @end table
11249
11250 Alternatively, the options can be specified as a flat string:
11251 @var{fps}[:@var{start_time}[:@var{round}]].
11252
11253 See also the @ref{setpts} filter.
11254
11255 @subsection Examples
11256
11257 @itemize
11258 @item
11259 A typical usage in order to set the fps to 25:
11260 @example
11261 fps=fps=25
11262 @end example
11263
11264 @item
11265 Sets the fps to 24, using abbreviation and rounding method to round to nearest:
11266 @example
11267 fps=fps=film:round=near
11268 @end example
11269 @end itemize
11270
11271 @section framepack
11272
11273 Pack two different video streams into a stereoscopic video, setting proper
11274 metadata on supported codecs. The two views should have the same size and
11275 framerate and processing will stop when the shorter video ends. Please note
11276 that you may conveniently adjust view properties with the @ref{scale} and
11277 @ref{fps} filters.
11278
11279 It accepts the following parameters:
11280 @table @option
11281
11282 @item format
11283 The desired packing format. Supported values are:
11284
11285 @table @option
11286
11287 @item sbs
11288 The views are next to each other (default).
11289
11290 @item tab
11291 The views are on top of each other.
11292
11293 @item lines
11294 The views are packed by line.
11295
11296 @item columns
11297 The views are packed by column.
11298
11299 @item frameseq
11300 The views are temporally interleaved.
11301
11302 @end table
11303
11304 @end table
11305
11306 Some examples:
11307
11308 @example
11309 # Convert left and right views into a frame-sequential video
11310 ffmpeg -i LEFT -i RIGHT -filter_complex framepack=frameseq OUTPUT
11311
11312 # Convert views into a side-by-side video with the same output resolution as the input
11313 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
11314 @end example
11315
11316 @section framerate
11317
11318 Change the frame rate by interpolating new video output frames from the source
11319 frames.
11320
11321 This filter is not designed to function correctly with interlaced media. If
11322 you wish to change the frame rate of interlaced media then you are required
11323 to deinterlace before this filter and re-interlace after this filter.
11324
11325 A description of the accepted options follows.
11326
11327 @table @option
11328 @item fps
11329 Specify the output frames per second. This option can also be specified
11330 as a value alone. The default is @code{50}.
11331
11332 @item interp_start
11333 Specify the start of a range where the output frame will be created as a
11334 linear interpolation of two frames. The range is [@code{0}-@code{255}],
11335 the default is @code{15}.
11336
11337 @item interp_end
11338 Specify the end of a range where the output frame will be created as a
11339 linear interpolation of two frames. The range is [@code{0}-@code{255}],
11340 the default is @code{240}.
11341
11342 @item scene
11343 Specify the level at which a scene change is detected as a value between
11344 0 and 100 to indicate a new scene; a low value reflects a low
11345 probability for the current frame to introduce a new scene, while a higher
11346 value means the current frame is more likely to be one.
11347 The default is @code{8.2}.
11348
11349 @item flags
11350 Specify flags influencing the filter process.
11351
11352 Available value for @var{flags} is:
11353
11354 @table @option
11355 @item scene_change_detect, scd
11356 Enable scene change detection using the value of the option @var{scene}.
11357 This flag is enabled by default.
11358 @end table
11359 @end table
11360
11361 @section framestep
11362
11363 Select one frame every N-th frame.
11364
11365 This filter accepts the following option:
11366 @table @option
11367 @item step
11368 Select frame after every @code{step} frames.
11369 Allowed values are positive integers higher than 0. Default value is @code{1}.
11370 @end table
11371
11372 @section freezedetect
11373
11374 Detect frozen video.
11375
11376 This filter logs a message and sets frame metadata when it detects that the
11377 input video has no significant change in content during a specified duration.
11378 Video freeze detection calculates the mean average absolute difference of all
11379 the components of video frames and compares it to a noise floor.
11380
11381 The printed times and duration are expressed in seconds. The
11382 @code{lavfi.freezedetect.freeze_start} metadata key is set on the first frame
11383 whose timestamp equals or exceeds the detection duration and it contains the
11384 timestamp of the first frame of the freeze. The
11385 @code{lavfi.freezedetect.freeze_duration} and
11386 @code{lavfi.freezedetect.freeze_end} metadata keys are set on the first frame
11387 after the freeze.
11388
11389 The filter accepts the following options:
11390
11391 @table @option
11392 @item noise, n
11393 Set noise tolerance. Can be specified in dB (in case "dB" is appended to the
11394 specified value) or as a difference ratio between 0 and 1. Default is -60dB, or
11395 0.001.
11396
11397 @item duration, d
11398 Set freeze duration until notification (default is 2 seconds).
11399 @end table
11400
11401 @section freezeframes
11402
11403 Freeze video frames.
11404
11405 This filter freezes video frames using frame from 2nd input.
11406
11407 The filter accepts the following options:
11408
11409 @table @option
11410 @item first
11411 Set number of first frame from which to start freeze.
11412
11413 @item last
11414 Set number of last frame from which to end freeze.
11415
11416 @item replace
11417 Set number of frame from 2nd input which will be used instead of replaced frames.
11418 @end table
11419
11420 @anchor{frei0r}
11421 @section frei0r
11422
11423 Apply a frei0r effect to the input video.
11424
11425 To enable the compilation of this filter, you need to install the frei0r
11426 header and configure FFmpeg with @code{--enable-frei0r}.
11427
11428 It accepts the following parameters:
11429
11430 @table @option
11431
11432 @item filter_name
11433 The name of the frei0r effect to load. If the environment variable
11434 @env{FREI0R_PATH} is defined, the frei0r effect is searched for in each of the
11435 directories specified by the colon-separated list in @env{FREI0R_PATH}.
11436 Otherwise, the standard frei0r paths are searched, in this order:
11437 @file{HOME/.frei0r-1/lib/}, @file{/usr/local/lib/frei0r-1/},
11438 @file{/usr/lib/frei0r-1/}.
11439
11440 @item filter_params
11441 A '|'-separated list of parameters to pass to the frei0r effect.
11442
11443 @end table
11444
11445 A frei0r effect parameter can be a boolean (its value is either
11446 "y" or "n"), a double, a color (specified as
11447 @var{R}/@var{G}/@var{B}, where @var{R}, @var{G}, and @var{B} are floating point
11448 numbers between 0.0 and 1.0, inclusive) or a color description as specified in the
11449 @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils},
11450 a position (specified as @var{X}/@var{Y}, where
11451 @var{X} and @var{Y} are floating point numbers) and/or a string.
11452
11453 The number and types of parameters depend on the loaded effect. If an
11454 effect parameter is not specified, the default value is set.
11455
11456 @subsection Examples
11457
11458 @itemize
11459 @item
11460 Apply the distort0r effect, setting the first two double parameters:
11461 @example
11462 frei0r=filter_name=distort0r:filter_params=0.5|0.01
11463 @end example
11464
11465 @item
11466 Apply the colordistance effect, taking a color as the first parameter:
11467 @example
11468 frei0r=colordistance:0.2/0.3/0.4
11469 frei0r=colordistance:violet
11470 frei0r=colordistance:0x112233
11471 @end example
11472
11473 @item
11474 Apply the perspective effect, specifying the top left and top right image
11475 positions:
11476 @example
11477 frei0r=perspective:0.2/0.2|0.8/0.2
11478 @end example
11479 @end itemize
11480
11481 For more information, see
11482 @url{http://frei0r.dyne.org}
11483
11484 @section fspp
11485
11486 Apply fast and simple postprocessing. It is a faster version of @ref{spp}.
11487
11488 It splits (I)DCT into horizontal/vertical passes. Unlike the simple post-
11489 processing filter, one of them is performed once per block, not per pixel.
11490 This allows for much higher speed.
11491
11492 The filter accepts the following options:
11493
11494 @table @option
11495 @item quality
11496 Set quality. This option defines the number of levels for averaging. It accepts
11497 an integer in the range 4-5. Default value is @code{4}.
11498
11499 @item qp
11500 Force a constant quantization parameter. It accepts an integer in range 0-63.
11501 If not set, the filter will use the QP from the video stream (if available).
11502
11503 @item strength
11504 Set filter strength. It accepts an integer in range -15 to 32. Lower values mean
11505 more details but also more artifacts, while higher values make the image smoother
11506 but also blurrier. Default value is @code{0} âˆ’ PSNR optimal.
11507
11508 @item use_bframe_qp
11509 Enable the use of the QP from the B-Frames if set to @code{1}. Using this
11510 option may cause flicker since the B-Frames have often larger QP. Default is
11511 @code{0} (not enabled).
11512
11513 @end table
11514
11515 @section gblur
11516
11517 Apply Gaussian blur filter.
11518
11519 The filter accepts the following options:
11520
11521 @table @option
11522 @item sigma
11523 Set horizontal sigma, standard deviation of Gaussian blur. Default is @code{0.5}.
11524
11525 @item steps
11526 Set number of steps for Gaussian approximation. Default is @code{1}.
11527
11528 @item planes
11529 Set which planes to filter. By default all planes are filtered.
11530
11531 @item sigmaV
11532 Set vertical sigma, if negative it will be same as @code{sigma}.
11533 Default is @code{-1}.
11534 @end table
11535
11536 @subsection Commands
11537 This filter supports same commands as options.
11538 The command accepts the same syntax of the corresponding option.
11539
11540 If the specified expression is not valid, it is kept at its current
11541 value.
11542
11543 @section geq
11544
11545 Apply generic equation to each pixel.
11546
11547 The filter accepts the following options:
11548
11549 @table @option
11550 @item lum_expr, lum
11551 Set the luminance expression.
11552 @item cb_expr, cb
11553 Set the chrominance blue expression.
11554 @item cr_expr, cr
11555 Set the chrominance red expression.
11556 @item alpha_expr, a
11557 Set the alpha expression.
11558 @item red_expr, r
11559 Set the red expression.
11560 @item green_expr, g
11561 Set the green expression.
11562 @item blue_expr, b
11563 Set the blue expression.
11564 @end table
11565
11566 The colorspace is selected according to the specified options. If one
11567 of the @option{lum_expr}, @option{cb_expr}, or @option{cr_expr}
11568 options is specified, the filter will automatically select a YCbCr
11569 colorspace. If one of the @option{red_expr}, @option{green_expr}, or
11570 @option{blue_expr} options is specified, it will select an RGB
11571 colorspace.
11572
11573 If one of the chrominance expression is not defined, it falls back on the other
11574 one. If no alpha expression is specified it will evaluate to opaque value.
11575 If none of chrominance expressions are specified, they will evaluate
11576 to the luminance expression.
11577
11578 The expressions can use the following variables and functions:
11579
11580 @table @option
11581 @item N
11582 The sequential number of the filtered frame, starting from @code{0}.
11583
11584 @item X
11585 @item Y
11586 The coordinates of the current sample.
11587
11588 @item W
11589 @item H
11590 The width and height of the image.
11591
11592 @item SW
11593 @item SH
11594 Width and height scale depending on the currently filtered plane. It is the
11595 ratio between the corresponding luma plane number of pixels and the current
11596 plane ones. E.g. for YUV4:2:0 the values are @code{1,1} for the luma plane, and
11597 @code{0.5,0.5} for chroma planes.
11598
11599 @item T
11600 Time of the current frame, expressed in seconds.
11601
11602 @item p(x, y)
11603 Return the value of the pixel at location (@var{x},@var{y}) of the current
11604 plane.
11605
11606 @item lum(x, y)
11607 Return the value of the pixel at location (@var{x},@var{y}) of the luminance
11608 plane.
11609
11610 @item cb(x, y)
11611 Return the value of the pixel at location (@var{x},@var{y}) of the
11612 blue-difference chroma plane. Return 0 if there is no such plane.
11613
11614 @item cr(x, y)
11615 Return the value of the pixel at location (@var{x},@var{y}) of the
11616 red-difference chroma plane. Return 0 if there is no such plane.
11617
11618 @item r(x, y)
11619 @item g(x, y)
11620 @item b(x, y)
11621 Return the value of the pixel at location (@var{x},@var{y}) of the
11622 red/green/blue component. Return 0 if there is no such component.
11623
11624 @item alpha(x, y)
11625 Return the value of the pixel at location (@var{x},@var{y}) of the alpha
11626 plane. Return 0 if there is no such plane.
11627
11628 @item psum(x,y), lumsum(x, y), cbsum(x,y), crsum(x,y), rsum(x,y), gsum(x,y), bsum(x,y), alphasum(x,y)
11629 Sum of sample values in the rectangle from (0,0) to (x,y), this allows obtaining
11630 sums of samples within a rectangle. See the functions without the sum postfix.
11631
11632 @item interpolation
11633 Set one of interpolation methods:
11634 @table @option
11635 @item nearest, n
11636 @item bilinear, b
11637 @end table
11638 Default is bilinear.
11639 @end table
11640
11641 For functions, if @var{x} and @var{y} are outside the area, the value will be
11642 automatically clipped to the closer edge.
11643
11644 Please note that this filter can use multiple threads in which case each slice
11645 will have its own expression state. If you want to use only a single expression
11646 state because your expressions depend on previous state then you should limit
11647 the number of filter threads to 1.
11648
11649 @subsection Examples
11650
11651 @itemize
11652 @item
11653 Flip the image horizontally:
11654 @example
11655 geq=p(W-X\,Y)
11656 @end example
11657
11658 @item
11659 Generate a bidimensional sine wave, with angle @code{PI/3} and a
11660 wavelength of 100 pixels:
11661 @example
11662 geq=128 + 100*sin(2*(PI/100)*(cos(PI/3)*(X-50*T) + sin(PI/3)*Y)):128:128
11663 @end example
11664
11665 @item
11666 Generate a fancy enigmatic moving light:
11667 @example
11668 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
11669 @end example
11670
11671 @item
11672 Generate a quick emboss effect:
11673 @example
11674 format=gray,geq=lum_expr='(p(X,Y)+(256-p(X-4,Y-4)))/2'
11675 @end example
11676
11677 @item
11678 Modify RGB components depending on pixel position:
11679 @example
11680 geq=r='X/W*r(X,Y)':g='(1-X/W)*g(X,Y)':b='(H-Y)/H*b(X,Y)'
11681 @end example
11682
11683 @item
11684 Create a radial gradient that is the same size as the input (also see
11685 the @ref{vignette} filter):
11686 @example
11687 geq=lum=255*gauss((X/W-0.5)*3)*gauss((Y/H-0.5)*3)/gauss(0)/gauss(0),format=gray
11688 @end example
11689 @end itemize
11690
11691 @section gradfun
11692
11693 Fix the banding artifacts that are sometimes introduced into nearly flat
11694 regions by truncation to 8-bit color depth.
11695 Interpolate the gradients that should go where the bands are, and
11696 dither them.
11697
11698 It is designed for playback only.  Do not use it prior to
11699 lossy compression, because compression tends to lose the dither and
11700 bring back the bands.
11701
11702 It accepts the following parameters:
11703
11704 @table @option
11705
11706 @item strength
11707 The maximum amount by which the filter will change any one pixel. This is also
11708 the threshold for detecting nearly flat regions. Acceptable values range from
11709 .51 to 64; the default value is 1.2. Out-of-range values will be clipped to the
11710 valid range.
11711
11712 @item radius
11713 The neighborhood to fit the gradient to. A larger radius makes for smoother
11714 gradients, but also prevents the filter from modifying the pixels near detailed
11715 regions. Acceptable values are 8-32; the default value is 16. Out-of-range
11716 values will be clipped to the valid range.
11717
11718 @end table
11719
11720 Alternatively, the options can be specified as a flat string:
11721 @var{strength}[:@var{radius}]
11722
11723 @subsection Examples
11724
11725 @itemize
11726 @item
11727 Apply the filter with a @code{3.5} strength and radius of @code{8}:
11728 @example
11729 gradfun=3.5:8
11730 @end example
11731
11732 @item
11733 Specify radius, omitting the strength (which will fall-back to the default
11734 value):
11735 @example
11736 gradfun=radius=8
11737 @end example
11738
11739 @end itemize
11740
11741 @anchor{graphmonitor}
11742 @section graphmonitor
11743 Show various filtergraph stats.
11744
11745 With this filter one can debug complete filtergraph.
11746 Especially issues with links filling with queued frames.
11747
11748 The filter accepts the following options:
11749
11750 @table @option
11751 @item size, s
11752 Set video output size. Default is @var{hd720}.
11753
11754 @item opacity, o
11755 Set video opacity. Default is @var{0.9}. Allowed range is from @var{0} to @var{1}.
11756
11757 @item mode, m
11758 Set output mode, can be @var{fulll} or @var{compact}.
11759 In @var{compact} mode only filters with some queued frames have displayed stats.
11760
11761 @item flags, f
11762 Set flags which enable which stats are shown in video.
11763
11764 Available values for flags are:
11765 @table @samp
11766 @item queue
11767 Display number of queued frames in each link.
11768
11769 @item frame_count_in
11770 Display number of frames taken from filter.
11771
11772 @item frame_count_out
11773 Display number of frames given out from filter.
11774
11775 @item pts
11776 Display current filtered frame pts.
11777
11778 @item time
11779 Display current filtered frame time.
11780
11781 @item timebase
11782 Display time base for filter link.
11783
11784 @item format
11785 Display used format for filter link.
11786
11787 @item size
11788 Display video size or number of audio channels in case of audio used by filter link.
11789
11790 @item rate
11791 Display video frame rate or sample rate in case of audio used by filter link.
11792 @end table
11793
11794 @item rate, r
11795 Set upper limit for video rate of output stream, Default value is @var{25}.
11796 This guarantee that output video frame rate will not be higher than this value.
11797 @end table
11798
11799 @section greyedge
11800 A color constancy variation filter which estimates scene illumination via grey edge algorithm
11801 and corrects the scene colors accordingly.
11802
11803 See: @url{https://staff.science.uva.nl/th.gevers/pub/GeversTIP07.pdf}
11804
11805 The filter accepts the following options:
11806
11807 @table @option
11808 @item difford
11809 The order of differentiation to be applied on the scene. Must be chosen in the range
11810 [0,2] and default value is 1.
11811
11812 @item minknorm
11813 The Minkowski parameter to be used for calculating the Minkowski distance. Must
11814 be chosen in the range [0,20] and default value is 1. Set to 0 for getting
11815 max value instead of calculating Minkowski distance.
11816
11817 @item sigma
11818 The standard deviation of Gaussian blur to be applied on the scene. Must be
11819 chosen in the range [0,1024.0] and default value = 1. floor( @var{sigma} * break_off_sigma(3) )
11820 can't be equal to 0 if @var{difford} is greater than 0.
11821 @end table
11822
11823 @subsection Examples
11824 @itemize
11825
11826 @item
11827 Grey Edge:
11828 @example
11829 greyedge=difford=1:minknorm=5:sigma=2
11830 @end example
11831
11832 @item
11833 Max Edge:
11834 @example
11835 greyedge=difford=1:minknorm=0:sigma=2
11836 @end example
11837
11838 @end itemize
11839
11840 @anchor{haldclut}
11841 @section haldclut
11842
11843 Apply a Hald CLUT to a video stream.
11844
11845 First input is the video stream to process, and second one is the Hald CLUT.
11846 The Hald CLUT input can be a simple picture or a complete video stream.
11847
11848 The filter accepts the following options:
11849
11850 @table @option
11851 @item shortest
11852 Force termination when the shortest input terminates. Default is @code{0}.
11853 @item repeatlast
11854 Continue applying the last CLUT after the end of the stream. A value of
11855 @code{0} disable the filter after the last frame of the CLUT is reached.
11856 Default is @code{1}.
11857 @end table
11858
11859 @code{haldclut} also has the same interpolation options as @ref{lut3d} (both
11860 filters share the same internals).
11861
11862 This filter also supports the @ref{framesync} options.
11863
11864 More information about the Hald CLUT can be found on Eskil Steenberg's website
11865 (Hald CLUT author) at @url{http://www.quelsolaar.com/technology/clut.html}.
11866
11867 @subsection Workflow examples
11868
11869 @subsubsection Hald CLUT video stream
11870
11871 Generate an identity Hald CLUT stream altered with various effects:
11872 @example
11873 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
11874 @end example
11875
11876 Note: make sure you use a lossless codec.
11877
11878 Then use it with @code{haldclut} to apply it on some random stream:
11879 @example
11880 ffmpeg -f lavfi -i mandelbrot -i clut.nut -filter_complex '[0][1] haldclut' -t 20 mandelclut.mkv
11881 @end example
11882
11883 The Hald CLUT will be applied to the 10 first seconds (duration of
11884 @file{clut.nut}), then the latest picture of that CLUT stream will be applied
11885 to the remaining frames of the @code{mandelbrot} stream.
11886
11887 @subsubsection Hald CLUT with preview
11888
11889 A Hald CLUT is supposed to be a squared image of @code{Level*Level*Level} by
11890 @code{Level*Level*Level} pixels. For a given Hald CLUT, FFmpeg will select the
11891 biggest possible square starting at the top left of the picture. The remaining
11892 padding pixels (bottom or right) will be ignored. This area can be used to add
11893 a preview of the Hald CLUT.
11894
11895 Typically, the following generated Hald CLUT will be supported by the
11896 @code{haldclut} filter:
11897
11898 @example
11899 ffmpeg -f lavfi -i @ref{haldclutsrc}=8 -vf "
11900    pad=iw+320 [padded_clut];
11901    smptebars=s=320x256, split [a][b];
11902    [padded_clut][a] overlay=W-320:h, curves=color_negative [main];
11903    [main][b] overlay=W-320" -frames:v 1 clut.png
11904 @end example
11905
11906 It contains the original and a preview of the effect of the CLUT: SMPTE color
11907 bars are displayed on the right-top, and below the same color bars processed by
11908 the color changes.
11909
11910 Then, the effect of this Hald CLUT can be visualized with:
11911 @example
11912 ffplay input.mkv -vf "movie=clut.png, [in] haldclut"
11913 @end example
11914
11915 @section hflip
11916
11917 Flip the input video horizontally.
11918
11919 For example, to horizontally flip the input video with @command{ffmpeg}:
11920 @example
11921 ffmpeg -i in.avi -vf "hflip" out.avi
11922 @end example
11923
11924 @section histeq
11925 This filter applies a global color histogram equalization on a
11926 per-frame basis.
11927
11928 It can be used to correct video that has a compressed range of pixel
11929 intensities.  The filter redistributes the pixel intensities to
11930 equalize their distribution across the intensity range. It may be
11931 viewed as an "automatically adjusting contrast filter". This filter is
11932 useful only for correcting degraded or poorly captured source
11933 video.
11934
11935 The filter accepts the following options:
11936
11937 @table @option
11938 @item strength
11939 Determine the amount of equalization to be applied.  As the strength
11940 is reduced, the distribution of pixel intensities more-and-more
11941 approaches that of the input frame. The value must be a float number
11942 in the range [0,1] and defaults to 0.200.
11943
11944 @item intensity
11945 Set the maximum intensity that can generated and scale the output
11946 values appropriately.  The strength should be set as desired and then
11947 the intensity can be limited if needed to avoid washing-out. The value
11948 must be a float number in the range [0,1] and defaults to 0.210.
11949
11950 @item antibanding
11951 Set the antibanding level. If enabled the filter will randomly vary
11952 the luminance of output pixels by a small amount to avoid banding of
11953 the histogram. Possible values are @code{none}, @code{weak} or
11954 @code{strong}. It defaults to @code{none}.
11955 @end table
11956
11957 @anchor{histogram}
11958 @section histogram
11959
11960 Compute and draw a color distribution histogram for the input video.
11961
11962 The computed histogram is a representation of the color component
11963 distribution in an image.
11964
11965 Standard histogram displays the color components distribution in an image.
11966 Displays color graph for each color component. Shows distribution of
11967 the Y, U, V, A or R, G, B components, depending on input format, in the
11968 current frame. Below each graph a color component scale meter is shown.
11969
11970 The filter accepts the following options:
11971
11972 @table @option
11973 @item level_height
11974 Set height of level. Default value is @code{200}.
11975 Allowed range is [50, 2048].
11976
11977 @item scale_height
11978 Set height of color scale. Default value is @code{12}.
11979 Allowed range is [0, 40].
11980
11981 @item display_mode
11982 Set display mode.
11983 It accepts the following values:
11984 @table @samp
11985 @item stack
11986 Per color component graphs are placed below each other.
11987
11988 @item parade
11989 Per color component graphs are placed side by side.
11990
11991 @item overlay
11992 Presents information identical to that in the @code{parade}, except
11993 that the graphs representing color components are superimposed directly
11994 over one another.
11995 @end table
11996 Default is @code{stack}.
11997
11998 @item levels_mode
11999 Set mode. Can be either @code{linear}, or @code{logarithmic}.
12000 Default is @code{linear}.
12001
12002 @item components
12003 Set what color components to display.
12004 Default is @code{7}.
12005
12006 @item fgopacity
12007 Set foreground opacity. Default is @code{0.7}.
12008
12009 @item bgopacity
12010 Set background opacity. Default is @code{0.5}.
12011 @end table
12012
12013 @subsection Examples
12014
12015 @itemize
12016
12017 @item
12018 Calculate and draw histogram:
12019 @example
12020 ffplay -i input -vf histogram
12021 @end example
12022
12023 @end itemize
12024
12025 @anchor{hqdn3d}
12026 @section hqdn3d
12027
12028 This is a high precision/quality 3d denoise filter. It aims to reduce
12029 image noise, producing smooth images and making still images really
12030 still. It should enhance compressibility.
12031
12032 It accepts the following optional parameters:
12033
12034 @table @option
12035 @item luma_spatial
12036 A non-negative floating point number which specifies spatial luma strength.
12037 It defaults to 4.0.
12038
12039 @item chroma_spatial
12040 A non-negative floating point number which specifies spatial chroma strength.
12041 It defaults to 3.0*@var{luma_spatial}/4.0.
12042
12043 @item luma_tmp
12044 A floating point number which specifies luma temporal strength. It defaults to
12045 6.0*@var{luma_spatial}/4.0.
12046
12047 @item chroma_tmp
12048 A floating point number which specifies chroma temporal strength. It defaults to
12049 @var{luma_tmp}*@var{chroma_spatial}/@var{luma_spatial}.
12050 @end table
12051
12052 @subsection Commands
12053 This filter supports same @ref{commands} as options.
12054 The command accepts the same syntax of the corresponding option.
12055
12056 If the specified expression is not valid, it is kept at its current
12057 value.
12058
12059 @anchor{hwdownload}
12060 @section hwdownload
12061
12062 Download hardware frames to system memory.
12063
12064 The input must be in hardware frames, and the output a non-hardware format.
12065 Not all formats will be supported on the output - it may be necessary to insert
12066 an additional @option{format} filter immediately following in the graph to get
12067 the output in a supported format.
12068
12069 @section hwmap
12070
12071 Map hardware frames to system memory or to another device.
12072
12073 This filter has several different modes of operation; which one is used depends
12074 on the input and output formats:
12075 @itemize
12076 @item
12077 Hardware frame input, normal frame output
12078
12079 Map the input frames to system memory and pass them to the output.  If the
12080 original hardware frame is later required (for example, after overlaying
12081 something else on part of it), the @option{hwmap} filter can be used again
12082 in the next mode to retrieve it.
12083 @item
12084 Normal frame input, hardware frame output
12085
12086 If the input is actually a software-mapped hardware frame, then unmap it -
12087 that is, return the original hardware frame.
12088
12089 Otherwise, a device must be provided.  Create new hardware surfaces on that
12090 device for the output, then map them back to the software format at the input
12091 and give those frames to the preceding filter.  This will then act like the
12092 @option{hwupload} filter, but may be able to avoid an additional copy when
12093 the input is already in a compatible format.
12094 @item
12095 Hardware frame input and output
12096
12097 A device must be supplied for the output, either directly or with the
12098 @option{derive_device} option.  The input and output devices must be of
12099 different types and compatible - the exact meaning of this is
12100 system-dependent, but typically it means that they must refer to the same
12101 underlying hardware context (for example, refer to the same graphics card).
12102
12103 If the input frames were originally created on the output device, then unmap
12104 to retrieve the original frames.
12105
12106 Otherwise, map the frames to the output device - create new hardware frames
12107 on the output corresponding to the frames on the input.
12108 @end itemize
12109
12110 The following additional parameters are accepted:
12111
12112 @table @option
12113 @item mode
12114 Set the frame mapping mode.  Some combination of:
12115 @table @var
12116 @item read
12117 The mapped frame should be readable.
12118 @item write
12119 The mapped frame should be writeable.
12120 @item overwrite
12121 The mapping will always overwrite the entire frame.
12122
12123 This may improve performance in some cases, as the original contents of the
12124 frame need not be loaded.
12125 @item direct
12126 The mapping must not involve any copying.
12127
12128 Indirect mappings to copies of frames are created in some cases where either
12129 direct mapping is not possible or it would have unexpected properties.
12130 Setting this flag ensures that the mapping is direct and will fail if that is
12131 not possible.
12132 @end table
12133 Defaults to @var{read+write} if not specified.
12134
12135 @item derive_device @var{type}
12136 Rather than using the device supplied at initialisation, instead derive a new
12137 device of type @var{type} from the device the input frames exist on.
12138
12139 @item reverse
12140 In a hardware to hardware mapping, map in reverse - create frames in the sink
12141 and map them back to the source.  This may be necessary in some cases where
12142 a mapping in one direction is required but only the opposite direction is
12143 supported by the devices being used.
12144
12145 This option is dangerous - it may break the preceding filter in undefined
12146 ways if there are any additional constraints on that filter's output.
12147 Do not use it without fully understanding the implications of its use.
12148 @end table
12149
12150 @anchor{hwupload}
12151 @section hwupload
12152
12153 Upload system memory frames to hardware surfaces.
12154
12155 The device to upload to must be supplied when the filter is initialised.  If
12156 using ffmpeg, select the appropriate device with the @option{-filter_hw_device}
12157 option or with the @option{derive_device} option.  The input and output devices
12158 must be of different types and compatible - the exact meaning of this is
12159 system-dependent, but typically it means that they must refer to the same
12160 underlying hardware context (for example, refer to the same graphics card).
12161
12162 The following additional parameters are accepted:
12163
12164 @table @option
12165 @item derive_device @var{type}
12166 Rather than using the device supplied at initialisation, instead derive a new
12167 device of type @var{type} from the device the input frames exist on.
12168 @end table
12169
12170 @anchor{hwupload_cuda}
12171 @section hwupload_cuda
12172
12173 Upload system memory frames to a CUDA device.
12174
12175 It accepts the following optional parameters:
12176
12177 @table @option
12178 @item device
12179 The number of the CUDA device to use
12180 @end table
12181
12182 @section hqx
12183
12184 Apply a high-quality magnification filter designed for pixel art. This filter
12185 was originally created by Maxim Stepin.
12186
12187 It accepts the following option:
12188
12189 @table @option
12190 @item n
12191 Set the scaling dimension: @code{2} for @code{hq2x}, @code{3} for
12192 @code{hq3x} and @code{4} for @code{hq4x}.
12193 Default is @code{3}.
12194 @end table
12195
12196 @section hstack
12197 Stack input videos horizontally.
12198
12199 All streams must be of same pixel format and of same height.
12200
12201 Note that this filter is faster than using @ref{overlay} and @ref{pad} filter
12202 to create same output.
12203
12204 The filter accepts the following option:
12205
12206 @table @option
12207 @item inputs
12208 Set number of input streams. Default is 2.
12209
12210 @item shortest
12211 If set to 1, force the output to terminate when the shortest input
12212 terminates. Default value is 0.
12213 @end table
12214
12215 @section hue
12216
12217 Modify the hue and/or the saturation of the input.
12218
12219 It accepts the following parameters:
12220
12221 @table @option
12222 @item h
12223 Specify the hue angle as a number of degrees. It accepts an expression,
12224 and defaults to "0".
12225
12226 @item s
12227 Specify the saturation in the [-10,10] range. It accepts an expression and
12228 defaults to "1".
12229
12230 @item H
12231 Specify the hue angle as a number of radians. It accepts an
12232 expression, and defaults to "0".
12233
12234 @item b
12235 Specify the brightness in the [-10,10] range. It accepts an expression and
12236 defaults to "0".
12237 @end table
12238
12239 @option{h} and @option{H} are mutually exclusive, and can't be
12240 specified at the same time.
12241
12242 The @option{b}, @option{h}, @option{H} and @option{s} option values are
12243 expressions containing the following constants:
12244
12245 @table @option
12246 @item n
12247 frame count of the input frame starting from 0
12248
12249 @item pts
12250 presentation timestamp of the input frame expressed in time base units
12251
12252 @item r
12253 frame rate of the input video, NAN if the input frame rate is unknown
12254
12255 @item t
12256 timestamp expressed in seconds, NAN if the input timestamp is unknown
12257
12258 @item tb
12259 time base of the input video
12260 @end table
12261
12262 @subsection Examples
12263
12264 @itemize
12265 @item
12266 Set the hue to 90 degrees and the saturation to 1.0:
12267 @example
12268 hue=h=90:s=1
12269 @end example
12270
12271 @item
12272 Same command but expressing the hue in radians:
12273 @example
12274 hue=H=PI/2:s=1
12275 @end example
12276
12277 @item
12278 Rotate hue and make the saturation swing between 0
12279 and 2 over a period of 1 second:
12280 @example
12281 hue="H=2*PI*t: s=sin(2*PI*t)+1"
12282 @end example
12283
12284 @item
12285 Apply a 3 seconds saturation fade-in effect starting at 0:
12286 @example
12287 hue="s=min(t/3\,1)"
12288 @end example
12289
12290 The general fade-in expression can be written as:
12291 @example
12292 hue="s=min(0\, max((t-START)/DURATION\, 1))"
12293 @end example
12294
12295 @item
12296 Apply a 3 seconds saturation fade-out effect starting at 5 seconds:
12297 @example
12298 hue="s=max(0\, min(1\, (8-t)/3))"
12299 @end example
12300
12301 The general fade-out expression can be written as:
12302 @example
12303 hue="s=max(0\, min(1\, (START+DURATION-t)/DURATION))"
12304 @end example
12305
12306 @end itemize
12307
12308 @subsection Commands
12309
12310 This filter supports the following commands:
12311 @table @option
12312 @item b
12313 @item s
12314 @item h
12315 @item H
12316 Modify the hue and/or the saturation and/or brightness of the input video.
12317 The command accepts the same syntax of the corresponding option.
12318
12319 If the specified expression is not valid, it is kept at its current
12320 value.
12321 @end table
12322
12323 @section hysteresis
12324
12325 Grow first stream into second stream by connecting components.
12326 This makes it possible to build more robust edge masks.
12327
12328 This filter accepts the following options:
12329
12330 @table @option
12331 @item planes
12332 Set which planes will be processed as bitmap, unprocessed planes will be
12333 copied from first stream.
12334 By default value 0xf, all planes will be processed.
12335
12336 @item threshold
12337 Set threshold which is used in filtering. If pixel component value is higher than
12338 this value filter algorithm for connecting components is activated.
12339 By default value is 0.
12340 @end table
12341
12342 The @code{hysteresis} filter also supports the @ref{framesync} options.
12343
12344 @section idet
12345
12346 Detect video interlacing type.
12347
12348 This filter tries to detect if the input frames are interlaced, progressive,
12349 top or bottom field first. It will also try to detect fields that are
12350 repeated between adjacent frames (a sign of telecine).
12351
12352 Single frame detection considers only immediately adjacent frames when classifying each frame.
12353 Multiple frame detection incorporates the classification history of previous frames.
12354
12355 The filter will log these metadata values:
12356
12357 @table @option
12358 @item single.current_frame
12359 Detected type of current frame using single-frame detection. One of:
12360 ``tff'' (top field first), ``bff'' (bottom field first),
12361 ``progressive'', or ``undetermined''
12362
12363 @item single.tff
12364 Cumulative number of frames detected as top field first using single-frame detection.
12365
12366 @item multiple.tff
12367 Cumulative number of frames detected as top field first using multiple-frame detection.
12368
12369 @item single.bff
12370 Cumulative number of frames detected as bottom field first using single-frame detection.
12371
12372 @item multiple.current_frame
12373 Detected type of current frame using multiple-frame detection. One of:
12374 ``tff'' (top field first), ``bff'' (bottom field first),
12375 ``progressive'', or ``undetermined''
12376
12377 @item multiple.bff
12378 Cumulative number of frames detected as bottom field first using multiple-frame detection.
12379
12380 @item single.progressive
12381 Cumulative number of frames detected as progressive using single-frame detection.
12382
12383 @item multiple.progressive
12384 Cumulative number of frames detected as progressive using multiple-frame detection.
12385
12386 @item single.undetermined
12387 Cumulative number of frames that could not be classified using single-frame detection.
12388
12389 @item multiple.undetermined
12390 Cumulative number of frames that could not be classified using multiple-frame detection.
12391
12392 @item repeated.current_frame
12393 Which field in the current frame is repeated from the last. One of ``neither'', ``top'', or ``bottom''.
12394
12395 @item repeated.neither
12396 Cumulative number of frames with no repeated field.
12397
12398 @item repeated.top
12399 Cumulative number of frames with the top field repeated from the previous frame's top field.
12400
12401 @item repeated.bottom
12402 Cumulative number of frames with the bottom field repeated from the previous frame's bottom field.
12403 @end table
12404
12405 The filter accepts the following options:
12406
12407 @table @option
12408 @item intl_thres
12409 Set interlacing threshold.
12410 @item prog_thres
12411 Set progressive threshold.
12412 @item rep_thres
12413 Threshold for repeated field detection.
12414 @item half_life
12415 Number of frames after which a given frame's contribution to the
12416 statistics is halved (i.e., it contributes only 0.5 to its
12417 classification). The default of 0 means that all frames seen are given
12418 full weight of 1.0 forever.
12419 @item analyze_interlaced_flag
12420 When this is not 0 then idet will use the specified number of frames to determine
12421 if the interlaced flag is accurate, it will not count undetermined frames.
12422 If the flag is found to be accurate it will be used without any further
12423 computations, if it is found to be inaccurate it will be cleared without any
12424 further computations. This allows inserting the idet filter as a low computational
12425 method to clean up the interlaced flag
12426 @end table
12427
12428 @section il
12429
12430 Deinterleave or interleave fields.
12431
12432 This filter allows one to process interlaced images fields without
12433 deinterlacing them. Deinterleaving splits the input frame into 2
12434 fields (so called half pictures). Odd lines are moved to the top
12435 half of the output image, even lines to the bottom half.
12436 You can process (filter) them independently and then re-interleave them.
12437
12438 The filter accepts the following options:
12439
12440 @table @option
12441 @item luma_mode, l
12442 @item chroma_mode, c
12443 @item alpha_mode, a
12444 Available values for @var{luma_mode}, @var{chroma_mode} and
12445 @var{alpha_mode} are:
12446
12447 @table @samp
12448 @item none
12449 Do nothing.
12450
12451 @item deinterleave, d
12452 Deinterleave fields, placing one above the other.
12453
12454 @item interleave, i
12455 Interleave fields. Reverse the effect of deinterleaving.
12456 @end table
12457 Default value is @code{none}.
12458
12459 @item luma_swap, ls
12460 @item chroma_swap, cs
12461 @item alpha_swap, as
12462 Swap luma/chroma/alpha fields. Exchange even & odd lines. Default value is @code{0}.
12463 @end table
12464
12465 @subsection Commands
12466
12467 This filter supports the all above options as @ref{commands}.
12468
12469 @section inflate
12470
12471 Apply inflate effect to the video.
12472
12473 This filter replaces the pixel by the local(3x3) average by taking into account
12474 only values higher than the pixel.
12475
12476 It accepts the following options:
12477
12478 @table @option
12479 @item threshold0
12480 @item threshold1
12481 @item threshold2
12482 @item threshold3
12483 Limit the maximum change for each plane, default is 65535.
12484 If 0, plane will remain unchanged.
12485 @end table
12486
12487 @subsection Commands
12488
12489 This filter supports the all above options as @ref{commands}.
12490
12491 @section interlace
12492
12493 Simple interlacing filter from progressive contents. This interleaves upper (or
12494 lower) lines from odd frames with lower (or upper) lines from even frames,
12495 halving the frame rate and preserving image height.
12496
12497 @example
12498    Original        Original             New Frame
12499    Frame 'j'      Frame 'j+1'             (tff)
12500   ==========      ===========       ==================
12501     Line 0  -------------------->    Frame 'j' Line 0
12502     Line 1          Line 1  ---->   Frame 'j+1' Line 1
12503     Line 2 --------------------->    Frame 'j' Line 2
12504     Line 3          Line 3  ---->   Frame 'j+1' Line 3
12505      ...             ...                   ...
12506 New Frame + 1 will be generated by Frame 'j+2' and Frame 'j+3' and so on
12507 @end example
12508
12509 It accepts the following optional parameters:
12510
12511 @table @option
12512 @item scan
12513 This determines whether the interlaced frame is taken from the even
12514 (tff - default) or odd (bff) lines of the progressive frame.
12515
12516 @item lowpass
12517 Vertical lowpass filter to avoid twitter interlacing and
12518 reduce moire patterns.
12519
12520 @table @samp
12521 @item 0, off
12522 Disable vertical lowpass filter
12523
12524 @item 1, linear
12525 Enable linear filter (default)
12526
12527 @item 2, complex
12528 Enable complex filter. This will slightly less reduce twitter and moire
12529 but better retain detail and subjective sharpness impression.
12530
12531 @end table
12532 @end table
12533
12534 @section kerndeint
12535
12536 Deinterlace input video by applying Donald Graft's adaptive kernel
12537 deinterling. Work on interlaced parts of a video to produce
12538 progressive frames.
12539
12540 The description of the accepted parameters follows.
12541
12542 @table @option
12543 @item thresh
12544 Set the threshold which affects the filter's tolerance when
12545 determining if a pixel line must be processed. It must be an integer
12546 in the range [0,255] and defaults to 10. A value of 0 will result in
12547 applying the process on every pixels.
12548
12549 @item map
12550 Paint pixels exceeding the threshold value to white if set to 1.
12551 Default is 0.
12552
12553 @item order
12554 Set the fields order. Swap fields if set to 1, leave fields alone if
12555 0. Default is 0.
12556
12557 @item sharp
12558 Enable additional sharpening if set to 1. Default is 0.
12559
12560 @item twoway
12561 Enable twoway sharpening if set to 1. Default is 0.
12562 @end table
12563
12564 @subsection Examples
12565
12566 @itemize
12567 @item
12568 Apply default values:
12569 @example
12570 kerndeint=thresh=10:map=0:order=0:sharp=0:twoway=0
12571 @end example
12572
12573 @item
12574 Enable additional sharpening:
12575 @example
12576 kerndeint=sharp=1
12577 @end example
12578
12579 @item
12580 Paint processed pixels in white:
12581 @example
12582 kerndeint=map=1
12583 @end example
12584 @end itemize
12585
12586 @section lagfun
12587
12588 Slowly update darker pixels.
12589
12590 This filter makes short flashes of light appear longer.
12591 This filter accepts the following options:
12592
12593 @table @option
12594 @item decay
12595 Set factor for decaying. Default is .95. Allowed range is from 0 to 1.
12596
12597 @item planes
12598 Set which planes to filter. Default is all. Allowed range is from 0 to 15.
12599 @end table
12600
12601 @section lenscorrection
12602
12603 Correct radial lens distortion
12604
12605 This filter can be used to correct for radial distortion as can result from the use
12606 of wide angle lenses, and thereby re-rectify the image. To find the right parameters
12607 one can use tools available for example as part of opencv or simply trial-and-error.
12608 To use opencv use the calibration sample (under samples/cpp) from the opencv sources
12609 and extract the k1 and k2 coefficients from the resulting matrix.
12610
12611 Note that effectively the same filter is available in the open-source tools Krita and
12612 Digikam from the KDE project.
12613
12614 In contrast to the @ref{vignette} filter, which can also be used to compensate lens errors,
12615 this filter corrects the distortion of the image, whereas @ref{vignette} corrects the
12616 brightness distribution, so you may want to use both filters together in certain
12617 cases, though you will have to take care of ordering, i.e. whether vignetting should
12618 be applied before or after lens correction.
12619
12620 @subsection Options
12621
12622 The filter accepts the following options:
12623
12624 @table @option
12625 @item cx
12626 Relative x-coordinate of the focal point of the image, and thereby the center of the
12627 distortion. This value has a range [0,1] and is expressed as fractions of the image
12628 width. Default is 0.5.
12629 @item cy
12630 Relative y-coordinate of the focal point of the image, and thereby the center of the
12631 distortion. This value has a range [0,1] and is expressed as fractions of the image
12632 height. Default is 0.5.
12633 @item k1
12634 Coefficient of the quadratic correction term. This value has a range [-1,1]. 0 means
12635 no correction. Default is 0.
12636 @item k2
12637 Coefficient of the double quadratic correction term. This value has a range [-1,1].
12638 0 means no correction. Default is 0.
12639 @end table
12640
12641 The formula that generates the correction is:
12642
12643 @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)
12644
12645 where @var{r_0} is halve of the image diagonal and @var{r_src} and @var{r_tgt} are the
12646 distances from the focal point in the source and target images, respectively.
12647
12648 @section lensfun
12649
12650 Apply lens correction via the lensfun library (@url{http://lensfun.sourceforge.net/}).
12651
12652 The @code{lensfun} filter requires the camera make, camera model, and lens model
12653 to apply the lens correction. The filter will load the lensfun database and
12654 query it to find the corresponding camera and lens entries in the database. As
12655 long as these entries can be found with the given options, the filter can
12656 perform corrections on frames. Note that incomplete strings will result in the
12657 filter choosing the best match with the given options, and the filter will
12658 output the chosen camera and lens models (logged with level "info"). You must
12659 provide the make, camera model, and lens model as they are required.
12660
12661 The filter accepts the following options:
12662
12663 @table @option
12664 @item make
12665 The make of the camera (for example, "Canon"). This option is required.
12666
12667 @item model
12668 The model of the camera (for example, "Canon EOS 100D"). This option is
12669 required.
12670
12671 @item lens_model
12672 The model of the lens (for example, "Canon EF-S 18-55mm f/3.5-5.6 IS STM"). This
12673 option is required.
12674
12675 @item mode
12676 The type of correction to apply. The following values are valid options:
12677
12678 @table @samp
12679 @item vignetting
12680 Enables fixing lens vignetting.
12681
12682 @item geometry
12683 Enables fixing lens geometry. This is the default.
12684
12685 @item subpixel
12686 Enables fixing chromatic aberrations.
12687
12688 @item vig_geo
12689 Enables fixing lens vignetting and lens geometry.
12690
12691 @item vig_subpixel
12692 Enables fixing lens vignetting and chromatic aberrations.
12693
12694 @item distortion
12695 Enables fixing both lens geometry and chromatic aberrations.
12696
12697 @item all
12698 Enables all possible corrections.
12699
12700 @end table
12701 @item focal_length
12702 The focal length of the image/video (zoom; expected constant for video). For
12703 example, a 18--55mm lens has focal length range of [18--55], so a value in that
12704 range should be chosen when using that lens. Default 18.
12705
12706 @item aperture
12707 The aperture of the image/video (expected constant for video). Note that
12708 aperture is only used for vignetting correction. Default 3.5.
12709
12710 @item focus_distance
12711 The focus distance of the image/video (expected constant for video). Note that
12712 focus distance is only used for vignetting and only slightly affects the
12713 vignetting correction process. If unknown, leave it at the default value (which
12714 is 1000).
12715
12716 @item scale
12717 The scale factor which is applied after transformation. After correction the
12718 video is no longer necessarily rectangular. This parameter controls how much of
12719 the resulting image is visible. The value 0 means that a value will be chosen
12720 automatically such that there is little or no unmapped area in the output
12721 image. 1.0 means that no additional scaling is done. Lower values may result
12722 in more of the corrected image being visible, while higher values may avoid
12723 unmapped areas in the output.
12724
12725 @item target_geometry
12726 The target geometry of the output image/video. The following values are valid
12727 options:
12728
12729 @table @samp
12730 @item rectilinear (default)
12731 @item fisheye
12732 @item panoramic
12733 @item equirectangular
12734 @item fisheye_orthographic
12735 @item fisheye_stereographic
12736 @item fisheye_equisolid
12737 @item fisheye_thoby
12738 @end table
12739 @item reverse
12740 Apply the reverse of image correction (instead of correcting distortion, apply
12741 it).
12742
12743 @item interpolation
12744 The type of interpolation used when correcting distortion. The following values
12745 are valid options:
12746
12747 @table @samp
12748 @item nearest
12749 @item linear (default)
12750 @item lanczos
12751 @end table
12752 @end table
12753
12754 @subsection Examples
12755
12756 @itemize
12757 @item
12758 Apply lens correction with make "Canon", camera model "Canon EOS 100D", and lens
12759 model "Canon EF-S 18-55mm f/3.5-5.6 IS STM" with focal length of "18" and
12760 aperture of "8.0".
12761
12762 @example
12763 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
12764 @end example
12765
12766 @item
12767 Apply the same as before, but only for the first 5 seconds of video.
12768
12769 @example
12770 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
12771 @end example
12772
12773 @end itemize
12774
12775 @section libvmaf
12776
12777 Obtain the VMAF (Video Multi-Method Assessment Fusion)
12778 score between two input videos.
12779
12780 The obtained VMAF score is printed through the logging system.
12781
12782 It requires Netflix's vmaf library (libvmaf) as a pre-requisite.
12783 After installing the library it can be enabled using:
12784 @code{./configure --enable-libvmaf --enable-version3}.
12785 If no model path is specified it uses the default model: @code{vmaf_v0.6.1.pkl}.
12786
12787 The filter has following options:
12788
12789 @table @option
12790 @item model_path
12791 Set the model path which is to be used for SVM.
12792 Default value: @code{"/usr/local/share/model/vmaf_v0.6.1.pkl"}
12793
12794 @item log_path
12795 Set the file path to be used to store logs.
12796
12797 @item log_fmt
12798 Set the format of the log file (xml or json).
12799
12800 @item enable_transform
12801 This option can enable/disable the @code{score_transform} applied to the final predicted VMAF score,
12802 if you have specified score_transform option in the input parameter file passed to @code{run_vmaf_training.py}
12803 Default value: @code{false}
12804
12805 @item phone_model
12806 Invokes the phone model which will generate VMAF scores higher than in the
12807 regular model, which is more suitable for laptop, TV, etc. viewing conditions.
12808 Default value: @code{false}
12809
12810 @item psnr
12811 Enables computing psnr along with vmaf.
12812 Default value: @code{false}
12813
12814 @item ssim
12815 Enables computing ssim along with vmaf.
12816 Default value: @code{false}
12817
12818 @item ms_ssim
12819 Enables computing ms_ssim along with vmaf.
12820 Default value: @code{false}
12821
12822 @item pool
12823 Set the pool method to be used for computing vmaf.
12824 Options are @code{min}, @code{harmonic_mean} or @code{mean} (default).
12825
12826 @item n_threads
12827 Set number of threads to be used when computing vmaf.
12828 Default value: @code{0}, which makes use of all available logical processors.
12829
12830 @item n_subsample
12831 Set interval for frame subsampling used when computing vmaf.
12832 Default value: @code{1}
12833
12834 @item enable_conf_interval
12835 Enables confidence interval.
12836 Default value: @code{false}
12837 @end table
12838
12839 This filter also supports the @ref{framesync} options.
12840
12841 @subsection Examples
12842 @itemize
12843 @item
12844 On the below examples the input file @file{main.mpg} being processed is
12845 compared with the reference file @file{ref.mpg}.
12846
12847 @example
12848 ffmpeg -i main.mpg -i ref.mpg -lavfi libvmaf -f null -
12849 @end example
12850
12851 @item
12852 Example with options:
12853 @example
12854 ffmpeg -i main.mpg -i ref.mpg -lavfi libvmaf="psnr=1:log_fmt=json" -f null -
12855 @end example
12856
12857 @item
12858 Example with options and different containers:
12859 @example
12860 ffmpeg -i main.mpg -i ref.mkv -lavfi "[0:v]settb=AVTB,setpts=PTS-STARTPTS[main];[1:v]settb=AVTB,setpts=PTS-STARTPTS[ref];[main][ref]libvmaf=psnr=1:log_fmt=json" -f null -
12861 @end example
12862 @end itemize
12863
12864 @section limiter
12865
12866 Limits the pixel components values to the specified range [min, max].
12867
12868 The filter accepts the following options:
12869
12870 @table @option
12871 @item min
12872 Lower bound. Defaults to the lowest allowed value for the input.
12873
12874 @item max
12875 Upper bound. Defaults to the highest allowed value for the input.
12876
12877 @item planes
12878 Specify which planes will be processed. Defaults to all available.
12879 @end table
12880
12881 @section loop
12882
12883 Loop video frames.
12884
12885 The filter accepts the following options:
12886
12887 @table @option
12888 @item loop
12889 Set the number of loops. Setting this value to -1 will result in infinite loops.
12890 Default is 0.
12891
12892 @item size
12893 Set maximal size in number of frames. Default is 0.
12894
12895 @item start
12896 Set first frame of loop. Default is 0.
12897 @end table
12898
12899 @subsection Examples
12900
12901 @itemize
12902 @item
12903 Loop single first frame infinitely:
12904 @example
12905 loop=loop=-1:size=1:start=0
12906 @end example
12907
12908 @item
12909 Loop single first frame 10 times:
12910 @example
12911 loop=loop=10:size=1:start=0
12912 @end example
12913
12914 @item
12915 Loop 10 first frames 5 times:
12916 @example
12917 loop=loop=5:size=10:start=0
12918 @end example
12919 @end itemize
12920
12921 @section lut1d
12922
12923 Apply a 1D LUT to an input video.
12924
12925 The filter accepts the following options:
12926
12927 @table @option
12928 @item file
12929 Set the 1D LUT file name.
12930
12931 Currently supported formats:
12932 @table @samp
12933 @item cube
12934 Iridas
12935 @item csp
12936 cineSpace
12937 @end table
12938
12939 @item interp
12940 Select interpolation mode.
12941
12942 Available values are:
12943
12944 @table @samp
12945 @item nearest
12946 Use values from the nearest defined point.
12947 @item linear
12948 Interpolate values using the linear interpolation.
12949 @item cosine
12950 Interpolate values using the cosine interpolation.
12951 @item cubic
12952 Interpolate values using the cubic interpolation.
12953 @item spline
12954 Interpolate values using the spline interpolation.
12955 @end table
12956 @end table
12957
12958 @anchor{lut3d}
12959 @section lut3d
12960
12961 Apply a 3D LUT to an input video.
12962
12963 The filter accepts the following options:
12964
12965 @table @option
12966 @item file
12967 Set the 3D LUT file name.
12968
12969 Currently supported formats:
12970 @table @samp
12971 @item 3dl
12972 AfterEffects
12973 @item cube
12974 Iridas
12975 @item dat
12976 DaVinci
12977 @item m3d
12978 Pandora
12979 @item csp
12980 cineSpace
12981 @end table
12982 @item interp
12983 Select interpolation mode.
12984
12985 Available values are:
12986
12987 @table @samp
12988 @item nearest
12989 Use values from the nearest defined point.
12990 @item trilinear
12991 Interpolate values using the 8 points defining a cube.
12992 @item tetrahedral
12993 Interpolate values using a tetrahedron.
12994 @end table
12995 @end table
12996
12997 @section lumakey
12998
12999 Turn certain luma values into transparency.
13000
13001 The filter accepts the following options:
13002
13003 @table @option
13004 @item threshold
13005 Set the luma which will be used as base for transparency.
13006 Default value is @code{0}.
13007
13008 @item tolerance
13009 Set the range of luma values to be keyed out.
13010 Default value is @code{0.01}.
13011
13012 @item softness
13013 Set the range of softness. Default value is @code{0}.
13014 Use this to control gradual transition from zero to full transparency.
13015 @end table
13016
13017 @subsection Commands
13018 This filter supports same @ref{commands} as options.
13019 The command accepts the same syntax of the corresponding option.
13020
13021 If the specified expression is not valid, it is kept at its current
13022 value.
13023
13024 @section lut, lutrgb, lutyuv
13025
13026 Compute a look-up table for binding each pixel component input value
13027 to an output value, and apply it to the input video.
13028
13029 @var{lutyuv} applies a lookup table to a YUV input video, @var{lutrgb}
13030 to an RGB input video.
13031
13032 These filters accept the following parameters:
13033 @table @option
13034 @item c0
13035 set first pixel component expression
13036 @item c1
13037 set second pixel component expression
13038 @item c2
13039 set third pixel component expression
13040 @item c3
13041 set fourth pixel component expression, corresponds to the alpha component
13042
13043 @item r
13044 set red component expression
13045 @item g
13046 set green component expression
13047 @item b
13048 set blue component expression
13049 @item a
13050 alpha component expression
13051
13052 @item y
13053 set Y/luminance component expression
13054 @item u
13055 set U/Cb component expression
13056 @item v
13057 set V/Cr component expression
13058 @end table
13059
13060 Each of them specifies the expression to use for computing the lookup table for
13061 the corresponding pixel component values.
13062
13063 The exact component associated to each of the @var{c*} options depends on the
13064 format in input.
13065
13066 The @var{lut} filter requires either YUV or RGB pixel formats in input,
13067 @var{lutrgb} requires RGB pixel formats in input, and @var{lutyuv} requires YUV.
13068
13069 The expressions can contain the following constants and functions:
13070
13071 @table @option
13072 @item w
13073 @item h
13074 The input width and height.
13075
13076 @item val
13077 The input value for the pixel component.
13078
13079 @item clipval
13080 The input value, clipped to the @var{minval}-@var{maxval} range.
13081
13082 @item maxval
13083 The maximum value for the pixel component.
13084
13085 @item minval
13086 The minimum value for the pixel component.
13087
13088 @item negval
13089 The negated value for the pixel component value, clipped to the
13090 @var{minval}-@var{maxval} range; it corresponds to the expression
13091 "maxval-clipval+minval".
13092
13093 @item clip(val)
13094 The computed value in @var{val}, clipped to the
13095 @var{minval}-@var{maxval} range.
13096
13097 @item gammaval(gamma)
13098 The computed gamma correction value of the pixel component value,
13099 clipped to the @var{minval}-@var{maxval} range. It corresponds to the
13100 expression
13101 "pow((clipval-minval)/(maxval-minval)\,@var{gamma})*(maxval-minval)+minval"
13102
13103 @end table
13104
13105 All expressions default to "val".
13106
13107 @subsection Examples
13108
13109 @itemize
13110 @item
13111 Negate input video:
13112 @example
13113 lutrgb="r=maxval+minval-val:g=maxval+minval-val:b=maxval+minval-val"
13114 lutyuv="y=maxval+minval-val:u=maxval+minval-val:v=maxval+minval-val"
13115 @end example
13116
13117 The above is the same as:
13118 @example
13119 lutrgb="r=negval:g=negval:b=negval"
13120 lutyuv="y=negval:u=negval:v=negval"
13121 @end example
13122
13123 @item
13124 Negate luminance:
13125 @example
13126 lutyuv=y=negval
13127 @end example
13128
13129 @item
13130 Remove chroma components, turning the video into a graytone image:
13131 @example
13132 lutyuv="u=128:v=128"
13133 @end example
13134
13135 @item
13136 Apply a luma burning effect:
13137 @example
13138 lutyuv="y=2*val"
13139 @end example
13140
13141 @item
13142 Remove green and blue components:
13143 @example
13144 lutrgb="g=0:b=0"
13145 @end example
13146
13147 @item
13148 Set a constant alpha channel value on input:
13149 @example
13150 format=rgba,lutrgb=a="maxval-minval/2"
13151 @end example
13152
13153 @item
13154 Correct luminance gamma by a factor of 0.5:
13155 @example
13156 lutyuv=y=gammaval(0.5)
13157 @end example
13158
13159 @item
13160 Discard least significant bits of luma:
13161 @example
13162 lutyuv=y='bitand(val, 128+64+32)'
13163 @end example
13164
13165 @item
13166 Technicolor like effect:
13167 @example
13168 lutyuv=u='(val-maxval/2)*2+maxval/2':v='(val-maxval/2)*2+maxval/2'
13169 @end example
13170 @end itemize
13171
13172 @section lut2, tlut2
13173
13174 The @code{lut2} filter takes two input streams and outputs one
13175 stream.
13176
13177 The @code{tlut2} (time lut2) filter takes two consecutive frames
13178 from one single stream.
13179
13180 This filter accepts the following parameters:
13181 @table @option
13182 @item c0
13183 set first pixel component expression
13184 @item c1
13185 set second pixel component expression
13186 @item c2
13187 set third pixel component expression
13188 @item c3
13189 set fourth pixel component expression, corresponds to the alpha component
13190
13191 @item d
13192 set output bit depth, only available for @code{lut2} filter. By default is 0,
13193 which means bit depth is automatically picked from first input format.
13194 @end table
13195
13196 The @code{lut2} filter also supports the @ref{framesync} options.
13197
13198 Each of them specifies the expression to use for computing the lookup table for
13199 the corresponding pixel component values.
13200
13201 The exact component associated to each of the @var{c*} options depends on the
13202 format in inputs.
13203
13204 The expressions can contain the following constants:
13205
13206 @table @option
13207 @item w
13208 @item h
13209 The input width and height.
13210
13211 @item x
13212 The first input value for the pixel component.
13213
13214 @item y
13215 The second input value for the pixel component.
13216
13217 @item bdx
13218 The first input video bit depth.
13219
13220 @item bdy
13221 The second input video bit depth.
13222 @end table
13223
13224 All expressions default to "x".
13225
13226 @subsection Examples
13227
13228 @itemize
13229 @item
13230 Highlight differences between two RGB video streams:
13231 @example
13232 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)'
13233 @end example
13234
13235 @item
13236 Highlight differences between two YUV video streams:
13237 @example
13238 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)'
13239 @end example
13240
13241 @item
13242 Show max difference between two video streams:
13243 @example
13244 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)))'
13245 @end example
13246 @end itemize
13247
13248 @section maskedclamp
13249
13250 Clamp the first input stream with the second input and third input stream.
13251
13252 Returns the value of first stream to be between second input
13253 stream - @code{undershoot} and third input stream + @code{overshoot}.
13254
13255 This filter accepts the following options:
13256 @table @option
13257 @item undershoot
13258 Default value is @code{0}.
13259
13260 @item overshoot
13261 Default value is @code{0}.
13262
13263 @item planes
13264 Set which planes will be processed as bitmap, unprocessed planes will be
13265 copied from first stream.
13266 By default value 0xf, all planes will be processed.
13267 @end table
13268
13269 @section maskedmax
13270
13271 Merge the second and third input stream into output stream using absolute differences
13272 between second input stream and first input stream and absolute difference between
13273 third input stream and first input stream. The picked value will be from second input
13274 stream if second absolute difference is greater than first one or from third input stream
13275 otherwise.
13276
13277 This filter accepts the following options:
13278 @table @option
13279 @item planes
13280 Set which planes will be processed as bitmap, unprocessed planes will be
13281 copied from first stream.
13282 By default value 0xf, all planes will be processed.
13283 @end table
13284
13285 @section maskedmerge
13286
13287 Merge the first input stream with the second input stream using per pixel
13288 weights in the third input stream.
13289
13290 A value of 0 in the third stream pixel component means that pixel component
13291 from first stream is returned unchanged, while maximum value (eg. 255 for
13292 8-bit videos) means that pixel component from second stream is returned
13293 unchanged. Intermediate values define the amount of merging between both
13294 input stream's pixel components.
13295
13296 This filter accepts the following options:
13297 @table @option
13298 @item planes
13299 Set which planes will be processed as bitmap, unprocessed planes will be
13300 copied from first stream.
13301 By default value 0xf, all planes will be processed.
13302 @end table
13303
13304 @section maskedmin
13305
13306 Merge the second and third input stream into output stream using absolute differences
13307 between second input stream and first input stream and absolute difference between
13308 third input stream and first input stream. The picked value will be from second input
13309 stream if second absolute difference is less than first one or from third input stream
13310 otherwise.
13311
13312 This filter accepts the following options:
13313 @table @option
13314 @item planes
13315 Set which planes will be processed as bitmap, unprocessed planes will be
13316 copied from first stream.
13317 By default value 0xf, all planes will be processed.
13318 @end table
13319
13320 @section maskedthreshold
13321 Pick pixels comparing absolute difference of two video streams with fixed
13322 threshold.
13323
13324 If absolute difference between pixel component of first and second video
13325 stream is equal or lower than user supplied threshold than pixel component
13326 from first video stream is picked, otherwise pixel component from second
13327 video stream is picked.
13328
13329 This filter accepts the following options:
13330 @table @option
13331 @item threshold
13332 Set threshold used when picking pixels from absolute difference from two input
13333 video streams.
13334
13335 @item planes
13336 Set which planes will be processed as bitmap, unprocessed planes will be
13337 copied from second stream.
13338 By default value 0xf, all planes will be processed.
13339 @end table
13340
13341 @section maskfun
13342 Create mask from input video.
13343
13344 For example it is useful to create motion masks after @code{tblend} filter.
13345
13346 This filter accepts the following options:
13347
13348 @table @option
13349 @item low
13350 Set low threshold. Any pixel component lower or exact than this value will be set to 0.
13351
13352 @item high
13353 Set high threshold. Any pixel component higher than this value will be set to max value
13354 allowed for current pixel format.
13355
13356 @item planes
13357 Set planes to filter, by default all available planes are filtered.
13358
13359 @item fill
13360 Fill all frame pixels with this value.
13361
13362 @item sum
13363 Set max average pixel value for frame. If sum of all pixel components is higher that this
13364 average, output frame will be completely filled with value set by @var{fill} option.
13365 Typically useful for scene changes when used in combination with @code{tblend} filter.
13366 @end table
13367
13368 @section mcdeint
13369
13370 Apply motion-compensation deinterlacing.
13371
13372 It needs one field per frame as input and must thus be used together
13373 with yadif=1/3 or equivalent.
13374
13375 This filter accepts the following options:
13376 @table @option
13377 @item mode
13378 Set the deinterlacing mode.
13379
13380 It accepts one of the following values:
13381 @table @samp
13382 @item fast
13383 @item medium
13384 @item slow
13385 use iterative motion estimation
13386 @item extra_slow
13387 like @samp{slow}, but use multiple reference frames.
13388 @end table
13389 Default value is @samp{fast}.
13390
13391 @item parity
13392 Set the picture field parity assumed for the input video. It must be
13393 one of the following values:
13394
13395 @table @samp
13396 @item 0, tff
13397 assume top field first
13398 @item 1, bff
13399 assume bottom field first
13400 @end table
13401
13402 Default value is @samp{bff}.
13403
13404 @item qp
13405 Set per-block quantization parameter (QP) used by the internal
13406 encoder.
13407
13408 Higher values should result in a smoother motion vector field but less
13409 optimal individual vectors. Default value is 1.
13410 @end table
13411
13412 @section median
13413
13414 Pick median pixel from certain rectangle defined by radius.
13415
13416 This filter accepts the following options:
13417
13418 @table @option
13419 @item radius
13420 Set horizontal radius size. Default value is @code{1}.
13421 Allowed range is integer from 1 to 127.
13422
13423 @item planes
13424 Set which planes to process. Default is @code{15}, which is all available planes.
13425
13426 @item radiusV
13427 Set vertical radius size. Default value is @code{0}.
13428 Allowed range is integer from 0 to 127.
13429 If it is 0, value will be picked from horizontal @code{radius} option.
13430
13431 @item percentile
13432 Set median percentile. Default value is @code{0.5}.
13433 Default value of @code{0.5} will pick always median values, while @code{0} will pick
13434 minimum values, and @code{1} maximum values.
13435 @end table
13436
13437 @subsection Commands
13438 This filter supports same @ref{commands} as options.
13439 The command accepts the same syntax of the corresponding option.
13440
13441 If the specified expression is not valid, it is kept at its current
13442 value.
13443
13444 @section mergeplanes
13445
13446 Merge color channel components from several video streams.
13447
13448 The filter accepts up to 4 input streams, and merge selected input
13449 planes to the output video.
13450
13451 This filter accepts the following options:
13452 @table @option
13453 @item mapping
13454 Set input to output plane mapping. Default is @code{0}.
13455
13456 The mappings is specified as a bitmap. It should be specified as a
13457 hexadecimal number in the form 0xAa[Bb[Cc[Dd]]]. 'Aa' describes the
13458 mapping for the first plane of the output stream. 'A' sets the number of
13459 the input stream to use (from 0 to 3), and 'a' the plane number of the
13460 corresponding input to use (from 0 to 3). The rest of the mappings is
13461 similar, 'Bb' describes the mapping for the output stream second
13462 plane, 'Cc' describes the mapping for the output stream third plane and
13463 'Dd' describes the mapping for the output stream fourth plane.
13464
13465 @item format
13466 Set output pixel format. Default is @code{yuva444p}.
13467 @end table
13468
13469 @subsection Examples
13470
13471 @itemize
13472 @item
13473 Merge three gray video streams of same width and height into single video stream:
13474 @example
13475 [a0][a1][a2]mergeplanes=0x001020:yuv444p
13476 @end example
13477
13478 @item
13479 Merge 1st yuv444p stream and 2nd gray video stream into yuva444p video stream:
13480 @example
13481 [a0][a1]mergeplanes=0x00010210:yuva444p
13482 @end example
13483
13484 @item
13485 Swap Y and A plane in yuva444p stream:
13486 @example
13487 format=yuva444p,mergeplanes=0x03010200:yuva444p
13488 @end example
13489
13490 @item
13491 Swap U and V plane in yuv420p stream:
13492 @example
13493 format=yuv420p,mergeplanes=0x000201:yuv420p
13494 @end example
13495
13496 @item
13497 Cast a rgb24 clip to yuv444p:
13498 @example
13499 format=rgb24,mergeplanes=0x000102:yuv444p
13500 @end example
13501 @end itemize
13502
13503 @section mestimate
13504
13505 Estimate and export motion vectors using block matching algorithms.
13506 Motion vectors are stored in frame side data to be used by other filters.
13507
13508 This filter accepts the following options:
13509 @table @option
13510 @item method
13511 Specify the motion estimation method. Accepts one of the following values:
13512
13513 @table @samp
13514 @item esa
13515 Exhaustive search algorithm.
13516 @item tss
13517 Three step search algorithm.
13518 @item tdls
13519 Two dimensional logarithmic search algorithm.
13520 @item ntss
13521 New three step search algorithm.
13522 @item fss
13523 Four step search algorithm.
13524 @item ds
13525 Diamond search algorithm.
13526 @item hexbs
13527 Hexagon-based search algorithm.
13528 @item epzs
13529 Enhanced predictive zonal search algorithm.
13530 @item umh
13531 Uneven multi-hexagon search algorithm.
13532 @end table
13533 Default value is @samp{esa}.
13534
13535 @item mb_size
13536 Macroblock size. Default @code{16}.
13537
13538 @item search_param
13539 Search parameter. Default @code{7}.
13540 @end table
13541
13542 @section midequalizer
13543
13544 Apply Midway Image Equalization effect using two video streams.
13545
13546 Midway Image Equalization adjusts a pair of images to have the same
13547 histogram, while maintaining their dynamics as much as possible. It's
13548 useful for e.g. matching exposures from a pair of stereo cameras.
13549
13550 This filter has two inputs and one output, which must be of same pixel format, but
13551 may be of different sizes. The output of filter is first input adjusted with
13552 midway histogram of both inputs.
13553
13554 This filter accepts the following option:
13555
13556 @table @option
13557 @item planes
13558 Set which planes to process. Default is @code{15}, which is all available planes.
13559 @end table
13560
13561 @section minterpolate
13562
13563 Convert the video to specified frame rate using motion interpolation.
13564
13565 This filter accepts the following options:
13566 @table @option
13567 @item fps
13568 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}.
13569
13570 @item mi_mode
13571 Motion interpolation mode. Following values are accepted:
13572 @table @samp
13573 @item dup
13574 Duplicate previous or next frame for interpolating new ones.
13575 @item blend
13576 Blend source frames. Interpolated frame is mean of previous and next frames.
13577 @item mci
13578 Motion compensated interpolation. Following options are effective when this mode is selected:
13579
13580 @table @samp
13581 @item mc_mode
13582 Motion compensation mode. Following values are accepted:
13583 @table @samp
13584 @item obmc
13585 Overlapped block motion compensation.
13586 @item aobmc
13587 Adaptive overlapped block motion compensation. Window weighting coefficients are controlled adaptively according to the reliabilities of the neighboring motion vectors to reduce oversmoothing.
13588 @end table
13589 Default mode is @samp{obmc}.
13590
13591 @item me_mode
13592 Motion estimation mode. Following values are accepted:
13593 @table @samp
13594 @item bidir
13595 Bidirectional motion estimation. Motion vectors are estimated for each source frame in both forward and backward directions.
13596 @item bilat
13597 Bilateral motion estimation. Motion vectors are estimated directly for interpolated frame.
13598 @end table
13599 Default mode is @samp{bilat}.
13600
13601 @item me
13602 The algorithm to be used for motion estimation. Following values are accepted:
13603 @table @samp
13604 @item esa
13605 Exhaustive search algorithm.
13606 @item tss
13607 Three step search algorithm.
13608 @item tdls
13609 Two dimensional logarithmic search algorithm.
13610 @item ntss
13611 New three step search algorithm.
13612 @item fss
13613 Four step search algorithm.
13614 @item ds
13615 Diamond search algorithm.
13616 @item hexbs
13617 Hexagon-based search algorithm.
13618 @item epzs
13619 Enhanced predictive zonal search algorithm.
13620 @item umh
13621 Uneven multi-hexagon search algorithm.
13622 @end table
13623 Default algorithm is @samp{epzs}.
13624
13625 @item mb_size
13626 Macroblock size. Default @code{16}.
13627
13628 @item search_param
13629 Motion estimation search parameter. Default @code{32}.
13630
13631 @item vsbmc
13632 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).
13633 @end table
13634 @end table
13635
13636 @item scd
13637 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:
13638 @table @samp
13639 @item none
13640 Disable scene change detection.
13641 @item fdiff
13642 Frame difference. Corresponding pixel values are compared and if it satisfies @var{scd_threshold} scene change is detected.
13643 @end table
13644 Default method is @samp{fdiff}.
13645
13646 @item scd_threshold
13647 Scene change detection threshold. Default is @code{10.}.
13648 @end table
13649
13650 @section mix
13651
13652 Mix several video input streams into one video stream.
13653
13654 A description of the accepted options follows.
13655
13656 @table @option
13657 @item nb_inputs
13658 The number of inputs. If unspecified, it defaults to 2.
13659
13660 @item weights
13661 Specify weight of each input video stream as sequence.
13662 Each weight is separated by space. If number of weights
13663 is smaller than number of @var{frames} last specified
13664 weight will be used for all remaining unset weights.
13665
13666 @item scale
13667 Specify scale, if it is set it will be multiplied with sum
13668 of each weight multiplied with pixel values to give final destination
13669 pixel value. By default @var{scale} is auto scaled to sum of weights.
13670
13671 @item duration
13672 Specify how end of stream is determined.
13673 @table @samp
13674 @item longest
13675 The duration of the longest input. (default)
13676
13677 @item shortest
13678 The duration of the shortest input.
13679
13680 @item first
13681 The duration of the first input.
13682 @end table
13683 @end table
13684
13685 @section mpdecimate
13686
13687 Drop frames that do not differ greatly from the previous frame in
13688 order to reduce frame rate.
13689
13690 The main use of this filter is for very-low-bitrate encoding
13691 (e.g. streaming over dialup modem), but it could in theory be used for
13692 fixing movies that were inverse-telecined incorrectly.
13693
13694 A description of the accepted options follows.
13695
13696 @table @option
13697 @item max
13698 Set the maximum number of consecutive frames which can be dropped (if
13699 positive), or the minimum interval between dropped frames (if
13700 negative). If the value is 0, the frame is dropped disregarding the
13701 number of previous sequentially dropped frames.
13702
13703 Default value is 0.
13704
13705 @item hi
13706 @item lo
13707 @item frac
13708 Set the dropping threshold values.
13709
13710 Values for @option{hi} and @option{lo} are for 8x8 pixel blocks and
13711 represent actual pixel value differences, so a threshold of 64
13712 corresponds to 1 unit of difference for each pixel, or the same spread
13713 out differently over the block.
13714
13715 A frame is a candidate for dropping if no 8x8 blocks differ by more
13716 than a threshold of @option{hi}, and if no more than @option{frac} blocks (1
13717 meaning the whole image) differ by more than a threshold of @option{lo}.
13718
13719 Default value for @option{hi} is 64*12, default value for @option{lo} is
13720 64*5, and default value for @option{frac} is 0.33.
13721 @end table
13722
13723
13724 @section negate
13725
13726 Negate (invert) the input video.
13727
13728 It accepts the following option:
13729
13730 @table @option
13731
13732 @item negate_alpha
13733 With value 1, it negates the alpha component, if present. Default value is 0.
13734 @end table
13735
13736 @anchor{nlmeans}
13737 @section nlmeans
13738
13739 Denoise frames using Non-Local Means algorithm.
13740
13741 Each pixel is adjusted by looking for other pixels with similar contexts. This
13742 context similarity is defined by comparing their surrounding patches of size
13743 @option{p}x@option{p}. Patches are searched in an area of @option{r}x@option{r}
13744 around the pixel.
13745
13746 Note that the research area defines centers for patches, which means some
13747 patches will be made of pixels outside that research area.
13748
13749 The filter accepts the following options.
13750
13751 @table @option
13752 @item s
13753 Set denoising strength. Default is 1.0. Must be in range [1.0, 30.0].
13754
13755 @item p
13756 Set patch size. Default is 7. Must be odd number in range [0, 99].
13757
13758 @item pc
13759 Same as @option{p} but for chroma planes.
13760
13761 The default value is @var{0} and means automatic.
13762
13763 @item r
13764 Set research size. Default is 15. Must be odd number in range [0, 99].
13765
13766 @item rc
13767 Same as @option{r} but for chroma planes.
13768
13769 The default value is @var{0} and means automatic.
13770 @end table
13771
13772 @section nnedi
13773
13774 Deinterlace video using neural network edge directed interpolation.
13775
13776 This filter accepts the following options:
13777
13778 @table @option
13779 @item weights
13780 Mandatory option, without binary file filter can not work.
13781 Currently file can be found here:
13782 https://github.com/dubhater/vapoursynth-nnedi3/blob/master/src/nnedi3_weights.bin
13783
13784 @item deint
13785 Set which frames to deinterlace, by default it is @code{all}.
13786 Can be @code{all} or @code{interlaced}.
13787
13788 @item field
13789 Set mode of operation.
13790
13791 Can be one of the following:
13792
13793 @table @samp
13794 @item af
13795 Use frame flags, both fields.
13796 @item a
13797 Use frame flags, single field.
13798 @item t
13799 Use top field only.
13800 @item b
13801 Use bottom field only.
13802 @item tf
13803 Use both fields, top first.
13804 @item bf
13805 Use both fields, bottom first.
13806 @end table
13807
13808 @item planes
13809 Set which planes to process, by default filter process all frames.
13810
13811 @item nsize
13812 Set size of local neighborhood around each pixel, used by the predictor neural
13813 network.
13814
13815 Can be one of the following:
13816
13817 @table @samp
13818 @item s8x6
13819 @item s16x6
13820 @item s32x6
13821 @item s48x6
13822 @item s8x4
13823 @item s16x4
13824 @item s32x4
13825 @end table
13826
13827 @item nns
13828 Set the number of neurons in predictor neural network.
13829 Can be one of the following:
13830
13831 @table @samp
13832 @item n16
13833 @item n32
13834 @item n64
13835 @item n128
13836 @item n256
13837 @end table
13838
13839 @item qual
13840 Controls the number of different neural network predictions that are blended
13841 together to compute the final output value. Can be @code{fast}, default or
13842 @code{slow}.
13843
13844 @item etype
13845 Set which set of weights to use in the predictor.
13846 Can be one of the following:
13847
13848 @table @samp
13849 @item a
13850 weights trained to minimize absolute error
13851 @item s
13852 weights trained to minimize squared error
13853 @end table
13854
13855 @item pscrn
13856 Controls whether or not the prescreener neural network is used to decide
13857 which pixels should be processed by the predictor neural network and which
13858 can be handled by simple cubic interpolation.
13859 The prescreener is trained to know whether cubic interpolation will be
13860 sufficient for a pixel or whether it should be predicted by the predictor nn.
13861 The computational complexity of the prescreener nn is much less than that of
13862 the predictor nn. Since most pixels can be handled by cubic interpolation,
13863 using the prescreener generally results in much faster processing.
13864 The prescreener is pretty accurate, so the difference between using it and not
13865 using it is almost always unnoticeable.
13866
13867 Can be one of the following:
13868
13869 @table @samp
13870 @item none
13871 @item original
13872 @item new
13873 @end table
13874
13875 Default is @code{new}.
13876
13877 @item fapprox
13878 Set various debugging flags.
13879 @end table
13880
13881 @section noformat
13882
13883 Force libavfilter not to use any of the specified pixel formats for the
13884 input to the next filter.
13885
13886 It accepts the following parameters:
13887 @table @option
13888
13889 @item pix_fmts
13890 A '|'-separated list of pixel format names, such as
13891 pix_fmts=yuv420p|monow|rgb24".
13892
13893 @end table
13894
13895 @subsection Examples
13896
13897 @itemize
13898 @item
13899 Force libavfilter to use a format different from @var{yuv420p} for the
13900 input to the vflip filter:
13901 @example
13902 noformat=pix_fmts=yuv420p,vflip
13903 @end example
13904
13905 @item
13906 Convert the input video to any of the formats not contained in the list:
13907 @example
13908 noformat=yuv420p|yuv444p|yuv410p
13909 @end example
13910 @end itemize
13911
13912 @section noise
13913
13914 Add noise on video input frame.
13915
13916 The filter accepts the following options:
13917
13918 @table @option
13919 @item all_seed
13920 @item c0_seed
13921 @item c1_seed
13922 @item c2_seed
13923 @item c3_seed
13924 Set noise seed for specific pixel component or all pixel components in case
13925 of @var{all_seed}. Default value is @code{123457}.
13926
13927 @item all_strength, alls
13928 @item c0_strength, c0s
13929 @item c1_strength, c1s
13930 @item c2_strength, c2s
13931 @item c3_strength, c3s
13932 Set noise strength for specific pixel component or all pixel components in case
13933 @var{all_strength}. Default value is @code{0}. Allowed range is [0, 100].
13934
13935 @item all_flags, allf
13936 @item c0_flags, c0f
13937 @item c1_flags, c1f
13938 @item c2_flags, c2f
13939 @item c3_flags, c3f
13940 Set pixel component flags or set flags for all components if @var{all_flags}.
13941 Available values for component flags are:
13942 @table @samp
13943 @item a
13944 averaged temporal noise (smoother)
13945 @item p
13946 mix random noise with a (semi)regular pattern
13947 @item t
13948 temporal noise (noise pattern changes between frames)
13949 @item u
13950 uniform noise (gaussian otherwise)
13951 @end table
13952 @end table
13953
13954 @subsection Examples
13955
13956 Add temporal and uniform noise to input video:
13957 @example
13958 noise=alls=20:allf=t+u
13959 @end example
13960
13961 @section normalize
13962
13963 Normalize RGB video (aka histogram stretching, contrast stretching).
13964 See: https://en.wikipedia.org/wiki/Normalization_(image_processing)
13965
13966 For each channel of each frame, the filter computes the input range and maps
13967 it linearly to the user-specified output range. The output range defaults
13968 to the full dynamic range from pure black to pure white.
13969
13970 Temporal smoothing can be used on the input range to reduce flickering (rapid
13971 changes in brightness) caused when small dark or bright objects enter or leave
13972 the scene. This is similar to the auto-exposure (automatic gain control) on a
13973 video camera, and, like a video camera, it may cause a period of over- or
13974 under-exposure of the video.
13975
13976 The R,G,B channels can be normalized independently, which may cause some
13977 color shifting, or linked together as a single channel, which prevents
13978 color shifting. Linked normalization preserves hue. Independent normalization
13979 does not, so it can be used to remove some color casts. Independent and linked
13980 normalization can be combined in any ratio.
13981
13982 The normalize filter accepts the following options:
13983
13984 @table @option
13985 @item blackpt
13986 @item whitept
13987 Colors which define the output range. The minimum input value is mapped to
13988 the @var{blackpt}. The maximum input value is mapped to the @var{whitept}.
13989 The defaults are black and white respectively. Specifying white for
13990 @var{blackpt} and black for @var{whitept} will give color-inverted,
13991 normalized video. Shades of grey can be used to reduce the dynamic range
13992 (contrast). Specifying saturated colors here can create some interesting
13993 effects.
13994
13995 @item smoothing
13996 The number of previous frames to use for temporal smoothing. The input range
13997 of each channel is smoothed using a rolling average over the current frame
13998 and the @var{smoothing} previous frames. The default is 0 (no temporal
13999 smoothing).
14000
14001 @item independence
14002 Controls the ratio of independent (color shifting) channel normalization to
14003 linked (color preserving) normalization. 0.0 is fully linked, 1.0 is fully
14004 independent. Defaults to 1.0 (fully independent).
14005
14006 @item strength
14007 Overall strength of the filter. 1.0 is full strength. 0.0 is a rather
14008 expensive no-op. Defaults to 1.0 (full strength).
14009
14010 @end table
14011
14012 @subsection Commands
14013 This filter supports same @ref{commands} as options, excluding @var{smoothing} option.
14014 The command accepts the same syntax of the corresponding option.
14015
14016 If the specified expression is not valid, it is kept at its current
14017 value.
14018
14019 @subsection Examples
14020
14021 Stretch video contrast to use the full dynamic range, with no temporal
14022 smoothing; may flicker depending on the source content:
14023 @example
14024 normalize=blackpt=black:whitept=white:smoothing=0
14025 @end example
14026
14027 As above, but with 50 frames of temporal smoothing; flicker should be
14028 reduced, depending on the source content:
14029 @example
14030 normalize=blackpt=black:whitept=white:smoothing=50
14031 @end example
14032
14033 As above, but with hue-preserving linked channel normalization:
14034 @example
14035 normalize=blackpt=black:whitept=white:smoothing=50:independence=0
14036 @end example
14037
14038 As above, but with half strength:
14039 @example
14040 normalize=blackpt=black:whitept=white:smoothing=50:independence=0:strength=0.5
14041 @end example
14042
14043 Map the darkest input color to red, the brightest input color to cyan:
14044 @example
14045 normalize=blackpt=red:whitept=cyan
14046 @end example
14047
14048 @section null
14049
14050 Pass the video source unchanged to the output.
14051
14052 @section ocr
14053 Optical Character Recognition
14054
14055 This filter uses Tesseract for optical character recognition. To enable
14056 compilation of this filter, you need to configure FFmpeg with
14057 @code{--enable-libtesseract}.
14058
14059 It accepts the following options:
14060
14061 @table @option
14062 @item datapath
14063 Set datapath to tesseract data. Default is to use whatever was
14064 set at installation.
14065
14066 @item language
14067 Set language, default is "eng".
14068
14069 @item whitelist
14070 Set character whitelist.
14071
14072 @item blacklist
14073 Set character blacklist.
14074 @end table
14075
14076 The filter exports recognized text as the frame metadata @code{lavfi.ocr.text}.
14077 The filter exports confidence of recognized words as the frame metadata @code{lavfi.ocr.confidence}.
14078
14079 @section ocv
14080
14081 Apply a video transform using libopencv.
14082
14083 To enable this filter, install the libopencv library and headers and
14084 configure FFmpeg with @code{--enable-libopencv}.
14085
14086 It accepts the following parameters:
14087
14088 @table @option
14089
14090 @item filter_name
14091 The name of the libopencv filter to apply.
14092
14093 @item filter_params
14094 The parameters to pass to the libopencv filter. If not specified, the default
14095 values are assumed.
14096
14097 @end table
14098
14099 Refer to the official libopencv documentation for more precise
14100 information:
14101 @url{http://docs.opencv.org/master/modules/imgproc/doc/filtering.html}
14102
14103 Several libopencv filters are supported; see the following subsections.
14104
14105 @anchor{dilate}
14106 @subsection dilate
14107
14108 Dilate an image by using a specific structuring element.
14109 It corresponds to the libopencv function @code{cvDilate}.
14110
14111 It accepts the parameters: @var{struct_el}|@var{nb_iterations}.
14112
14113 @var{struct_el} represents a structuring element, and has the syntax:
14114 @var{cols}x@var{rows}+@var{anchor_x}x@var{anchor_y}/@var{shape}
14115
14116 @var{cols} and @var{rows} represent the number of columns and rows of
14117 the structuring element, @var{anchor_x} and @var{anchor_y} the anchor
14118 point, and @var{shape} the shape for the structuring element. @var{shape}
14119 must be "rect", "cross", "ellipse", or "custom".
14120
14121 If the value for @var{shape} is "custom", it must be followed by a
14122 string of the form "=@var{filename}". The file with name
14123 @var{filename} is assumed to represent a binary image, with each
14124 printable character corresponding to a bright pixel. When a custom
14125 @var{shape} is used, @var{cols} and @var{rows} are ignored, the number
14126 or columns and rows of the read file are assumed instead.
14127
14128 The default value for @var{struct_el} is "3x3+0x0/rect".
14129
14130 @var{nb_iterations} specifies the number of times the transform is
14131 applied to the image, and defaults to 1.
14132
14133 Some examples:
14134 @example
14135 # Use the default values
14136 ocv=dilate
14137
14138 # Dilate using a structuring element with a 5x5 cross, iterating two times
14139 ocv=filter_name=dilate:filter_params=5x5+2x2/cross|2
14140
14141 # Read the shape from the file diamond.shape, iterating two times.
14142 # The file diamond.shape may contain a pattern of characters like this
14143 #   *
14144 #  ***
14145 # *****
14146 #  ***
14147 #   *
14148 # The specified columns and rows are ignored
14149 # but the anchor point coordinates are not
14150 ocv=dilate:0x0+2x2/custom=diamond.shape|2
14151 @end example
14152
14153 @subsection erode
14154
14155 Erode an image by using a specific structuring element.
14156 It corresponds to the libopencv function @code{cvErode}.
14157
14158 It accepts the parameters: @var{struct_el}:@var{nb_iterations},
14159 with the same syntax and semantics as the @ref{dilate} filter.
14160
14161 @subsection smooth
14162
14163 Smooth the input video.
14164
14165 The filter takes the following parameters:
14166 @var{type}|@var{param1}|@var{param2}|@var{param3}|@var{param4}.
14167
14168 @var{type} is the type of smooth filter to apply, and must be one of
14169 the following values: "blur", "blur_no_scale", "median", "gaussian",
14170 or "bilateral". The default value is "gaussian".
14171
14172 The meaning of @var{param1}, @var{param2}, @var{param3}, and @var{param4}
14173 depends on the smooth type. @var{param1} and
14174 @var{param2} accept integer positive values or 0. @var{param3} and
14175 @var{param4} accept floating point values.
14176
14177 The default value for @var{param1} is 3. The default value for the
14178 other parameters is 0.
14179
14180 These parameters correspond to the parameters assigned to the
14181 libopencv function @code{cvSmooth}.
14182
14183 @section oscilloscope
14184
14185 2D Video Oscilloscope.
14186
14187 Useful to measure spatial impulse, step responses, chroma delays, etc.
14188
14189 It accepts the following parameters:
14190
14191 @table @option
14192 @item x
14193 Set scope center x position.
14194
14195 @item y
14196 Set scope center y position.
14197
14198 @item s
14199 Set scope size, relative to frame diagonal.
14200
14201 @item t
14202 Set scope tilt/rotation.
14203
14204 @item o
14205 Set trace opacity.
14206
14207 @item tx
14208 Set trace center x position.
14209
14210 @item ty
14211 Set trace center y position.
14212
14213 @item tw
14214 Set trace width, relative to width of frame.
14215
14216 @item th
14217 Set trace height, relative to height of frame.
14218
14219 @item c
14220 Set which components to trace. By default it traces first three components.
14221
14222 @item g
14223 Draw trace grid. By default is enabled.
14224
14225 @item st
14226 Draw some statistics. By default is enabled.
14227
14228 @item sc
14229 Draw scope. By default is enabled.
14230 @end table
14231
14232 @subsection Commands
14233 This filter supports same @ref{commands} as options.
14234 The command accepts the same syntax of the corresponding option.
14235
14236 If the specified expression is not valid, it is kept at its current
14237 value.
14238
14239 @subsection Examples
14240
14241 @itemize
14242 @item
14243 Inspect full first row of video frame.
14244 @example
14245 oscilloscope=x=0.5:y=0:s=1
14246 @end example
14247
14248 @item
14249 Inspect full last row of video frame.
14250 @example
14251 oscilloscope=x=0.5:y=1:s=1
14252 @end example
14253
14254 @item
14255 Inspect full 5th line of video frame of height 1080.
14256 @example
14257 oscilloscope=x=0.5:y=5/1080:s=1
14258 @end example
14259
14260 @item
14261 Inspect full last column of video frame.
14262 @example
14263 oscilloscope=x=1:y=0.5:s=1:t=1
14264 @end example
14265
14266 @end itemize
14267
14268 @anchor{overlay}
14269 @section overlay
14270
14271 Overlay one video on top of another.
14272
14273 It takes two inputs and has one output. The first input is the "main"
14274 video on which the second input is overlaid.
14275
14276 It accepts the following parameters:
14277
14278 A description of the accepted options follows.
14279
14280 @table @option
14281 @item x
14282 @item y
14283 Set the expression for the x and y coordinates of the overlaid video
14284 on the main video. Default value is "0" for both expressions. In case
14285 the expression is invalid, it is set to a huge value (meaning that the
14286 overlay will not be displayed within the output visible area).
14287
14288 @item eof_action
14289 See @ref{framesync}.
14290
14291 @item eval
14292 Set when the expressions for @option{x}, and @option{y} are evaluated.
14293
14294 It accepts the following values:
14295 @table @samp
14296 @item init
14297 only evaluate expressions once during the filter initialization or
14298 when a command is processed
14299
14300 @item frame
14301 evaluate expressions for each incoming frame
14302 @end table
14303
14304 Default value is @samp{frame}.
14305
14306 @item shortest
14307 See @ref{framesync}.
14308
14309 @item format
14310 Set the format for the output video.
14311
14312 It accepts the following values:
14313 @table @samp
14314 @item yuv420
14315 force YUV420 output
14316
14317 @item yuv422
14318 force YUV422 output
14319
14320 @item yuv444
14321 force YUV444 output
14322
14323 @item rgb
14324 force packed RGB output
14325
14326 @item gbrp
14327 force planar RGB output
14328
14329 @item auto
14330 automatically pick format
14331 @end table
14332
14333 Default value is @samp{yuv420}.
14334
14335 @item repeatlast
14336 See @ref{framesync}.
14337
14338 @item alpha
14339 Set format of alpha of the overlaid video, it can be @var{straight} or
14340 @var{premultiplied}. Default is @var{straight}.
14341 @end table
14342
14343 The @option{x}, and @option{y} expressions can contain the following
14344 parameters.
14345
14346 @table @option
14347 @item main_w, W
14348 @item main_h, H
14349 The main input width and height.
14350
14351 @item overlay_w, w
14352 @item overlay_h, h
14353 The overlay input width and height.
14354
14355 @item x
14356 @item y
14357 The computed values for @var{x} and @var{y}. They are evaluated for
14358 each new frame.
14359
14360 @item hsub
14361 @item vsub
14362 horizontal and vertical chroma subsample values of the output
14363 format. For example for the pixel format "yuv422p" @var{hsub} is 2 and
14364 @var{vsub} is 1.
14365
14366 @item n
14367 the number of input frame, starting from 0
14368
14369 @item pos
14370 the position in the file of the input frame, NAN if unknown
14371
14372 @item t
14373 The timestamp, expressed in seconds. It's NAN if the input timestamp is unknown.
14374
14375 @end table
14376
14377 This filter also supports the @ref{framesync} options.
14378
14379 Note that the @var{n}, @var{pos}, @var{t} variables are available only
14380 when evaluation is done @emph{per frame}, and will evaluate to NAN
14381 when @option{eval} is set to @samp{init}.
14382
14383 Be aware that frames are taken from each input video in timestamp
14384 order, hence, if their initial timestamps differ, it is a good idea
14385 to pass the two inputs through a @var{setpts=PTS-STARTPTS} filter to
14386 have them begin in the same zero timestamp, as the example for
14387 the @var{movie} filter does.
14388
14389 You can chain together more overlays but you should test the
14390 efficiency of such approach.
14391
14392 @subsection Commands
14393
14394 This filter supports the following commands:
14395 @table @option
14396 @item x
14397 @item y
14398 Modify the x and y of the overlay input.
14399 The command accepts the same syntax of the corresponding option.
14400
14401 If the specified expression is not valid, it is kept at its current
14402 value.
14403 @end table
14404
14405 @subsection Examples
14406
14407 @itemize
14408 @item
14409 Draw the overlay at 10 pixels from the bottom right corner of the main
14410 video:
14411 @example
14412 overlay=main_w-overlay_w-10:main_h-overlay_h-10
14413 @end example
14414
14415 Using named options the example above becomes:
14416 @example
14417 overlay=x=main_w-overlay_w-10:y=main_h-overlay_h-10
14418 @end example
14419
14420 @item
14421 Insert a transparent PNG logo in the bottom left corner of the input,
14422 using the @command{ffmpeg} tool with the @code{-filter_complex} option:
14423 @example
14424 ffmpeg -i input -i logo -filter_complex 'overlay=10:main_h-overlay_h-10' output
14425 @end example
14426
14427 @item
14428 Insert 2 different transparent PNG logos (second logo on bottom
14429 right corner) using the @command{ffmpeg} tool:
14430 @example
14431 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
14432 @end example
14433
14434 @item
14435 Add a transparent color layer on top of the main video; @code{WxH}
14436 must specify the size of the main input to the overlay filter:
14437 @example
14438 color=color=red@@.3:size=WxH [over]; [in][over] overlay [out]
14439 @end example
14440
14441 @item
14442 Play an original video and a filtered version (here with the deshake
14443 filter) side by side using the @command{ffplay} tool:
14444 @example
14445 ffplay input.avi -vf 'split[a][b]; [a]pad=iw*2:ih[src]; [b]deshake[filt]; [src][filt]overlay=w'
14446 @end example
14447
14448 The above command is the same as:
14449 @example
14450 ffplay input.avi -vf 'split[b], pad=iw*2[src], [b]deshake, [src]overlay=w'
14451 @end example
14452
14453 @item
14454 Make a sliding overlay appearing from the left to the right top part of the
14455 screen starting since time 2:
14456 @example
14457 overlay=x='if(gte(t,2), -w+(t-2)*20, NAN)':y=0
14458 @end example
14459
14460 @item
14461 Compose output by putting two input videos side to side:
14462 @example
14463 ffmpeg -i left.avi -i right.avi -filter_complex "
14464 nullsrc=size=200x100 [background];
14465 [0:v] setpts=PTS-STARTPTS, scale=100x100 [left];
14466 [1:v] setpts=PTS-STARTPTS, scale=100x100 [right];
14467 [background][left]       overlay=shortest=1       [background+left];
14468 [background+left][right] overlay=shortest=1:x=100 [left+right]
14469 "
14470 @end example
14471
14472 @item
14473 Mask 10-20 seconds of a video by applying the delogo filter to a section
14474 @example
14475 ffmpeg -i test.avi -codec:v:0 wmv2 -ar 11025 -b:v 9000k
14476 -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]'
14477 masked.avi
14478 @end example
14479
14480 @item
14481 Chain several overlays in cascade:
14482 @example
14483 nullsrc=s=200x200 [bg];
14484 testsrc=s=100x100, split=4 [in0][in1][in2][in3];
14485 [in0] lutrgb=r=0, [bg]   overlay=0:0     [mid0];
14486 [in1] lutrgb=g=0, [mid0] overlay=100:0   [mid1];
14487 [in2] lutrgb=b=0, [mid1] overlay=0:100   [mid2];
14488 [in3] null,       [mid2] overlay=100:100 [out0]
14489 @end example
14490
14491 @end itemize
14492
14493 @anchor{overlay_cuda}
14494 @section overlay_cuda
14495
14496 Overlay one video on top of another.
14497
14498 This is the CUDA cariant of the @ref{overlay} filter.
14499 It only accepts CUDA frames. The underlying input pixel formats have to match.
14500
14501 It takes two inputs and has one output. The first input is the "main"
14502 video on which the second input is overlaid.
14503
14504 It accepts the following parameters:
14505
14506 @table @option
14507 @item x
14508 @item y
14509 Set the x and y coordinates of the overlaid video on the main video.
14510 Default value is "0" for both expressions.
14511
14512 @item eof_action
14513 See @ref{framesync}.
14514
14515 @item shortest
14516 See @ref{framesync}.
14517
14518 @item repeatlast
14519 See @ref{framesync}.
14520
14521 @end table
14522
14523 This filter also supports the @ref{framesync} options.
14524
14525 @section owdenoise
14526
14527 Apply Overcomplete Wavelet denoiser.
14528
14529 The filter accepts the following options:
14530
14531 @table @option
14532 @item depth
14533 Set depth.
14534
14535 Larger depth values will denoise lower frequency components more, but
14536 slow down filtering.
14537
14538 Must be an int in the range 8-16, default is @code{8}.
14539
14540 @item luma_strength, ls
14541 Set luma strength.
14542
14543 Must be a double value in the range 0-1000, default is @code{1.0}.
14544
14545 @item chroma_strength, cs
14546 Set chroma strength.
14547
14548 Must be a double value in the range 0-1000, default is @code{1.0}.
14549 @end table
14550
14551 @anchor{pad}
14552 @section pad
14553
14554 Add paddings to the input image, and place the original input at the
14555 provided @var{x}, @var{y} coordinates.
14556
14557 It accepts the following parameters:
14558
14559 @table @option
14560 @item width, w
14561 @item height, h
14562 Specify an expression for the size of the output image with the
14563 paddings added. If the value for @var{width} or @var{height} is 0, the
14564 corresponding input size is used for the output.
14565
14566 The @var{width} expression can reference the value set by the
14567 @var{height} expression, and vice versa.
14568
14569 The default value of @var{width} and @var{height} is 0.
14570
14571 @item x
14572 @item y
14573 Specify the offsets to place the input image at within the padded area,
14574 with respect to the top/left border of the output image.
14575
14576 The @var{x} expression can reference the value set by the @var{y}
14577 expression, and vice versa.
14578
14579 The default value of @var{x} and @var{y} is 0.
14580
14581 If @var{x} or @var{y} evaluate to a negative number, they'll be changed
14582 so the input image is centered on the padded area.
14583
14584 @item color
14585 Specify the color of the padded area. For the syntax of this option,
14586 check the @ref{color syntax,,"Color" section in the ffmpeg-utils
14587 manual,ffmpeg-utils}.
14588
14589 The default value of @var{color} is "black".
14590
14591 @item eval
14592 Specify when to evaluate  @var{width}, @var{height}, @var{x} and @var{y} expression.
14593
14594 It accepts the following values:
14595
14596 @table @samp
14597 @item init
14598 Only evaluate expressions once during the filter initialization or when
14599 a command is processed.
14600
14601 @item frame
14602 Evaluate expressions for each incoming frame.
14603
14604 @end table
14605
14606 Default value is @samp{init}.
14607
14608 @item aspect
14609 Pad to aspect instead to a resolution.
14610
14611 @end table
14612
14613 The value for the @var{width}, @var{height}, @var{x}, and @var{y}
14614 options are expressions containing the following constants:
14615
14616 @table @option
14617 @item in_w
14618 @item in_h
14619 The input video width and height.
14620
14621 @item iw
14622 @item ih
14623 These are the same as @var{in_w} and @var{in_h}.
14624
14625 @item out_w
14626 @item out_h
14627 The output width and height (the size of the padded area), as
14628 specified by the @var{width} and @var{height} expressions.
14629
14630 @item ow
14631 @item oh
14632 These are the same as @var{out_w} and @var{out_h}.
14633
14634 @item x
14635 @item y
14636 The x and y offsets as specified by the @var{x} and @var{y}
14637 expressions, or NAN if not yet specified.
14638
14639 @item a
14640 same as @var{iw} / @var{ih}
14641
14642 @item sar
14643 input sample aspect ratio
14644
14645 @item dar
14646 input display aspect ratio, it is the same as (@var{iw} / @var{ih}) * @var{sar}
14647
14648 @item hsub
14649 @item vsub
14650 The horizontal and vertical chroma subsample values. For example for the
14651 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
14652 @end table
14653
14654 @subsection Examples
14655
14656 @itemize
14657 @item
14658 Add paddings with the color "violet" to the input video. The output video
14659 size is 640x480, and the top-left corner of the input video is placed at
14660 column 0, row 40
14661 @example
14662 pad=640:480:0:40:violet
14663 @end example
14664
14665 The example above is equivalent to the following command:
14666 @example
14667 pad=width=640:height=480:x=0:y=40:color=violet
14668 @end example
14669
14670 @item
14671 Pad the input to get an output with dimensions increased by 3/2,
14672 and put the input video at the center of the padded area:
14673 @example
14674 pad="3/2*iw:3/2*ih:(ow-iw)/2:(oh-ih)/2"
14675 @end example
14676
14677 @item
14678 Pad the input to get a squared output with size equal to the maximum
14679 value between the input width and height, and put the input video at
14680 the center of the padded area:
14681 @example
14682 pad="max(iw\,ih):ow:(ow-iw)/2:(oh-ih)/2"
14683 @end example
14684
14685 @item
14686 Pad the input to get a final w/h ratio of 16:9:
14687 @example
14688 pad="ih*16/9:ih:(ow-iw)/2:(oh-ih)/2"
14689 @end example
14690
14691 @item
14692 In case of anamorphic video, in order to set the output display aspect
14693 correctly, it is necessary to use @var{sar} in the expression,
14694 according to the relation:
14695 @example
14696 (ih * X / ih) * sar = output_dar
14697 X = output_dar / sar
14698 @end example
14699
14700 Thus the previous example needs to be modified to:
14701 @example
14702 pad="ih*16/9/sar:ih:(ow-iw)/2:(oh-ih)/2"
14703 @end example
14704
14705 @item
14706 Double the output size and put the input video in the bottom-right
14707 corner of the output padded area:
14708 @example
14709 pad="2*iw:2*ih:ow-iw:oh-ih"
14710 @end example
14711 @end itemize
14712
14713 @anchor{palettegen}
14714 @section palettegen
14715
14716 Generate one palette for a whole video stream.
14717
14718 It accepts the following options:
14719
14720 @table @option
14721 @item max_colors
14722 Set the maximum number of colors to quantize in the palette.
14723 Note: the palette will still contain 256 colors; the unused palette entries
14724 will be black.
14725
14726 @item reserve_transparent
14727 Create a palette of 255 colors maximum and reserve the last one for
14728 transparency. Reserving the transparency color is useful for GIF optimization.
14729 If not set, the maximum of colors in the palette will be 256. You probably want
14730 to disable this option for a standalone image.
14731 Set by default.
14732
14733 @item transparency_color
14734 Set the color that will be used as background for transparency.
14735
14736 @item stats_mode
14737 Set statistics mode.
14738
14739 It accepts the following values:
14740 @table @samp
14741 @item full
14742 Compute full frame histograms.
14743 @item diff
14744 Compute histograms only for the part that differs from previous frame. This
14745 might be relevant to give more importance to the moving part of your input if
14746 the background is static.
14747 @item single
14748 Compute new histogram for each frame.
14749 @end table
14750
14751 Default value is @var{full}.
14752 @end table
14753
14754 The filter also exports the frame metadata @code{lavfi.color_quant_ratio}
14755 (@code{nb_color_in / nb_color_out}) which you can use to evaluate the degree of
14756 color quantization of the palette. This information is also visible at
14757 @var{info} logging level.
14758
14759 @subsection Examples
14760
14761 @itemize
14762 @item
14763 Generate a representative palette of a given video using @command{ffmpeg}:
14764 @example
14765 ffmpeg -i input.mkv -vf palettegen palette.png
14766 @end example
14767 @end itemize
14768
14769 @section paletteuse
14770
14771 Use a palette to downsample an input video stream.
14772
14773 The filter takes two inputs: one video stream and a palette. The palette must
14774 be a 256 pixels image.
14775
14776 It accepts the following options:
14777
14778 @table @option
14779 @item dither
14780 Select dithering mode. Available algorithms are:
14781 @table @samp
14782 @item bayer
14783 Ordered 8x8 bayer dithering (deterministic)
14784 @item heckbert
14785 Dithering as defined by Paul Heckbert in 1982 (simple error diffusion).
14786 Note: this dithering is sometimes considered "wrong" and is included as a
14787 reference.
14788 @item floyd_steinberg
14789 Floyd and Steingberg dithering (error diffusion)
14790 @item sierra2
14791 Frankie Sierra dithering v2 (error diffusion)
14792 @item sierra2_4a
14793 Frankie Sierra dithering v2 "Lite" (error diffusion)
14794 @end table
14795
14796 Default is @var{sierra2_4a}.
14797
14798 @item bayer_scale
14799 When @var{bayer} dithering is selected, this option defines the scale of the
14800 pattern (how much the crosshatch pattern is visible). A low value means more
14801 visible pattern for less banding, and higher value means less visible pattern
14802 at the cost of more banding.
14803
14804 The option must be an integer value in the range [0,5]. Default is @var{2}.
14805
14806 @item diff_mode
14807 If set, define the zone to process
14808
14809 @table @samp
14810 @item rectangle
14811 Only the changing rectangle will be reprocessed. This is similar to GIF
14812 cropping/offsetting compression mechanism. This option can be useful for speed
14813 if only a part of the image is changing, and has use cases such as limiting the
14814 scope of the error diffusal @option{dither} to the rectangle that bounds the
14815 moving scene (it leads to more deterministic output if the scene doesn't change
14816 much, and as a result less moving noise and better GIF compression).
14817 @end table
14818
14819 Default is @var{none}.
14820
14821 @item new
14822 Take new palette for each output frame.
14823
14824 @item alpha_threshold
14825 Sets the alpha threshold for transparency. Alpha values above this threshold
14826 will be treated as completely opaque, and values below this threshold will be
14827 treated as completely transparent.
14828
14829 The option must be an integer value in the range [0,255]. Default is @var{128}.
14830 @end table
14831
14832 @subsection Examples
14833
14834 @itemize
14835 @item
14836 Use a palette (generated for example with @ref{palettegen}) to encode a GIF
14837 using @command{ffmpeg}:
14838 @example
14839 ffmpeg -i input.mkv -i palette.png -lavfi paletteuse output.gif
14840 @end example
14841 @end itemize
14842
14843 @section perspective
14844
14845 Correct perspective of video not recorded perpendicular to the screen.
14846
14847 A description of the accepted parameters follows.
14848
14849 @table @option
14850 @item x0
14851 @item y0
14852 @item x1
14853 @item y1
14854 @item x2
14855 @item y2
14856 @item x3
14857 @item y3
14858 Set coordinates expression for top left, top right, bottom left and bottom right corners.
14859 Default values are @code{0:0:W:0:0:H:W:H} with which perspective will remain unchanged.
14860 If the @code{sense} option is set to @code{source}, then the specified points will be sent
14861 to the corners of the destination. If the @code{sense} option is set to @code{destination},
14862 then the corners of the source will be sent to the specified coordinates.
14863
14864 The expressions can use the following variables:
14865
14866 @table @option
14867 @item W
14868 @item H
14869 the width and height of video frame.
14870 @item in
14871 Input frame count.
14872 @item on
14873 Output frame count.
14874 @end table
14875
14876 @item interpolation
14877 Set interpolation for perspective correction.
14878
14879 It accepts the following values:
14880 @table @samp
14881 @item linear
14882 @item cubic
14883 @end table
14884
14885 Default value is @samp{linear}.
14886
14887 @item sense
14888 Set interpretation of coordinate options.
14889
14890 It accepts the following values:
14891 @table @samp
14892 @item 0, source
14893
14894 Send point in the source specified by the given coordinates to
14895 the corners of the destination.
14896
14897 @item 1, destination
14898
14899 Send the corners of the source to the point in the destination specified
14900 by the given coordinates.
14901
14902 Default value is @samp{source}.
14903 @end table
14904
14905 @item eval
14906 Set when the expressions for coordinates @option{x0,y0,...x3,y3} are evaluated.
14907
14908 It accepts the following values:
14909 @table @samp
14910 @item init
14911 only evaluate expressions once during the filter initialization or
14912 when a command is processed
14913
14914 @item frame
14915 evaluate expressions for each incoming frame
14916 @end table
14917
14918 Default value is @samp{init}.
14919 @end table
14920
14921 @section phase
14922
14923 Delay interlaced video by one field time so that the field order changes.
14924
14925 The intended use is to fix PAL movies that have been captured with the
14926 opposite field order to the film-to-video transfer.
14927
14928 A description of the accepted parameters follows.
14929
14930 @table @option
14931 @item mode
14932 Set phase mode.
14933
14934 It accepts the following values:
14935 @table @samp
14936 @item t
14937 Capture field order top-first, transfer bottom-first.
14938 Filter will delay the bottom field.
14939
14940 @item b
14941 Capture field order bottom-first, transfer top-first.
14942 Filter will delay the top field.
14943
14944 @item p
14945 Capture and transfer with the same field order. This mode only exists
14946 for the documentation of the other options to refer to, but if you
14947 actually select it, the filter will faithfully do nothing.
14948
14949 @item a
14950 Capture field order determined automatically by field flags, transfer
14951 opposite.
14952 Filter selects among @samp{t} and @samp{b} modes on a frame by frame
14953 basis using field flags. If no field information is available,
14954 then this works just like @samp{u}.
14955
14956 @item u
14957 Capture unknown or varying, transfer opposite.
14958 Filter selects among @samp{t} and @samp{b} on a frame by frame basis by
14959 analyzing the images and selecting the alternative that produces best
14960 match between the fields.
14961
14962 @item T
14963 Capture top-first, transfer unknown or varying.
14964 Filter selects among @samp{t} and @samp{p} using image analysis.
14965
14966 @item B
14967 Capture bottom-first, transfer unknown or varying.
14968 Filter selects among @samp{b} and @samp{p} using image analysis.
14969
14970 @item A
14971 Capture determined by field flags, transfer unknown or varying.
14972 Filter selects among @samp{t}, @samp{b} and @samp{p} using field flags and
14973 image analysis. If no field information is available, then this works just
14974 like @samp{U}. This is the default mode.
14975
14976 @item U
14977 Both capture and transfer unknown or varying.
14978 Filter selects among @samp{t}, @samp{b} and @samp{p} using image analysis only.
14979 @end table
14980 @end table
14981
14982 @section photosensitivity
14983 Reduce various flashes in video, so to help users with epilepsy.
14984
14985 It accepts the following options:
14986 @table @option
14987 @item frames, f
14988 Set how many frames to use when filtering. Default is 30.
14989
14990 @item threshold, t
14991 Set detection threshold factor. Default is 1.
14992 Lower is stricter.
14993
14994 @item skip
14995 Set how many pixels to skip when sampling frames. Default is 1.
14996 Allowed range is from 1 to 1024.
14997
14998 @item bypass
14999 Leave frames unchanged. Default is disabled.
15000 @end table
15001
15002 @section pixdesctest
15003
15004 Pixel format descriptor test filter, mainly useful for internal
15005 testing. The output video should be equal to the input video.
15006
15007 For example:
15008 @example
15009 format=monow, pixdesctest
15010 @end example
15011
15012 can be used to test the monowhite pixel format descriptor definition.
15013
15014 @section pixscope
15015
15016 Display sample values of color channels. Mainly useful for checking color
15017 and levels. Minimum supported resolution is 640x480.
15018
15019 The filters accept the following options:
15020
15021 @table @option
15022 @item x
15023 Set scope X position, relative offset on X axis.
15024
15025 @item y
15026 Set scope Y position, relative offset on Y axis.
15027
15028 @item w
15029 Set scope width.
15030
15031 @item h
15032 Set scope height.
15033
15034 @item o
15035 Set window opacity. This window also holds statistics about pixel area.
15036
15037 @item wx
15038 Set window X position, relative offset on X axis.
15039
15040 @item wy
15041 Set window Y position, relative offset on Y axis.
15042 @end table
15043
15044 @section pp
15045
15046 Enable the specified chain of postprocessing subfilters using libpostproc. This
15047 library should be automatically selected with a GPL build (@code{--enable-gpl}).
15048 Subfilters must be separated by '/' and can be disabled by prepending a '-'.
15049 Each subfilter and some options have a short and a long name that can be used
15050 interchangeably, i.e. dr/dering are the same.
15051
15052 The filters accept the following options:
15053
15054 @table @option
15055 @item subfilters
15056 Set postprocessing subfilters string.
15057 @end table
15058
15059 All subfilters share common options to determine their scope:
15060
15061 @table @option
15062 @item a/autoq
15063 Honor the quality commands for this subfilter.
15064
15065 @item c/chrom
15066 Do chrominance filtering, too (default).
15067
15068 @item y/nochrom
15069 Do luminance filtering only (no chrominance).
15070
15071 @item n/noluma
15072 Do chrominance filtering only (no luminance).
15073 @end table
15074
15075 These options can be appended after the subfilter name, separated by a '|'.
15076
15077 Available subfilters are:
15078
15079 @table @option
15080 @item hb/hdeblock[|difference[|flatness]]
15081 Horizontal deblocking filter
15082 @table @option
15083 @item difference
15084 Difference factor where higher values mean more deblocking (default: @code{32}).
15085 @item flatness
15086 Flatness threshold where lower values mean more deblocking (default: @code{39}).
15087 @end table
15088
15089 @item vb/vdeblock[|difference[|flatness]]
15090 Vertical deblocking filter
15091 @table @option
15092 @item difference
15093 Difference factor where higher values mean more deblocking (default: @code{32}).
15094 @item flatness
15095 Flatness threshold where lower values mean more deblocking (default: @code{39}).
15096 @end table
15097
15098 @item ha/hadeblock[|difference[|flatness]]
15099 Accurate horizontal deblocking filter
15100 @table @option
15101 @item difference
15102 Difference factor where higher values mean more deblocking (default: @code{32}).
15103 @item flatness
15104 Flatness threshold where lower values mean more deblocking (default: @code{39}).
15105 @end table
15106
15107 @item va/vadeblock[|difference[|flatness]]
15108 Accurate vertical deblocking filter
15109 @table @option
15110 @item difference
15111 Difference factor where higher values mean more deblocking (default: @code{32}).
15112 @item flatness
15113 Flatness threshold where lower values mean more deblocking (default: @code{39}).
15114 @end table
15115 @end table
15116
15117 The horizontal and vertical deblocking filters share the difference and
15118 flatness values so you cannot set different horizontal and vertical
15119 thresholds.
15120
15121 @table @option
15122 @item h1/x1hdeblock
15123 Experimental horizontal deblocking filter
15124
15125 @item v1/x1vdeblock
15126 Experimental vertical deblocking filter
15127
15128 @item dr/dering
15129 Deringing filter
15130
15131 @item tn/tmpnoise[|threshold1[|threshold2[|threshold3]]], temporal noise reducer
15132 @table @option
15133 @item threshold1
15134 larger -> stronger filtering
15135 @item threshold2
15136 larger -> stronger filtering
15137 @item threshold3
15138 larger -> stronger filtering
15139 @end table
15140
15141 @item al/autolevels[:f/fullyrange], automatic brightness / contrast correction
15142 @table @option
15143 @item f/fullyrange
15144 Stretch luminance to @code{0-255}.
15145 @end table
15146
15147 @item lb/linblenddeint
15148 Linear blend deinterlacing filter that deinterlaces the given block by
15149 filtering all lines with a @code{(1 2 1)} filter.
15150
15151 @item li/linipoldeint
15152 Linear interpolating deinterlacing filter that deinterlaces the given block by
15153 linearly interpolating every second line.
15154
15155 @item ci/cubicipoldeint
15156 Cubic interpolating deinterlacing filter deinterlaces the given block by
15157 cubically interpolating every second line.
15158
15159 @item md/mediandeint
15160 Median deinterlacing filter that deinterlaces the given block by applying a
15161 median filter to every second line.
15162
15163 @item fd/ffmpegdeint
15164 FFmpeg deinterlacing filter that deinterlaces the given block by filtering every
15165 second line with a @code{(-1 4 2 4 -1)} filter.
15166
15167 @item l5/lowpass5
15168 Vertically applied FIR lowpass deinterlacing filter that deinterlaces the given
15169 block by filtering all lines with a @code{(-1 2 6 2 -1)} filter.
15170
15171 @item fq/forceQuant[|quantizer]
15172 Overrides the quantizer table from the input with the constant quantizer you
15173 specify.
15174 @table @option
15175 @item quantizer
15176 Quantizer to use
15177 @end table
15178
15179 @item de/default
15180 Default pp filter combination (@code{hb|a,vb|a,dr|a})
15181
15182 @item fa/fast
15183 Fast pp filter combination (@code{h1|a,v1|a,dr|a})
15184
15185 @item ac
15186 High quality pp filter combination (@code{ha|a|128|7,va|a,dr|a})
15187 @end table
15188
15189 @subsection Examples
15190
15191 @itemize
15192 @item
15193 Apply horizontal and vertical deblocking, deringing and automatic
15194 brightness/contrast:
15195 @example
15196 pp=hb/vb/dr/al
15197 @end example
15198
15199 @item
15200 Apply default filters without brightness/contrast correction:
15201 @example
15202 pp=de/-al
15203 @end example
15204
15205 @item
15206 Apply default filters and temporal denoiser:
15207 @example
15208 pp=default/tmpnoise|1|2|3
15209 @end example
15210
15211 @item
15212 Apply deblocking on luminance only, and switch vertical deblocking on or off
15213 automatically depending on available CPU time:
15214 @example
15215 pp=hb|y/vb|a
15216 @end example
15217 @end itemize
15218
15219 @section pp7
15220 Apply Postprocessing filter 7. It is variant of the @ref{spp} filter,
15221 similar to spp = 6 with 7 point DCT, where only the center sample is
15222 used after IDCT.
15223
15224 The filter accepts the following options:
15225
15226 @table @option
15227 @item qp
15228 Force a constant quantization parameter. It accepts an integer in range
15229 0 to 63. If not set, the filter will use the QP from the video stream
15230 (if available).
15231
15232 @item mode
15233 Set thresholding mode. Available modes are:
15234
15235 @table @samp
15236 @item hard
15237 Set hard thresholding.
15238 @item soft
15239 Set soft thresholding (better de-ringing effect, but likely blurrier).
15240 @item medium
15241 Set medium thresholding (good results, default).
15242 @end table
15243 @end table
15244
15245 @section premultiply
15246 Apply alpha premultiply effect to input video stream using first plane
15247 of second stream as alpha.
15248
15249 Both streams must have same dimensions and same pixel format.
15250
15251 The filter accepts the following option:
15252
15253 @table @option
15254 @item planes
15255 Set which planes will be processed, unprocessed planes will be copied.
15256 By default value 0xf, all planes will be processed.
15257
15258 @item inplace
15259 Do not require 2nd input for processing, instead use alpha plane from input stream.
15260 @end table
15261
15262 @section prewitt
15263 Apply prewitt operator to input video stream.
15264
15265 The filter accepts the following option:
15266
15267 @table @option
15268 @item planes
15269 Set which planes will be processed, unprocessed planes will be copied.
15270 By default value 0xf, all planes will be processed.
15271
15272 @item scale
15273 Set value which will be multiplied with filtered result.
15274
15275 @item delta
15276 Set value which will be added to filtered result.
15277 @end table
15278
15279 @section pseudocolor
15280
15281 Alter frame colors in video with pseudocolors.
15282
15283 This filter accepts the following options:
15284
15285 @table @option
15286 @item c0
15287 set pixel first component expression
15288
15289 @item c1
15290 set pixel second component expression
15291
15292 @item c2
15293 set pixel third component expression
15294
15295 @item c3
15296 set pixel fourth component expression, corresponds to the alpha component
15297
15298 @item i
15299 set component to use as base for altering colors
15300 @end table
15301
15302 Each of them specifies the expression to use for computing the lookup table for
15303 the corresponding pixel component values.
15304
15305 The expressions can contain the following constants and functions:
15306
15307 @table @option
15308 @item w
15309 @item h
15310 The input width and height.
15311
15312 @item val
15313 The input value for the pixel component.
15314
15315 @item ymin, umin, vmin, amin
15316 The minimum allowed component value.
15317
15318 @item ymax, umax, vmax, amax
15319 The maximum allowed component value.
15320 @end table
15321
15322 All expressions default to "val".
15323
15324 @subsection Examples
15325
15326 @itemize
15327 @item
15328 Change too high luma values to gradient:
15329 @example
15330 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'"
15331 @end example
15332 @end itemize
15333
15334 @section psnr
15335
15336 Obtain the average, maximum and minimum PSNR (Peak Signal to Noise
15337 Ratio) between two input videos.
15338
15339 This filter takes in input two input videos, the first input is
15340 considered the "main" source and is passed unchanged to the
15341 output. The second input is used as a "reference" video for computing
15342 the PSNR.
15343
15344 Both video inputs must have the same resolution and pixel format for
15345 this filter to work correctly. Also it assumes that both inputs
15346 have the same number of frames, which are compared one by one.
15347
15348 The obtained average PSNR is printed through the logging system.
15349
15350 The filter stores the accumulated MSE (mean squared error) of each
15351 frame, and at the end of the processing it is averaged across all frames
15352 equally, and the following formula is applied to obtain the PSNR:
15353
15354 @example
15355 PSNR = 10*log10(MAX^2/MSE)
15356 @end example
15357
15358 Where MAX is the average of the maximum values of each component of the
15359 image.
15360
15361 The description of the accepted parameters follows.
15362
15363 @table @option
15364 @item stats_file, f
15365 If specified the filter will use the named file to save the PSNR of
15366 each individual frame. When filename equals "-" the data is sent to
15367 standard output.
15368
15369 @item stats_version
15370 Specifies which version of the stats file format to use. Details of
15371 each format are written below.
15372 Default value is 1.
15373
15374 @item stats_add_max
15375 Determines whether the max value is output to the stats log.
15376 Default value is 0.
15377 Requires stats_version >= 2. If this is set and stats_version < 2,
15378 the filter will return an error.
15379 @end table
15380
15381 This filter also supports the @ref{framesync} options.
15382
15383 The file printed if @var{stats_file} is selected, contains a sequence of
15384 key/value pairs of the form @var{key}:@var{value} for each compared
15385 couple of frames.
15386
15387 If a @var{stats_version} greater than 1 is specified, a header line precedes
15388 the list of per-frame-pair stats, with key value pairs following the frame
15389 format with the following parameters:
15390
15391 @table @option
15392 @item psnr_log_version
15393 The version of the log file format. Will match @var{stats_version}.
15394
15395 @item fields
15396 A comma separated list of the per-frame-pair parameters included in
15397 the log.
15398 @end table
15399
15400 A description of each shown per-frame-pair parameter follows:
15401
15402 @table @option
15403 @item n
15404 sequential number of the input frame, starting from 1
15405
15406 @item mse_avg
15407 Mean Square Error pixel-by-pixel average difference of the compared
15408 frames, averaged over all the image components.
15409
15410 @item mse_y, mse_u, mse_v, mse_r, mse_g, mse_b, mse_a
15411 Mean Square Error pixel-by-pixel average difference of the compared
15412 frames for the component specified by the suffix.
15413
15414 @item psnr_y, psnr_u, psnr_v, psnr_r, psnr_g, psnr_b, psnr_a
15415 Peak Signal to Noise ratio of the compared frames for the component
15416 specified by the suffix.
15417
15418 @item max_avg, max_y, max_u, max_v
15419 Maximum allowed value for each channel, and average over all
15420 channels.
15421 @end table
15422
15423 @subsection Examples
15424 @itemize
15425 @item
15426 For example:
15427 @example
15428 movie=ref_movie.mpg, setpts=PTS-STARTPTS [main];
15429 [main][ref] psnr="stats_file=stats.log" [out]
15430 @end example
15431
15432 On this example the input file being processed is compared with the
15433 reference file @file{ref_movie.mpg}. The PSNR of each individual frame
15434 is stored in @file{stats.log}.
15435
15436 @item
15437 Another example with different containers:
15438 @example
15439 ffmpeg -i main.mpg -i ref.mkv -lavfi  "[0:v]settb=AVTB,setpts=PTS-STARTPTS[main];[1:v]settb=AVTB,setpts=PTS-STARTPTS[ref];[main][ref]psnr" -f null -
15440 @end example
15441 @end itemize
15442
15443 @anchor{pullup}
15444 @section pullup
15445
15446 Pulldown reversal (inverse telecine) filter, capable of handling mixed
15447 hard-telecine, 24000/1001 fps progressive, and 30000/1001 fps progressive
15448 content.
15449
15450 The pullup filter is designed to take advantage of future context in making
15451 its decisions. This filter is stateless in the sense that it does not lock
15452 onto a pattern to follow, but it instead looks forward to the following
15453 fields in order to identify matches and rebuild progressive frames.
15454
15455 To produce content with an even framerate, insert the fps filter after
15456 pullup, use @code{fps=24000/1001} if the input frame rate is 29.97fps,
15457 @code{fps=24} for 30fps and the (rare) telecined 25fps input.
15458
15459 The filter accepts the following options:
15460
15461 @table @option
15462 @item jl
15463 @item jr
15464 @item jt
15465 @item jb
15466 These options set the amount of "junk" to ignore at the left, right, top, and
15467 bottom of the image, respectively. Left and right are in units of 8 pixels,
15468 while top and bottom are in units of 2 lines.
15469 The default is 8 pixels on each side.
15470
15471 @item sb
15472 Set the strict breaks. Setting this option to 1 will reduce the chances of
15473 filter generating an occasional mismatched frame, but it may also cause an
15474 excessive number of frames to be dropped during high motion sequences.
15475 Conversely, setting it to -1 will make filter match fields more easily.
15476 This may help processing of video where there is slight blurring between
15477 the fields, but may also cause there to be interlaced frames in the output.
15478 Default value is @code{0}.
15479
15480 @item mp
15481 Set the metric plane to use. It accepts the following values:
15482 @table @samp
15483 @item l
15484 Use luma plane.
15485
15486 @item u
15487 Use chroma blue plane.
15488
15489 @item v
15490 Use chroma red plane.
15491 @end table
15492
15493 This option may be set to use chroma plane instead of the default luma plane
15494 for doing filter's computations. This may improve accuracy on very clean
15495 source material, but more likely will decrease accuracy, especially if there
15496 is chroma noise (rainbow effect) or any grayscale video.
15497 The main purpose of setting @option{mp} to a chroma plane is to reduce CPU
15498 load and make pullup usable in realtime on slow machines.
15499 @end table
15500
15501 For best results (without duplicated frames in the output file) it is
15502 necessary to change the output frame rate. For example, to inverse
15503 telecine NTSC input:
15504 @example
15505 ffmpeg -i input -vf pullup -r 24000/1001 ...
15506 @end example
15507
15508 @section qp
15509
15510 Change video quantization parameters (QP).
15511
15512 The filter accepts the following option:
15513
15514 @table @option
15515 @item qp
15516 Set expression for quantization parameter.
15517 @end table
15518
15519 The expression is evaluated through the eval API and can contain, among others,
15520 the following constants:
15521
15522 @table @var
15523 @item known
15524 1 if index is not 129, 0 otherwise.
15525
15526 @item qp
15527 Sequential index starting from -129 to 128.
15528 @end table
15529
15530 @subsection Examples
15531
15532 @itemize
15533 @item
15534 Some equation like:
15535 @example
15536 qp=2+2*sin(PI*qp)
15537 @end example
15538 @end itemize
15539
15540 @section random
15541
15542 Flush video frames from internal cache of frames into a random order.
15543 No frame is discarded.
15544 Inspired by @ref{frei0r} nervous filter.
15545
15546 @table @option
15547 @item frames
15548 Set size in number of frames of internal cache, in range from @code{2} to
15549 @code{512}. Default is @code{30}.
15550
15551 @item seed
15552 Set seed for random number generator, must be an integer included between
15553 @code{0} and @code{UINT32_MAX}. If not specified, or if explicitly set to
15554 less than @code{0}, the filter will try to use a good random seed on a
15555 best effort basis.
15556 @end table
15557
15558 @section readeia608
15559
15560 Read closed captioning (EIA-608) information from the top lines of a video frame.
15561
15562 This filter adds frame metadata for @code{lavfi.readeia608.X.cc} and
15563 @code{lavfi.readeia608.X.line}, where @code{X} is the number of the identified line
15564 with EIA-608 data (starting from 0). A description of each metadata value follows:
15565
15566 @table @option
15567 @item lavfi.readeia608.X.cc
15568 The two bytes stored as EIA-608 data (printed in hexadecimal).
15569
15570 @item lavfi.readeia608.X.line
15571 The number of the line on which the EIA-608 data was identified and read.
15572 @end table
15573
15574 This filter accepts the following options:
15575
15576 @table @option
15577 @item scan_min
15578 Set the line to start scanning for EIA-608 data. Default is @code{0}.
15579
15580 @item scan_max
15581 Set the line to end scanning for EIA-608 data. Default is @code{29}.
15582
15583 @item spw
15584 Set the ratio of width reserved for sync code detection.
15585 Default is @code{0.27}. Allowed range is @code{[0.1 - 0.7]}.
15586
15587 @item chp
15588 Enable checking the parity bit. In the event of a parity error, the filter will output
15589 @code{0x00} for that character. Default is false.
15590
15591 @item lp
15592 Lowpass lines prior to further processing. Default is enabled.
15593 @end table
15594
15595 @subsection Examples
15596
15597 @itemize
15598 @item
15599 Output a csv with presentation time and the first two lines of identified EIA-608 captioning data.
15600 @example
15601 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
15602 @end example
15603 @end itemize
15604
15605 @section readvitc
15606
15607 Read vertical interval timecode (VITC) information from the top lines of a
15608 video frame.
15609
15610 The filter adds frame metadata key @code{lavfi.readvitc.tc_str} with the
15611 timecode value, if a valid timecode has been detected. Further metadata key
15612 @code{lavfi.readvitc.found} is set to 0/1 depending on whether
15613 timecode data has been found or not.
15614
15615 This filter accepts the following options:
15616
15617 @table @option
15618 @item scan_max
15619 Set the maximum number of lines to scan for VITC data. If the value is set to
15620 @code{-1} the full video frame is scanned. Default is @code{45}.
15621
15622 @item thr_b
15623 Set the luma threshold for black. Accepts float numbers in the range [0.0,1.0],
15624 default value is @code{0.2}. The value must be equal or less than @code{thr_w}.
15625
15626 @item thr_w
15627 Set the luma threshold for white. Accepts float numbers in the range [0.0,1.0],
15628 default value is @code{0.6}. The value must be equal or greater than @code{thr_b}.
15629 @end table
15630
15631 @subsection Examples
15632
15633 @itemize
15634 @item
15635 Detect and draw VITC data onto the video frame; if no valid VITC is detected,
15636 draw @code{--:--:--:--} as a placeholder:
15637 @example
15638 ffmpeg -i input.avi -filter:v 'readvitc,drawtext=fontfile=FreeMono.ttf:text=%@{metadata\\:lavfi.readvitc.tc_str\\:--\\\\\\:--\\\\\\:--\\\\\\:--@}:x=(w-tw)/2:y=400-ascent'
15639 @end example
15640 @end itemize
15641
15642 @section remap
15643
15644 Remap pixels using 2nd: Xmap and 3rd: Ymap input video stream.
15645
15646 Destination pixel at position (X, Y) will be picked from source (x, y) position
15647 where x = Xmap(X, Y) and y = Ymap(X, Y). If mapping values are out of range, zero
15648 value for pixel will be used for destination pixel.
15649
15650 Xmap and Ymap input video streams must be of same dimensions. Output video stream
15651 will have Xmap/Ymap video stream dimensions.
15652 Xmap and Ymap input video streams are 16bit depth, single channel.
15653
15654 @table @option
15655 @item format
15656 Specify pixel format of output from this filter. Can be @code{color} or @code{gray}.
15657 Default is @code{color}.
15658
15659 @item fill
15660 Specify the color of the unmapped pixels. For the syntax of this option,
15661 check the @ref{color syntax,,"Color" section in the ffmpeg-utils
15662 manual,ffmpeg-utils}. Default color is @code{black}.
15663 @end table
15664
15665 @section removegrain
15666
15667 The removegrain filter is a spatial denoiser for progressive video.
15668
15669 @table @option
15670 @item m0
15671 Set mode for the first plane.
15672
15673 @item m1
15674 Set mode for the second plane.
15675
15676 @item m2
15677 Set mode for the third plane.
15678
15679 @item m3
15680 Set mode for the fourth plane.
15681 @end table
15682
15683 Range of mode is from 0 to 24. Description of each mode follows:
15684
15685 @table @var
15686 @item 0
15687 Leave input plane unchanged. Default.
15688
15689 @item 1
15690 Clips the pixel with the minimum and maximum of the 8 neighbour pixels.
15691
15692 @item 2
15693 Clips the pixel with the second minimum and maximum of the 8 neighbour pixels.
15694
15695 @item 3
15696 Clips the pixel with the third minimum and maximum of the 8 neighbour pixels.
15697
15698 @item 4
15699 Clips the pixel with the fourth minimum and maximum of the 8 neighbour pixels.
15700 This is equivalent to a median filter.
15701
15702 @item 5
15703 Line-sensitive clipping giving the minimal change.
15704
15705 @item 6
15706 Line-sensitive clipping, intermediate.
15707
15708 @item 7
15709 Line-sensitive clipping, intermediate.
15710
15711 @item 8
15712 Line-sensitive clipping, intermediate.
15713
15714 @item 9
15715 Line-sensitive clipping on a line where the neighbours pixels are the closest.
15716
15717 @item 10
15718 Replaces the target pixel with the closest neighbour.
15719
15720 @item 11
15721 [1 2 1] horizontal and vertical kernel blur.
15722
15723 @item 12
15724 Same as mode 11.
15725
15726 @item 13
15727 Bob mode, interpolates top field from the line where the neighbours
15728 pixels are the closest.
15729
15730 @item 14
15731 Bob mode, interpolates bottom field from the line where the neighbours
15732 pixels are the closest.
15733
15734 @item 15
15735 Bob mode, interpolates top field. Same as 13 but with a more complicated
15736 interpolation formula.
15737
15738 @item 16
15739 Bob mode, interpolates bottom field. Same as 14 but with a more complicated
15740 interpolation formula.
15741
15742 @item 17
15743 Clips the pixel with the minimum and maximum of respectively the maximum and
15744 minimum of each pair of opposite neighbour pixels.
15745
15746 @item 18
15747 Line-sensitive clipping using opposite neighbours whose greatest distance from
15748 the current pixel is minimal.
15749
15750 @item 19
15751 Replaces the pixel with the average of its 8 neighbours.
15752
15753 @item 20
15754 Averages the 9 pixels ([1 1 1] horizontal and vertical blur).
15755
15756 @item 21
15757 Clips pixels using the averages of opposite neighbour.
15758
15759 @item 22
15760 Same as mode 21 but simpler and faster.
15761
15762 @item 23
15763 Small edge and halo removal, but reputed useless.
15764
15765 @item 24
15766 Similar as 23.
15767 @end table
15768
15769 @section removelogo
15770
15771 Suppress a TV station logo, using an image file to determine which
15772 pixels comprise the logo. It works by filling in the pixels that
15773 comprise the logo with neighboring pixels.
15774
15775 The filter accepts the following options:
15776
15777 @table @option
15778 @item filename, f
15779 Set the filter bitmap file, which can be any image format supported by
15780 libavformat. The width and height of the image file must match those of the
15781 video stream being processed.
15782 @end table
15783
15784 Pixels in the provided bitmap image with a value of zero are not
15785 considered part of the logo, non-zero pixels are considered part of
15786 the logo. If you use white (255) for the logo and black (0) for the
15787 rest, you will be safe. For making the filter bitmap, it is
15788 recommended to take a screen capture of a black frame with the logo
15789 visible, and then using a threshold filter followed by the erode
15790 filter once or twice.
15791
15792 If needed, little splotches can be fixed manually. Remember that if
15793 logo pixels are not covered, the filter quality will be much
15794 reduced. Marking too many pixels as part of the logo does not hurt as
15795 much, but it will increase the amount of blurring needed to cover over
15796 the image and will destroy more information than necessary, and extra
15797 pixels will slow things down on a large logo.
15798
15799 @section repeatfields
15800
15801 This filter uses the repeat_field flag from the Video ES headers and hard repeats
15802 fields based on its value.
15803
15804 @section reverse
15805
15806 Reverse a video clip.
15807
15808 Warning: This filter requires memory to buffer the entire clip, so trimming
15809 is suggested.
15810
15811 @subsection Examples
15812
15813 @itemize
15814 @item
15815 Take the first 5 seconds of a clip, and reverse it.
15816 @example
15817 trim=end=5,reverse
15818 @end example
15819 @end itemize
15820
15821 @section rgbashift
15822 Shift R/G/B/A pixels horizontally and/or vertically.
15823
15824 The filter accepts the following options:
15825 @table @option
15826 @item rh
15827 Set amount to shift red horizontally.
15828 @item rv
15829 Set amount to shift red vertically.
15830 @item gh
15831 Set amount to shift green horizontally.
15832 @item gv
15833 Set amount to shift green vertically.
15834 @item bh
15835 Set amount to shift blue horizontally.
15836 @item bv
15837 Set amount to shift blue vertically.
15838 @item ah
15839 Set amount to shift alpha horizontally.
15840 @item av
15841 Set amount to shift alpha vertically.
15842 @item edge
15843 Set edge mode, can be @var{smear}, default, or @var{warp}.
15844 @end table
15845
15846 @subsection Commands
15847
15848 This filter supports the all above options as @ref{commands}.
15849
15850 @section roberts
15851 Apply roberts cross operator to input video stream.
15852
15853 The filter accepts the following option:
15854
15855 @table @option
15856 @item planes
15857 Set which planes will be processed, unprocessed planes will be copied.
15858 By default value 0xf, all planes will be processed.
15859
15860 @item scale
15861 Set value which will be multiplied with filtered result.
15862
15863 @item delta
15864 Set value which will be added to filtered result.
15865 @end table
15866
15867 @section rotate
15868
15869 Rotate video by an arbitrary angle expressed in radians.
15870
15871 The filter accepts the following options:
15872
15873 A description of the optional parameters follows.
15874 @table @option
15875 @item angle, a
15876 Set an expression for the angle by which to rotate the input video
15877 clockwise, expressed as a number of radians. A negative value will
15878 result in a counter-clockwise rotation. By default it is set to "0".
15879
15880 This expression is evaluated for each frame.
15881
15882 @item out_w, ow
15883 Set the output width expression, default value is "iw".
15884 This expression is evaluated just once during configuration.
15885
15886 @item out_h, oh
15887 Set the output height expression, default value is "ih".
15888 This expression is evaluated just once during configuration.
15889
15890 @item bilinear
15891 Enable bilinear interpolation if set to 1, a value of 0 disables
15892 it. Default value is 1.
15893
15894 @item fillcolor, c
15895 Set the color used to fill the output area not covered by the rotated
15896 image. For the general syntax of this option, check the
15897 @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
15898 If the special value "none" is selected then no
15899 background is printed (useful for example if the background is never shown).
15900
15901 Default value is "black".
15902 @end table
15903
15904 The expressions for the angle and the output size can contain the
15905 following constants and functions:
15906
15907 @table @option
15908 @item n
15909 sequential number of the input frame, starting from 0. It is always NAN
15910 before the first frame is filtered.
15911
15912 @item t
15913 time in seconds of the input frame, it is set to 0 when the filter is
15914 configured. It is always NAN before the first frame is filtered.
15915
15916 @item hsub
15917 @item vsub
15918 horizontal and vertical chroma subsample values. For example for the
15919 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
15920
15921 @item in_w, iw
15922 @item in_h, ih
15923 the input video width and height
15924
15925 @item out_w, ow
15926 @item out_h, oh
15927 the output width and height, that is the size of the padded area as
15928 specified by the @var{width} and @var{height} expressions
15929
15930 @item rotw(a)
15931 @item roth(a)
15932 the minimal width/height required for completely containing the input
15933 video rotated by @var{a} radians.
15934
15935 These are only available when computing the @option{out_w} and
15936 @option{out_h} expressions.
15937 @end table
15938
15939 @subsection Examples
15940
15941 @itemize
15942 @item
15943 Rotate the input by PI/6 radians clockwise:
15944 @example
15945 rotate=PI/6
15946 @end example
15947
15948 @item
15949 Rotate the input by PI/6 radians counter-clockwise:
15950 @example
15951 rotate=-PI/6
15952 @end example
15953
15954 @item
15955 Rotate the input by 45 degrees clockwise:
15956 @example
15957 rotate=45*PI/180
15958 @end example
15959
15960 @item
15961 Apply a constant rotation with period T, starting from an angle of PI/3:
15962 @example
15963 rotate=PI/3+2*PI*t/T
15964 @end example
15965
15966 @item
15967 Make the input video rotation oscillating with a period of T
15968 seconds and an amplitude of A radians:
15969 @example
15970 rotate=A*sin(2*PI/T*t)
15971 @end example
15972
15973 @item
15974 Rotate the video, output size is chosen so that the whole rotating
15975 input video is always completely contained in the output:
15976 @example
15977 rotate='2*PI*t:ow=hypot(iw,ih):oh=ow'
15978 @end example
15979
15980 @item
15981 Rotate the video, reduce the output size so that no background is ever
15982 shown:
15983 @example
15984 rotate=2*PI*t:ow='min(iw,ih)/sqrt(2)':oh=ow:c=none
15985 @end example
15986 @end itemize
15987
15988 @subsection Commands
15989
15990 The filter supports the following commands:
15991
15992 @table @option
15993 @item a, angle
15994 Set the angle expression.
15995 The command accepts the same syntax of the corresponding option.
15996
15997 If the specified expression is not valid, it is kept at its current
15998 value.
15999 @end table
16000
16001 @section sab
16002
16003 Apply Shape Adaptive Blur.
16004
16005 The filter accepts the following options:
16006
16007 @table @option
16008 @item luma_radius, lr
16009 Set luma blur filter strength, must be a value in range 0.1-4.0, default
16010 value is 1.0. A greater value will result in a more blurred image, and
16011 in slower processing.
16012
16013 @item luma_pre_filter_radius, lpfr
16014 Set luma pre-filter radius, must be a value in the 0.1-2.0 range, default
16015 value is 1.0.
16016
16017 @item luma_strength, ls
16018 Set luma maximum difference between pixels to still be considered, must
16019 be a value in the 0.1-100.0 range, default value is 1.0.
16020
16021 @item chroma_radius, cr
16022 Set chroma blur filter strength, must be a value in range -0.9-4.0. A
16023 greater value will result in a more blurred image, and in slower
16024 processing.
16025
16026 @item chroma_pre_filter_radius, cpfr
16027 Set chroma pre-filter radius, must be a value in the -0.9-2.0 range.
16028
16029 @item chroma_strength, cs
16030 Set chroma maximum difference between pixels to still be considered,
16031 must be a value in the -0.9-100.0 range.
16032 @end table
16033
16034 Each chroma option value, if not explicitly specified, is set to the
16035 corresponding luma option value.
16036
16037 @anchor{scale}
16038 @section scale
16039
16040 Scale (resize) the input video, using the libswscale library.
16041
16042 The scale filter forces the output display aspect ratio to be the same
16043 of the input, by changing the output sample aspect ratio.
16044
16045 If the input image format is different from the format requested by
16046 the next filter, the scale filter will convert the input to the
16047 requested format.
16048
16049 @subsection Options
16050 The filter accepts the following options, or any of the options
16051 supported by the libswscale scaler.
16052
16053 See @ref{scaler_options,,the ffmpeg-scaler manual,ffmpeg-scaler} for
16054 the complete list of scaler options.
16055
16056 @table @option
16057 @item width, w
16058 @item height, h
16059 Set the output video dimension expression. Default value is the input
16060 dimension.
16061
16062 If the @var{width} or @var{w} value is 0, the input width is used for
16063 the output. If the @var{height} or @var{h} value is 0, the input height
16064 is used for the output.
16065
16066 If one and only one of the values is -n with n >= 1, the scale filter
16067 will use a value that maintains the aspect ratio of the input image,
16068 calculated from the other specified dimension. After that it will,
16069 however, make sure that the calculated dimension is divisible by n and
16070 adjust the value if necessary.
16071
16072 If both values are -n with n >= 1, the behavior will be identical to
16073 both values being set to 0 as previously detailed.
16074
16075 See below for the list of accepted constants for use in the dimension
16076 expression.
16077
16078 @item eval
16079 Specify when to evaluate @var{width} and @var{height} expression. It accepts the following values:
16080
16081 @table @samp
16082 @item init
16083 Only evaluate expressions once during the filter initialization or when a command is processed.
16084
16085 @item frame
16086 Evaluate expressions for each incoming frame.
16087
16088 @end table
16089
16090 Default value is @samp{init}.
16091
16092
16093 @item interl
16094 Set the interlacing mode. It accepts the following values:
16095
16096 @table @samp
16097 @item 1
16098 Force interlaced aware scaling.
16099
16100 @item 0
16101 Do not apply interlaced scaling.
16102
16103 @item -1
16104 Select interlaced aware scaling depending on whether the source frames
16105 are flagged as interlaced or not.
16106 @end table
16107
16108 Default value is @samp{0}.
16109
16110 @item flags
16111 Set libswscale scaling flags. See
16112 @ref{sws_flags,,the ffmpeg-scaler manual,ffmpeg-scaler} for the
16113 complete list of values. If not explicitly specified the filter applies
16114 the default flags.
16115
16116
16117 @item param0, param1
16118 Set libswscale input parameters for scaling algorithms that need them. See
16119 @ref{sws_params,,the ffmpeg-scaler manual,ffmpeg-scaler} for the
16120 complete documentation. If not explicitly specified the filter applies
16121 empty parameters.
16122
16123
16124
16125 @item size, s
16126 Set the video size. For the syntax of this option, check the
16127 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
16128
16129 @item in_color_matrix
16130 @item out_color_matrix
16131 Set in/output YCbCr color space type.
16132
16133 This allows the autodetected value to be overridden as well as allows forcing
16134 a specific value used for the output and encoder.
16135
16136 If not specified, the color space type depends on the pixel format.
16137
16138 Possible values:
16139
16140 @table @samp
16141 @item auto
16142 Choose automatically.
16143
16144 @item bt709
16145 Format conforming to International Telecommunication Union (ITU)
16146 Recommendation BT.709.
16147
16148 @item fcc
16149 Set color space conforming to the United States Federal Communications
16150 Commission (FCC) Code of Federal Regulations (CFR) Title 47 (2003) 73.682 (a).
16151
16152 @item bt601
16153 @item bt470
16154 @item smpte170m
16155 Set color space conforming to:
16156
16157 @itemize
16158 @item
16159 ITU Radiocommunication Sector (ITU-R) Recommendation BT.601
16160
16161 @item
16162 ITU-R Rec. BT.470-6 (1998) Systems B, B1, and G
16163
16164 @item
16165 Society of Motion Picture and Television Engineers (SMPTE) ST 170:2004
16166
16167 @end itemize
16168
16169 @item smpte240m
16170 Set color space conforming to SMPTE ST 240:1999.
16171
16172 @item bt2020
16173 Set color space conforming to ITU-R BT.2020 non-constant luminance system.
16174 @end table
16175
16176 @item in_range
16177 @item out_range
16178 Set in/output YCbCr sample range.
16179
16180 This allows the autodetected value to be overridden as well as allows forcing
16181 a specific value used for the output and encoder. If not specified, the
16182 range depends on the pixel format. Possible values:
16183
16184 @table @samp
16185 @item auto/unknown
16186 Choose automatically.
16187
16188 @item jpeg/full/pc
16189 Set full range (0-255 in case of 8-bit luma).
16190
16191 @item mpeg/limited/tv
16192 Set "MPEG" range (16-235 in case of 8-bit luma).
16193 @end table
16194
16195 @item force_original_aspect_ratio
16196 Enable decreasing or increasing output video width or height if necessary to
16197 keep the original aspect ratio. Possible values:
16198
16199 @table @samp
16200 @item disable
16201 Scale the video as specified and disable this feature.
16202
16203 @item decrease
16204 The output video dimensions will automatically be decreased if needed.
16205
16206 @item increase
16207 The output video dimensions will automatically be increased if needed.
16208
16209 @end table
16210
16211 One useful instance of this option is that when you know a specific device's
16212 maximum allowed resolution, you can use this to limit the output video to
16213 that, while retaining the aspect ratio. For example, device A allows
16214 1280x720 playback, and your video is 1920x800. Using this option (set it to
16215 decrease) and specifying 1280x720 to the command line makes the output
16216 1280x533.
16217
16218 Please note that this is a different thing than specifying -1 for @option{w}
16219 or @option{h}, you still need to specify the output resolution for this option
16220 to work.
16221
16222 @item force_divisible_by
16223 Ensures that both the output dimensions, width and height, are divisible by the
16224 given integer when used together with @option{force_original_aspect_ratio}. This
16225 works similar to using @code{-n} in the @option{w} and @option{h} options.
16226
16227 This option respects the value set for @option{force_original_aspect_ratio},
16228 increasing or decreasing the resolution accordingly. The video's aspect ratio
16229 may be slightly modified.
16230
16231 This option can be handy if you need to have a video fit within or exceed
16232 a defined resolution using @option{force_original_aspect_ratio} but also have
16233 encoder restrictions on width or height divisibility.
16234
16235 @end table
16236
16237 The values of the @option{w} and @option{h} options are expressions
16238 containing the following constants:
16239
16240 @table @var
16241 @item in_w
16242 @item in_h
16243 The input width and height
16244
16245 @item iw
16246 @item ih
16247 These are the same as @var{in_w} and @var{in_h}.
16248
16249 @item out_w
16250 @item out_h
16251 The output (scaled) width and height
16252
16253 @item ow
16254 @item oh
16255 These are the same as @var{out_w} and @var{out_h}
16256
16257 @item a
16258 The same as @var{iw} / @var{ih}
16259
16260 @item sar
16261 input sample aspect ratio
16262
16263 @item dar
16264 The input display aspect ratio. Calculated from @code{(iw / ih) * sar}.
16265
16266 @item hsub
16267 @item vsub
16268 horizontal and vertical input chroma subsample values. For example for the
16269 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
16270
16271 @item ohsub
16272 @item ovsub
16273 horizontal and vertical output chroma subsample values. For example for the
16274 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
16275
16276 @item n
16277 The (sequential) number of the input frame, starting from 0.
16278 Only available with @code{eval=frame}.
16279
16280 @item t
16281 The presentation timestamp of the input frame, expressed as a number of
16282 seconds. Only available with @code{eval=frame}.
16283
16284 @item pos
16285 The position (byte offset) of the frame in the input stream, or NaN if
16286 this information is unavailable and/or meaningless (for example in case of synthetic video).
16287 Only available with @code{eval=frame}.
16288 @end table
16289
16290 @subsection Examples
16291
16292 @itemize
16293 @item
16294 Scale the input video to a size of 200x100
16295 @example
16296 scale=w=200:h=100
16297 @end example
16298
16299 This is equivalent to:
16300 @example
16301 scale=200:100
16302 @end example
16303
16304 or:
16305 @example
16306 scale=200x100
16307 @end example
16308
16309 @item
16310 Specify a size abbreviation for the output size:
16311 @example
16312 scale=qcif
16313 @end example
16314
16315 which can also be written as:
16316 @example
16317 scale=size=qcif
16318 @end example
16319
16320 @item
16321 Scale the input to 2x:
16322 @example
16323 scale=w=2*iw:h=2*ih
16324 @end example
16325
16326 @item
16327 The above is the same as:
16328 @example
16329 scale=2*in_w:2*in_h
16330 @end example
16331
16332 @item
16333 Scale the input to 2x with forced interlaced scaling:
16334 @example
16335 scale=2*iw:2*ih:interl=1
16336 @end example
16337
16338 @item
16339 Scale the input to half size:
16340 @example
16341 scale=w=iw/2:h=ih/2
16342 @end example
16343
16344 @item
16345 Increase the width, and set the height to the same size:
16346 @example
16347 scale=3/2*iw:ow
16348 @end example
16349
16350 @item
16351 Seek Greek harmony:
16352 @example
16353 scale=iw:1/PHI*iw
16354 scale=ih*PHI:ih
16355 @end example
16356
16357 @item
16358 Increase the height, and set the width to 3/2 of the height:
16359 @example
16360 scale=w=3/2*oh:h=3/5*ih
16361 @end example
16362
16363 @item
16364 Increase the size, making the size a multiple of the chroma
16365 subsample values:
16366 @example
16367 scale="trunc(3/2*iw/hsub)*hsub:trunc(3/2*ih/vsub)*vsub"
16368 @end example
16369
16370 @item
16371 Increase the width to a maximum of 500 pixels,
16372 keeping the same aspect ratio as the input:
16373 @example
16374 scale=w='min(500\, iw*3/2):h=-1'
16375 @end example
16376
16377 @item
16378 Make pixels square by combining scale and setsar:
16379 @example
16380 scale='trunc(ih*dar):ih',setsar=1/1
16381 @end example
16382
16383 @item
16384 Make pixels square by combining scale and setsar,
16385 making sure the resulting resolution is even (required by some codecs):
16386 @example
16387 scale='trunc(ih*dar/2)*2:trunc(ih/2)*2',setsar=1/1
16388 @end example
16389 @end itemize
16390
16391 @subsection Commands
16392
16393 This filter supports the following commands:
16394 @table @option
16395 @item width, w
16396 @item height, h
16397 Set the output video dimension expression.
16398 The command accepts the same syntax of the corresponding option.
16399
16400 If the specified expression is not valid, it is kept at its current
16401 value.
16402 @end table
16403
16404 @section scale_npp
16405
16406 Use the NVIDIA Performance Primitives (libnpp) to perform scaling and/or pixel
16407 format conversion on CUDA video frames. Setting the output width and height
16408 works in the same way as for the @var{scale} filter.
16409
16410 The following additional options are accepted:
16411 @table @option
16412 @item format
16413 The pixel format of the output CUDA frames. If set to the string "same" (the
16414 default), the input format will be kept. Note that automatic format negotiation
16415 and conversion is not yet supported for hardware frames
16416
16417 @item interp_algo
16418 The interpolation algorithm used for resizing. One of the following:
16419 @table @option
16420 @item nn
16421 Nearest neighbour.
16422
16423 @item linear
16424 @item cubic
16425 @item cubic2p_bspline
16426 2-parameter cubic (B=1, C=0)
16427
16428 @item cubic2p_catmullrom
16429 2-parameter cubic (B=0, C=1/2)
16430
16431 @item cubic2p_b05c03
16432 2-parameter cubic (B=1/2, C=3/10)
16433
16434 @item super
16435 Supersampling
16436
16437 @item lanczos
16438 @end table
16439
16440 @item force_original_aspect_ratio
16441 Enable decreasing or increasing output video width or height if necessary to
16442 keep the original aspect ratio. Possible values:
16443
16444 @table @samp
16445 @item disable
16446 Scale the video as specified and disable this feature.
16447
16448 @item decrease
16449 The output video dimensions will automatically be decreased if needed.
16450
16451 @item increase
16452 The output video dimensions will automatically be increased if needed.
16453
16454 @end table
16455
16456 One useful instance of this option is that when you know a specific device's
16457 maximum allowed resolution, you can use this to limit the output video to
16458 that, while retaining the aspect ratio. For example, device A allows
16459 1280x720 playback, and your video is 1920x800. Using this option (set it to
16460 decrease) and specifying 1280x720 to the command line makes the output
16461 1280x533.
16462
16463 Please note that this is a different thing than specifying -1 for @option{w}
16464 or @option{h}, you still need to specify the output resolution for this option
16465 to work.
16466
16467 @item force_divisible_by
16468 Ensures that both the output dimensions, width and height, are divisible by the
16469 given integer when used together with @option{force_original_aspect_ratio}. This
16470 works similar to using @code{-n} in the @option{w} and @option{h} options.
16471
16472 This option respects the value set for @option{force_original_aspect_ratio},
16473 increasing or decreasing the resolution accordingly. The video's aspect ratio
16474 may be slightly modified.
16475
16476 This option can be handy if you need to have a video fit within or exceed
16477 a defined resolution using @option{force_original_aspect_ratio} but also have
16478 encoder restrictions on width or height divisibility.
16479
16480 @end table
16481
16482 @section scale2ref
16483
16484 Scale (resize) the input video, based on a reference video.
16485
16486 See the scale filter for available options, scale2ref supports the same but
16487 uses the reference video instead of the main input as basis. scale2ref also
16488 supports the following additional constants for the @option{w} and
16489 @option{h} options:
16490
16491 @table @var
16492 @item main_w
16493 @item main_h
16494 The main input video's width and height
16495
16496 @item main_a
16497 The same as @var{main_w} / @var{main_h}
16498
16499 @item main_sar
16500 The main input video's sample aspect ratio
16501
16502 @item main_dar, mdar
16503 The main input video's display aspect ratio. Calculated from
16504 @code{(main_w / main_h) * main_sar}.
16505
16506 @item main_hsub
16507 @item main_vsub
16508 The main input video's horizontal and vertical chroma subsample values.
16509 For example for the pixel format "yuv422p" @var{hsub} is 2 and @var{vsub}
16510 is 1.
16511
16512 @item main_n
16513 The (sequential) number of the main input frame, starting from 0.
16514 Only available with @code{eval=frame}.
16515
16516 @item main_t
16517 The presentation timestamp of the main input frame, expressed as a number of
16518 seconds. Only available with @code{eval=frame}.
16519
16520 @item main_pos
16521 The position (byte offset) of the frame in the main input stream, or NaN if
16522 this information is unavailable and/or meaningless (for example in case of synthetic video).
16523 Only available with @code{eval=frame}.
16524 @end table
16525
16526 @subsection Examples
16527
16528 @itemize
16529 @item
16530 Scale a subtitle stream (b) to match the main video (a) in size before overlaying
16531 @example
16532 'scale2ref[b][a];[a][b]overlay'
16533 @end example
16534
16535 @item
16536 Scale a logo to 1/10th the height of a video, while preserving its display aspect ratio.
16537 @example
16538 [logo-in][video-in]scale2ref=w=oh*mdar:h=ih/10[logo-out][video-out]
16539 @end example
16540 @end itemize
16541
16542 @subsection Commands
16543
16544 This filter supports the following commands:
16545 @table @option
16546 @item width, w
16547 @item height, h
16548 Set the output video dimension expression.
16549 The command accepts the same syntax of the corresponding option.
16550
16551 If the specified expression is not valid, it is kept at its current
16552 value.
16553 @end table
16554
16555 @section scroll
16556 Scroll input video horizontally and/or vertically by constant speed.
16557
16558 The filter accepts the following options:
16559 @table @option
16560 @item horizontal, h
16561 Set the horizontal scrolling speed. Default is 0. Allowed range is from -1 to 1.
16562 Negative values changes scrolling direction.
16563
16564 @item vertical, v
16565 Set the vertical scrolling speed. Default is 0. Allowed range is from -1 to 1.
16566 Negative values changes scrolling direction.
16567
16568 @item hpos
16569 Set the initial horizontal scrolling position. Default is 0. Allowed range is from 0 to 1.
16570
16571 @item vpos
16572 Set the initial vertical scrolling position. Default is 0. Allowed range is from 0 to 1.
16573 @end table
16574
16575 @subsection Commands
16576
16577 This filter supports the following @ref{commands}:
16578 @table @option
16579 @item horizontal, h
16580 Set the horizontal scrolling speed.
16581 @item vertical, v
16582 Set the vertical scrolling speed.
16583 @end table
16584
16585 @anchor{scdet}
16586 @section scdet
16587
16588 Detect video scene change.
16589
16590 This filter sets frame metadata with mafd between frame, the scene score, and
16591 forward the frame to the next filter, so they can use these metadata to detect
16592 scene change or others.
16593
16594 In addition, this filter logs a message and sets frame metadata when it detects
16595 a scene change by @option{threshold}.
16596
16597 @code{lavfi.scd.mafd} metadata keys are set with mafd for every frame.
16598
16599 @code{lavfi.scd.score} metadata keys are set with scene change score for every frame
16600 to detect scene change.
16601
16602 @code{lavfi.scd.time} metadata keys are set with current filtered frame time which
16603 detect scene change with @option{threshold}.
16604
16605 The filter accepts the following options:
16606
16607 @table @option
16608 @item threshold, t
16609 Set the scene change detection threshold as a percentage of maximum change. Good
16610 values are in the @code{[8.0, 14.0]} range. The range for @option{threshold} is
16611 @code{[0., 100.]}.
16612
16613 Default value is @code{10.}.
16614
16615 @item sc_pass, s
16616 Set the flag to pass scene change frames to the next filter. Default value is @code{0}
16617 You can enable it if you want to get snapshot of scene change frames only.
16618 @end table
16619
16620 @anchor{selectivecolor}
16621 @section selectivecolor
16622
16623 Adjust cyan, magenta, yellow and black (CMYK) to certain ranges of colors (such
16624 as "reds", "yellows", "greens", "cyans", ...). The adjustment range is defined
16625 by the "purity" of the color (that is, how saturated it already is).
16626
16627 This filter is similar to the Adobe Photoshop Selective Color tool.
16628
16629 The filter accepts the following options:
16630
16631 @table @option
16632 @item correction_method
16633 Select color correction method.
16634
16635 Available values are:
16636 @table @samp
16637 @item absolute
16638 Specified adjustments are applied "as-is" (added/subtracted to original pixel
16639 component value).
16640 @item relative
16641 Specified adjustments are relative to the original component value.
16642 @end table
16643 Default is @code{absolute}.
16644 @item reds
16645 Adjustments for red pixels (pixels where the red component is the maximum)
16646 @item yellows
16647 Adjustments for yellow pixels (pixels where the blue component is the minimum)
16648 @item greens
16649 Adjustments for green pixels (pixels where the green component is the maximum)
16650 @item cyans
16651 Adjustments for cyan pixels (pixels where the red component is the minimum)
16652 @item blues
16653 Adjustments for blue pixels (pixels where the blue component is the maximum)
16654 @item magentas
16655 Adjustments for magenta pixels (pixels where the green component is the minimum)
16656 @item whites
16657 Adjustments for white pixels (pixels where all components are greater than 128)
16658 @item neutrals
16659 Adjustments for all pixels except pure black and pure white
16660 @item blacks
16661 Adjustments for black pixels (pixels where all components are lesser than 128)
16662 @item psfile
16663 Specify a Photoshop selective color file (@code{.asv}) to import the settings from.
16664 @end table
16665
16666 All the adjustment settings (@option{reds}, @option{yellows}, ...) accept up to
16667 4 space separated floating point adjustment values in the [-1,1] range,
16668 respectively to adjust the amount of cyan, magenta, yellow and black for the
16669 pixels of its range.
16670
16671 @subsection Examples
16672
16673 @itemize
16674 @item
16675 Increase cyan by 50% and reduce yellow by 33% in every green areas, and
16676 increase magenta by 27% in blue areas:
16677 @example
16678 selectivecolor=greens=.5 0 -.33 0:blues=0 .27
16679 @end example
16680
16681 @item
16682 Use a Photoshop selective color preset:
16683 @example
16684 selectivecolor=psfile=MySelectiveColorPresets/Misty.asv
16685 @end example
16686 @end itemize
16687
16688 @anchor{separatefields}
16689 @section separatefields
16690
16691 The @code{separatefields} takes a frame-based video input and splits
16692 each frame into its components fields, producing a new half height clip
16693 with twice the frame rate and twice the frame count.
16694
16695 This filter use field-dominance information in frame to decide which
16696 of each pair of fields to place first in the output.
16697 If it gets it wrong use @ref{setfield} filter before @code{separatefields} filter.
16698
16699 @section setdar, setsar
16700
16701 The @code{setdar} filter sets the Display Aspect Ratio for the filter
16702 output video.
16703
16704 This is done by changing the specified Sample (aka Pixel) Aspect
16705 Ratio, according to the following equation:
16706 @example
16707 @var{DAR} = @var{HORIZONTAL_RESOLUTION} / @var{VERTICAL_RESOLUTION} * @var{SAR}
16708 @end example
16709
16710 Keep in mind that the @code{setdar} filter does not modify the pixel
16711 dimensions of the video frame. Also, the display aspect ratio set by
16712 this filter may be changed by later filters in the filterchain,
16713 e.g. in case of scaling or if another "setdar" or a "setsar" filter is
16714 applied.
16715
16716 The @code{setsar} filter sets the Sample (aka Pixel) Aspect Ratio for
16717 the filter output video.
16718
16719 Note that as a consequence of the application of this filter, the
16720 output display aspect ratio will change according to the equation
16721 above.
16722
16723 Keep in mind that the sample aspect ratio set by the @code{setsar}
16724 filter may be changed by later filters in the filterchain, e.g. if
16725 another "setsar" or a "setdar" filter is applied.
16726
16727 It accepts the following parameters:
16728
16729 @table @option
16730 @item r, ratio, dar (@code{setdar} only), sar (@code{setsar} only)
16731 Set the aspect ratio used by the filter.
16732
16733 The parameter can be a floating point number string, an expression, or
16734 a string of the form @var{num}:@var{den}, where @var{num} and
16735 @var{den} are the numerator and denominator of the aspect ratio. If
16736 the parameter is not specified, it is assumed the value "0".
16737 In case the form "@var{num}:@var{den}" is used, the @code{:} character
16738 should be escaped.
16739
16740 @item max
16741 Set the maximum integer value to use for expressing numerator and
16742 denominator when reducing the expressed aspect ratio to a rational.
16743 Default value is @code{100}.
16744
16745 @end table
16746
16747 The parameter @var{sar} is an expression containing
16748 the following constants:
16749
16750 @table @option
16751 @item E, PI, PHI
16752 These are approximated values for the mathematical constants e
16753 (Euler's number), pi (Greek pi), and phi (the golden ratio).
16754
16755 @item w, h
16756 The input width and height.
16757
16758 @item a
16759 These are the same as @var{w} / @var{h}.
16760
16761 @item sar
16762 The input sample aspect ratio.
16763
16764 @item dar
16765 The input display aspect ratio. It is the same as
16766 (@var{w} / @var{h}) * @var{sar}.
16767
16768 @item hsub, vsub
16769 Horizontal and vertical chroma subsample values. For example, for the
16770 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
16771 @end table
16772
16773 @subsection Examples
16774
16775 @itemize
16776
16777 @item
16778 To change the display aspect ratio to 16:9, specify one of the following:
16779 @example
16780 setdar=dar=1.77777
16781 setdar=dar=16/9
16782 @end example
16783
16784 @item
16785 To change the sample aspect ratio to 10:11, specify:
16786 @example
16787 setsar=sar=10/11
16788 @end example
16789
16790 @item
16791 To set a display aspect ratio of 16:9, and specify a maximum integer value of
16792 1000 in the aspect ratio reduction, use the command:
16793 @example
16794 setdar=ratio=16/9:max=1000
16795 @end example
16796
16797 @end itemize
16798
16799 @anchor{setfield}
16800 @section setfield
16801
16802 Force field for the output video frame.
16803
16804 The @code{setfield} filter marks the interlace type field for the
16805 output frames. It does not change the input frame, but only sets the
16806 corresponding property, which affects how the frame is treated by
16807 following filters (e.g. @code{fieldorder} or @code{yadif}).
16808
16809 The filter accepts the following options:
16810
16811 @table @option
16812
16813 @item mode
16814 Available values are:
16815
16816 @table @samp
16817 @item auto
16818 Keep the same field property.
16819
16820 @item bff
16821 Mark the frame as bottom-field-first.
16822
16823 @item tff
16824 Mark the frame as top-field-first.
16825
16826 @item prog
16827 Mark the frame as progressive.
16828 @end table
16829 @end table
16830
16831 @anchor{setparams}
16832 @section setparams
16833
16834 Force frame parameter for the output video frame.
16835
16836 The @code{setparams} filter marks interlace and color range for the
16837 output frames. It does not change the input frame, but only sets the
16838 corresponding property, which affects how the frame is treated by
16839 filters/encoders.
16840
16841 @table @option
16842 @item field_mode
16843 Available values are:
16844
16845 @table @samp
16846 @item auto
16847 Keep the same field property (default).
16848
16849 @item bff
16850 Mark the frame as bottom-field-first.
16851
16852 @item tff
16853 Mark the frame as top-field-first.
16854
16855 @item prog
16856 Mark the frame as progressive.
16857 @end table
16858
16859 @item range
16860 Available values are:
16861
16862 @table @samp
16863 @item auto
16864 Keep the same color range property (default).
16865
16866 @item unspecified, unknown
16867 Mark the frame as unspecified color range.
16868
16869 @item limited, tv, mpeg
16870 Mark the frame as limited range.
16871
16872 @item full, pc, jpeg
16873 Mark the frame as full range.
16874 @end table
16875
16876 @item color_primaries
16877 Set the color primaries.
16878 Available values are:
16879
16880 @table @samp
16881 @item auto
16882 Keep the same color primaries property (default).
16883
16884 @item bt709
16885 @item unknown
16886 @item bt470m
16887 @item bt470bg
16888 @item smpte170m
16889 @item smpte240m
16890 @item film
16891 @item bt2020
16892 @item smpte428
16893 @item smpte431
16894 @item smpte432
16895 @item jedec-p22
16896 @end table
16897
16898 @item color_trc
16899 Set the color transfer.
16900 Available values are:
16901
16902 @table @samp
16903 @item auto
16904 Keep the same color trc property (default).
16905
16906 @item bt709
16907 @item unknown
16908 @item bt470m
16909 @item bt470bg
16910 @item smpte170m
16911 @item smpte240m
16912 @item linear
16913 @item log100
16914 @item log316
16915 @item iec61966-2-4
16916 @item bt1361e
16917 @item iec61966-2-1
16918 @item bt2020-10
16919 @item bt2020-12
16920 @item smpte2084
16921 @item smpte428
16922 @item arib-std-b67
16923 @end table
16924
16925 @item colorspace
16926 Set the colorspace.
16927 Available values are:
16928
16929 @table @samp
16930 @item auto
16931 Keep the same colorspace property (default).
16932
16933 @item gbr
16934 @item bt709
16935 @item unknown
16936 @item fcc
16937 @item bt470bg
16938 @item smpte170m
16939 @item smpte240m
16940 @item ycgco
16941 @item bt2020nc
16942 @item bt2020c
16943 @item smpte2085
16944 @item chroma-derived-nc
16945 @item chroma-derived-c
16946 @item ictcp
16947 @end table
16948 @end table
16949
16950 @section showinfo
16951
16952 Show a line containing various information for each input video frame.
16953 The input video is not modified.
16954
16955 This filter supports the following options:
16956
16957 @table @option
16958 @item checksum
16959 Calculate checksums of each plane. By default enabled.
16960 @end table
16961
16962 The shown line contains a sequence of key/value pairs of the form
16963 @var{key}:@var{value}.
16964
16965 The following values are shown in the output:
16966
16967 @table @option
16968 @item n
16969 The (sequential) number of the input frame, starting from 0.
16970
16971 @item pts
16972 The Presentation TimeStamp of the input frame, expressed as a number of
16973 time base units. The time base unit depends on the filter input pad.
16974
16975 @item pts_time
16976 The Presentation TimeStamp of the input frame, expressed as a number of
16977 seconds.
16978
16979 @item pos
16980 The position of the frame in the input stream, or -1 if this information is
16981 unavailable and/or meaningless (for example in case of synthetic video).
16982
16983 @item fmt
16984 The pixel format name.
16985
16986 @item sar
16987 The sample aspect ratio of the input frame, expressed in the form
16988 @var{num}/@var{den}.
16989
16990 @item s
16991 The size of the input frame. For the syntax of this option, check the
16992 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
16993
16994 @item i
16995 The type of interlaced mode ("P" for "progressive", "T" for top field first, "B"
16996 for bottom field first).
16997
16998 @item iskey
16999 This is 1 if the frame is a key frame, 0 otherwise.
17000
17001 @item type
17002 The picture type of the input frame ("I" for an I-frame, "P" for a
17003 P-frame, "B" for a B-frame, or "?" for an unknown type).
17004 Also refer to the documentation of the @code{AVPictureType} enum and of
17005 the @code{av_get_picture_type_char} function defined in
17006 @file{libavutil/avutil.h}.
17007
17008 @item checksum
17009 The Adler-32 checksum (printed in hexadecimal) of all the planes of the input frame.
17010
17011 @item plane_checksum
17012 The Adler-32 checksum (printed in hexadecimal) of each plane of the input frame,
17013 expressed in the form "[@var{c0} @var{c1} @var{c2} @var{c3}]".
17014
17015 @item mean
17016 The mean value of pixels in each plane of the input frame, expressed in the form
17017 "[@var{mean0} @var{mean1} @var{mean2} @var{mean3}]".
17018
17019 @item stdev
17020 The standard deviation of pixel values in each plane of the input frame, expressed
17021 in the form "[@var{stdev0} @var{stdev1} @var{stdev2} @var{stdev3}]".
17022
17023 @end table
17024
17025 @section showpalette
17026
17027 Displays the 256 colors palette of each frame. This filter is only relevant for
17028 @var{pal8} pixel format frames.
17029
17030 It accepts the following option:
17031
17032 @table @option
17033 @item s
17034 Set the size of the box used to represent one palette color entry. Default is
17035 @code{30} (for a @code{30x30} pixel box).
17036 @end table
17037
17038 @section shuffleframes
17039
17040 Reorder and/or duplicate and/or drop video frames.
17041
17042 It accepts the following parameters:
17043
17044 @table @option
17045 @item mapping
17046 Set the destination indexes of input frames.
17047 This is space or '|' separated list of indexes that maps input frames to output
17048 frames. Number of indexes also sets maximal value that each index may have.
17049 '-1' index have special meaning and that is to drop frame.
17050 @end table
17051
17052 The first frame has the index 0. The default is to keep the input unchanged.
17053
17054 @subsection Examples
17055
17056 @itemize
17057 @item
17058 Swap second and third frame of every three frames of the input:
17059 @example
17060 ffmpeg -i INPUT -vf "shuffleframes=0 2 1" OUTPUT
17061 @end example
17062
17063 @item
17064 Swap 10th and 1st frame of every ten frames of the input:
17065 @example
17066 ffmpeg -i INPUT -vf "shuffleframes=9 1 2 3 4 5 6 7 8 0" OUTPUT
17067 @end example
17068 @end itemize
17069
17070 @section shuffleplanes
17071
17072 Reorder and/or duplicate video planes.
17073
17074 It accepts the following parameters:
17075
17076 @table @option
17077
17078 @item map0
17079 The index of the input plane to be used as the first output plane.
17080
17081 @item map1
17082 The index of the input plane to be used as the second output plane.
17083
17084 @item map2
17085 The index of the input plane to be used as the third output plane.
17086
17087 @item map3
17088 The index of the input plane to be used as the fourth output plane.
17089
17090 @end table
17091
17092 The first plane has the index 0. The default is to keep the input unchanged.
17093
17094 @subsection Examples
17095
17096 @itemize
17097 @item
17098 Swap the second and third planes of the input:
17099 @example
17100 ffmpeg -i INPUT -vf shuffleplanes=0:2:1:3 OUTPUT
17101 @end example
17102 @end itemize
17103
17104 @anchor{signalstats}
17105 @section signalstats
17106 Evaluate various visual metrics that assist in determining issues associated
17107 with the digitization of analog video media.
17108
17109 By default the filter will log these metadata values:
17110
17111 @table @option
17112 @item YMIN
17113 Display the minimal Y value contained within the input frame. Expressed in
17114 range of [0-255].
17115
17116 @item YLOW
17117 Display the Y value at the 10% percentile within the input frame. Expressed in
17118 range of [0-255].
17119
17120 @item YAVG
17121 Display the average Y value within the input frame. Expressed in range of
17122 [0-255].
17123
17124 @item YHIGH
17125 Display the Y value at the 90% percentile within the input frame. Expressed in
17126 range of [0-255].
17127
17128 @item YMAX
17129 Display the maximum Y value contained within the input frame. Expressed in
17130 range of [0-255].
17131
17132 @item UMIN
17133 Display the minimal U value contained within the input frame. Expressed in
17134 range of [0-255].
17135
17136 @item ULOW
17137 Display the U value at the 10% percentile within the input frame. Expressed in
17138 range of [0-255].
17139
17140 @item UAVG
17141 Display the average U value within the input frame. Expressed in range of
17142 [0-255].
17143
17144 @item UHIGH
17145 Display the U value at the 90% percentile within the input frame. Expressed in
17146 range of [0-255].
17147
17148 @item UMAX
17149 Display the maximum U value contained within the input frame. Expressed in
17150 range of [0-255].
17151
17152 @item VMIN
17153 Display the minimal V value contained within the input frame. Expressed in
17154 range of [0-255].
17155
17156 @item VLOW
17157 Display the V value at the 10% percentile within the input frame. Expressed in
17158 range of [0-255].
17159
17160 @item VAVG
17161 Display the average V value within the input frame. Expressed in range of
17162 [0-255].
17163
17164 @item VHIGH
17165 Display the V value at the 90% percentile within the input frame. Expressed in
17166 range of [0-255].
17167
17168 @item VMAX
17169 Display the maximum V value contained within the input frame. Expressed in
17170 range of [0-255].
17171
17172 @item SATMIN
17173 Display the minimal saturation value contained within the input frame.
17174 Expressed in range of [0-~181.02].
17175
17176 @item SATLOW
17177 Display the saturation value at the 10% percentile within the input frame.
17178 Expressed in range of [0-~181.02].
17179
17180 @item SATAVG
17181 Display the average saturation value within the input frame. Expressed in range
17182 of [0-~181.02].
17183
17184 @item SATHIGH
17185 Display the saturation value at the 90% percentile within the input frame.
17186 Expressed in range of [0-~181.02].
17187
17188 @item SATMAX
17189 Display the maximum saturation value contained within the input frame.
17190 Expressed in range of [0-~181.02].
17191
17192 @item HUEMED
17193 Display the median value for hue within the input frame. Expressed in range of
17194 [0-360].
17195
17196 @item HUEAVG
17197 Display the average value for hue within the input frame. Expressed in range of
17198 [0-360].
17199
17200 @item YDIF
17201 Display the average of sample value difference between all values of the Y
17202 plane in the current frame and corresponding values of the previous input frame.
17203 Expressed in range of [0-255].
17204
17205 @item UDIF
17206 Display the average of sample value difference between all values of the U
17207 plane in the current frame and corresponding values of the previous input frame.
17208 Expressed in range of [0-255].
17209
17210 @item VDIF
17211 Display the average of sample value difference between all values of the V
17212 plane in the current frame and corresponding values of the previous input frame.
17213 Expressed in range of [0-255].
17214
17215 @item YBITDEPTH
17216 Display bit depth of Y plane in current frame.
17217 Expressed in range of [0-16].
17218
17219 @item UBITDEPTH
17220 Display bit depth of U plane in current frame.
17221 Expressed in range of [0-16].
17222
17223 @item VBITDEPTH
17224 Display bit depth of V plane in current frame.
17225 Expressed in range of [0-16].
17226 @end table
17227
17228 The filter accepts the following options:
17229
17230 @table @option
17231 @item stat
17232 @item out
17233
17234 @option{stat} specify an additional form of image analysis.
17235 @option{out} output video with the specified type of pixel highlighted.
17236
17237 Both options accept the following values:
17238
17239 @table @samp
17240 @item tout
17241 Identify @var{temporal outliers} pixels. A @var{temporal outlier} is a pixel
17242 unlike the neighboring pixels of the same field. Examples of temporal outliers
17243 include the results of video dropouts, head clogs, or tape tracking issues.
17244
17245 @item vrep
17246 Identify @var{vertical line repetition}. Vertical line repetition includes
17247 similar rows of pixels within a frame. In born-digital video vertical line
17248 repetition is common, but this pattern is uncommon in video digitized from an
17249 analog source. When it occurs in video that results from the digitization of an
17250 analog source it can indicate concealment from a dropout compensator.
17251
17252 @item brng
17253 Identify pixels that fall outside of legal broadcast range.
17254 @end table
17255
17256 @item color, c
17257 Set the highlight color for the @option{out} option. The default color is
17258 yellow.
17259 @end table
17260
17261 @subsection Examples
17262
17263 @itemize
17264 @item
17265 Output data of various video metrics:
17266 @example
17267 ffprobe -f lavfi movie=example.mov,signalstats="stat=tout+vrep+brng" -show_frames
17268 @end example
17269
17270 @item
17271 Output specific data about the minimum and maximum values of the Y plane per frame:
17272 @example
17273 ffprobe -f lavfi movie=example.mov,signalstats -show_entries frame_tags=lavfi.signalstats.YMAX,lavfi.signalstats.YMIN
17274 @end example
17275
17276 @item
17277 Playback video while highlighting pixels that are outside of broadcast range in red.
17278 @example
17279 ffplay example.mov -vf signalstats="out=brng:color=red"
17280 @end example
17281
17282 @item
17283 Playback video with signalstats metadata drawn over the frame.
17284 @example
17285 ffplay example.mov -vf signalstats=stat=brng+vrep+tout,drawtext=fontfile=FreeSerif.ttf:textfile=signalstat_drawtext.txt
17286 @end example
17287
17288 The contents of signalstat_drawtext.txt used in the command are:
17289 @example
17290 time %@{pts:hms@}
17291 Y (%@{metadata:lavfi.signalstats.YMIN@}-%@{metadata:lavfi.signalstats.YMAX@})
17292 U (%@{metadata:lavfi.signalstats.UMIN@}-%@{metadata:lavfi.signalstats.UMAX@})
17293 V (%@{metadata:lavfi.signalstats.VMIN@}-%@{metadata:lavfi.signalstats.VMAX@})
17294 saturation maximum: %@{metadata:lavfi.signalstats.SATMAX@}
17295
17296 @end example
17297 @end itemize
17298
17299 @anchor{signature}
17300 @section signature
17301
17302 Calculates the MPEG-7 Video Signature. The filter can handle more than one
17303 input. In this case the matching between the inputs can be calculated additionally.
17304 The filter always passes through the first input. The signature of each stream can
17305 be written into a file.
17306
17307 It accepts the following options:
17308
17309 @table @option
17310 @item detectmode
17311 Enable or disable the matching process.
17312
17313 Available values are:
17314
17315 @table @samp
17316 @item off
17317 Disable the calculation of a matching (default).
17318 @item full
17319 Calculate the matching for the whole video and output whether the whole video
17320 matches or only parts.
17321 @item fast
17322 Calculate only until a matching is found or the video ends. Should be faster in
17323 some cases.
17324 @end table
17325
17326 @item nb_inputs
17327 Set the number of inputs. The option value must be a non negative integer.
17328 Default value is 1.
17329
17330 @item filename
17331 Set the path to which the output is written. If there is more than one input,
17332 the path must be a prototype, i.e. must contain %d or %0nd (where n is a positive
17333 integer), that will be replaced with the input number. If no filename is
17334 specified, no output will be written. This is the default.
17335
17336 @item format
17337 Choose the output format.
17338
17339 Available values are:
17340
17341 @table @samp
17342 @item binary
17343 Use the specified binary representation (default).
17344 @item xml
17345 Use the specified xml representation.
17346 @end table
17347
17348 @item th_d
17349 Set threshold to detect one word as similar. The option value must be an integer
17350 greater than zero. The default value is 9000.
17351
17352 @item th_dc
17353 Set threshold to detect all words as similar. The option value must be an integer
17354 greater than zero. The default value is 60000.
17355
17356 @item th_xh
17357 Set threshold to detect frames as similar. The option value must be an integer
17358 greater than zero. The default value is 116.
17359
17360 @item th_di
17361 Set the minimum length of a sequence in frames to recognize it as matching
17362 sequence. The option value must be a non negative integer value.
17363 The default value is 0.
17364
17365 @item th_it
17366 Set the minimum relation, that matching frames to all frames must have.
17367 The option value must be a double value between 0 and 1. The default value is 0.5.
17368 @end table
17369
17370 @subsection Examples
17371
17372 @itemize
17373 @item
17374 To calculate the signature of an input video and store it in signature.bin:
17375 @example
17376 ffmpeg -i input.mkv -vf signature=filename=signature.bin -map 0:v -f null -
17377 @end example
17378
17379 @item
17380 To detect whether two videos match and store the signatures in XML format in
17381 signature0.xml and signature1.xml:
17382 @example
17383 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 -
17384 @end example
17385
17386 @end itemize
17387
17388 @anchor{smartblur}
17389 @section smartblur
17390
17391 Blur the input video without impacting the outlines.
17392
17393 It accepts the following options:
17394
17395 @table @option
17396 @item luma_radius, lr
17397 Set the luma radius. The option value must be a float number in
17398 the range [0.1,5.0] that specifies the variance of the gaussian filter
17399 used to blur the image (slower if larger). Default value is 1.0.
17400
17401 @item luma_strength, ls
17402 Set the luma strength. The option value must be a float number
17403 in the range [-1.0,1.0] that configures the blurring. A value included
17404 in [0.0,1.0] will blur the image whereas a value included in
17405 [-1.0,0.0] will sharpen the image. Default value is 1.0.
17406
17407 @item luma_threshold, lt
17408 Set the luma threshold used as a coefficient to determine
17409 whether a pixel should be blurred or not. The option value must be an
17410 integer in the range [-30,30]. A value of 0 will filter all the image,
17411 a value included in [0,30] will filter flat areas and a value included
17412 in [-30,0] will filter edges. Default value is 0.
17413
17414 @item chroma_radius, cr
17415 Set the chroma radius. The option value must be a float number in
17416 the range [0.1,5.0] that specifies the variance of the gaussian filter
17417 used to blur the image (slower if larger). Default value is @option{luma_radius}.
17418
17419 @item chroma_strength, cs
17420 Set the chroma strength. The option value must be a float number
17421 in the range [-1.0,1.0] that configures the blurring. A value included
17422 in [0.0,1.0] will blur the image whereas a value included in
17423 [-1.0,0.0] will sharpen the image. Default value is @option{luma_strength}.
17424
17425 @item chroma_threshold, ct
17426 Set the chroma threshold used as a coefficient to determine
17427 whether a pixel should be blurred or not. The option value must be an
17428 integer in the range [-30,30]. A value of 0 will filter all the image,
17429 a value included in [0,30] will filter flat areas and a value included
17430 in [-30,0] will filter edges. Default value is @option{luma_threshold}.
17431 @end table
17432
17433 If a chroma option is not explicitly set, the corresponding luma value
17434 is set.
17435
17436 @section sobel
17437 Apply sobel operator to input video stream.
17438
17439 The filter accepts the following option:
17440
17441 @table @option
17442 @item planes
17443 Set which planes will be processed, unprocessed planes will be copied.
17444 By default value 0xf, all planes will be processed.
17445
17446 @item scale
17447 Set value which will be multiplied with filtered result.
17448
17449 @item delta
17450 Set value which will be added to filtered result.
17451 @end table
17452
17453 @anchor{spp}
17454 @section spp
17455
17456 Apply a simple postprocessing filter that compresses and decompresses the image
17457 at several (or - in the case of @option{quality} level @code{6} - all) shifts
17458 and average the results.
17459
17460 The filter accepts the following options:
17461
17462 @table @option
17463 @item quality
17464 Set quality. This option defines the number of levels for averaging. It accepts
17465 an integer in the range 0-6. If set to @code{0}, the filter will have no
17466 effect. A value of @code{6} means the higher quality. For each increment of
17467 that value the speed drops by a factor of approximately 2.  Default value is
17468 @code{3}.
17469
17470 @item qp
17471 Force a constant quantization parameter. If not set, the filter will use the QP
17472 from the video stream (if available).
17473
17474 @item mode
17475 Set thresholding mode. Available modes are:
17476
17477 @table @samp
17478 @item hard
17479 Set hard thresholding (default).
17480 @item soft
17481 Set soft thresholding (better de-ringing effect, but likely blurrier).
17482 @end table
17483
17484 @item use_bframe_qp
17485 Enable the use of the QP from the B-Frames if set to @code{1}. Using this
17486 option may cause flicker since the B-Frames have often larger QP. Default is
17487 @code{0} (not enabled).
17488 @end table
17489
17490 @subsection Commands
17491
17492 This filter supports the following commands:
17493 @table @option
17494 @item quality, level
17495 Set quality level. The value @code{max} can be used to set the maximum level,
17496 currently @code{6}.
17497 @end table
17498
17499 @anchor{sr}
17500 @section sr
17501
17502 Scale the input by applying one of the super-resolution methods based on
17503 convolutional neural networks. Supported models:
17504
17505 @itemize
17506 @item
17507 Super-Resolution Convolutional Neural Network model (SRCNN).
17508 See @url{https://arxiv.org/abs/1501.00092}.
17509
17510 @item
17511 Efficient Sub-Pixel Convolutional Neural Network model (ESPCN).
17512 See @url{https://arxiv.org/abs/1609.05158}.
17513 @end itemize
17514
17515 Training scripts as well as scripts for model file (.pb) saving can be found at
17516 @url{https://github.com/XueweiMeng/sr/tree/sr_dnn_native}. Original repository
17517 is at @url{https://github.com/HighVoltageRocknRoll/sr.git}.
17518
17519 Native model files (.model) can be generated from TensorFlow model
17520 files (.pb) by using tools/python/convert.py
17521
17522 The filter accepts the following options:
17523
17524 @table @option
17525 @item dnn_backend
17526 Specify which DNN backend to use for model loading and execution. This option accepts
17527 the following values:
17528
17529 @table @samp
17530 @item native
17531 Native implementation of DNN loading and execution.
17532
17533 @item tensorflow
17534 TensorFlow backend. To enable this backend you
17535 need to install the TensorFlow for C library (see
17536 @url{https://www.tensorflow.org/install/install_c}) and configure FFmpeg with
17537 @code{--enable-libtensorflow}
17538 @end table
17539
17540 Default value is @samp{native}.
17541
17542 @item model
17543 Set path to model file specifying network architecture and its parameters.
17544 Note that different backends use different file formats. TensorFlow backend
17545 can load files for both formats, while native backend can load files for only
17546 its format.
17547
17548 @item scale_factor
17549 Set scale factor for SRCNN model. Allowed values are @code{2}, @code{3} and @code{4}.
17550 Default value is @code{2}. Scale factor is necessary for SRCNN model, because it accepts
17551 input upscaled using bicubic upscaling with proper scale factor.
17552 @end table
17553
17554 This feature can also be finished with @ref{dnn_processing} filter.
17555
17556 @section ssim
17557
17558 Obtain the SSIM (Structural SImilarity Metric) between two input videos.
17559
17560 This filter takes in input two input videos, the first input is
17561 considered the "main" source and is passed unchanged to the
17562 output. The second input is used as a "reference" video for computing
17563 the SSIM.
17564
17565 Both video inputs must have the same resolution and pixel format for
17566 this filter to work correctly. Also it assumes that both inputs
17567 have the same number of frames, which are compared one by one.
17568
17569 The filter stores the calculated SSIM of each frame.
17570
17571 The description of the accepted parameters follows.
17572
17573 @table @option
17574 @item stats_file, f
17575 If specified the filter will use the named file to save the SSIM of
17576 each individual frame. When filename equals "-" the data is sent to
17577 standard output.
17578 @end table
17579
17580 The file printed if @var{stats_file} is selected, contains a sequence of
17581 key/value pairs of the form @var{key}:@var{value} for each compared
17582 couple of frames.
17583
17584 A description of each shown parameter follows:
17585
17586 @table @option
17587 @item n
17588 sequential number of the input frame, starting from 1
17589
17590 @item Y, U, V, R, G, B
17591 SSIM of the compared frames for the component specified by the suffix.
17592
17593 @item All
17594 SSIM of the compared frames for the whole frame.
17595
17596 @item dB
17597 Same as above but in dB representation.
17598 @end table
17599
17600 This filter also supports the @ref{framesync} options.
17601
17602 @subsection Examples
17603 @itemize
17604 @item
17605 For example:
17606 @example
17607 movie=ref_movie.mpg, setpts=PTS-STARTPTS [main];
17608 [main][ref] ssim="stats_file=stats.log" [out]
17609 @end example
17610
17611 On this example the input file being processed is compared with the
17612 reference file @file{ref_movie.mpg}. The SSIM of each individual frame
17613 is stored in @file{stats.log}.
17614
17615 @item
17616 Another example with both psnr and ssim at same time:
17617 @example
17618 ffmpeg -i main.mpg -i ref.mpg -lavfi  "ssim;[0:v][1:v]psnr" -f null -
17619 @end example
17620
17621 @item
17622 Another example with different containers:
17623 @example
17624 ffmpeg -i main.mpg -i ref.mkv -lavfi  "[0:v]settb=AVTB,setpts=PTS-STARTPTS[main];[1:v]settb=AVTB,setpts=PTS-STARTPTS[ref];[main][ref]ssim" -f null -
17625 @end example
17626 @end itemize
17627
17628 @section stereo3d
17629
17630 Convert between different stereoscopic image formats.
17631
17632 The filters accept the following options:
17633
17634 @table @option
17635 @item in
17636 Set stereoscopic image format of input.
17637
17638 Available values for input image formats are:
17639 @table @samp
17640 @item sbsl
17641 side by side parallel (left eye left, right eye right)
17642
17643 @item sbsr
17644 side by side crosseye (right eye left, left eye right)
17645
17646 @item sbs2l
17647 side by side parallel with half width resolution
17648 (left eye left, right eye right)
17649
17650 @item sbs2r
17651 side by side crosseye with half width resolution
17652 (right eye left, left eye right)
17653
17654 @item abl
17655 @item tbl
17656 above-below (left eye above, right eye below)
17657
17658 @item abr
17659 @item tbr
17660 above-below (right eye above, left eye below)
17661
17662 @item ab2l
17663 @item tb2l
17664 above-below with half height resolution
17665 (left eye above, right eye below)
17666
17667 @item ab2r
17668 @item tb2r
17669 above-below with half height resolution
17670 (right eye above, left eye below)
17671
17672 @item al
17673 alternating frames (left eye first, right eye second)
17674
17675 @item ar
17676 alternating frames (right eye first, left eye second)
17677
17678 @item irl
17679 interleaved rows (left eye has top row, right eye starts on next row)
17680
17681 @item irr
17682 interleaved rows (right eye has top row, left eye starts on next row)
17683
17684 @item icl
17685 interleaved columns, left eye first
17686
17687 @item icr
17688 interleaved columns, right eye first
17689
17690 Default value is @samp{sbsl}.
17691 @end table
17692
17693 @item out
17694 Set stereoscopic image format of output.
17695
17696 @table @samp
17697 @item sbsl
17698 side by side parallel (left eye left, right eye right)
17699
17700 @item sbsr
17701 side by side crosseye (right eye left, left eye right)
17702
17703 @item sbs2l
17704 side by side parallel with half width resolution
17705 (left eye left, right eye right)
17706
17707 @item sbs2r
17708 side by side crosseye with half width resolution
17709 (right eye left, left eye right)
17710
17711 @item abl
17712 @item tbl
17713 above-below (left eye above, right eye below)
17714
17715 @item abr
17716 @item tbr
17717 above-below (right eye above, left eye below)
17718
17719 @item ab2l
17720 @item tb2l
17721 above-below with half height resolution
17722 (left eye above, right eye below)
17723
17724 @item ab2r
17725 @item tb2r
17726 above-below with half height resolution
17727 (right eye above, left eye below)
17728
17729 @item al
17730 alternating frames (left eye first, right eye second)
17731
17732 @item ar
17733 alternating frames (right eye first, left eye second)
17734
17735 @item irl
17736 interleaved rows (left eye has top row, right eye starts on next row)
17737
17738 @item irr
17739 interleaved rows (right eye has top row, left eye starts on next row)
17740
17741 @item arbg
17742 anaglyph red/blue gray
17743 (red filter on left eye, blue filter on right eye)
17744
17745 @item argg
17746 anaglyph red/green gray
17747 (red filter on left eye, green filter on right eye)
17748
17749 @item arcg
17750 anaglyph red/cyan gray
17751 (red filter on left eye, cyan filter on right eye)
17752
17753 @item arch
17754 anaglyph red/cyan half colored
17755 (red filter on left eye, cyan filter on right eye)
17756
17757 @item arcc
17758 anaglyph red/cyan color
17759 (red filter on left eye, cyan filter on right eye)
17760
17761 @item arcd
17762 anaglyph red/cyan color optimized with the least squares projection of dubois
17763 (red filter on left eye, cyan filter on right eye)
17764
17765 @item agmg
17766 anaglyph green/magenta gray
17767 (green filter on left eye, magenta filter on right eye)
17768
17769 @item agmh
17770 anaglyph green/magenta half colored
17771 (green filter on left eye, magenta filter on right eye)
17772
17773 @item agmc
17774 anaglyph green/magenta colored
17775 (green filter on left eye, magenta filter on right eye)
17776
17777 @item agmd
17778 anaglyph green/magenta color optimized with the least squares projection of dubois
17779 (green filter on left eye, magenta filter on right eye)
17780
17781 @item aybg
17782 anaglyph yellow/blue gray
17783 (yellow filter on left eye, blue filter on right eye)
17784
17785 @item aybh
17786 anaglyph yellow/blue half colored
17787 (yellow filter on left eye, blue filter on right eye)
17788
17789 @item aybc
17790 anaglyph yellow/blue colored
17791 (yellow filter on left eye, blue filter on right eye)
17792
17793 @item aybd
17794 anaglyph yellow/blue color optimized with the least squares projection of dubois
17795 (yellow filter on left eye, blue filter on right eye)
17796
17797 @item ml
17798 mono output (left eye only)
17799
17800 @item mr
17801 mono output (right eye only)
17802
17803 @item chl
17804 checkerboard, left eye first
17805
17806 @item chr
17807 checkerboard, right eye first
17808
17809 @item icl
17810 interleaved columns, left eye first
17811
17812 @item icr
17813 interleaved columns, right eye first
17814
17815 @item hdmi
17816 HDMI frame pack
17817 @end table
17818
17819 Default value is @samp{arcd}.
17820 @end table
17821
17822 @subsection Examples
17823
17824 @itemize
17825 @item
17826 Convert input video from side by side parallel to anaglyph yellow/blue dubois:
17827 @example
17828 stereo3d=sbsl:aybd
17829 @end example
17830
17831 @item
17832 Convert input video from above below (left eye above, right eye below) to side by side crosseye.
17833 @example
17834 stereo3d=abl:sbsr
17835 @end example
17836 @end itemize
17837
17838 @section streamselect, astreamselect
17839 Select video or audio streams.
17840
17841 The filter accepts the following options:
17842
17843 @table @option
17844 @item inputs
17845 Set number of inputs. Default is 2.
17846
17847 @item map
17848 Set input indexes to remap to outputs.
17849 @end table
17850
17851 @subsection Commands
17852
17853 The @code{streamselect} and @code{astreamselect} filter supports the following
17854 commands:
17855
17856 @table @option
17857 @item map
17858 Set input indexes to remap to outputs.
17859 @end table
17860
17861 @subsection Examples
17862
17863 @itemize
17864 @item
17865 Select first 5 seconds 1st stream and rest of time 2nd stream:
17866 @example
17867 sendcmd='5.0 streamselect map 1',streamselect=inputs=2:map=0
17868 @end example
17869
17870 @item
17871 Same as above, but for audio:
17872 @example
17873 asendcmd='5.0 astreamselect map 1',astreamselect=inputs=2:map=0
17874 @end example
17875 @end itemize
17876
17877 @anchor{subtitles}
17878 @section subtitles
17879
17880 Draw subtitles on top of input video using the libass library.
17881
17882 To enable compilation of this filter you need to configure FFmpeg with
17883 @code{--enable-libass}. This filter also requires a build with libavcodec and
17884 libavformat to convert the passed subtitles file to ASS (Advanced Substation
17885 Alpha) subtitles format.
17886
17887 The filter accepts the following options:
17888
17889 @table @option
17890 @item filename, f
17891 Set the filename of the subtitle file to read. It must be specified.
17892
17893 @item original_size
17894 Specify the size of the original video, the video for which the ASS file
17895 was composed. For the syntax of this option, check the
17896 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
17897 Due to a misdesign in ASS aspect ratio arithmetic, this is necessary to
17898 correctly scale the fonts if the aspect ratio has been changed.
17899
17900 @item fontsdir
17901 Set a directory path containing fonts that can be used by the filter.
17902 These fonts will be used in addition to whatever the font provider uses.
17903
17904 @item alpha
17905 Process alpha channel, by default alpha channel is untouched.
17906
17907 @item charenc
17908 Set subtitles input character encoding. @code{subtitles} filter only. Only
17909 useful if not UTF-8.
17910
17911 @item stream_index, si
17912 Set subtitles stream index. @code{subtitles} filter only.
17913
17914 @item force_style
17915 Override default style or script info parameters of the subtitles. It accepts a
17916 string containing ASS style format @code{KEY=VALUE} couples separated by ",".
17917 @end table
17918
17919 If the first key is not specified, it is assumed that the first value
17920 specifies the @option{filename}.
17921
17922 For example, to render the file @file{sub.srt} on top of the input
17923 video, use the command:
17924 @example
17925 subtitles=sub.srt
17926 @end example
17927
17928 which is equivalent to:
17929 @example
17930 subtitles=filename=sub.srt
17931 @end example
17932
17933 To render the default subtitles stream from file @file{video.mkv}, use:
17934 @example
17935 subtitles=video.mkv
17936 @end example
17937
17938 To render the second subtitles stream from that file, use:
17939 @example
17940 subtitles=video.mkv:si=1
17941 @end example
17942
17943 To make the subtitles stream from @file{sub.srt} appear in 80% transparent blue
17944 @code{DejaVu Serif}, use:
17945 @example
17946 subtitles=sub.srt:force_style='FontName=DejaVu Serif,PrimaryColour=&HCCFF0000'
17947 @end example
17948
17949 @section super2xsai
17950
17951 Scale the input by 2x and smooth using the Super2xSaI (Scale and
17952 Interpolate) pixel art scaling algorithm.
17953
17954 Useful for enlarging pixel art images without reducing sharpness.
17955
17956 @section swaprect
17957
17958 Swap two rectangular objects in video.
17959
17960 This filter accepts the following options:
17961
17962 @table @option
17963 @item w
17964 Set object width.
17965
17966 @item h
17967 Set object height.
17968
17969 @item x1
17970 Set 1st rect x coordinate.
17971
17972 @item y1
17973 Set 1st rect y coordinate.
17974
17975 @item x2
17976 Set 2nd rect x coordinate.
17977
17978 @item y2
17979 Set 2nd rect y coordinate.
17980
17981 All expressions are evaluated once for each frame.
17982 @end table
17983
17984 The all options are expressions containing the following constants:
17985
17986 @table @option
17987 @item w
17988 @item h
17989 The input width and height.
17990
17991 @item a
17992 same as @var{w} / @var{h}
17993
17994 @item sar
17995 input sample aspect ratio
17996
17997 @item dar
17998 input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}
17999
18000 @item n
18001 The number of the input frame, starting from 0.
18002
18003 @item t
18004 The timestamp expressed in seconds. It's NAN if the input timestamp is unknown.
18005
18006 @item pos
18007 the position in the file of the input frame, NAN if unknown
18008 @end table
18009
18010 @section swapuv
18011 Swap U & V plane.
18012
18013 @section tblend
18014 Blend successive video frames.
18015
18016 See @ref{blend}
18017
18018 @section telecine
18019
18020 Apply telecine process to the video.
18021
18022 This filter accepts the following options:
18023
18024 @table @option
18025 @item first_field
18026 @table @samp
18027 @item top, t
18028 top field first
18029 @item bottom, b
18030 bottom field first
18031 The default value is @code{top}.
18032 @end table
18033
18034 @item pattern
18035 A string of numbers representing the pulldown pattern you wish to apply.
18036 The default value is @code{23}.
18037 @end table
18038
18039 @example
18040 Some typical patterns:
18041
18042 NTSC output (30i):
18043 27.5p: 32222
18044 24p: 23 (classic)
18045 24p: 2332 (preferred)
18046 20p: 33
18047 18p: 334
18048 16p: 3444
18049
18050 PAL output (25i):
18051 27.5p: 12222
18052 24p: 222222222223 ("Euro pulldown")
18053 16.67p: 33
18054 16p: 33333334
18055 @end example
18056
18057 @section thistogram
18058
18059 Compute and draw a color distribution histogram for the input video across time.
18060
18061 Unlike @ref{histogram} video filter which only shows histogram of single input frame
18062 at certain time, this filter shows also past histograms of number of frames defined
18063 by @code{width} option.
18064
18065 The computed histogram is a representation of the color component
18066 distribution in an image.
18067
18068 The filter accepts the following options:
18069
18070 @table @option
18071 @item width, w
18072 Set width of single color component output. Default value is @code{0}.
18073 Value of @code{0} means width will be picked from input video.
18074 This also set number of passed histograms to keep.
18075 Allowed range is [0, 8192].
18076
18077 @item display_mode, d
18078 Set display mode.
18079 It accepts the following values:
18080 @table @samp
18081 @item stack
18082 Per color component graphs are placed below each other.
18083
18084 @item parade
18085 Per color component graphs are placed side by side.
18086
18087 @item overlay
18088 Presents information identical to that in the @code{parade}, except
18089 that the graphs representing color components are superimposed directly
18090 over one another.
18091 @end table
18092 Default is @code{stack}.
18093
18094 @item levels_mode, m
18095 Set mode. Can be either @code{linear}, or @code{logarithmic}.
18096 Default is @code{linear}.
18097
18098 @item components, c
18099 Set what color components to display.
18100 Default is @code{7}.
18101
18102 @item bgopacity, b
18103 Set background opacity. Default is @code{0.9}.
18104
18105 @item envelope, e
18106 Show envelope. Default is disabled.
18107
18108 @item ecolor, ec
18109 Set envelope color. Default is @code{gold}.
18110 @end table
18111
18112 @section threshold
18113
18114 Apply threshold effect to video stream.
18115
18116 This filter needs four video streams to perform thresholding.
18117 First stream is stream we are filtering.
18118 Second stream is holding threshold values, third stream is holding min values,
18119 and last, fourth stream is holding max values.
18120
18121 The filter accepts the following option:
18122
18123 @table @option
18124 @item planes
18125 Set which planes will be processed, unprocessed planes will be copied.
18126 By default value 0xf, all planes will be processed.
18127 @end table
18128
18129 For example if first stream pixel's component value is less then threshold value
18130 of pixel component from 2nd threshold stream, third stream value will picked,
18131 otherwise fourth stream pixel component value will be picked.
18132
18133 Using color source filter one can perform various types of thresholding:
18134
18135 @subsection Examples
18136
18137 @itemize
18138 @item
18139 Binary threshold, using gray color as threshold:
18140 @example
18141 ffmpeg -i 320x240.avi -f lavfi -i color=gray -f lavfi -i color=black -f lavfi -i color=white -lavfi threshold output.avi
18142 @end example
18143
18144 @item
18145 Inverted binary threshold, using gray color as threshold:
18146 @example
18147 ffmpeg -i 320x240.avi -f lavfi -i color=gray -f lavfi -i color=white -f lavfi -i color=black -lavfi threshold output.avi
18148 @end example
18149
18150 @item
18151 Truncate binary threshold, using gray color as threshold:
18152 @example
18153 ffmpeg -i 320x240.avi -f lavfi -i color=gray -i 320x240.avi -f lavfi -i color=gray -lavfi threshold output.avi
18154 @end example
18155
18156 @item
18157 Threshold to zero, using gray color as threshold:
18158 @example
18159 ffmpeg -i 320x240.avi -f lavfi -i color=gray -f lavfi -i color=white -i 320x240.avi -lavfi threshold output.avi
18160 @end example
18161
18162 @item
18163 Inverted threshold to zero, using gray color as threshold:
18164 @example
18165 ffmpeg -i 320x240.avi -f lavfi -i color=gray -i 320x240.avi -f lavfi -i color=white -lavfi threshold output.avi
18166 @end example
18167 @end itemize
18168
18169 @section thumbnail
18170 Select the most representative frame in a given sequence of consecutive frames.
18171
18172 The filter accepts the following options:
18173
18174 @table @option
18175 @item n
18176 Set the frames batch size to analyze; in a set of @var{n} frames, the filter
18177 will pick one of them, and then handle the next batch of @var{n} frames until
18178 the end. Default is @code{100}.
18179 @end table
18180
18181 Since the filter keeps track of the whole frames sequence, a bigger @var{n}
18182 value will result in a higher memory usage, so a high value is not recommended.
18183
18184 @subsection Examples
18185
18186 @itemize
18187 @item
18188 Extract one picture each 50 frames:
18189 @example
18190 thumbnail=50
18191 @end example
18192
18193 @item
18194 Complete example of a thumbnail creation with @command{ffmpeg}:
18195 @example
18196 ffmpeg -i in.avi -vf thumbnail,scale=300:200 -frames:v 1 out.png
18197 @end example
18198 @end itemize
18199
18200 @anchor{tile}
18201 @section tile
18202
18203 Tile several successive frames together.
18204
18205 The @ref{untile} filter can do the reverse.
18206
18207 The filter accepts the following options:
18208
18209 @table @option
18210
18211 @item layout
18212 Set the grid size (i.e. the number of lines and columns). For the syntax of
18213 this option, check the
18214 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
18215
18216 @item nb_frames
18217 Set the maximum number of frames to render in the given area. It must be less
18218 than or equal to @var{w}x@var{h}. The default value is @code{0}, meaning all
18219 the area will be used.
18220
18221 @item margin
18222 Set the outer border margin in pixels.
18223
18224 @item padding
18225 Set the inner border thickness (i.e. the number of pixels between frames). For
18226 more advanced padding options (such as having different values for the edges),
18227 refer to the pad video filter.
18228
18229 @item color
18230 Specify the color of the unused area. For the syntax of this option, check the
18231 @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
18232 The default value of @var{color} is "black".
18233
18234 @item overlap
18235 Set the number of frames to overlap when tiling several successive frames together.
18236 The value must be between @code{0} and @var{nb_frames - 1}.
18237
18238 @item init_padding
18239 Set the number of frames to initially be empty before displaying first output frame.
18240 This controls how soon will one get first output frame.
18241 The value must be between @code{0} and @var{nb_frames - 1}.
18242 @end table
18243
18244 @subsection Examples
18245
18246 @itemize
18247 @item
18248 Produce 8x8 PNG tiles of all keyframes (@option{-skip_frame nokey}) in a movie:
18249 @example
18250 ffmpeg -skip_frame nokey -i file.avi -vf 'scale=128:72,tile=8x8' -an -vsync 0 keyframes%03d.png
18251 @end example
18252 The @option{-vsync 0} is necessary to prevent @command{ffmpeg} from
18253 duplicating each output frame to accommodate the originally detected frame
18254 rate.
18255
18256 @item
18257 Display @code{5} pictures in an area of @code{3x2} frames,
18258 with @code{7} pixels between them, and @code{2} pixels of initial margin, using
18259 mixed flat and named options:
18260 @example
18261 tile=3x2:nb_frames=5:padding=7:margin=2
18262 @end example
18263 @end itemize
18264
18265 @section tinterlace
18266
18267 Perform various types of temporal field interlacing.
18268
18269 Frames are counted starting from 1, so the first input frame is
18270 considered odd.
18271
18272 The filter accepts the following options:
18273
18274 @table @option
18275
18276 @item mode
18277 Specify the mode of the interlacing. This option can also be specified
18278 as a value alone. See below for a list of values for this option.
18279
18280 Available values are:
18281
18282 @table @samp
18283 @item merge, 0
18284 Move odd frames into the upper field, even into the lower field,
18285 generating a double height frame at half frame rate.
18286 @example
18287  ------> time
18288 Input:
18289 Frame 1         Frame 2         Frame 3         Frame 4
18290
18291 11111           22222           33333           44444
18292 11111           22222           33333           44444
18293 11111           22222           33333           44444
18294 11111           22222           33333           44444
18295
18296 Output:
18297 11111                           33333
18298 22222                           44444
18299 11111                           33333
18300 22222                           44444
18301 11111                           33333
18302 22222                           44444
18303 11111                           33333
18304 22222                           44444
18305 @end example
18306
18307 @item drop_even, 1
18308 Only output odd frames, even frames are dropped, generating a frame with
18309 unchanged height at half frame rate.
18310
18311 @example
18312  ------> time
18313 Input:
18314 Frame 1         Frame 2         Frame 3         Frame 4
18315
18316 11111           22222           33333           44444
18317 11111           22222           33333           44444
18318 11111           22222           33333           44444
18319 11111           22222           33333           44444
18320
18321 Output:
18322 11111                           33333
18323 11111                           33333
18324 11111                           33333
18325 11111                           33333
18326 @end example
18327
18328 @item drop_odd, 2
18329 Only output even frames, odd frames are dropped, generating a frame with
18330 unchanged height at half frame rate.
18331
18332 @example
18333  ------> time
18334 Input:
18335 Frame 1         Frame 2         Frame 3         Frame 4
18336
18337 11111           22222           33333           44444
18338 11111           22222           33333           44444
18339 11111           22222           33333           44444
18340 11111           22222           33333           44444
18341
18342 Output:
18343                 22222                           44444
18344                 22222                           44444
18345                 22222                           44444
18346                 22222                           44444
18347 @end example
18348
18349 @item pad, 3
18350 Expand each frame to full height, but pad alternate lines with black,
18351 generating a frame with double height at the same input frame rate.
18352
18353 @example
18354  ------> time
18355 Input:
18356 Frame 1         Frame 2         Frame 3         Frame 4
18357
18358 11111           22222           33333           44444
18359 11111           22222           33333           44444
18360 11111           22222           33333           44444
18361 11111           22222           33333           44444
18362
18363 Output:
18364 11111           .....           33333           .....
18365 .....           22222           .....           44444
18366 11111           .....           33333           .....
18367 .....           22222           .....           44444
18368 11111           .....           33333           .....
18369 .....           22222           .....           44444
18370 11111           .....           33333           .....
18371 .....           22222           .....           44444
18372 @end example
18373
18374
18375 @item interleave_top, 4
18376 Interleave the upper field from odd frames with the lower field from
18377 even frames, generating a frame with unchanged height at half frame rate.
18378
18379 @example
18380  ------> time
18381 Input:
18382 Frame 1         Frame 2         Frame 3         Frame 4
18383
18384 11111<-         22222           33333<-         44444
18385 11111           22222<-         33333           44444<-
18386 11111<-         22222           33333<-         44444
18387 11111           22222<-         33333           44444<-
18388
18389 Output:
18390 11111                           33333
18391 22222                           44444
18392 11111                           33333
18393 22222                           44444
18394 @end example
18395
18396
18397 @item interleave_bottom, 5
18398 Interleave the lower field from odd frames with the upper field from
18399 even frames, generating a frame with unchanged height at half frame rate.
18400
18401 @example
18402  ------> time
18403 Input:
18404 Frame 1         Frame 2         Frame 3         Frame 4
18405
18406 11111           22222<-         33333           44444<-
18407 11111<-         22222           33333<-         44444
18408 11111           22222<-         33333           44444<-
18409 11111<-         22222           33333<-         44444
18410
18411 Output:
18412 22222                           44444
18413 11111                           33333
18414 22222                           44444
18415 11111                           33333
18416 @end example
18417
18418
18419 @item interlacex2, 6
18420 Double frame rate with unchanged height. Frames are inserted each
18421 containing the second temporal field from the previous input frame and
18422 the first temporal field from the next input frame. This mode relies on
18423 the top_field_first flag. Useful for interlaced video displays with no
18424 field synchronisation.
18425
18426 @example
18427  ------> time
18428 Input:
18429 Frame 1         Frame 2         Frame 3         Frame 4
18430
18431 11111           22222           33333           44444
18432  11111           22222           33333           44444
18433 11111           22222           33333           44444
18434  11111           22222           33333           44444
18435
18436 Output:
18437 11111   22222   22222   33333   33333   44444   44444
18438  11111   11111   22222   22222   33333   33333   44444
18439 11111   22222   22222   33333   33333   44444   44444
18440  11111   11111   22222   22222   33333   33333   44444
18441 @end example
18442
18443
18444 @item mergex2, 7
18445 Move odd frames into the upper field, even into the lower field,
18446 generating a double height frame at same frame rate.
18447
18448 @example
18449  ------> time
18450 Input:
18451 Frame 1         Frame 2         Frame 3         Frame 4
18452
18453 11111           22222           33333           44444
18454 11111           22222           33333           44444
18455 11111           22222           33333           44444
18456 11111           22222           33333           44444
18457
18458 Output:
18459 11111           33333           33333           55555
18460 22222           22222           44444           44444
18461 11111           33333           33333           55555
18462 22222           22222           44444           44444
18463 11111           33333           33333           55555
18464 22222           22222           44444           44444
18465 11111           33333           33333           55555
18466 22222           22222           44444           44444
18467 @end example
18468
18469 @end table
18470
18471 Numeric values are deprecated but are accepted for backward
18472 compatibility reasons.
18473
18474 Default mode is @code{merge}.
18475
18476 @item flags
18477 Specify flags influencing the filter process.
18478
18479 Available value for @var{flags} is:
18480
18481 @table @option
18482 @item low_pass_filter, vlpf
18483 Enable linear vertical low-pass filtering in the filter.
18484 Vertical low-pass filtering is required when creating an interlaced
18485 destination from a progressive source which contains high-frequency
18486 vertical detail. Filtering will reduce interlace 'twitter' and Moire
18487 patterning.
18488
18489 @item complex_filter, cvlpf
18490 Enable complex vertical low-pass filtering.
18491 This will slightly less reduce interlace 'twitter' and Moire
18492 patterning but better retain detail and subjective sharpness impression.
18493
18494 @item bypass_il
18495 Bypass already interlaced frames, only adjust the frame rate.
18496 @end table
18497
18498 Vertical low-pass filtering and bypassing already interlaced frames can only be
18499 enabled for @option{mode} @var{interleave_top} and @var{interleave_bottom}.
18500
18501 @end table
18502
18503 @section tmedian
18504 Pick median pixels from several successive input video frames.
18505
18506 The filter accepts the following options:
18507
18508 @table @option
18509 @item radius
18510 Set radius of median filter.
18511 Default is 1. Allowed range is from 1 to 127.
18512
18513 @item planes
18514 Set which planes to filter. Default value is @code{15}, by which all planes are processed.
18515
18516 @item percentile
18517 Set median percentile. Default value is @code{0.5}.
18518 Default value of @code{0.5} will pick always median values, while @code{0} will pick
18519 minimum values, and @code{1} maximum values.
18520 @end table
18521
18522 @section tmix
18523
18524 Mix successive video frames.
18525
18526 A description of the accepted options follows.
18527
18528 @table @option
18529 @item frames
18530 The number of successive frames to mix. If unspecified, it defaults to 3.
18531
18532 @item weights
18533 Specify weight of each input video frame.
18534 Each weight is separated by space. If number of weights is smaller than
18535 number of @var{frames} last specified weight will be used for all remaining
18536 unset weights.
18537
18538 @item scale
18539 Specify scale, if it is set it will be multiplied with sum
18540 of each weight multiplied with pixel values to give final destination
18541 pixel value. By default @var{scale} is auto scaled to sum of weights.
18542 @end table
18543
18544 @subsection Examples
18545
18546 @itemize
18547 @item
18548 Average 7 successive frames:
18549 @example
18550 tmix=frames=7:weights="1 1 1 1 1 1 1"
18551 @end example
18552
18553 @item
18554 Apply simple temporal convolution:
18555 @example
18556 tmix=frames=3:weights="-1 3 -1"
18557 @end example
18558
18559 @item
18560 Similar as above but only showing temporal differences:
18561 @example
18562 tmix=frames=3:weights="-1 2 -1":scale=1
18563 @end example
18564 @end itemize
18565
18566 @anchor{tonemap}
18567 @section tonemap
18568 Tone map colors from different dynamic ranges.
18569
18570 This filter expects data in single precision floating point, as it needs to
18571 operate on (and can output) out-of-range values. Another filter, such as
18572 @ref{zscale}, is needed to convert the resulting frame to a usable format.
18573
18574 The tonemapping algorithms implemented only work on linear light, so input
18575 data should be linearized beforehand (and possibly correctly tagged).
18576
18577 @example
18578 ffmpeg -i INPUT -vf zscale=transfer=linear,tonemap=clip,zscale=transfer=bt709,format=yuv420p OUTPUT
18579 @end example
18580
18581 @subsection Options
18582 The filter accepts the following options.
18583
18584 @table @option
18585 @item tonemap
18586 Set the tone map algorithm to use.
18587
18588 Possible values are:
18589 @table @var
18590 @item none
18591 Do not apply any tone map, only desaturate overbright pixels.
18592
18593 @item clip
18594 Hard-clip any out-of-range values. Use it for perfect color accuracy for
18595 in-range values, while distorting out-of-range values.
18596
18597 @item linear
18598 Stretch the entire reference gamut to a linear multiple of the display.
18599
18600 @item gamma
18601 Fit a logarithmic transfer between the tone curves.
18602
18603 @item reinhard
18604 Preserve overall image brightness with a simple curve, using nonlinear
18605 contrast, which results in flattening details and degrading color accuracy.
18606
18607 @item hable
18608 Preserve both dark and bright details better than @var{reinhard}, at the cost
18609 of slightly darkening everything. Use it when detail preservation is more
18610 important than color and brightness accuracy.
18611
18612 @item mobius
18613 Smoothly map out-of-range values, while retaining contrast and colors for
18614 in-range material as much as possible. Use it when color accuracy is more
18615 important than detail preservation.
18616 @end table
18617
18618 Default is none.
18619
18620 @item param
18621 Tune the tone mapping algorithm.
18622
18623 This affects the following algorithms:
18624 @table @var
18625 @item none
18626 Ignored.
18627
18628 @item linear
18629 Specifies the scale factor to use while stretching.
18630 Default to 1.0.
18631
18632 @item gamma
18633 Specifies the exponent of the function.
18634 Default to 1.8.
18635
18636 @item clip
18637 Specify an extra linear coefficient to multiply into the signal before clipping.
18638 Default to 1.0.
18639
18640 @item reinhard
18641 Specify the local contrast coefficient at the display peak.
18642 Default to 0.5, which means that in-gamut values will be about half as bright
18643 as when clipping.
18644
18645 @item hable
18646 Ignored.
18647
18648 @item mobius
18649 Specify the transition point from linear to mobius transform. Every value
18650 below this point is guaranteed to be mapped 1:1. The higher the value, the
18651 more accurate the result will be, at the cost of losing bright details.
18652 Default to 0.3, which due to the steep initial slope still preserves in-range
18653 colors fairly accurately.
18654 @end table
18655
18656 @item desat
18657 Apply desaturation for highlights that exceed this level of brightness. The
18658 higher the parameter, the more color information will be preserved. This
18659 setting helps prevent unnaturally blown-out colors for super-highlights, by
18660 (smoothly) turning into white instead. This makes images feel more natural,
18661 at the cost of reducing information about out-of-range colors.
18662
18663 The default of 2.0 is somewhat conservative and will mostly just apply to
18664 skies or directly sunlit surfaces. A setting of 0.0 disables this option.
18665
18666 This option works only if the input frame has a supported color tag.
18667
18668 @item peak
18669 Override signal/nominal/reference peak with this value. Useful when the
18670 embedded peak information in display metadata is not reliable or when tone
18671 mapping from a lower range to a higher range.
18672 @end table
18673
18674 @section tpad
18675
18676 Temporarily pad video frames.
18677
18678 The filter accepts the following options:
18679
18680 @table @option
18681 @item start
18682 Specify number of delay frames before input video stream. Default is 0.
18683
18684 @item stop
18685 Specify number of padding frames after input video stream.
18686 Set to -1 to pad indefinitely. Default is 0.
18687
18688 @item start_mode
18689 Set kind of frames added to beginning of stream.
18690 Can be either @var{add} or @var{clone}.
18691 With @var{add} frames of solid-color are added.
18692 With @var{clone} frames are clones of first frame.
18693 Default is @var{add}.
18694
18695 @item stop_mode
18696 Set kind of frames added to end of stream.
18697 Can be either @var{add} or @var{clone}.
18698 With @var{add} frames of solid-color are added.
18699 With @var{clone} frames are clones of last frame.
18700 Default is @var{add}.
18701
18702 @item start_duration, stop_duration
18703 Specify the duration of the start/stop delay. See
18704 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
18705 for the accepted syntax.
18706 These options override @var{start} and @var{stop}. Default is 0.
18707
18708 @item color
18709 Specify the color of the padded area. For the syntax of this option,
18710 check the @ref{color syntax,,"Color" section in the ffmpeg-utils
18711 manual,ffmpeg-utils}.
18712
18713 The default value of @var{color} is "black".
18714 @end table
18715
18716 @anchor{transpose}
18717 @section transpose
18718
18719 Transpose rows with columns in the input video and optionally flip it.
18720
18721 It accepts the following parameters:
18722
18723 @table @option
18724
18725 @item dir
18726 Specify the transposition direction.
18727
18728 Can assume the following values:
18729 @table @samp
18730 @item 0, 4, cclock_flip
18731 Rotate by 90 degrees counterclockwise and vertically flip (default), that is:
18732 @example
18733 L.R     L.l
18734 . . ->  . .
18735 l.r     R.r
18736 @end example
18737
18738 @item 1, 5, clock
18739 Rotate by 90 degrees clockwise, that is:
18740 @example
18741 L.R     l.L
18742 . . ->  . .
18743 l.r     r.R
18744 @end example
18745
18746 @item 2, 6, cclock
18747 Rotate by 90 degrees counterclockwise, that is:
18748 @example
18749 L.R     R.r
18750 . . ->  . .
18751 l.r     L.l
18752 @end example
18753
18754 @item 3, 7, clock_flip
18755 Rotate by 90 degrees clockwise and vertically flip, that is:
18756 @example
18757 L.R     r.R
18758 . . ->  . .
18759 l.r     l.L
18760 @end example
18761 @end table
18762
18763 For values between 4-7, the transposition is only done if the input
18764 video geometry is portrait and not landscape. These values are
18765 deprecated, the @code{passthrough} option should be used instead.
18766
18767 Numerical values are deprecated, and should be dropped in favor of
18768 symbolic constants.
18769
18770 @item passthrough
18771 Do not apply the transposition if the input geometry matches the one
18772 specified by the specified value. It accepts the following values:
18773 @table @samp
18774 @item none
18775 Always apply transposition.
18776 @item portrait
18777 Preserve portrait geometry (when @var{height} >= @var{width}).
18778 @item landscape
18779 Preserve landscape geometry (when @var{width} >= @var{height}).
18780 @end table
18781
18782 Default value is @code{none}.
18783 @end table
18784
18785 For example to rotate by 90 degrees clockwise and preserve portrait
18786 layout:
18787 @example
18788 transpose=dir=1:passthrough=portrait
18789 @end example
18790
18791 The command above can also be specified as:
18792 @example
18793 transpose=1:portrait
18794 @end example
18795
18796 @section transpose_npp
18797
18798 Transpose rows with columns in the input video and optionally flip it.
18799 For more in depth examples see the @ref{transpose} video filter, which shares mostly the same options.
18800
18801 It accepts the following parameters:
18802
18803 @table @option
18804
18805 @item dir
18806 Specify the transposition direction.
18807
18808 Can assume the following values:
18809 @table @samp
18810 @item cclock_flip
18811 Rotate by 90 degrees counterclockwise and vertically flip. (default)
18812
18813 @item clock
18814 Rotate by 90 degrees clockwise.
18815
18816 @item cclock
18817 Rotate by 90 degrees counterclockwise.
18818
18819 @item clock_flip
18820 Rotate by 90 degrees clockwise and vertically flip.
18821 @end table
18822
18823 @item passthrough
18824 Do not apply the transposition if the input geometry matches the one
18825 specified by the specified value. It accepts the following values:
18826 @table @samp
18827 @item none
18828 Always apply transposition. (default)
18829 @item portrait
18830 Preserve portrait geometry (when @var{height} >= @var{width}).
18831 @item landscape
18832 Preserve landscape geometry (when @var{width} >= @var{height}).
18833 @end table
18834
18835 @end table
18836
18837 @section trim
18838 Trim the input so that the output contains one continuous subpart of the input.
18839
18840 It accepts the following parameters:
18841 @table @option
18842 @item start
18843 Specify the time of the start of the kept section, i.e. the frame with the
18844 timestamp @var{start} will be the first frame in the output.
18845
18846 @item end
18847 Specify the time of the first frame that will be dropped, i.e. the frame
18848 immediately preceding the one with the timestamp @var{end} will be the last
18849 frame in the output.
18850
18851 @item start_pts
18852 This is the same as @var{start}, except this option sets the start timestamp
18853 in timebase units instead of seconds.
18854
18855 @item end_pts
18856 This is the same as @var{end}, except this option sets the end timestamp
18857 in timebase units instead of seconds.
18858
18859 @item duration
18860 The maximum duration of the output in seconds.
18861
18862 @item start_frame
18863 The number of the first frame that should be passed to the output.
18864
18865 @item end_frame
18866 The number of the first frame that should be dropped.
18867 @end table
18868
18869 @option{start}, @option{end}, and @option{duration} are expressed as time
18870 duration specifications; see
18871 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
18872 for the accepted syntax.
18873
18874 Note that the first two sets of the start/end options and the @option{duration}
18875 option look at the frame timestamp, while the _frame variants simply count the
18876 frames that pass through the filter. Also note that this filter does not modify
18877 the timestamps. If you wish for the output timestamps to start at zero, insert a
18878 setpts filter after the trim filter.
18879
18880 If multiple start or end options are set, this filter tries to be greedy and
18881 keep all the frames that match at least one of the specified constraints. To keep
18882 only the part that matches all the constraints at once, chain multiple trim
18883 filters.
18884
18885 The defaults are such that all the input is kept. So it is possible to set e.g.
18886 just the end values to keep everything before the specified time.
18887
18888 Examples:
18889 @itemize
18890 @item
18891 Drop everything except the second minute of input:
18892 @example
18893 ffmpeg -i INPUT -vf trim=60:120
18894 @end example
18895
18896 @item
18897 Keep only the first second:
18898 @example
18899 ffmpeg -i INPUT -vf trim=duration=1
18900 @end example
18901
18902 @end itemize
18903
18904 @section unpremultiply
18905 Apply alpha unpremultiply effect to input video stream using first plane
18906 of second stream as alpha.
18907
18908 Both streams must have same dimensions and same pixel format.
18909
18910 The filter accepts the following option:
18911
18912 @table @option
18913 @item planes
18914 Set which planes will be processed, unprocessed planes will be copied.
18915 By default value 0xf, all planes will be processed.
18916
18917 If the format has 1 or 2 components, then luma is bit 0.
18918 If the format has 3 or 4 components:
18919 for RGB formats bit 0 is green, bit 1 is blue and bit 2 is red;
18920 for YUV formats bit 0 is luma, bit 1 is chroma-U and bit 2 is chroma-V.
18921 If present, the alpha channel is always the last bit.
18922
18923 @item inplace
18924 Do not require 2nd input for processing, instead use alpha plane from input stream.
18925 @end table
18926
18927 @anchor{unsharp}
18928 @section unsharp
18929
18930 Sharpen or blur the input video.
18931
18932 It accepts the following parameters:
18933
18934 @table @option
18935 @item luma_msize_x, lx
18936 Set the luma matrix horizontal size. It must be an odd integer between
18937 3 and 23. The default value is 5.
18938
18939 @item luma_msize_y, ly
18940 Set the luma matrix vertical size. It must be an odd integer between 3
18941 and 23. The default value is 5.
18942
18943 @item luma_amount, la
18944 Set the luma effect strength. It must be a floating point number, reasonable
18945 values lay between -1.5 and 1.5.
18946
18947 Negative values will blur the input video, while positive values will
18948 sharpen it, a value of zero will disable the effect.
18949
18950 Default value is 1.0.
18951
18952 @item chroma_msize_x, cx
18953 Set the chroma matrix horizontal size. It must be an odd integer
18954 between 3 and 23. The default value is 5.
18955
18956 @item chroma_msize_y, cy
18957 Set the chroma matrix vertical size. It must be an odd integer
18958 between 3 and 23. The default value is 5.
18959
18960 @item chroma_amount, ca
18961 Set the chroma effect strength. It must be a floating point number, reasonable
18962 values lay between -1.5 and 1.5.
18963
18964 Negative values will blur the input video, while positive values will
18965 sharpen it, a value of zero will disable the effect.
18966
18967 Default value is 0.0.
18968
18969 @end table
18970
18971 All parameters are optional and default to the equivalent of the
18972 string '5:5:1.0:5:5:0.0'.
18973
18974 @subsection Examples
18975
18976 @itemize
18977 @item
18978 Apply strong luma sharpen effect:
18979 @example
18980 unsharp=luma_msize_x=7:luma_msize_y=7:luma_amount=2.5
18981 @end example
18982
18983 @item
18984 Apply a strong blur of both luma and chroma parameters:
18985 @example
18986 unsharp=7:7:-2:7:7:-2
18987 @end example
18988 @end itemize
18989
18990 @anchor{untile}
18991 @section untile
18992
18993 Decompose a video made of tiled images into the individual images.
18994
18995 The frame rate of the output video is the frame rate of the input video
18996 multiplied by the number of tiles.
18997
18998 This filter does the reverse of @ref{tile}.
18999
19000 The filter accepts the following options:
19001
19002 @table @option
19003
19004 @item layout
19005 Set the grid size (i.e. the number of lines and columns). For the syntax of
19006 this option, check the
19007 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
19008 @end table
19009
19010 @subsection Examples
19011
19012 @itemize
19013 @item
19014 Produce a 1-second video from a still image file made of 25 frames stacked
19015 vertically, like an analogic film reel:
19016 @example
19017 ffmpeg -r 1 -i image.jpg -vf untile=1x25 movie.mkv
19018 @end example
19019 @end itemize
19020
19021 @section uspp
19022
19023 Apply ultra slow/simple postprocessing filter that compresses and decompresses
19024 the image at several (or - in the case of @option{quality} level @code{8} - all)
19025 shifts and average the results.
19026
19027 The way this differs from the behavior of spp is that uspp actually encodes &
19028 decodes each case with libavcodec Snow, whereas spp uses a simplified intra only 8x8
19029 DCT similar to MJPEG.
19030
19031 The filter accepts the following options:
19032
19033 @table @option
19034 @item quality
19035 Set quality. This option defines the number of levels for averaging. It accepts
19036 an integer in the range 0-8. If set to @code{0}, the filter will have no
19037 effect. A value of @code{8} means the higher quality. For each increment of
19038 that value the speed drops by a factor of approximately 2.  Default value is
19039 @code{3}.
19040
19041 @item qp
19042 Force a constant quantization parameter. If not set, the filter will use the QP
19043 from the video stream (if available).
19044 @end table
19045
19046 @section v360
19047
19048 Convert 360 videos between various formats.
19049
19050 The filter accepts the following options:
19051
19052 @table @option
19053
19054 @item input
19055 @item output
19056 Set format of the input/output video.
19057
19058 Available formats:
19059
19060 @table @samp
19061
19062 @item e
19063 @item equirect
19064 Equirectangular projection.
19065
19066 @item c3x2
19067 @item c6x1
19068 @item c1x6
19069 Cubemap with 3x2/6x1/1x6 layout.
19070
19071 Format specific options:
19072
19073 @table @option
19074 @item in_pad
19075 @item out_pad
19076 Set padding proportion for the input/output cubemap. Values in decimals.
19077
19078 Example values:
19079 @table @samp
19080 @item 0
19081 No padding.
19082 @item 0.01
19083 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)
19084 @end table
19085
19086 Default value is @b{@samp{0}}.
19087 Maximum value is @b{@samp{0.1}}.
19088
19089 @item fin_pad
19090 @item fout_pad
19091 Set fixed padding for the input/output cubemap. Values in pixels.
19092
19093 Default value is @b{@samp{0}}. If greater than zero it overrides other padding options.
19094
19095 @item in_forder
19096 @item out_forder
19097 Set order of faces for the input/output cubemap. Choose one direction for each position.
19098
19099 Designation of directions:
19100 @table @samp
19101 @item r
19102 right
19103 @item l
19104 left
19105 @item u
19106 up
19107 @item d
19108 down
19109 @item f
19110 forward
19111 @item b
19112 back
19113 @end table
19114
19115 Default value is @b{@samp{rludfb}}.
19116
19117 @item in_frot
19118 @item out_frot
19119 Set rotation of faces for the input/output cubemap. Choose one angle for each position.
19120
19121 Designation of angles:
19122 @table @samp
19123 @item 0
19124 0 degrees clockwise
19125 @item 1
19126 90 degrees clockwise
19127 @item 2
19128 180 degrees clockwise
19129 @item 3
19130 270 degrees clockwise
19131 @end table
19132
19133 Default value is @b{@samp{000000}}.
19134 @end table
19135
19136 @item eac
19137 Equi-Angular Cubemap.
19138
19139 @item flat
19140 @item gnomonic
19141 @item rectilinear
19142 Regular video.
19143
19144 Format specific options:
19145 @table @option
19146 @item h_fov
19147 @item v_fov
19148 @item d_fov
19149 Set output horizontal/vertical/diagonal field of view. Values in degrees.
19150
19151 If diagonal field of view is set it overrides horizontal and vertical field of view.
19152
19153 @item ih_fov
19154 @item iv_fov
19155 @item id_fov
19156 Set input horizontal/vertical/diagonal field of view. Values in degrees.
19157
19158 If diagonal field of view is set it overrides horizontal and vertical field of view.
19159 @end table
19160
19161 @item dfisheye
19162 Dual fisheye.
19163
19164 Format specific options:
19165 @table @option
19166 @item h_fov
19167 @item v_fov
19168 @item d_fov
19169 Set output horizontal/vertical/diagonal field of view. Values in degrees.
19170
19171 If diagonal field of view is set it overrides horizontal and vertical field of view.
19172
19173 @item ih_fov
19174 @item iv_fov
19175 @item id_fov
19176 Set input horizontal/vertical/diagonal field of view. Values in degrees.
19177
19178 If diagonal field of view is set it overrides horizontal and vertical field of view.
19179 @end table
19180
19181 @item barrel
19182 @item fb
19183 @item barrelsplit
19184 Facebook's 360 formats.
19185
19186 @item sg
19187 Stereographic format.
19188
19189 Format specific options:
19190 @table @option
19191 @item h_fov
19192 @item v_fov
19193 @item d_fov
19194 Set output horizontal/vertical/diagonal field of view. Values in degrees.
19195
19196 If diagonal field of view is set it overrides horizontal and vertical field of view.
19197
19198 @item ih_fov
19199 @item iv_fov
19200 @item id_fov
19201 Set input horizontal/vertical/diagonal field of view. Values in degrees.
19202
19203 If diagonal field of view is set it overrides horizontal and vertical field of view.
19204 @end table
19205
19206 @item mercator
19207 Mercator format.
19208
19209 @item ball
19210 Ball format, gives significant distortion toward the back.
19211
19212 @item hammer
19213 Hammer-Aitoff map projection format.
19214
19215 @item sinusoidal
19216 Sinusoidal map projection format.
19217
19218 @item fisheye
19219 Fisheye projection.
19220
19221 Format specific options:
19222 @table @option
19223 @item h_fov
19224 @item v_fov
19225 @item d_fov
19226 Set output horizontal/vertical/diagonal field of view. Values in degrees.
19227
19228 If diagonal field of view is set it overrides horizontal and vertical field of view.
19229
19230 @item ih_fov
19231 @item iv_fov
19232 @item id_fov
19233 Set input horizontal/vertical/diagonal field of view. Values in degrees.
19234
19235 If diagonal field of view is set it overrides horizontal and vertical field of view.
19236 @end table
19237
19238 @item pannini
19239 Pannini projection.
19240
19241 Format specific options:
19242 @table @option
19243 @item h_fov
19244 Set output pannini parameter.
19245
19246 @item ih_fov
19247 Set input pannini parameter.
19248 @end table
19249
19250 @item cylindrical
19251 Cylindrical projection.
19252
19253 Format specific options:
19254 @table @option
19255 @item h_fov
19256 @item v_fov
19257 @item d_fov
19258 Set output horizontal/vertical/diagonal field of view. Values in degrees.
19259
19260 If diagonal field of view is set it overrides horizontal and vertical field of view.
19261
19262 @item ih_fov
19263 @item iv_fov
19264 @item id_fov
19265 Set input horizontal/vertical/diagonal field of view. Values in degrees.
19266
19267 If diagonal field of view is set it overrides horizontal and vertical field of view.
19268 @end table
19269
19270 @item perspective
19271 Perspective projection. @i{(output only)}
19272
19273 Format specific options:
19274 @table @option
19275 @item v_fov
19276 Set perspective parameter.
19277 @end table
19278
19279 @item tetrahedron
19280 Tetrahedron projection.
19281
19282 @item tsp
19283 Truncated square pyramid projection.
19284
19285 @item he
19286 @item hequirect
19287 Half equirectangular projection.
19288 @end table
19289
19290 @item interp
19291 Set interpolation method.@*
19292 @i{Note: more complex interpolation methods require much more memory to run.}
19293
19294 Available methods:
19295
19296 @table @samp
19297 @item near
19298 @item nearest
19299 Nearest neighbour.
19300 @item line
19301 @item linear
19302 Bilinear interpolation.
19303 @item lagrange9
19304 Lagrange9 interpolation.
19305 @item cube
19306 @item cubic
19307 Bicubic interpolation.
19308 @item lanc
19309 @item lanczos
19310 Lanczos interpolation.
19311 @item sp16
19312 @item spline16
19313 Spline16 interpolation.
19314 @item gauss
19315 @item gaussian
19316 Gaussian interpolation.
19317 @end table
19318
19319 Default value is @b{@samp{line}}.
19320
19321 @item w
19322 @item h
19323 Set the output video resolution.
19324
19325 Default resolution depends on formats.
19326
19327 @item in_stereo
19328 @item out_stereo
19329 Set the input/output stereo format.
19330
19331 @table @samp
19332 @item 2d
19333 2D mono
19334 @item sbs
19335 Side by side
19336 @item tb
19337 Top bottom
19338 @end table
19339
19340 Default value is @b{@samp{2d}} for input and output format.
19341
19342 @item yaw
19343 @item pitch
19344 @item roll
19345 Set rotation for the output video. Values in degrees.
19346
19347 @item rorder
19348 Set rotation order for the output video. Choose one item for each position.
19349
19350 @table @samp
19351 @item y, Y
19352 yaw
19353 @item p, P
19354 pitch
19355 @item r, R
19356 roll
19357 @end table
19358
19359 Default value is @b{@samp{ypr}}.
19360
19361 @item h_flip
19362 @item v_flip
19363 @item d_flip
19364 Flip the output video horizontally(swaps left-right)/vertically(swaps up-down)/in-depth(swaps back-forward). Boolean values.
19365
19366 @item ih_flip
19367 @item iv_flip
19368 Set if input video is flipped horizontally/vertically. Boolean values.
19369
19370 @item in_trans
19371 Set if input video is transposed. Boolean value, by default disabled.
19372
19373 @item out_trans
19374 Set if output video needs to be transposed. Boolean value, by default disabled.
19375
19376 @item alpha_mask
19377 Build mask in alpha plane for all unmapped pixels by marking them fully transparent. Boolean value, by default disabled.
19378 @end table
19379
19380 @subsection Examples
19381
19382 @itemize
19383 @item
19384 Convert equirectangular video to cubemap with 3x2 layout and 1% padding using bicubic interpolation:
19385 @example
19386 ffmpeg -i input.mkv -vf v360=e:c3x2:cubic:out_pad=0.01 output.mkv
19387 @end example
19388 @item
19389 Extract back view of Equi-Angular Cubemap:
19390 @example
19391 ffmpeg -i input.mkv -vf v360=eac:flat:yaw=180 output.mkv
19392 @end example
19393 @item
19394 Convert transposed and horizontally flipped Equi-Angular Cubemap in side-by-side stereo format to equirectangular top-bottom stereo format:
19395 @example
19396 v360=eac:equirect:in_stereo=sbs:in_trans=1:ih_flip=1:out_stereo=tb
19397 @end example
19398 @end itemize
19399
19400 @subsection Commands
19401
19402 This filter supports subset of above options as @ref{commands}.
19403
19404 @section vaguedenoiser
19405
19406 Apply a wavelet based denoiser.
19407
19408 It transforms each frame from the video input into the wavelet domain,
19409 using Cohen-Daubechies-Feauveau 9/7. Then it applies some filtering to
19410 the obtained coefficients. It does an inverse wavelet transform after.
19411 Due to wavelet properties, it should give a nice smoothed result, and
19412 reduced noise, without blurring picture features.
19413
19414 This filter accepts the following options:
19415
19416 @table @option
19417 @item threshold
19418 The filtering strength. The higher, the more filtered the video will be.
19419 Hard thresholding can use a higher threshold than soft thresholding
19420 before the video looks overfiltered. Default value is 2.
19421
19422 @item method
19423 The filtering method the filter will use.
19424
19425 It accepts the following values:
19426 @table @samp
19427 @item hard
19428 All values under the threshold will be zeroed.
19429
19430 @item soft
19431 All values under the threshold will be zeroed. All values above will be
19432 reduced by the threshold.
19433
19434 @item garrote
19435 Scales or nullifies coefficients - intermediary between (more) soft and
19436 (less) hard thresholding.
19437 @end table
19438
19439 Default is garrote.
19440
19441 @item nsteps
19442 Number of times, the wavelet will decompose the picture. Picture can't
19443 be decomposed beyond a particular point (typically, 8 for a 640x480
19444 frame - as 2^9 = 512 > 480). Valid values are integers between 1 and 32. Default value is 6.
19445
19446 @item percent
19447 Partial of full denoising (limited coefficients shrinking), from 0 to 100. Default value is 85.
19448
19449 @item planes
19450 A list of the planes to process. By default all planes are processed.
19451 @end table
19452
19453 @section vectorscope
19454
19455 Display 2 color component values in the two dimensional graph (which is called
19456 a vectorscope).
19457
19458 This filter accepts the following options:
19459
19460 @table @option
19461 @item mode, m
19462 Set vectorscope mode.
19463
19464 It accepts the following values:
19465 @table @samp
19466 @item gray
19467 @item tint
19468 Gray values are displayed on graph, higher brightness means more pixels have
19469 same component color value on location in graph. This is the default mode.
19470
19471 @item color
19472 Gray values are displayed on graph. Surrounding pixels values which are not
19473 present in video frame are drawn in gradient of 2 color components which are
19474 set by option @code{x} and @code{y}. The 3rd color component is static.
19475
19476 @item color2
19477 Actual color components values present in video frame are displayed on graph.
19478
19479 @item color3
19480 Similar as color2 but higher frequency of same values @code{x} and @code{y}
19481 on graph increases value of another color component, which is luminance by
19482 default values of @code{x} and @code{y}.
19483
19484 @item color4
19485 Actual colors present in video frame are displayed on graph. If two different
19486 colors map to same position on graph then color with higher value of component
19487 not present in graph is picked.
19488
19489 @item color5
19490 Gray values are displayed on graph. Similar to @code{color} but with 3rd color
19491 component picked from radial gradient.
19492 @end table
19493
19494 @item x
19495 Set which color component will be represented on X-axis. Default is @code{1}.
19496
19497 @item y
19498 Set which color component will be represented on Y-axis. Default is @code{2}.
19499
19500 @item intensity, i
19501 Set intensity, used by modes: gray, color, color3 and color5 for increasing brightness
19502 of color component which represents frequency of (X, Y) location in graph.
19503
19504 @item envelope, e
19505 @table @samp
19506 @item none
19507 No envelope, this is default.
19508
19509 @item instant
19510 Instant envelope, even darkest single pixel will be clearly highlighted.
19511
19512 @item peak
19513 Hold maximum and minimum values presented in graph over time. This way you
19514 can still spot out of range values without constantly looking at vectorscope.
19515
19516 @item peak+instant
19517 Peak and instant envelope combined together.
19518 @end table
19519
19520 @item graticule, g
19521 Set what kind of graticule to draw.
19522 @table @samp
19523 @item none
19524 @item green
19525 @item color
19526 @item invert
19527 @end table
19528
19529 @item opacity, o
19530 Set graticule opacity.
19531
19532 @item flags, f
19533 Set graticule flags.
19534
19535 @table @samp
19536 @item white
19537 Draw graticule for white point.
19538
19539 @item black
19540 Draw graticule for black point.
19541
19542 @item name
19543 Draw color points short names.
19544 @end table
19545
19546 @item bgopacity, b
19547 Set background opacity.
19548
19549 @item lthreshold, l
19550 Set low threshold for color component not represented on X or Y axis.
19551 Values lower than this value will be ignored. Default is 0.
19552 Note this value is multiplied with actual max possible value one pixel component
19553 can have. So for 8-bit input and low threshold value of 0.1 actual threshold
19554 is 0.1 * 255 = 25.
19555
19556 @item hthreshold, h
19557 Set high threshold for color component not represented on X or Y axis.
19558 Values higher than this value will be ignored. Default is 1.
19559 Note this value is multiplied with actual max possible value one pixel component
19560 can have. So for 8-bit input and high threshold value of 0.9 actual threshold
19561 is 0.9 * 255 = 230.
19562
19563 @item colorspace, c
19564 Set what kind of colorspace to use when drawing graticule.
19565 @table @samp
19566 @item auto
19567 @item 601
19568 @item 709
19569 @end table
19570 Default is auto.
19571
19572 @item tint0, t0
19573 @item tint1, t1
19574 Set color tint for gray/tint vectorscope mode. By default both options are zero.
19575 This means no tint, and output will remain gray.
19576 @end table
19577
19578 @anchor{vidstabdetect}
19579 @section vidstabdetect
19580
19581 Analyze video stabilization/deshaking. Perform pass 1 of 2, see
19582 @ref{vidstabtransform} for pass 2.
19583
19584 This filter generates a file with relative translation and rotation
19585 transform information about subsequent frames, which is then used by
19586 the @ref{vidstabtransform} filter.
19587
19588 To enable compilation of this filter you need to configure FFmpeg with
19589 @code{--enable-libvidstab}.
19590
19591 This filter accepts the following options:
19592
19593 @table @option
19594 @item result
19595 Set the path to the file used to write the transforms information.
19596 Default value is @file{transforms.trf}.
19597
19598 @item shakiness
19599 Set how shaky the video is and how quick the camera is. It accepts an
19600 integer in the range 1-10, a value of 1 means little shakiness, a
19601 value of 10 means strong shakiness. Default value is 5.
19602
19603 @item accuracy
19604 Set the accuracy of the detection process. It must be a value in the
19605 range 1-15. A value of 1 means low accuracy, a value of 15 means high
19606 accuracy. Default value is 15.
19607
19608 @item stepsize
19609 Set stepsize of the search process. The region around minimum is
19610 scanned with 1 pixel resolution. Default value is 6.
19611
19612 @item mincontrast
19613 Set minimum contrast. Below this value a local measurement field is
19614 discarded. Must be a floating point value in the range 0-1. Default
19615 value is 0.3.
19616
19617 @item tripod
19618 Set reference frame number for tripod mode.
19619
19620 If enabled, the motion of the frames is compared to a reference frame
19621 in the filtered stream, identified by the specified number. The idea
19622 is to compensate all movements in a more-or-less static scene and keep
19623 the camera view absolutely still.
19624
19625 If set to 0, it is disabled. The frames are counted starting from 1.
19626
19627 @item show
19628 Show fields and transforms in the resulting frames. It accepts an
19629 integer in the range 0-2. Default value is 0, which disables any
19630 visualization.
19631 @end table
19632
19633 @subsection Examples
19634
19635 @itemize
19636 @item
19637 Use default values:
19638 @example
19639 vidstabdetect
19640 @end example
19641
19642 @item
19643 Analyze strongly shaky movie and put the results in file
19644 @file{mytransforms.trf}:
19645 @example
19646 vidstabdetect=shakiness=10:accuracy=15:result="mytransforms.trf"
19647 @end example
19648
19649 @item
19650 Visualize the result of internal transformations in the resulting
19651 video:
19652 @example
19653 vidstabdetect=show=1
19654 @end example
19655
19656 @item
19657 Analyze a video with medium shakiness using @command{ffmpeg}:
19658 @example
19659 ffmpeg -i input -vf vidstabdetect=shakiness=5:show=1 dummy.avi
19660 @end example
19661 @end itemize
19662
19663 @anchor{vidstabtransform}
19664 @section vidstabtransform
19665
19666 Video stabilization/deshaking: pass 2 of 2,
19667 see @ref{vidstabdetect} for pass 1.
19668
19669 Read a file with transform information for each frame and
19670 apply/compensate them. Together with the @ref{vidstabdetect}
19671 filter this can be used to deshake videos. See also
19672 @url{http://public.hronopik.de/vid.stab}. It is important to also use
19673 the @ref{unsharp} filter, see below.
19674
19675 To enable compilation of this filter you need to configure FFmpeg with
19676 @code{--enable-libvidstab}.
19677
19678 @subsection Options
19679
19680 @table @option
19681 @item input
19682 Set path to the file used to read the transforms. Default value is
19683 @file{transforms.trf}.
19684
19685 @item smoothing
19686 Set the number of frames (value*2 + 1) used for lowpass filtering the
19687 camera movements. Default value is 10.
19688
19689 For example a number of 10 means that 21 frames are used (10 in the
19690 past and 10 in the future) to smoothen the motion in the video. A
19691 larger value leads to a smoother video, but limits the acceleration of
19692 the camera (pan/tilt movements). 0 is a special case where a static
19693 camera is simulated.
19694
19695 @item optalgo
19696 Set the camera path optimization algorithm.
19697
19698 Accepted values are:
19699 @table @samp
19700 @item gauss
19701 gaussian kernel low-pass filter on camera motion (default)
19702 @item avg
19703 averaging on transformations
19704 @end table
19705
19706 @item maxshift
19707 Set maximal number of pixels to translate frames. Default value is -1,
19708 meaning no limit.
19709
19710 @item maxangle
19711 Set maximal angle in radians (degree*PI/180) to rotate frames. Default
19712 value is -1, meaning no limit.
19713
19714 @item crop
19715 Specify how to deal with borders that may be visible due to movement
19716 compensation.
19717
19718 Available values are:
19719 @table @samp
19720 @item keep
19721 keep image information from previous frame (default)
19722 @item black
19723 fill the border black
19724 @end table
19725
19726 @item invert
19727 Invert transforms if set to 1. Default value is 0.
19728
19729 @item relative
19730 Consider transforms as relative to previous frame if set to 1,
19731 absolute if set to 0. Default value is 0.
19732
19733 @item zoom
19734 Set percentage to zoom. A positive value will result in a zoom-in
19735 effect, a negative value in a zoom-out effect. Default value is 0 (no
19736 zoom).
19737
19738 @item optzoom
19739 Set optimal zooming to avoid borders.
19740
19741 Accepted values are:
19742 @table @samp
19743 @item 0
19744 disabled
19745 @item 1
19746 optimal static zoom value is determined (only very strong movements
19747 will lead to visible borders) (default)
19748 @item 2
19749 optimal adaptive zoom value is determined (no borders will be
19750 visible), see @option{zoomspeed}
19751 @end table
19752
19753 Note that the value given at zoom is added to the one calculated here.
19754
19755 @item zoomspeed
19756 Set percent to zoom maximally each frame (enabled when
19757 @option{optzoom} is set to 2). Range is from 0 to 5, default value is
19758 0.25.
19759
19760 @item interpol
19761 Specify type of interpolation.
19762
19763 Available values are:
19764 @table @samp
19765 @item no
19766 no interpolation
19767 @item linear
19768 linear only horizontal
19769 @item bilinear
19770 linear in both directions (default)
19771 @item bicubic
19772 cubic in both directions (slow)
19773 @end table
19774
19775 @item tripod
19776 Enable virtual tripod mode if set to 1, which is equivalent to
19777 @code{relative=0:smoothing=0}. Default value is 0.
19778
19779 Use also @code{tripod} option of @ref{vidstabdetect}.
19780
19781 @item debug
19782 Increase log verbosity if set to 1. Also the detected global motions
19783 are written to the temporary file @file{global_motions.trf}. Default
19784 value is 0.
19785 @end table
19786
19787 @subsection Examples
19788
19789 @itemize
19790 @item
19791 Use @command{ffmpeg} for a typical stabilization with default values:
19792 @example
19793 ffmpeg -i inp.mpeg -vf vidstabtransform,unsharp=5:5:0.8:3:3:0.4 inp_stabilized.mpeg
19794 @end example
19795
19796 Note the use of the @ref{unsharp} filter which is always recommended.
19797
19798 @item
19799 Zoom in a bit more and load transform data from a given file:
19800 @example
19801 vidstabtransform=zoom=5:input="mytransforms.trf"
19802 @end example
19803
19804 @item
19805 Smoothen the video even more:
19806 @example
19807 vidstabtransform=smoothing=30
19808 @end example
19809 @end itemize
19810
19811 @section vflip
19812
19813 Flip the input video vertically.
19814
19815 For example, to vertically flip a video with @command{ffmpeg}:
19816 @example
19817 ffmpeg -i in.avi -vf "vflip" out.avi
19818 @end example
19819
19820 @section vfrdet
19821
19822 Detect variable frame rate video.
19823
19824 This filter tries to detect if the input is variable or constant frame rate.
19825
19826 At end it will output number of frames detected as having variable delta pts,
19827 and ones with constant delta pts.
19828 If there was frames with variable delta, than it will also show min, max and
19829 average delta encountered.
19830
19831 @section vibrance
19832
19833 Boost or alter saturation.
19834
19835 The filter accepts the following options:
19836 @table @option
19837 @item intensity
19838 Set strength of boost if positive value or strength of alter if negative value.
19839 Default is 0. Allowed range is from -2 to 2.
19840
19841 @item rbal
19842 Set the red balance. Default is 1. Allowed range is from -10 to 10.
19843
19844 @item gbal
19845 Set the green balance. Default is 1. Allowed range is from -10 to 10.
19846
19847 @item bbal
19848 Set the blue balance. Default is 1. Allowed range is from -10 to 10.
19849
19850 @item rlum
19851 Set the red luma coefficient.
19852
19853 @item glum
19854 Set the green luma coefficient.
19855
19856 @item blum
19857 Set the blue luma coefficient.
19858
19859 @item alternate
19860 If @code{intensity} is negative and this is set to 1, colors will change,
19861 otherwise colors will be less saturated, more towards gray.
19862 @end table
19863
19864 @subsection Commands
19865
19866 This filter supports the all above options as @ref{commands}.
19867
19868 @anchor{vignette}
19869 @section vignette
19870
19871 Make or reverse a natural vignetting effect.
19872
19873 The filter accepts the following options:
19874
19875 @table @option
19876 @item angle, a
19877 Set lens angle expression as a number of radians.
19878
19879 The value is clipped in the @code{[0,PI/2]} range.
19880
19881 Default value: @code{"PI/5"}
19882
19883 @item x0
19884 @item y0
19885 Set center coordinates expressions. Respectively @code{"w/2"} and @code{"h/2"}
19886 by default.
19887
19888 @item mode
19889 Set forward/backward mode.
19890
19891 Available modes are:
19892 @table @samp
19893 @item forward
19894 The larger the distance from the central point, the darker the image becomes.
19895
19896 @item backward
19897 The larger the distance from the central point, the brighter the image becomes.
19898 This can be used to reverse a vignette effect, though there is no automatic
19899 detection to extract the lens @option{angle} and other settings (yet). It can
19900 also be used to create a burning effect.
19901 @end table
19902
19903 Default value is @samp{forward}.
19904
19905 @item eval
19906 Set evaluation mode for the expressions (@option{angle}, @option{x0}, @option{y0}).
19907
19908 It accepts the following values:
19909 @table @samp
19910 @item init
19911 Evaluate expressions only once during the filter initialization.
19912
19913 @item frame
19914 Evaluate expressions for each incoming frame. This is way slower than the
19915 @samp{init} mode since it requires all the scalers to be re-computed, but it
19916 allows advanced dynamic expressions.
19917 @end table
19918
19919 Default value is @samp{init}.
19920
19921 @item dither
19922 Set dithering to reduce the circular banding effects. Default is @code{1}
19923 (enabled).
19924
19925 @item aspect
19926 Set vignette aspect. This setting allows one to adjust the shape of the vignette.
19927 Setting this value to the SAR of the input will make a rectangular vignetting
19928 following the dimensions of the video.
19929
19930 Default is @code{1/1}.
19931 @end table
19932
19933 @subsection Expressions
19934
19935 The @option{alpha}, @option{x0} and @option{y0} expressions can contain the
19936 following parameters.
19937
19938 @table @option
19939 @item w
19940 @item h
19941 input width and height
19942
19943 @item n
19944 the number of input frame, starting from 0
19945
19946 @item pts
19947 the PTS (Presentation TimeStamp) time of the filtered video frame, expressed in
19948 @var{TB} units, NAN if undefined
19949
19950 @item r
19951 frame rate of the input video, NAN if the input frame rate is unknown
19952
19953 @item t
19954 the PTS (Presentation TimeStamp) of the filtered video frame,
19955 expressed in seconds, NAN if undefined
19956
19957 @item tb
19958 time base of the input video
19959 @end table
19960
19961
19962 @subsection Examples
19963
19964 @itemize
19965 @item
19966 Apply simple strong vignetting effect:
19967 @example
19968 vignette=PI/4
19969 @end example
19970
19971 @item
19972 Make a flickering vignetting:
19973 @example
19974 vignette='PI/4+random(1)*PI/50':eval=frame
19975 @end example
19976
19977 @end itemize
19978
19979 @section vmafmotion
19980
19981 Obtain the average VMAF motion score of a video.
19982 It is one of the component metrics of VMAF.
19983
19984 The obtained average motion score is printed through the logging system.
19985
19986 The filter accepts the following options:
19987
19988 @table @option
19989 @item stats_file
19990 If specified, the filter will use the named file to save the motion score of
19991 each frame with respect to the previous frame.
19992 When filename equals "-" the data is sent to standard output.
19993 @end table
19994
19995 Example:
19996 @example
19997 ffmpeg -i ref.mpg -vf vmafmotion -f null -
19998 @end example
19999
20000 @section vstack
20001 Stack input videos vertically.
20002
20003 All streams must be of same pixel format and of same width.
20004
20005 Note that this filter is faster than using @ref{overlay} and @ref{pad} filter
20006 to create same output.
20007
20008 The filter accepts the following options:
20009
20010 @table @option
20011 @item inputs
20012 Set number of input streams. Default is 2.
20013
20014 @item shortest
20015 If set to 1, force the output to terminate when the shortest input
20016 terminates. Default value is 0.
20017 @end table
20018
20019 @section w3fdif
20020
20021 Deinterlace the input video ("w3fdif" stands for "Weston 3 Field
20022 Deinterlacing Filter").
20023
20024 Based on the process described by Martin Weston for BBC R&D, and
20025 implemented based on the de-interlace algorithm written by Jim
20026 Easterbrook for BBC R&D, the Weston 3 field deinterlacing filter
20027 uses filter coefficients calculated by BBC R&D.
20028
20029 This filter uses field-dominance information in frame to decide which
20030 of each pair of fields to place first in the output.
20031 If it gets it wrong use @ref{setfield} filter before @code{w3fdif} filter.
20032
20033 There are two sets of filter coefficients, so called "simple"
20034 and "complex". Which set of filter coefficients is used can
20035 be set by passing an optional parameter:
20036
20037 @table @option
20038 @item filter
20039 Set the interlacing filter coefficients. Accepts one of the following values:
20040
20041 @table @samp
20042 @item simple
20043 Simple filter coefficient set.
20044 @item complex
20045 More-complex filter coefficient set.
20046 @end table
20047 Default value is @samp{complex}.
20048
20049 @item deint
20050 Specify which frames to deinterlace. Accepts one of the following values:
20051
20052 @table @samp
20053 @item all
20054 Deinterlace all frames,
20055 @item interlaced
20056 Only deinterlace frames marked as interlaced.
20057 @end table
20058
20059 Default value is @samp{all}.
20060 @end table
20061
20062 @section waveform
20063 Video waveform monitor.
20064
20065 The waveform monitor plots color component intensity. By default luminance
20066 only. Each column of the waveform corresponds to a column of pixels in the
20067 source video.
20068
20069 It accepts the following options:
20070
20071 @table @option
20072 @item mode, m
20073 Can be either @code{row}, or @code{column}. Default is @code{column}.
20074 In row mode, the graph on the left side represents color component value 0 and
20075 the right side represents value = 255. In column mode, the top side represents
20076 color component value = 0 and bottom side represents value = 255.
20077
20078 @item intensity, i
20079 Set intensity. Smaller values are useful to find out how many values of the same
20080 luminance are distributed across input rows/columns.
20081 Default value is @code{0.04}. Allowed range is [0, 1].
20082
20083 @item mirror, r
20084 Set mirroring mode. @code{0} means unmirrored, @code{1} means mirrored.
20085 In mirrored mode, higher values will be represented on the left
20086 side for @code{row} mode and at the top for @code{column} mode. Default is
20087 @code{1} (mirrored).
20088
20089 @item display, d
20090 Set display mode.
20091 It accepts the following values:
20092 @table @samp
20093 @item overlay
20094 Presents information identical to that in the @code{parade}, except
20095 that the graphs representing color components are superimposed directly
20096 over one another.
20097
20098 This display mode makes it easier to spot relative differences or similarities
20099 in overlapping areas of the color components that are supposed to be identical,
20100 such as neutral whites, grays, or blacks.
20101
20102 @item stack
20103 Display separate graph for the color components side by side in
20104 @code{row} mode or one below the other in @code{column} mode.
20105
20106 @item parade
20107 Display separate graph for the color components side by side in
20108 @code{column} mode or one below the other in @code{row} mode.
20109
20110 Using this display mode makes it easy to spot color casts in the highlights
20111 and shadows of an image, by comparing the contours of the top and the bottom
20112 graphs of each waveform. Since whites, grays, and blacks are characterized
20113 by exactly equal amounts of red, green, and blue, neutral areas of the picture
20114 should display three waveforms of roughly equal width/height. If not, the
20115 correction is easy to perform by making level adjustments the three waveforms.
20116 @end table
20117 Default is @code{stack}.
20118
20119 @item components, c
20120 Set which color components to display. Default is 1, which means only luminance
20121 or red color component if input is in RGB colorspace. If is set for example to
20122 7 it will display all 3 (if) available color components.
20123
20124 @item envelope, e
20125 @table @samp
20126 @item none
20127 No envelope, this is default.
20128
20129 @item instant
20130 Instant envelope, minimum and maximum values presented in graph will be easily
20131 visible even with small @code{step} value.
20132
20133 @item peak
20134 Hold minimum and maximum values presented in graph across time. This way you
20135 can still spot out of range values without constantly looking at waveforms.
20136
20137 @item peak+instant
20138 Peak and instant envelope combined together.
20139 @end table
20140
20141 @item filter, f
20142 @table @samp
20143 @item lowpass
20144 No filtering, this is default.
20145
20146 @item flat
20147 Luma and chroma combined together.
20148
20149 @item aflat
20150 Similar as above, but shows difference between blue and red chroma.
20151
20152 @item xflat
20153 Similar as above, but use different colors.
20154
20155 @item yflat
20156 Similar as above, but again with different colors.
20157
20158 @item chroma
20159 Displays only chroma.
20160
20161 @item color
20162 Displays actual color value on waveform.
20163
20164 @item acolor
20165 Similar as above, but with luma showing frequency of chroma values.
20166 @end table
20167
20168 @item graticule, g
20169 Set which graticule to display.
20170
20171 @table @samp
20172 @item none
20173 Do not display graticule.
20174
20175 @item green
20176 Display green graticule showing legal broadcast ranges.
20177
20178 @item orange
20179 Display orange graticule showing legal broadcast ranges.
20180
20181 @item invert
20182 Display invert graticule showing legal broadcast ranges.
20183 @end table
20184
20185 @item opacity, o
20186 Set graticule opacity.
20187
20188 @item flags, fl
20189 Set graticule flags.
20190
20191 @table @samp
20192 @item numbers
20193 Draw numbers above lines. By default enabled.
20194
20195 @item dots
20196 Draw dots instead of lines.
20197 @end table
20198
20199 @item scale, s
20200 Set scale used for displaying graticule.
20201
20202 @table @samp
20203 @item digital
20204 @item millivolts
20205 @item ire
20206 @end table
20207 Default is digital.
20208
20209 @item bgopacity, b
20210 Set background opacity.
20211
20212 @item tint0, t0
20213 @item tint1, t1
20214 Set tint for output.
20215 Only used with lowpass filter and when display is not overlay and input
20216 pixel formats are not RGB.
20217 @end table
20218
20219 @section weave, doubleweave
20220
20221 The @code{weave} takes a field-based video input and join
20222 each two sequential fields into single frame, producing a new double
20223 height clip with half the frame rate and half the frame count.
20224
20225 The @code{doubleweave} works same as @code{weave} but without
20226 halving frame rate and frame count.
20227
20228 It accepts the following option:
20229
20230 @table @option
20231 @item first_field
20232 Set first field. Available values are:
20233
20234 @table @samp
20235 @item top, t
20236 Set the frame as top-field-first.
20237
20238 @item bottom, b
20239 Set the frame as bottom-field-first.
20240 @end table
20241 @end table
20242
20243 @subsection Examples
20244
20245 @itemize
20246 @item
20247 Interlace video using @ref{select} and @ref{separatefields} filter:
20248 @example
20249 separatefields,select=eq(mod(n,4),0)+eq(mod(n,4),3),weave
20250 @end example
20251 @end itemize
20252
20253 @section xbr
20254 Apply the xBR high-quality magnification filter which is designed for pixel
20255 art. It follows a set of edge-detection rules, see
20256 @url{https://forums.libretro.com/t/xbr-algorithm-tutorial/123}.
20257
20258 It accepts the following option:
20259
20260 @table @option
20261 @item n
20262 Set the scaling dimension: @code{2} for @code{2xBR}, @code{3} for
20263 @code{3xBR} and @code{4} for @code{4xBR}.
20264 Default is @code{3}.
20265 @end table
20266
20267 @section xfade
20268
20269 Apply cross fade from one input video stream to another input video stream.
20270 The cross fade is applied for specified duration.
20271
20272 The filter accepts the following options:
20273
20274 @table @option
20275 @item transition
20276 Set one of available transition effects:
20277
20278 @table @samp
20279 @item custom
20280 @item fade
20281 @item wipeleft
20282 @item wiperight
20283 @item wipeup
20284 @item wipedown
20285 @item slideleft
20286 @item slideright
20287 @item slideup
20288 @item slidedown
20289 @item circlecrop
20290 @item rectcrop
20291 @item distance
20292 @item fadeblack
20293 @item fadewhite
20294 @item radial
20295 @item smoothleft
20296 @item smoothright
20297 @item smoothup
20298 @item smoothdown
20299 @item circleopen
20300 @item circleclose
20301 @item vertopen
20302 @item vertclose
20303 @item horzopen
20304 @item horzclose
20305 @item dissolve
20306 @item pixelize
20307 @item diagtl
20308 @item diagtr
20309 @item diagbl
20310 @item diagbr
20311 @item hlslice
20312 @item hrslice
20313 @item vuslice
20314 @item vdslice
20315 @end table
20316 Default transition effect is fade.
20317
20318 @item duration
20319 Set cross fade duration in seconds.
20320 Default duration is 1 second.
20321
20322 @item offset
20323 Set cross fade start relative to first input stream in seconds.
20324 Default offset is 0.
20325
20326 @item expr
20327 Set expression for custom transition effect.
20328
20329 The expressions can use the following variables and functions:
20330
20331 @table @option
20332 @item X
20333 @item Y
20334 The coordinates of the current sample.
20335
20336 @item W
20337 @item H
20338 The width and height of the image.
20339
20340 @item P
20341 Progress of transition effect.
20342
20343 @item PLANE
20344 Currently processed plane.
20345
20346 @item A
20347 Return value of first input at current location and plane.
20348
20349 @item B
20350 Return value of second input at current location and plane.
20351
20352 @item a0(x, y)
20353 @item a1(x, y)
20354 @item a2(x, y)
20355 @item a3(x, y)
20356 Return the value of the pixel at location (@var{x},@var{y}) of the
20357 first/second/third/fourth component of first input.
20358
20359 @item b0(x, y)
20360 @item b1(x, y)
20361 @item b2(x, y)
20362 @item b3(x, y)
20363 Return the value of the pixel at location (@var{x},@var{y}) of the
20364 first/second/third/fourth component of second input.
20365 @end table
20366 @end table
20367
20368 @subsection Examples
20369
20370 @itemize
20371 @item
20372 Cross fade from one input video to another input video, with fade transition and duration of transition
20373 of 2 seconds starting at offset of 5 seconds:
20374 @example
20375 ffmpeg -i first.mp4 -i second.mp4 -filter_complex xfade=transition=fade:duration=2:offset=5 output.mp4
20376 @end example
20377 @end itemize
20378
20379 @section xmedian
20380 Pick median pixels from several input videos.
20381
20382 The filter accepts the following options:
20383
20384 @table @option
20385 @item inputs
20386 Set number of inputs.
20387 Default is 3. Allowed range is from 3 to 255.
20388 If number of inputs is even number, than result will be mean value between two median values.
20389
20390 @item planes
20391 Set which planes to filter. Default value is @code{15}, by which all planes are processed.
20392
20393 @item percentile
20394 Set median percentile. Default value is @code{0.5}.
20395 Default value of @code{0.5} will pick always median values, while @code{0} will pick
20396 minimum values, and @code{1} maximum values.
20397 @end table
20398
20399 @section xstack
20400 Stack video inputs into custom layout.
20401
20402 All streams must be of same pixel format.
20403
20404 The filter accepts the following options:
20405
20406 @table @option
20407 @item inputs
20408 Set number of input streams. Default is 2.
20409
20410 @item layout
20411 Specify layout of inputs.
20412 This option requires the desired layout configuration to be explicitly set by the user.
20413 This sets position of each video input in output. Each input
20414 is separated by '|'.
20415 The first number represents the column, and the second number represents the row.
20416 Numbers start at 0 and are separated by '_'. Optionally one can use wX and hX,
20417 where X is video input from which to take width or height.
20418 Multiple values can be used when separated by '+'. In such
20419 case values are summed together.
20420
20421 Note that if inputs are of different sizes gaps may appear, as not all of
20422 the output video frame will be filled. Similarly, videos can overlap each
20423 other if their position doesn't leave enough space for the full frame of
20424 adjoining videos.
20425
20426 For 2 inputs, a default layout of @code{0_0|w0_0} is set. In all other cases,
20427 a layout must be set by the user.
20428
20429 @item shortest
20430 If set to 1, force the output to terminate when the shortest input
20431 terminates. Default value is 0.
20432
20433 @item fill
20434 If set to valid color, all unused pixels will be filled with that color.
20435 By default fill is set to none, so it is disabled.
20436 @end table
20437
20438 @subsection Examples
20439
20440 @itemize
20441 @item
20442 Display 4 inputs into 2x2 grid.
20443
20444 Layout:
20445 @example
20446 input1(0, 0)  | input3(w0, 0)
20447 input2(0, h0) | input4(w0, h0)
20448 @end example
20449
20450 @example
20451 xstack=inputs=4:layout=0_0|0_h0|w0_0|w0_h0
20452 @end example
20453
20454 Note that if inputs are of different sizes, gaps or overlaps may occur.
20455
20456 @item
20457 Display 4 inputs into 1x4 grid.
20458
20459 Layout:
20460 @example
20461 input1(0, 0)
20462 input2(0, h0)
20463 input3(0, h0+h1)
20464 input4(0, h0+h1+h2)
20465 @end example
20466
20467 @example
20468 xstack=inputs=4:layout=0_0|0_h0|0_h0+h1|0_h0+h1+h2
20469 @end example
20470
20471 Note that if inputs are of different widths, unused space will appear.
20472
20473 @item
20474 Display 9 inputs into 3x3 grid.
20475
20476 Layout:
20477 @example
20478 input1(0, 0)       | input4(w0, 0)      | input7(w0+w3, 0)
20479 input2(0, h0)      | input5(w0, h0)     | input8(w0+w3, h0)
20480 input3(0, h0+h1)   | input6(w0, h0+h1)  | input9(w0+w3, h0+h1)
20481 @end example
20482
20483 @example
20484 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
20485 @end example
20486
20487 Note that if inputs are of different sizes, gaps or overlaps may occur.
20488
20489 @item
20490 Display 16 inputs into 4x4 grid.
20491
20492 Layout:
20493 @example
20494 input1(0, 0)       | input5(w0, 0)       | input9 (w0+w4, 0)       | input13(w0+w4+w8, 0)
20495 input2(0, h0)      | input6(w0, h0)      | input10(w0+w4, h0)      | input14(w0+w4+w8, h0)
20496 input3(0, h0+h1)   | input7(w0, h0+h1)   | input11(w0+w4, h0+h1)   | input15(w0+w4+w8, h0+h1)
20497 input4(0, h0+h1+h2)| input8(w0, h0+h1+h2)| input12(w0+w4, h0+h1+h2)| input16(w0+w4+w8, h0+h1+h2)
20498 @end example
20499
20500 @example
20501 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|
20502 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
20503 @end example
20504
20505 Note that if inputs are of different sizes, gaps or overlaps may occur.
20506
20507 @end itemize
20508
20509 @anchor{yadif}
20510 @section yadif
20511
20512 Deinterlace the input video ("yadif" means "yet another deinterlacing
20513 filter").
20514
20515 It accepts the following parameters:
20516
20517
20518 @table @option
20519
20520 @item mode
20521 The interlacing mode to adopt. It accepts one of the following values:
20522
20523 @table @option
20524 @item 0, send_frame
20525 Output one frame for each frame.
20526 @item 1, send_field
20527 Output one frame for each field.
20528 @item 2, send_frame_nospatial
20529 Like @code{send_frame}, but it skips the spatial interlacing check.
20530 @item 3, send_field_nospatial
20531 Like @code{send_field}, but it skips the spatial interlacing check.
20532 @end table
20533
20534 The default value is @code{send_frame}.
20535
20536 @item parity
20537 The picture field parity assumed for the input interlaced video. It accepts one
20538 of the following values:
20539
20540 @table @option
20541 @item 0, tff
20542 Assume the top field is first.
20543 @item 1, bff
20544 Assume the bottom field is first.
20545 @item -1, auto
20546 Enable automatic detection of field parity.
20547 @end table
20548
20549 The default value is @code{auto}.
20550 If the interlacing is unknown or the decoder does not export this information,
20551 top field first will be assumed.
20552
20553 @item deint
20554 Specify which frames to deinterlace. Accepts one of the following
20555 values:
20556
20557 @table @option
20558 @item 0, all
20559 Deinterlace all frames.
20560 @item 1, interlaced
20561 Only deinterlace frames marked as interlaced.
20562 @end table
20563
20564 The default value is @code{all}.
20565 @end table
20566
20567 @section yadif_cuda
20568
20569 Deinterlace the input video using the @ref{yadif} algorithm, but implemented
20570 in CUDA so that it can work as part of a GPU accelerated pipeline with nvdec
20571 and/or nvenc.
20572
20573 It accepts the following parameters:
20574
20575
20576 @table @option
20577
20578 @item mode
20579 The interlacing mode to adopt. It accepts one of the following values:
20580
20581 @table @option
20582 @item 0, send_frame
20583 Output one frame for each frame.
20584 @item 1, send_field
20585 Output one frame for each field.
20586 @item 2, send_frame_nospatial
20587 Like @code{send_frame}, but it skips the spatial interlacing check.
20588 @item 3, send_field_nospatial
20589 Like @code{send_field}, but it skips the spatial interlacing check.
20590 @end table
20591
20592 The default value is @code{send_frame}.
20593
20594 @item parity
20595 The picture field parity assumed for the input interlaced video. It accepts one
20596 of the following values:
20597
20598 @table @option
20599 @item 0, tff
20600 Assume the top field is first.
20601 @item 1, bff
20602 Assume the bottom field is first.
20603 @item -1, auto
20604 Enable automatic detection of field parity.
20605 @end table
20606
20607 The default value is @code{auto}.
20608 If the interlacing is unknown or the decoder does not export this information,
20609 top field first will be assumed.
20610
20611 @item deint
20612 Specify which frames to deinterlace. Accepts one of the following
20613 values:
20614
20615 @table @option
20616 @item 0, all
20617 Deinterlace all frames.
20618 @item 1, interlaced
20619 Only deinterlace frames marked as interlaced.
20620 @end table
20621
20622 The default value is @code{all}.
20623 @end table
20624
20625 @section yaepblur
20626
20627 Apply blur filter while preserving edges ("yaepblur" means "yet another edge preserving blur filter").
20628 The algorithm is described in
20629 "J. S. Lee, Digital image enhancement and noise filtering by use of local statistics, IEEE Trans. Pattern Anal. Mach. Intell. PAMI-2, 1980."
20630
20631 It accepts the following parameters:
20632
20633 @table @option
20634 @item radius, r
20635 Set the window radius. Default value is 3.
20636
20637 @item planes, p
20638 Set which planes to filter. Default is only the first plane.
20639
20640 @item sigma, s
20641 Set blur strength. Default value is 128.
20642 @end table
20643
20644 @subsection Commands
20645 This filter supports same @ref{commands} as options.
20646
20647 @section zoompan
20648
20649 Apply Zoom & Pan effect.
20650
20651 This filter accepts the following options:
20652
20653 @table @option
20654 @item zoom, z
20655 Set the zoom expression. Range is 1-10. Default is 1.
20656
20657 @item x
20658 @item y
20659 Set the x and y expression. Default is 0.
20660
20661 @item d
20662 Set the duration expression in number of frames.
20663 This sets for how many number of frames effect will last for
20664 single input image.
20665
20666 @item s
20667 Set the output image size, default is 'hd720'.
20668
20669 @item fps
20670 Set the output frame rate, default is '25'.
20671 @end table
20672
20673 Each expression can contain the following constants:
20674
20675 @table @option
20676 @item in_w, iw
20677 Input width.
20678
20679 @item in_h, ih
20680 Input height.
20681
20682 @item out_w, ow
20683 Output width.
20684
20685 @item out_h, oh
20686 Output height.
20687
20688 @item in
20689 Input frame count.
20690
20691 @item on
20692 Output frame count.
20693
20694 @item x
20695 @item y
20696 Last calculated 'x' and 'y' position from 'x' and 'y' expression
20697 for current input frame.
20698
20699 @item px
20700 @item py
20701 'x' and 'y' of last output frame of previous input frame or 0 when there was
20702 not yet such frame (first input frame).
20703
20704 @item zoom
20705 Last calculated zoom from 'z' expression for current input frame.
20706
20707 @item pzoom
20708 Last calculated zoom of last output frame of previous input frame.
20709
20710 @item duration
20711 Number of output frames for current input frame. Calculated from 'd' expression
20712 for each input frame.
20713
20714 @item pduration
20715 number of output frames created for previous input frame
20716
20717 @item a
20718 Rational number: input width / input height
20719
20720 @item sar
20721 sample aspect ratio
20722
20723 @item dar
20724 display aspect ratio
20725
20726 @end table
20727
20728 @subsection Examples
20729
20730 @itemize
20731 @item
20732 Zoom-in up to 1.5 and pan at same time to some spot near center of picture:
20733 @example
20734 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
20735 @end example
20736
20737 @item
20738 Zoom-in up to 1.5 and pan always at center of picture:
20739 @example
20740 zoompan=z='min(zoom+0.0015,1.5)':d=700:x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)'
20741 @end example
20742
20743 @item
20744 Same as above but without pausing:
20745 @example
20746 zoompan=z='min(max(zoom,pzoom)+0.0015,1.5)':d=1:x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)'
20747 @end example
20748 @end itemize
20749
20750 @anchor{zscale}
20751 @section zscale
20752 Scale (resize) the input video, using the z.lib library:
20753 @url{https://github.com/sekrit-twc/zimg}. To enable compilation of this
20754 filter, you need to configure FFmpeg with @code{--enable-libzimg}.
20755
20756 The zscale filter forces the output display aspect ratio to be the same
20757 as the input, by changing the output sample aspect ratio.
20758
20759 If the input image format is different from the format requested by
20760 the next filter, the zscale filter will convert the input to the
20761 requested format.
20762
20763 @subsection Options
20764 The filter accepts the following options.
20765
20766 @table @option
20767 @item width, w
20768 @item height, h
20769 Set the output video dimension expression. Default value is the input
20770 dimension.
20771
20772 If the @var{width} or @var{w} value is 0, the input width is used for
20773 the output. If the @var{height} or @var{h} value is 0, the input height
20774 is used for the output.
20775
20776 If one and only one of the values is -n with n >= 1, the zscale filter
20777 will use a value that maintains the aspect ratio of the input image,
20778 calculated from the other specified dimension. After that it will,
20779 however, make sure that the calculated dimension is divisible by n and
20780 adjust the value if necessary.
20781
20782 If both values are -n with n >= 1, the behavior will be identical to
20783 both values being set to 0 as previously detailed.
20784
20785 See below for the list of accepted constants for use in the dimension
20786 expression.
20787
20788 @item size, s
20789 Set the video size. For the syntax of this option, check the
20790 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
20791
20792 @item dither, d
20793 Set the dither type.
20794
20795 Possible values are:
20796 @table @var
20797 @item none
20798 @item ordered
20799 @item random
20800 @item error_diffusion
20801 @end table
20802
20803 Default is none.
20804
20805 @item filter, f
20806 Set the resize filter type.
20807
20808 Possible values are:
20809 @table @var
20810 @item point
20811 @item bilinear
20812 @item bicubic
20813 @item spline16
20814 @item spline36
20815 @item lanczos
20816 @end table
20817
20818 Default is bilinear.
20819
20820 @item range, r
20821 Set the color range.
20822
20823 Possible values are:
20824 @table @var
20825 @item input
20826 @item limited
20827 @item full
20828 @end table
20829
20830 Default is same as input.
20831
20832 @item primaries, p
20833 Set the color primaries.
20834
20835 Possible values are:
20836 @table @var
20837 @item input
20838 @item 709
20839 @item unspecified
20840 @item 170m
20841 @item 240m
20842 @item 2020
20843 @end table
20844
20845 Default is same as input.
20846
20847 @item transfer, t
20848 Set the transfer characteristics.
20849
20850 Possible values are:
20851 @table @var
20852 @item input
20853 @item 709
20854 @item unspecified
20855 @item 601
20856 @item linear
20857 @item 2020_10
20858 @item 2020_12
20859 @item smpte2084
20860 @item iec61966-2-1
20861 @item arib-std-b67
20862 @end table
20863
20864 Default is same as input.
20865
20866 @item matrix, m
20867 Set the colorspace matrix.
20868
20869 Possible value are:
20870 @table @var
20871 @item input
20872 @item 709
20873 @item unspecified
20874 @item 470bg
20875 @item 170m
20876 @item 2020_ncl
20877 @item 2020_cl
20878 @end table
20879
20880 Default is same as input.
20881
20882 @item rangein, rin
20883 Set the input color range.
20884
20885 Possible values are:
20886 @table @var
20887 @item input
20888 @item limited
20889 @item full
20890 @end table
20891
20892 Default is same as input.
20893
20894 @item primariesin, pin
20895 Set the input color primaries.
20896
20897 Possible values are:
20898 @table @var
20899 @item input
20900 @item 709
20901 @item unspecified
20902 @item 170m
20903 @item 240m
20904 @item 2020
20905 @end table
20906
20907 Default is same as input.
20908
20909 @item transferin, tin
20910 Set the input transfer characteristics.
20911
20912 Possible values are:
20913 @table @var
20914 @item input
20915 @item 709
20916 @item unspecified
20917 @item 601
20918 @item linear
20919 @item 2020_10
20920 @item 2020_12
20921 @end table
20922
20923 Default is same as input.
20924
20925 @item matrixin, min
20926 Set the input colorspace matrix.
20927
20928 Possible value are:
20929 @table @var
20930 @item input
20931 @item 709
20932 @item unspecified
20933 @item 470bg
20934 @item 170m
20935 @item 2020_ncl
20936 @item 2020_cl
20937 @end table
20938
20939 @item chromal, c
20940 Set the output chroma location.
20941
20942 Possible values are:
20943 @table @var
20944 @item input
20945 @item left
20946 @item center
20947 @item topleft
20948 @item top
20949 @item bottomleft
20950 @item bottom
20951 @end table
20952
20953 @item chromalin, cin
20954 Set the input chroma location.
20955
20956 Possible values are:
20957 @table @var
20958 @item input
20959 @item left
20960 @item center
20961 @item topleft
20962 @item top
20963 @item bottomleft
20964 @item bottom
20965 @end table
20966
20967 @item npl
20968 Set the nominal peak luminance.
20969 @end table
20970
20971 The values of the @option{w} and @option{h} options are expressions
20972 containing the following constants:
20973
20974 @table @var
20975 @item in_w
20976 @item in_h
20977 The input width and height
20978
20979 @item iw
20980 @item ih
20981 These are the same as @var{in_w} and @var{in_h}.
20982
20983 @item out_w
20984 @item out_h
20985 The output (scaled) width and height
20986
20987 @item ow
20988 @item oh
20989 These are the same as @var{out_w} and @var{out_h}
20990
20991 @item a
20992 The same as @var{iw} / @var{ih}
20993
20994 @item sar
20995 input sample aspect ratio
20996
20997 @item dar
20998 The input display aspect ratio. Calculated from @code{(iw / ih) * sar}.
20999
21000 @item hsub
21001 @item vsub
21002 horizontal and vertical input chroma subsample values. For example for the
21003 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
21004
21005 @item ohsub
21006 @item ovsub
21007 horizontal and vertical output chroma subsample values. For example for the
21008 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
21009 @end table
21010
21011 @subsection Commands
21012
21013 This filter supports the following commands:
21014 @table @option
21015 @item width, w
21016 @item height, h
21017 Set the output video dimension expression.
21018 The command accepts the same syntax of the corresponding option.
21019
21020 If the specified expression is not valid, it is kept at its current
21021 value.
21022 @end table
21023
21024 @c man end VIDEO FILTERS
21025
21026 @chapter OpenCL Video Filters
21027 @c man begin OPENCL VIDEO FILTERS
21028
21029 Below is a description of the currently available OpenCL video filters.
21030
21031 To enable compilation of these filters you need to configure FFmpeg with
21032 @code{--enable-opencl}.
21033
21034 Running OpenCL filters requires you to initialize a hardware device and to pass that device to all filters in any filter graph.
21035 @table @option
21036
21037 @item -init_hw_device opencl[=@var{name}][:@var{device}[,@var{key=value}...]]
21038 Initialise a new hardware device of type @var{opencl} called @var{name}, using the
21039 given device parameters.
21040
21041 @item -filter_hw_device @var{name}
21042 Pass the hardware device called @var{name} to all filters in any filter graph.
21043
21044 @end table
21045
21046 For more detailed information see @url{https://www.ffmpeg.org/ffmpeg.html#Advanced-Video-options}
21047
21048 @itemize
21049 @item
21050 Example of choosing the first device on the second platform and running avgblur_opencl filter with default parameters on it.
21051 @example
21052 -init_hw_device opencl=gpu:1.0 -filter_hw_device gpu -i INPUT -vf "hwupload, avgblur_opencl, hwdownload" OUTPUT
21053 @end example
21054 @end itemize
21055
21056 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.
21057
21058 @section avgblur_opencl
21059
21060 Apply average blur filter.
21061
21062 The filter accepts the following options:
21063
21064 @table @option
21065 @item sizeX
21066 Set horizontal radius size.
21067 Range is @code{[1, 1024]} and default value is @code{1}.
21068
21069 @item planes
21070 Set which planes to filter. Default value is @code{0xf}, by which all planes are processed.
21071
21072 @item sizeY
21073 Set vertical radius size. Range is @code{[1, 1024]} and default value is @code{0}. If zero, @code{sizeX} value will be used.
21074 @end table
21075
21076 @subsection Example
21077
21078 @itemize
21079 @item
21080 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.
21081 @example
21082 -i INPUT -vf "hwupload, avgblur_opencl=3, hwdownload" OUTPUT
21083 @end example
21084 @end itemize
21085
21086 @section boxblur_opencl
21087
21088 Apply a boxblur algorithm to the input video.
21089
21090 It accepts the following parameters:
21091
21092 @table @option
21093
21094 @item luma_radius, lr
21095 @item luma_power, lp
21096 @item chroma_radius, cr
21097 @item chroma_power, cp
21098 @item alpha_radius, ar
21099 @item alpha_power, ap
21100
21101 @end table
21102
21103 A description of the accepted options follows.
21104
21105 @table @option
21106 @item luma_radius, lr
21107 @item chroma_radius, cr
21108 @item alpha_radius, ar
21109 Set an expression for the box radius in pixels used for blurring the
21110 corresponding input plane.
21111
21112 The radius value must be a non-negative number, and must not be
21113 greater than the value of the expression @code{min(w,h)/2} for the
21114 luma and alpha planes, and of @code{min(cw,ch)/2} for the chroma
21115 planes.
21116
21117 Default value for @option{luma_radius} is "2". If not specified,
21118 @option{chroma_radius} and @option{alpha_radius} default to the
21119 corresponding value set for @option{luma_radius}.
21120
21121 The expressions can contain the following constants:
21122 @table @option
21123 @item w
21124 @item h
21125 The input width and height in pixels.
21126
21127 @item cw
21128 @item ch
21129 The input chroma image width and height in pixels.
21130
21131 @item hsub
21132 @item vsub
21133 The horizontal and vertical chroma subsample values. For example, for the
21134 pixel format "yuv422p", @var{hsub} is 2 and @var{vsub} is 1.
21135 @end table
21136
21137 @item luma_power, lp
21138 @item chroma_power, cp
21139 @item alpha_power, ap
21140 Specify how many times the boxblur filter is applied to the
21141 corresponding plane.
21142
21143 Default value for @option{luma_power} is 2. If not specified,
21144 @option{chroma_power} and @option{alpha_power} default to the
21145 corresponding value set for @option{luma_power}.
21146
21147 A value of 0 will disable the effect.
21148 @end table
21149
21150 @subsection Examples
21151
21152 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.
21153
21154 @itemize
21155 @item
21156 Apply a boxblur filter with the luma, chroma, and alpha radius
21157 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.
21158 @example
21159 -i INPUT -vf "hwupload, boxblur_opencl=luma_radius=2:luma_power=3, hwdownload" OUTPUT
21160 -i INPUT -vf "hwupload, boxblur_opencl=2:3, hwdownload" OUTPUT
21161 @end example
21162
21163 @item
21164 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.
21165
21166 For the luma plane, a 2x2 box radius will be run once.
21167
21168 For the chroma plane, a 4x4 box radius will be run 5 times.
21169
21170 For the alpha plane, a 3x3 box radius will be run 7 times.
21171 @example
21172 -i INPUT -vf "hwupload, boxblur_opencl=2:1:4:5:3:7, hwdownload" OUTPUT
21173 @end example
21174 @end itemize
21175
21176 @section colorkey_opencl
21177 RGB colorspace color keying.
21178
21179 The filter accepts the following options:
21180
21181 @table @option
21182 @item color
21183 The color which will be replaced with transparency.
21184
21185 @item similarity
21186 Similarity percentage with the key color.
21187
21188 0.01 matches only the exact key color, while 1.0 matches everything.
21189
21190 @item blend
21191 Blend percentage.
21192
21193 0.0 makes pixels either fully transparent, or not transparent at all.
21194
21195 Higher values result in semi-transparent pixels, with a higher transparency
21196 the more similar the pixels color is to the key color.
21197 @end table
21198
21199 @subsection Examples
21200
21201 @itemize
21202 @item
21203 Make every semi-green pixel in the input transparent with some slight blending:
21204 @example
21205 -i INPUT -vf "hwupload, colorkey_opencl=green:0.3:0.1, hwdownload" OUTPUT
21206 @end example
21207 @end itemize
21208
21209 @section convolution_opencl
21210
21211 Apply convolution of 3x3, 5x5, 7x7 matrix.
21212
21213 The filter accepts the following options:
21214
21215 @table @option
21216 @item 0m
21217 @item 1m
21218 @item 2m
21219 @item 3m
21220 Set matrix for each plane.
21221 Matrix is sequence of 9, 25 or 49 signed numbers.
21222 Default value for each plane is @code{0 0 0 0 1 0 0 0 0}.
21223
21224 @item 0rdiv
21225 @item 1rdiv
21226 @item 2rdiv
21227 @item 3rdiv
21228 Set multiplier for calculated value for each plane.
21229 If unset or 0, it will be sum of all matrix elements.
21230 The option value must be a float number greater or equal to @code{0.0}. Default value is @code{1.0}.
21231
21232 @item 0bias
21233 @item 1bias
21234 @item 2bias
21235 @item 3bias
21236 Set bias for each plane. This value is added to the result of the multiplication.
21237 Useful for making the overall image brighter or darker.
21238 The option value must be a float number greater or equal to @code{0.0}. Default value is @code{0.0}.
21239
21240 @end table
21241
21242 @subsection Examples
21243
21244 @itemize
21245 @item
21246 Apply sharpen:
21247 @example
21248 -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
21249 @end example
21250
21251 @item
21252 Apply blur:
21253 @example
21254 -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
21255 @end example
21256
21257 @item
21258 Apply edge enhance:
21259 @example
21260 -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
21261 @end example
21262
21263 @item
21264 Apply edge detect:
21265 @example
21266 -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
21267 @end example
21268
21269 @item
21270 Apply laplacian edge detector which includes diagonals:
21271 @example
21272 -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
21273 @end example
21274
21275 @item
21276 Apply emboss:
21277 @example
21278 -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
21279 @end example
21280 @end itemize
21281
21282 @section erosion_opencl
21283
21284 Apply erosion effect to the video.
21285
21286 This filter replaces the pixel by the local(3x3) minimum.
21287
21288 It accepts the following options:
21289
21290 @table @option
21291 @item threshold0
21292 @item threshold1
21293 @item threshold2
21294 @item threshold3
21295 Limit the maximum change for each plane. Range is @code{[0, 65535]} and default value is @code{65535}.
21296 If @code{0}, plane will remain unchanged.
21297
21298 @item coordinates
21299 Flag which specifies the pixel to refer to.
21300 Range is @code{[0, 255]} and default value is @code{255}, i.e. all eight pixels are used.
21301
21302 Flags to local 3x3 coordinates region centered on @code{x}:
21303
21304     1 2 3
21305
21306     4 x 5
21307
21308     6 7 8
21309 @end table
21310
21311 @subsection Example
21312
21313 @itemize
21314 @item
21315 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.
21316 @example
21317 -i INPUT -vf "hwupload, erosion_opencl=30:40:50:coordinates=231, hwdownload" OUTPUT
21318 @end example
21319 @end itemize
21320
21321 @section deshake_opencl
21322 Feature-point based video stabilization filter.
21323
21324 The filter accepts the following options:
21325
21326 @table @option
21327 @item tripod
21328 Simulates a tripod by preventing any camera movement whatsoever from the original frame. Defaults to @code{0}.
21329
21330 @item debug
21331 Whether or not additional debug info should be displayed, both in the processed output and in the console.
21332
21333 Note that in order to see console debug output you will also need to pass @code{-v verbose} to ffmpeg.
21334
21335 Viewing point matches in the output video is only supported for RGB input.
21336
21337 Defaults to @code{0}.
21338
21339 @item adaptive_crop
21340 Whether or not to do a tiny bit of cropping at the borders to cut down on the amount of mirrored pixels.
21341
21342 Defaults to @code{1}.
21343
21344 @item refine_features
21345 Whether or not feature points should be refined at a sub-pixel level.
21346
21347 This can be turned off for a slight performance gain at the cost of precision.
21348
21349 Defaults to @code{1}.
21350
21351 @item smooth_strength
21352 The strength of the smoothing applied to the camera path from @code{0.0} to @code{1.0}.
21353
21354 @code{1.0} is the maximum smoothing strength while values less than that result in less smoothing.
21355
21356 @code{0.0} causes the filter to adaptively choose a smoothing strength on a per-frame basis.
21357
21358 Defaults to @code{0.0}.
21359
21360 @item smooth_window_multiplier
21361 Controls the size of the smoothing window (the number of frames buffered to determine motion information from).
21362
21363 The size of the smoothing window is determined by multiplying the framerate of the video by this number.
21364
21365 Acceptable values range from @code{0.1} to @code{10.0}.
21366
21367 Larger values increase the amount of motion data available for determining how to smooth the camera path,
21368 potentially improving smoothness, but also increase latency and memory usage.
21369
21370 Defaults to @code{2.0}.
21371
21372 @end table
21373
21374 @subsection Examples
21375
21376 @itemize
21377 @item
21378 Stabilize a video with a fixed, medium smoothing strength:
21379 @example
21380 -i INPUT -vf "hwupload, deshake_opencl=smooth_strength=0.5, hwdownload" OUTPUT
21381 @end example
21382
21383 @item
21384 Stabilize a video with debugging (both in console and in rendered video):
21385 @example
21386 -i INPUT -filter_complex "[0:v]format=rgba, hwupload, deshake_opencl=debug=1, hwdownload, format=rgba, format=yuv420p" -v verbose OUTPUT
21387 @end example
21388 @end itemize
21389
21390 @section dilation_opencl
21391
21392 Apply dilation effect to the video.
21393
21394 This filter replaces the pixel by the local(3x3) maximum.
21395
21396 It accepts the following options:
21397
21398 @table @option
21399 @item threshold0
21400 @item threshold1
21401 @item threshold2
21402 @item threshold3
21403 Limit the maximum change for each plane. Range is @code{[0, 65535]} and default value is @code{65535}.
21404 If @code{0}, plane will remain unchanged.
21405
21406 @item coordinates
21407 Flag which specifies the pixel to refer to.
21408 Range is @code{[0, 255]} and default value is @code{255}, i.e. all eight pixels are used.
21409
21410 Flags to local 3x3 coordinates region centered on @code{x}:
21411
21412     1 2 3
21413
21414     4 x 5
21415
21416     6 7 8
21417 @end table
21418
21419 @subsection Example
21420
21421 @itemize
21422 @item
21423 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.
21424 @example
21425 -i INPUT -vf "hwupload, dilation_opencl=30:40:50:coordinates=231, hwdownload" OUTPUT
21426 @end example
21427 @end itemize
21428
21429 @section nlmeans_opencl
21430
21431 Non-local Means denoise filter through OpenCL, this filter accepts same options as @ref{nlmeans}.
21432
21433 @section overlay_opencl
21434
21435 Overlay one video on top of another.
21436
21437 It takes two inputs and has one output. The first input is the "main" video on which the second input is overlaid.
21438 This filter requires same memory layout for all the inputs. So, format conversion may be needed.
21439
21440 The filter accepts the following options:
21441
21442 @table @option
21443
21444 @item x
21445 Set the x coordinate of the overlaid video on the main video.
21446 Default value is @code{0}.
21447
21448 @item y
21449 Set the y coordinate of the overlaid video on the main video.
21450 Default value is @code{0}.
21451
21452 @end table
21453
21454 @subsection Examples
21455
21456 @itemize
21457 @item
21458 Overlay an image LOGO at the top-left corner of the INPUT video. Both inputs are yuv420p format.
21459 @example
21460 -i INPUT -i LOGO -filter_complex "[0:v]hwupload[a], [1:v]format=yuv420p, hwupload[b], [a][b]overlay_opencl, hwdownload" OUTPUT
21461 @end example
21462 @item
21463 The inputs have same memory layout for color channels , the overlay has additional alpha plane, like INPUT is yuv420p, and the LOGO is yuva420p.
21464 @example
21465 -i INPUT -i LOGO -filter_complex "[0:v]hwupload[a], [1:v]format=yuva420p, hwupload[b], [a][b]overlay_opencl, hwdownload" OUTPUT
21466 @end example
21467
21468 @end itemize
21469
21470 @section pad_opencl
21471
21472 Add paddings to the input image, and place the original input at the
21473 provided @var{x}, @var{y} coordinates.
21474
21475 It accepts the following options:
21476
21477 @table @option
21478 @item width, w
21479 @item height, h
21480 Specify an expression for the size of the output image with the
21481 paddings added. If the value for @var{width} or @var{height} is 0, the
21482 corresponding input size is used for the output.
21483
21484 The @var{width} expression can reference the value set by the
21485 @var{height} expression, and vice versa.
21486
21487 The default value of @var{width} and @var{height} is 0.
21488
21489 @item x
21490 @item y
21491 Specify the offsets to place the input image at within the padded area,
21492 with respect to the top/left border of the output image.
21493
21494 The @var{x} expression can reference the value set by the @var{y}
21495 expression, and vice versa.
21496
21497 The default value of @var{x} and @var{y} is 0.
21498
21499 If @var{x} or @var{y} evaluate to a negative number, they'll be changed
21500 so the input image is centered on the padded area.
21501
21502 @item color
21503 Specify the color of the padded area. For the syntax of this option,
21504 check the @ref{color syntax,,"Color" section in the ffmpeg-utils
21505 manual,ffmpeg-utils}.
21506
21507 @item aspect
21508 Pad to an aspect instead to a resolution.
21509 @end table
21510
21511 The value for the @var{width}, @var{height}, @var{x}, and @var{y}
21512 options are expressions containing the following constants:
21513
21514 @table @option
21515 @item in_w
21516 @item in_h
21517 The input video width and height.
21518
21519 @item iw
21520 @item ih
21521 These are the same as @var{in_w} and @var{in_h}.
21522
21523 @item out_w
21524 @item out_h
21525 The output width and height (the size of the padded area), as
21526 specified by the @var{width} and @var{height} expressions.
21527
21528 @item ow
21529 @item oh
21530 These are the same as @var{out_w} and @var{out_h}.
21531
21532 @item x
21533 @item y
21534 The x and y offsets as specified by the @var{x} and @var{y}
21535 expressions, or NAN if not yet specified.
21536
21537 @item a
21538 same as @var{iw} / @var{ih}
21539
21540 @item sar
21541 input sample aspect ratio
21542
21543 @item dar
21544 input display aspect ratio, it is the same as (@var{iw} / @var{ih}) * @var{sar}
21545 @end table
21546
21547 @section prewitt_opencl
21548
21549 Apply the Prewitt operator (@url{https://en.wikipedia.org/wiki/Prewitt_operator}) to input video stream.
21550
21551 The filter accepts the following option:
21552
21553 @table @option
21554 @item planes
21555 Set which planes to filter. Default value is @code{0xf}, by which all planes are processed.
21556
21557 @item scale
21558 Set value which will be multiplied with filtered result.
21559 Range is @code{[0.0, 65535]} and default value is @code{1.0}.
21560
21561 @item delta
21562 Set value which will be added to filtered result.
21563 Range is @code{[-65535, 65535]} and default value is @code{0.0}.
21564 @end table
21565
21566 @subsection Example
21567
21568 @itemize
21569 @item
21570 Apply the Prewitt operator with scale set to 2 and delta set to 10.
21571 @example
21572 -i INPUT -vf "hwupload, prewitt_opencl=scale=2:delta=10, hwdownload" OUTPUT
21573 @end example
21574 @end itemize
21575
21576 @anchor{program_opencl}
21577 @section program_opencl
21578
21579 Filter video using an OpenCL program.
21580
21581 @table @option
21582
21583 @item source
21584 OpenCL program source file.
21585
21586 @item kernel
21587 Kernel name in program.
21588
21589 @item inputs
21590 Number of inputs to the filter.  Defaults to 1.
21591
21592 @item size, s
21593 Size of output frames.  Defaults to the same as the first input.
21594
21595 @end table
21596
21597 The @code{program_opencl} filter also supports the @ref{framesync} options.
21598
21599 The program source file must contain a kernel function with the given name,
21600 which will be run once for each plane of the output.  Each run on a plane
21601 gets enqueued as a separate 2D global NDRange with one work-item for each
21602 pixel to be generated.  The global ID offset for each work-item is therefore
21603 the coordinates of a pixel in the destination image.
21604
21605 The kernel function needs to take the following arguments:
21606 @itemize
21607 @item
21608 Destination image, @var{__write_only image2d_t}.
21609
21610 This image will become the output; the kernel should write all of it.
21611 @item
21612 Frame index, @var{unsigned int}.
21613
21614 This is a counter starting from zero and increasing by one for each frame.
21615 @item
21616 Source images, @var{__read_only image2d_t}.
21617
21618 These are the most recent images on each input.  The kernel may read from
21619 them to generate the output, but they can't be written to.
21620 @end itemize
21621
21622 Example programs:
21623
21624 @itemize
21625 @item
21626 Copy the input to the output (output must be the same size as the input).
21627 @verbatim
21628 __kernel void copy(__write_only image2d_t destination,
21629                    unsigned int index,
21630                    __read_only  image2d_t source)
21631 {
21632     const sampler_t sampler = CLK_NORMALIZED_COORDS_FALSE;
21633
21634     int2 location = (int2)(get_global_id(0), get_global_id(1));
21635
21636     float4 value = read_imagef(source, sampler, location);
21637
21638     write_imagef(destination, location, value);
21639 }
21640 @end verbatim
21641
21642 @item
21643 Apply a simple transformation, rotating the input by an amount increasing
21644 with the index counter.  Pixel values are linearly interpolated by the
21645 sampler, and the output need not have the same dimensions as the input.
21646 @verbatim
21647 __kernel void rotate_image(__write_only image2d_t dst,
21648                            unsigned int index,
21649                            __read_only  image2d_t src)
21650 {
21651     const sampler_t sampler = (CLK_NORMALIZED_COORDS_FALSE |
21652                                CLK_FILTER_LINEAR);
21653
21654     float angle = (float)index / 100.0f;
21655
21656     float2 dst_dim = convert_float2(get_image_dim(dst));
21657     float2 src_dim = convert_float2(get_image_dim(src));
21658
21659     float2 dst_cen = dst_dim / 2.0f;
21660     float2 src_cen = src_dim / 2.0f;
21661
21662     int2   dst_loc = (int2)(get_global_id(0), get_global_id(1));
21663
21664     float2 dst_pos = convert_float2(dst_loc) - dst_cen;
21665     float2 src_pos = {
21666         cos(angle) * dst_pos.x - sin(angle) * dst_pos.y,
21667         sin(angle) * dst_pos.x + cos(angle) * dst_pos.y
21668     };
21669     src_pos = src_pos * src_dim / dst_dim;
21670
21671     float2 src_loc = src_pos + src_cen;
21672
21673     if (src_loc.x < 0.0f      || src_loc.y < 0.0f ||
21674         src_loc.x > src_dim.x || src_loc.y > src_dim.y)
21675         write_imagef(dst, dst_loc, 0.5f);
21676     else
21677         write_imagef(dst, dst_loc, read_imagef(src, sampler, src_loc));
21678 }
21679 @end verbatim
21680
21681 @item
21682 Blend two inputs together, with the amount of each input used varying
21683 with the index counter.
21684 @verbatim
21685 __kernel void blend_images(__write_only image2d_t dst,
21686                            unsigned int index,
21687                            __read_only  image2d_t src1,
21688                            __read_only  image2d_t src2)
21689 {
21690     const sampler_t sampler = (CLK_NORMALIZED_COORDS_FALSE |
21691                                CLK_FILTER_LINEAR);
21692
21693     float blend = (cos((float)index / 50.0f) + 1.0f) / 2.0f;
21694
21695     int2  dst_loc = (int2)(get_global_id(0), get_global_id(1));
21696     int2 src1_loc = dst_loc * get_image_dim(src1) / get_image_dim(dst);
21697     int2 src2_loc = dst_loc * get_image_dim(src2) / get_image_dim(dst);
21698
21699     float4 val1 = read_imagef(src1, sampler, src1_loc);
21700     float4 val2 = read_imagef(src2, sampler, src2_loc);
21701
21702     write_imagef(dst, dst_loc, val1 * blend + val2 * (1.0f - blend));
21703 }
21704 @end verbatim
21705
21706 @end itemize
21707
21708 @section roberts_opencl
21709 Apply the Roberts cross operator (@url{https://en.wikipedia.org/wiki/Roberts_cross}) to input video stream.
21710
21711 The filter accepts the following option:
21712
21713 @table @option
21714 @item planes
21715 Set which planes to filter. Default value is @code{0xf}, by which all planes are processed.
21716
21717 @item scale
21718 Set value which will be multiplied with filtered result.
21719 Range is @code{[0.0, 65535]} and default value is @code{1.0}.
21720
21721 @item delta
21722 Set value which will be added to filtered result.
21723 Range is @code{[-65535, 65535]} and default value is @code{0.0}.
21724 @end table
21725
21726 @subsection Example
21727
21728 @itemize
21729 @item
21730 Apply the Roberts cross operator with scale set to 2 and delta set to 10
21731 @example
21732 -i INPUT -vf "hwupload, roberts_opencl=scale=2:delta=10, hwdownload" OUTPUT
21733 @end example
21734 @end itemize
21735
21736 @section sobel_opencl
21737
21738 Apply the Sobel operator (@url{https://en.wikipedia.org/wiki/Sobel_operator}) to input video stream.
21739
21740 The filter accepts the following option:
21741
21742 @table @option
21743 @item planes
21744 Set which planes to filter. Default value is @code{0xf}, by which all planes are processed.
21745
21746 @item scale
21747 Set value which will be multiplied with filtered result.
21748 Range is @code{[0.0, 65535]} and default value is @code{1.0}.
21749
21750 @item delta
21751 Set value which will be added to filtered result.
21752 Range is @code{[-65535, 65535]} and default value is @code{0.0}.
21753 @end table
21754
21755 @subsection Example
21756
21757 @itemize
21758 @item
21759 Apply sobel operator with scale set to 2 and delta set to 10
21760 @example
21761 -i INPUT -vf "hwupload, sobel_opencl=scale=2:delta=10, hwdownload" OUTPUT
21762 @end example
21763 @end itemize
21764
21765 @section tonemap_opencl
21766
21767 Perform HDR(PQ/HLG) to SDR conversion with tone-mapping.
21768
21769 It accepts the following parameters:
21770
21771 @table @option
21772 @item tonemap
21773 Specify the tone-mapping operator to be used. Same as tonemap option in @ref{tonemap}.
21774
21775 @item param
21776 Tune the tone mapping algorithm. same as param option in @ref{tonemap}.
21777
21778 @item desat
21779 Apply desaturation for highlights that exceed this level of brightness. The
21780 higher the parameter, the more color information will be preserved. This
21781 setting helps prevent unnaturally blown-out colors for super-highlights, by
21782 (smoothly) turning into white instead. This makes images feel more natural,
21783 at the cost of reducing information about out-of-range colors.
21784
21785 The default value is 0.5, and the algorithm here is a little different from
21786 the cpu version tonemap currently. A setting of 0.0 disables this option.
21787
21788 @item threshold
21789 The tonemapping algorithm parameters is fine-tuned per each scene. And a threshold
21790 is used to detect whether the scene has changed or not. If the distance between
21791 the current frame average brightness and the current running average exceeds
21792 a threshold value, we would re-calculate scene average and peak brightness.
21793 The default value is 0.2.
21794
21795 @item format
21796 Specify the output pixel format.
21797
21798 Currently supported formats are:
21799 @table @var
21800 @item p010
21801 @item nv12
21802 @end table
21803
21804 @item range, r
21805 Set the output color range.
21806
21807 Possible values are:
21808 @table @var
21809 @item tv/mpeg
21810 @item pc/jpeg
21811 @end table
21812
21813 Default is same as input.
21814
21815 @item primaries, p
21816 Set the output color primaries.
21817
21818 Possible values are:
21819 @table @var
21820 @item bt709
21821 @item bt2020
21822 @end table
21823
21824 Default is same as input.
21825
21826 @item transfer, t
21827 Set the output transfer characteristics.
21828
21829 Possible values are:
21830 @table @var
21831 @item bt709
21832 @item bt2020
21833 @end table
21834
21835 Default is bt709.
21836
21837 @item matrix, m
21838 Set the output colorspace matrix.
21839
21840 Possible value are:
21841 @table @var
21842 @item bt709
21843 @item bt2020
21844 @end table
21845
21846 Default is same as input.
21847
21848 @end table
21849
21850 @subsection Example
21851
21852 @itemize
21853 @item
21854 Convert HDR(PQ/HLG) video to bt2020-transfer-characteristic p010 format using linear operator.
21855 @example
21856 -i INPUT -vf "format=p010,hwupload,tonemap_opencl=t=bt2020:tonemap=linear:format=p010,hwdownload,format=p010" OUTPUT
21857 @end example
21858 @end itemize
21859
21860 @section unsharp_opencl
21861
21862 Sharpen or blur the input video.
21863
21864 It accepts the following parameters:
21865
21866 @table @option
21867 @item luma_msize_x, lx
21868 Set the luma matrix horizontal size.
21869 Range is @code{[1, 23]} and default value is @code{5}.
21870
21871 @item luma_msize_y, ly
21872 Set the luma matrix vertical size.
21873 Range is @code{[1, 23]} and default value is @code{5}.
21874
21875 @item luma_amount, la
21876 Set the luma effect strength.
21877 Range is @code{[-10, 10]} and default value is @code{1.0}.
21878
21879 Negative values will blur the input video, while positive values will
21880 sharpen it, a value of zero will disable the effect.
21881
21882 @item chroma_msize_x, cx
21883 Set the chroma matrix horizontal size.
21884 Range is @code{[1, 23]} and default value is @code{5}.
21885
21886 @item chroma_msize_y, cy
21887 Set the chroma matrix vertical size.
21888 Range is @code{[1, 23]} and default value is @code{5}.
21889
21890 @item chroma_amount, ca
21891 Set the chroma effect strength.
21892 Range is @code{[-10, 10]} and default value is @code{0.0}.
21893
21894 Negative values will blur the input video, while positive values will
21895 sharpen it, a value of zero will disable the effect.
21896
21897 @end table
21898
21899 All parameters are optional and default to the equivalent of the
21900 string '5:5:1.0:5:5:0.0'.
21901
21902 @subsection Examples
21903
21904 @itemize
21905 @item
21906 Apply strong luma sharpen effect:
21907 @example
21908 -i INPUT -vf "hwupload, unsharp_opencl=luma_msize_x=7:luma_msize_y=7:luma_amount=2.5, hwdownload" OUTPUT
21909 @end example
21910
21911 @item
21912 Apply a strong blur of both luma and chroma parameters:
21913 @example
21914 -i INPUT -vf "hwupload, unsharp_opencl=7:7:-2:7:7:-2, hwdownload" OUTPUT
21915 @end example
21916 @end itemize
21917
21918 @section xfade_opencl
21919
21920 Cross fade two videos with custom transition effect by using OpenCL.
21921
21922 It accepts the following options:
21923
21924 @table @option
21925 @item transition
21926 Set one of possible transition effects.
21927
21928 @table @option
21929 @item custom
21930 Select custom transition effect, the actual transition description
21931 will be picked from source and kernel options.
21932
21933 @item fade
21934 @item wipeleft
21935 @item wiperight
21936 @item wipeup
21937 @item wipedown
21938 @item slideleft
21939 @item slideright
21940 @item slideup
21941 @item slidedown
21942
21943 Default transition is fade.
21944 @end table
21945
21946 @item source
21947 OpenCL program source file for custom transition.
21948
21949 @item kernel
21950 Set name of kernel to use for custom transition from program source file.
21951
21952 @item duration
21953 Set duration of video transition.
21954
21955 @item offset
21956 Set time of start of transition relative to first video.
21957 @end table
21958
21959 The program source file must contain a kernel function with the given name,
21960 which will be run once for each plane of the output.  Each run on a plane
21961 gets enqueued as a separate 2D global NDRange with one work-item for each
21962 pixel to be generated.  The global ID offset for each work-item is therefore
21963 the coordinates of a pixel in the destination image.
21964
21965 The kernel function needs to take the following arguments:
21966 @itemize
21967 @item
21968 Destination image, @var{__write_only image2d_t}.
21969
21970 This image will become the output; the kernel should write all of it.
21971
21972 @item
21973 First Source image, @var{__read_only image2d_t}.
21974 Second Source image, @var{__read_only image2d_t}.
21975
21976 These are the most recent images on each input.  The kernel may read from
21977 them to generate the output, but they can't be written to.
21978
21979 @item
21980 Transition progress, @var{float}. This value is always between 0 and 1 inclusive.
21981 @end itemize
21982
21983 Example programs:
21984
21985 @itemize
21986 @item
21987 Apply dots curtain transition effect:
21988 @verbatim
21989 __kernel void blend_images(__write_only image2d_t dst,
21990                            __read_only  image2d_t src1,
21991                            __read_only  image2d_t src2,
21992                            float progress)
21993 {
21994     const sampler_t sampler = (CLK_NORMALIZED_COORDS_FALSE |
21995                                CLK_FILTER_LINEAR);
21996     int2  p = (int2)(get_global_id(0), get_global_id(1));
21997     float2 rp = (float2)(get_global_id(0), get_global_id(1));
21998     float2 dim = (float2)(get_image_dim(src1).x, get_image_dim(src1).y);
21999     rp = rp / dim;
22000
22001     float2 dots = (float2)(20.0, 20.0);
22002     float2 center = (float2)(0,0);
22003     float2 unused;
22004
22005     float4 val1 = read_imagef(src1, sampler, p);
22006     float4 val2 = read_imagef(src2, sampler, p);
22007     bool next = distance(fract(rp * dots, &unused), (float2)(0.5, 0.5)) < (progress / distance(rp, center));
22008
22009     write_imagef(dst, p, next ? val1 : val2);
22010 }
22011 @end verbatim
22012
22013 @end itemize
22014
22015 @c man end OPENCL VIDEO FILTERS
22016
22017 @chapter VAAPI Video Filters
22018 @c man begin VAAPI VIDEO FILTERS
22019
22020 VAAPI Video filters are usually used with VAAPI decoder and VAAPI encoder. Below is a description of VAAPI video filters.
22021
22022 To enable compilation of these filters you need to configure FFmpeg with
22023 @code{--enable-vaapi}.
22024
22025 To use vaapi filters, you need to setup the vaapi device correctly. For more information, please read @url{https://trac.ffmpeg.org/wiki/Hardware/VAAPI}
22026
22027 @section tonemap_vaapi
22028
22029 Perform HDR(High Dynamic Range) to SDR(Standard Dynamic Range) conversion with tone-mapping.
22030 It maps the dynamic range of HDR10 content to the SDR content.
22031 It currently only accepts HDR10 as input.
22032
22033 It accepts the following parameters:
22034
22035 @table @option
22036 @item format
22037 Specify the output pixel format.
22038
22039 Currently supported formats are:
22040 @table @var
22041 @item p010
22042 @item nv12
22043 @end table
22044
22045 Default is nv12.
22046
22047 @item primaries, p
22048 Set the output color primaries.
22049
22050 Default is same as input.
22051
22052 @item transfer, t
22053 Set the output transfer characteristics.
22054
22055 Default is bt709.
22056
22057 @item matrix, m
22058 Set the output colorspace matrix.
22059
22060 Default is same as input.
22061
22062 @end table
22063
22064 @subsection Example
22065
22066 @itemize
22067 @item
22068 Convert HDR(HDR10) video to bt2020-transfer-characteristic p010 format
22069 @example
22070 tonemap_vaapi=format=p010:t=bt2020-10
22071 @end example
22072 @end itemize
22073
22074 @c man end VAAPI VIDEO FILTERS
22075
22076 @chapter Video Sources
22077 @c man begin VIDEO SOURCES
22078
22079 Below is a description of the currently available video sources.
22080
22081 @section buffer
22082
22083 Buffer video frames, and make them available to the filter chain.
22084
22085 This source is mainly intended for a programmatic use, in particular
22086 through the interface defined in @file{libavfilter/vsrc_buffer.h}.
22087
22088 It accepts the following parameters:
22089
22090 @table @option
22091
22092 @item video_size
22093 Specify the size (width and height) of the buffered video frames. For the
22094 syntax of this option, check the
22095 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
22096
22097 @item width
22098 The input video width.
22099
22100 @item height
22101 The input video height.
22102
22103 @item pix_fmt
22104 A string representing the pixel format of the buffered video frames.
22105 It may be a number corresponding to a pixel format, or a pixel format
22106 name.
22107
22108 @item time_base
22109 Specify the timebase assumed by the timestamps of the buffered frames.
22110
22111 @item frame_rate
22112 Specify the frame rate expected for the video stream.
22113
22114 @item pixel_aspect, sar
22115 The sample (pixel) aspect ratio of the input video.
22116
22117 @item sws_param
22118 This option is deprecated and ignored. Prepend @code{sws_flags=@var{flags};}
22119 to the filtergraph description to specify swscale flags for automatically
22120 inserted scalers. See @ref{Filtergraph syntax}.
22121
22122 @item hw_frames_ctx
22123 When using a hardware pixel format, this should be a reference to an
22124 AVHWFramesContext describing input frames.
22125 @end table
22126
22127 For example:
22128 @example
22129 buffer=width=320:height=240:pix_fmt=yuv410p:time_base=1/24:sar=1
22130 @end example
22131
22132 will instruct the source to accept video frames with size 320x240 and
22133 with format "yuv410p", assuming 1/24 as the timestamps timebase and
22134 square pixels (1:1 sample aspect ratio).
22135 Since the pixel format with name "yuv410p" corresponds to the number 6
22136 (check the enum AVPixelFormat definition in @file{libavutil/pixfmt.h}),
22137 this example corresponds to:
22138 @example
22139 buffer=size=320x240:pixfmt=6:time_base=1/24:pixel_aspect=1/1
22140 @end example
22141
22142 Alternatively, the options can be specified as a flat string, but this
22143 syntax is deprecated:
22144
22145 @var{width}:@var{height}:@var{pix_fmt}:@var{time_base.num}:@var{time_base.den}:@var{pixel_aspect.num}:@var{pixel_aspect.den}
22146
22147 @section cellauto
22148
22149 Create a pattern generated by an elementary cellular automaton.
22150
22151 The initial state of the cellular automaton can be defined through the
22152 @option{filename} and @option{pattern} options. If such options are
22153 not specified an initial state is created randomly.
22154
22155 At each new frame a new row in the video is filled with the result of
22156 the cellular automaton next generation. The behavior when the whole
22157 frame is filled is defined by the @option{scroll} option.
22158
22159 This source accepts the following options:
22160
22161 @table @option
22162 @item filename, f
22163 Read the initial cellular automaton state, i.e. the starting row, from
22164 the specified file.
22165 In the file, each non-whitespace character is considered an alive
22166 cell, a newline will terminate the row, and further characters in the
22167 file will be ignored.
22168
22169 @item pattern, p
22170 Read the initial cellular automaton state, i.e. the starting row, from
22171 the specified string.
22172
22173 Each non-whitespace character in the string is considered an alive
22174 cell, a newline will terminate the row, and further characters in the
22175 string will be ignored.
22176
22177 @item rate, r
22178 Set the video rate, that is the number of frames generated per second.
22179 Default is 25.
22180
22181 @item random_fill_ratio, ratio
22182 Set the random fill ratio for the initial cellular automaton row. It
22183 is a floating point number value ranging from 0 to 1, defaults to
22184 1/PHI.
22185
22186 This option is ignored when a file or a pattern is specified.
22187
22188 @item random_seed, seed
22189 Set the seed for filling randomly the initial row, must be an integer
22190 included between 0 and UINT32_MAX. If not specified, or if explicitly
22191 set to -1, the filter will try to use a good random seed on a best
22192 effort basis.
22193
22194 @item rule
22195 Set the cellular automaton rule, it is a number ranging from 0 to 255.
22196 Default value is 110.
22197
22198 @item size, s
22199 Set the size of the output video. For the syntax of this option, check the
22200 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
22201
22202 If @option{filename} or @option{pattern} is specified, the size is set
22203 by default to the width of the specified initial state row, and the
22204 height is set to @var{width} * PHI.
22205
22206 If @option{size} is set, it must contain the width of the specified
22207 pattern string, and the specified pattern will be centered in the
22208 larger row.
22209
22210 If a filename or a pattern string is not specified, the size value
22211 defaults to "320x518" (used for a randomly generated initial state).
22212
22213 @item scroll
22214 If set to 1, scroll the output upward when all the rows in the output
22215 have been already filled. If set to 0, the new generated row will be
22216 written over the top row just after the bottom row is filled.
22217 Defaults to 1.
22218
22219 @item start_full, full
22220 If set to 1, completely fill the output with generated rows before
22221 outputting the first frame.
22222 This is the default behavior, for disabling set the value to 0.
22223
22224 @item stitch
22225 If set to 1, stitch the left and right row edges together.
22226 This is the default behavior, for disabling set the value to 0.
22227 @end table
22228
22229 @subsection Examples
22230
22231 @itemize
22232 @item
22233 Read the initial state from @file{pattern}, and specify an output of
22234 size 200x400.
22235 @example
22236 cellauto=f=pattern:s=200x400
22237 @end example
22238
22239 @item
22240 Generate a random initial row with a width of 200 cells, with a fill
22241 ratio of 2/3:
22242 @example
22243 cellauto=ratio=2/3:s=200x200
22244 @end example
22245
22246 @item
22247 Create a pattern generated by rule 18 starting by a single alive cell
22248 centered on an initial row with width 100:
22249 @example
22250 cellauto=p=@@:s=100x400:full=0:rule=18
22251 @end example
22252
22253 @item
22254 Specify a more elaborated initial pattern:
22255 @example
22256 cellauto=p='@@@@ @@ @@@@':s=100x400:full=0:rule=18
22257 @end example
22258
22259 @end itemize
22260
22261 @anchor{coreimagesrc}
22262 @section coreimagesrc
22263 Video source generated on GPU using Apple's CoreImage API on OSX.
22264
22265 This video source is a specialized version of the @ref{coreimage} video filter.
22266 Use a core image generator at the beginning of the applied filterchain to
22267 generate the content.
22268
22269 The coreimagesrc video source accepts the following options:
22270 @table @option
22271 @item list_generators
22272 List all available generators along with all their respective options as well as
22273 possible minimum and maximum values along with the default values.
22274 @example
22275 list_generators=true
22276 @end example
22277
22278 @item size, s
22279 Specify the size of the sourced video. For the syntax of this option, check the
22280 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
22281 The default value is @code{320x240}.
22282
22283 @item rate, r
22284 Specify the frame rate of the sourced video, as the number of frames
22285 generated per second. It has to be a string in the format
22286 @var{frame_rate_num}/@var{frame_rate_den}, an integer number, a floating point
22287 number or a valid video frame rate abbreviation. The default value is
22288 "25".
22289
22290 @item sar
22291 Set the sample aspect ratio of the sourced video.
22292
22293 @item duration, d
22294 Set the duration of the sourced video. See
22295 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
22296 for the accepted syntax.
22297
22298 If not specified, or the expressed duration is negative, the video is
22299 supposed to be generated forever.
22300 @end table
22301
22302 Additionally, all options of the @ref{coreimage} video filter are accepted.
22303 A complete filterchain can be used for further processing of the
22304 generated input without CPU-HOST transfer. See @ref{coreimage} documentation
22305 and examples for details.
22306
22307 @subsection Examples
22308
22309 @itemize
22310
22311 @item
22312 Use CIQRCodeGenerator to create a QR code for the FFmpeg homepage,
22313 given as complete and escaped command-line for Apple's standard bash shell:
22314 @example
22315 ffmpeg -f lavfi -i coreimagesrc=s=100x100:filter=CIQRCodeGenerator@@inputMessage=https\\\\\://FFmpeg.org/@@inputCorrectionLevel=H -frames:v 1 QRCode.png
22316 @end example
22317 This example is equivalent to the QRCode example of @ref{coreimage} without the
22318 need for a nullsrc video source.
22319 @end itemize
22320
22321
22322 @section gradients
22323 Generate several gradients.
22324
22325 @table @option
22326 @item size, s
22327 Set frame size. For the syntax of this option, check the @ref{video size syntax,,"Video
22328 size" section in the ffmpeg-utils manual,ffmpeg-utils}. Default value is "640x480".
22329
22330 @item rate, r
22331 Set frame rate, expressed as number of frames per second. Default
22332 value is "25".
22333
22334 @item c0, c1, c2, c3, c4, c5, c6, c7
22335 Set 8 colors. Default values for colors is to pick random one.
22336
22337 @item x0, y0, y0, y1
22338 Set gradient line source and destination points. If negative or out of range, random ones
22339 are picked.
22340
22341 @item nb_colors, n
22342 Set number of colors to use at once. Allowed range is from 2 to 8. Default value is 2.
22343
22344 @item seed
22345 Set seed for picking gradient line points.
22346 @end table
22347
22348
22349 @section mandelbrot
22350
22351 Generate a Mandelbrot set fractal, and progressively zoom towards the
22352 point specified with @var{start_x} and @var{start_y}.
22353
22354 This source accepts the following options:
22355
22356 @table @option
22357
22358 @item end_pts
22359 Set the terminal pts value. Default value is 400.
22360
22361 @item end_scale
22362 Set the terminal scale value.
22363 Must be a floating point value. Default value is 0.3.
22364
22365 @item inner
22366 Set the inner coloring mode, that is the algorithm used to draw the
22367 Mandelbrot fractal internal region.
22368
22369 It shall assume one of the following values:
22370 @table @option
22371 @item black
22372 Set black mode.
22373 @item convergence
22374 Show time until convergence.
22375 @item mincol
22376 Set color based on point closest to the origin of the iterations.
22377 @item period
22378 Set period mode.
22379 @end table
22380
22381 Default value is @var{mincol}.
22382
22383 @item bailout
22384 Set the bailout value. Default value is 10.0.
22385
22386 @item maxiter
22387 Set the maximum of iterations performed by the rendering
22388 algorithm. Default value is 7189.
22389
22390 @item outer
22391 Set outer coloring mode.
22392 It shall assume one of following values:
22393 @table @option
22394 @item iteration_count
22395 Set iteration count mode.
22396 @item normalized_iteration_count
22397 set normalized iteration count mode.
22398 @end table
22399 Default value is @var{normalized_iteration_count}.
22400
22401 @item rate, r
22402 Set frame rate, expressed as number of frames per second. Default
22403 value is "25".
22404
22405 @item size, s
22406 Set frame size. For the syntax of this option, check the @ref{video size syntax,,"Video
22407 size" section in the ffmpeg-utils manual,ffmpeg-utils}. Default value is "640x480".
22408
22409 @item start_scale
22410 Set the initial scale value. Default value is 3.0.
22411
22412 @item start_x
22413 Set the initial x position. Must be a floating point value between
22414 -100 and 100. Default value is -0.743643887037158704752191506114774.
22415
22416 @item start_y
22417 Set the initial y position. Must be a floating point value between
22418 -100 and 100. Default value is -0.131825904205311970493132056385139.
22419 @end table
22420
22421 @section mptestsrc
22422
22423 Generate various test patterns, as generated by the MPlayer test filter.
22424
22425 The size of the generated video is fixed, and is 256x256.
22426 This source is useful in particular for testing encoding features.
22427
22428 This source accepts the following options:
22429
22430 @table @option
22431
22432 @item rate, r
22433 Specify the frame rate of the sourced video, as the number of frames
22434 generated per second. It has to be a string in the format
22435 @var{frame_rate_num}/@var{frame_rate_den}, an integer number, a floating point
22436 number or a valid video frame rate abbreviation. The default value is
22437 "25".
22438
22439 @item duration, d
22440 Set the duration of the sourced video. See
22441 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
22442 for the accepted syntax.
22443
22444 If not specified, or the expressed duration is negative, the video is
22445 supposed to be generated forever.
22446
22447 @item test, t
22448
22449 Set the number or the name of the test to perform. Supported tests are:
22450 @table @option
22451 @item dc_luma
22452 @item dc_chroma
22453 @item freq_luma
22454 @item freq_chroma
22455 @item amp_luma
22456 @item amp_chroma
22457 @item cbp
22458 @item mv
22459 @item ring1
22460 @item ring2
22461 @item all
22462
22463 @item max_frames, m
22464 Set the maximum number of frames generated for each test, default value is 30.
22465
22466 @end table
22467
22468 Default value is "all", which will cycle through the list of all tests.
22469 @end table
22470
22471 Some examples:
22472 @example
22473 mptestsrc=t=dc_luma
22474 @end example
22475
22476 will generate a "dc_luma" test pattern.
22477
22478 @section frei0r_src
22479
22480 Provide a frei0r source.
22481
22482 To enable compilation of this filter you need to install the frei0r
22483 header and configure FFmpeg with @code{--enable-frei0r}.
22484
22485 This source accepts the following parameters:
22486
22487 @table @option
22488
22489 @item size
22490 The size of the video to generate. For the syntax of this option, check the
22491 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
22492
22493 @item framerate
22494 The framerate of the generated video. It may be a string of the form
22495 @var{num}/@var{den} or a frame rate abbreviation.
22496
22497 @item filter_name
22498 The name to the frei0r source to load. For more information regarding frei0r and
22499 how to set the parameters, read the @ref{frei0r} section in the video filters
22500 documentation.
22501
22502 @item filter_params
22503 A '|'-separated list of parameters to pass to the frei0r source.
22504
22505 @end table
22506
22507 For example, to generate a frei0r partik0l source with size 200x200
22508 and frame rate 10 which is overlaid on the overlay filter main input:
22509 @example
22510 frei0r_src=size=200x200:framerate=10:filter_name=partik0l:filter_params=1234 [overlay]; [in][overlay] overlay
22511 @end example
22512
22513 @section life
22514
22515 Generate a life pattern.
22516
22517 This source is based on a generalization of John Conway's life game.
22518
22519 The sourced input represents a life grid, each pixel represents a cell
22520 which can be in one of two possible states, alive or dead. Every cell
22521 interacts with its eight neighbours, which are the cells that are
22522 horizontally, vertically, or diagonally adjacent.
22523
22524 At each interaction the grid evolves according to the adopted rule,
22525 which specifies the number of neighbor alive cells which will make a
22526 cell stay alive or born. The @option{rule} option allows one to specify
22527 the rule to adopt.
22528
22529 This source accepts the following options:
22530
22531 @table @option
22532 @item filename, f
22533 Set the file from which to read the initial grid state. In the file,
22534 each non-whitespace character is considered an alive cell, and newline
22535 is used to delimit the end of each row.
22536
22537 If this option is not specified, the initial grid is generated
22538 randomly.
22539
22540 @item rate, r
22541 Set the video rate, that is the number of frames generated per second.
22542 Default is 25.
22543
22544 @item random_fill_ratio, ratio
22545 Set the random fill ratio for the initial random grid. It is a
22546 floating point number value ranging from 0 to 1, defaults to 1/PHI.
22547 It is ignored when a file is specified.
22548
22549 @item random_seed, seed
22550 Set the seed for filling the initial random grid, must be an integer
22551 included between 0 and UINT32_MAX. If not specified, or if explicitly
22552 set to -1, the filter will try to use a good random seed on a best
22553 effort basis.
22554
22555 @item rule
22556 Set the life rule.
22557
22558 A rule can be specified with a code of the kind "S@var{NS}/B@var{NB}",
22559 where @var{NS} and @var{NB} are sequences of numbers in the range 0-8,
22560 @var{NS} specifies the number of alive neighbor cells which make a
22561 live cell stay alive, and @var{NB} the number of alive neighbor cells
22562 which make a dead cell to become alive (i.e. to "born").
22563 "s" and "b" can be used in place of "S" and "B", respectively.
22564
22565 Alternatively a rule can be specified by an 18-bits integer. The 9
22566 high order bits are used to encode the next cell state if it is alive
22567 for each number of neighbor alive cells, the low order bits specify
22568 the rule for "borning" new cells. Higher order bits encode for an
22569 higher number of neighbor cells.
22570 For example the number 6153 = @code{(12<<9)+9} specifies a stay alive
22571 rule of 12 and a born rule of 9, which corresponds to "S23/B03".
22572
22573 Default value is "S23/B3", which is the original Conway's game of life
22574 rule, and will keep a cell alive if it has 2 or 3 neighbor alive
22575 cells, and will born a new cell if there are three alive cells around
22576 a dead cell.
22577
22578 @item size, s
22579 Set the size of the output video. For the syntax of this option, check the
22580 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
22581
22582 If @option{filename} is specified, the size is set by default to the
22583 same size of the input file. If @option{size} is set, it must contain
22584 the size specified in the input file, and the initial grid defined in
22585 that file is centered in the larger resulting area.
22586
22587 If a filename is not specified, the size value defaults to "320x240"
22588 (used for a randomly generated initial grid).
22589
22590 @item stitch
22591 If set to 1, stitch the left and right grid edges together, and the
22592 top and bottom edges also. Defaults to 1.
22593
22594 @item mold
22595 Set cell mold speed. If set, a dead cell will go from @option{death_color} to
22596 @option{mold_color} with a step of @option{mold}. @option{mold} can have a
22597 value from 0 to 255.
22598
22599 @item life_color
22600 Set the color of living (or new born) cells.
22601
22602 @item death_color
22603 Set the color of dead cells. If @option{mold} is set, this is the first color
22604 used to represent a dead cell.
22605
22606 @item mold_color
22607 Set mold color, for definitely dead and moldy cells.
22608
22609 For the syntax of these 3 color options, check the @ref{color syntax,,"Color" section in the
22610 ffmpeg-utils manual,ffmpeg-utils}.
22611 @end table
22612
22613 @subsection Examples
22614
22615 @itemize
22616 @item
22617 Read a grid from @file{pattern}, and center it on a grid of size
22618 300x300 pixels:
22619 @example
22620 life=f=pattern:s=300x300
22621 @end example
22622
22623 @item
22624 Generate a random grid of size 200x200, with a fill ratio of 2/3:
22625 @example
22626 life=ratio=2/3:s=200x200
22627 @end example
22628
22629 @item
22630 Specify a custom rule for evolving a randomly generated grid:
22631 @example
22632 life=rule=S14/B34
22633 @end example
22634
22635 @item
22636 Full example with slow death effect (mold) using @command{ffplay}:
22637 @example
22638 ffplay -f lavfi life=s=300x200:mold=10:r=60:ratio=0.1:death_color=#C83232:life_color=#00ff00,scale=1200:800:flags=16
22639 @end example
22640 @end itemize
22641
22642 @anchor{allrgb}
22643 @anchor{allyuv}
22644 @anchor{color}
22645 @anchor{haldclutsrc}
22646 @anchor{nullsrc}
22647 @anchor{pal75bars}
22648 @anchor{pal100bars}
22649 @anchor{rgbtestsrc}
22650 @anchor{smptebars}
22651 @anchor{smptehdbars}
22652 @anchor{testsrc}
22653 @anchor{testsrc2}
22654 @anchor{yuvtestsrc}
22655 @section allrgb, allyuv, color, haldclutsrc, nullsrc, pal75bars, pal100bars, rgbtestsrc, smptebars, smptehdbars, testsrc, testsrc2, yuvtestsrc
22656
22657 The @code{allrgb} source returns frames of size 4096x4096 of all rgb colors.
22658
22659 The @code{allyuv} source returns frames of size 4096x4096 of all yuv colors.
22660
22661 The @code{color} source provides an uniformly colored input.
22662
22663 The @code{haldclutsrc} source provides an identity Hald CLUT. See also
22664 @ref{haldclut} filter.
22665
22666 The @code{nullsrc} source returns unprocessed video frames. It is
22667 mainly useful to be employed in analysis / debugging tools, or as the
22668 source for filters which ignore the input data.
22669
22670 The @code{pal75bars} source generates a color bars pattern, based on
22671 EBU PAL recommendations with 75% color levels.
22672
22673 The @code{pal100bars} source generates a color bars pattern, based on
22674 EBU PAL recommendations with 100% color levels.
22675
22676 The @code{rgbtestsrc} source generates an RGB test pattern useful for
22677 detecting RGB vs BGR issues. You should see a red, green and blue
22678 stripe from top to bottom.
22679
22680 The @code{smptebars} source generates a color bars pattern, based on
22681 the SMPTE Engineering Guideline EG 1-1990.
22682
22683 The @code{smptehdbars} source generates a color bars pattern, based on
22684 the SMPTE RP 219-2002.
22685
22686 The @code{testsrc} source generates a test video pattern, showing a
22687 color pattern, a scrolling gradient and a timestamp. This is mainly
22688 intended for testing purposes.
22689
22690 The @code{testsrc2} source is similar to testsrc, but supports more
22691 pixel formats instead of just @code{rgb24}. This allows using it as an
22692 input for other tests without requiring a format conversion.
22693
22694 The @code{yuvtestsrc} source generates an YUV test pattern. You should
22695 see a y, cb and cr stripe from top to bottom.
22696
22697 The sources accept the following parameters:
22698
22699 @table @option
22700
22701 @item level
22702 Specify the level of the Hald CLUT, only available in the @code{haldclutsrc}
22703 source. A level of @code{N} generates a picture of @code{N*N*N} by @code{N*N*N}
22704 pixels to be used as identity matrix for 3D lookup tables. Each component is
22705 coded on a @code{1/(N*N)} scale.
22706
22707 @item color, c
22708 Specify the color of the source, only available in the @code{color}
22709 source. For the syntax of this option, check the
22710 @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
22711
22712 @item size, s
22713 Specify the size of the sourced video. For the syntax of this option, check the
22714 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
22715 The default value is @code{320x240}.
22716
22717 This option is not available with the @code{allrgb}, @code{allyuv}, and
22718 @code{haldclutsrc} filters.
22719
22720 @item rate, r
22721 Specify the frame rate of the sourced video, as the number of frames
22722 generated per second. It has to be a string in the format
22723 @var{frame_rate_num}/@var{frame_rate_den}, an integer number, a floating point
22724 number or a valid video frame rate abbreviation. The default value is
22725 "25".
22726
22727 @item duration, d
22728 Set the duration of the sourced video. See
22729 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
22730 for the accepted syntax.
22731
22732 If not specified, or the expressed duration is negative, the video is
22733 supposed to be generated forever.
22734
22735 @item sar
22736 Set the sample aspect ratio of the sourced video.
22737
22738 @item alpha
22739 Specify the alpha (opacity) of the background, only available in the
22740 @code{testsrc2} source. The value must be between 0 (fully transparent) and
22741 255 (fully opaque, the default).
22742
22743 @item decimals, n
22744 Set the number of decimals to show in the timestamp, only available in the
22745 @code{testsrc} source.
22746
22747 The displayed timestamp value will correspond to the original
22748 timestamp value multiplied by the power of 10 of the specified
22749 value. Default value is 0.
22750 @end table
22751
22752 @subsection Examples
22753
22754 @itemize
22755 @item
22756 Generate a video with a duration of 5.3 seconds, with size
22757 176x144 and a frame rate of 10 frames per second:
22758 @example
22759 testsrc=duration=5.3:size=qcif:rate=10
22760 @end example
22761
22762 @item
22763 The following graph description will generate a red source
22764 with an opacity of 0.2, with size "qcif" and a frame rate of 10
22765 frames per second:
22766 @example
22767 color=c=red@@0.2:s=qcif:r=10
22768 @end example
22769
22770 @item
22771 If the input content is to be ignored, @code{nullsrc} can be used. The
22772 following command generates noise in the luminance plane by employing
22773 the @code{geq} filter:
22774 @example
22775 nullsrc=s=256x256, geq=random(1)*255:128:128
22776 @end example
22777 @end itemize
22778
22779 @subsection Commands
22780
22781 The @code{color} source supports the following commands:
22782
22783 @table @option
22784 @item c, color
22785 Set the color of the created image. Accepts the same syntax of the
22786 corresponding @option{color} option.
22787 @end table
22788
22789 @section openclsrc
22790
22791 Generate video using an OpenCL program.
22792
22793 @table @option
22794
22795 @item source
22796 OpenCL program source file.
22797
22798 @item kernel
22799 Kernel name in program.
22800
22801 @item size, s
22802 Size of frames to generate.  This must be set.
22803
22804 @item format
22805 Pixel format to use for the generated frames.  This must be set.
22806
22807 @item rate, r
22808 Number of frames generated every second.  Default value is '25'.
22809
22810 @end table
22811
22812 For details of how the program loading works, see the @ref{program_opencl}
22813 filter.
22814
22815 Example programs:
22816
22817 @itemize
22818 @item
22819 Generate a colour ramp by setting pixel values from the position of the pixel
22820 in the output image.  (Note that this will work with all pixel formats, but
22821 the generated output will not be the same.)
22822 @verbatim
22823 __kernel void ramp(__write_only image2d_t dst,
22824                    unsigned int index)
22825 {
22826     int2 loc = (int2)(get_global_id(0), get_global_id(1));
22827
22828     float4 val;
22829     val.xy = val.zw = convert_float2(loc) / convert_float2(get_image_dim(dst));
22830
22831     write_imagef(dst, loc, val);
22832 }
22833 @end verbatim
22834
22835 @item
22836 Generate a Sierpinski carpet pattern, panning by a single pixel each frame.
22837 @verbatim
22838 __kernel void sierpinski_carpet(__write_only image2d_t dst,
22839                                 unsigned int index)
22840 {
22841     int2 loc = (int2)(get_global_id(0), get_global_id(1));
22842
22843     float4 value = 0.0f;
22844     int x = loc.x + index;
22845     int y = loc.y + index;
22846     while (x > 0 || y > 0) {
22847         if (x % 3 == 1 && y % 3 == 1) {
22848             value = 1.0f;
22849             break;
22850         }
22851         x /= 3;
22852         y /= 3;
22853     }
22854
22855     write_imagef(dst, loc, value);
22856 }
22857 @end verbatim
22858
22859 @end itemize
22860
22861 @section sierpinski
22862
22863 Generate a Sierpinski carpet/triangle fractal, and randomly pan around.
22864
22865 This source accepts the following options:
22866
22867 @table @option
22868 @item size, s
22869 Set frame size. For the syntax of this option, check the @ref{video size syntax,,"Video
22870 size" section in the ffmpeg-utils manual,ffmpeg-utils}. Default value is "640x480".
22871
22872 @item rate, r
22873 Set frame rate, expressed as number of frames per second. Default
22874 value is "25".
22875
22876 @item seed
22877 Set seed which is used for random panning.
22878
22879 @item jump
22880 Set max jump for single pan destination. Allowed range is from 1 to 10000.
22881
22882 @item type
22883 Set fractal type, can be default @code{carpet} or @code{triangle}.
22884 @end table
22885
22886 @c man end VIDEO SOURCES
22887
22888 @chapter Video Sinks
22889 @c man begin VIDEO SINKS
22890
22891 Below is a description of the currently available video sinks.
22892
22893 @section buffersink
22894
22895 Buffer video frames, and make them available to the end of the filter
22896 graph.
22897
22898 This sink is mainly intended for programmatic use, in particular
22899 through the interface defined in @file{libavfilter/buffersink.h}
22900 or the options system.
22901
22902 It accepts a pointer to an AVBufferSinkContext structure, which
22903 defines the incoming buffers' formats, to be passed as the opaque
22904 parameter to @code{avfilter_init_filter} for initialization.
22905
22906 @section nullsink
22907
22908 Null video sink: do absolutely nothing with the input video. It is
22909 mainly useful as a template and for use in analysis / debugging
22910 tools.
22911
22912 @c man end VIDEO SINKS
22913
22914 @chapter Multimedia Filters
22915 @c man begin MULTIMEDIA FILTERS
22916
22917 Below is a description of the currently available multimedia filters.
22918
22919 @section abitscope
22920
22921 Convert input audio to a video output, displaying the audio bit scope.
22922
22923 The filter accepts the following options:
22924
22925 @table @option
22926 @item rate, r
22927 Set frame rate, expressed as number of frames per second. Default
22928 value is "25".
22929
22930 @item size, s
22931 Specify the video size for the output. For the syntax of this option, check the
22932 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
22933 Default value is @code{1024x256}.
22934
22935 @item colors
22936 Specify list of colors separated by space or by '|' which will be used to
22937 draw channels. Unrecognized or missing colors will be replaced
22938 by white color.
22939 @end table
22940
22941 @section adrawgraph
22942 Draw a graph using input audio metadata.
22943
22944 See @ref{drawgraph}
22945
22946 @section agraphmonitor
22947
22948 See @ref{graphmonitor}.
22949
22950 @section ahistogram
22951
22952 Convert input audio to a video output, displaying the volume histogram.
22953
22954 The filter accepts the following options:
22955
22956 @table @option
22957 @item dmode
22958 Specify how histogram is calculated.
22959
22960 It accepts the following values:
22961 @table @samp
22962 @item single
22963 Use single histogram for all channels.
22964 @item separate
22965 Use separate histogram for each channel.
22966 @end table
22967 Default is @code{single}.
22968
22969 @item rate, r
22970 Set frame rate, expressed as number of frames per second. Default
22971 value is "25".
22972
22973 @item size, s
22974 Specify the video size for the output. For the syntax of this option, check the
22975 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
22976 Default value is @code{hd720}.
22977
22978 @item scale
22979 Set display scale.
22980
22981 It accepts the following values:
22982 @table @samp
22983 @item log
22984 logarithmic
22985 @item sqrt
22986 square root
22987 @item cbrt
22988 cubic root
22989 @item lin
22990 linear
22991 @item rlog
22992 reverse logarithmic
22993 @end table
22994 Default is @code{log}.
22995
22996 @item ascale
22997 Set amplitude scale.
22998
22999 It accepts the following values:
23000 @table @samp
23001 @item log
23002 logarithmic
23003 @item lin
23004 linear
23005 @end table
23006 Default is @code{log}.
23007
23008 @item acount
23009 Set how much frames to accumulate in histogram.
23010 Default is 1. Setting this to -1 accumulates all frames.
23011
23012 @item rheight
23013 Set histogram ratio of window height.
23014
23015 @item slide
23016 Set sonogram sliding.
23017
23018 It accepts the following values:
23019 @table @samp
23020 @item replace
23021 replace old rows with new ones.
23022 @item scroll
23023 scroll from top to bottom.
23024 @end table
23025 Default is @code{replace}.
23026 @end table
23027
23028 @section aphasemeter
23029
23030 Measures phase of input audio, which is exported as metadata @code{lavfi.aphasemeter.phase},
23031 representing mean phase of current audio frame. A video output can also be produced and is
23032 enabled by default. The audio is passed through as first output.
23033
23034 Audio will be rematrixed to stereo if it has a different channel layout. Phase value is in
23035 range @code{[-1, 1]} where @code{-1} means left and right channels are completely out of phase
23036 and @code{1} means channels are in phase.
23037
23038 The filter accepts the following options, all related to its video output:
23039
23040 @table @option
23041 @item rate, r
23042 Set the output frame rate. Default value is @code{25}.
23043
23044 @item size, s
23045 Set the video size for the output. For the syntax of this option, check the
23046 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
23047 Default value is @code{800x400}.
23048
23049 @item rc
23050 @item gc
23051 @item bc
23052 Specify the red, green, blue contrast. Default values are @code{2},
23053 @code{7} and @code{1}.
23054 Allowed range is @code{[0, 255]}.
23055
23056 @item mpc
23057 Set color which will be used for drawing median phase. If color is
23058 @code{none} which is default, no median phase value will be drawn.
23059
23060 @item video
23061 Enable video output. Default is enabled.
23062 @end table
23063
23064 @section avectorscope
23065
23066 Convert input audio to a video output, representing the audio vector
23067 scope.
23068
23069 The filter is used to measure the difference between channels of stereo
23070 audio stream. A monaural signal, consisting of identical left and right
23071 signal, results in straight vertical line. Any stereo separation is visible
23072 as a deviation from this line, creating a Lissajous figure.
23073 If the straight (or deviation from it) but horizontal line appears this
23074 indicates that the left and right channels are out of phase.
23075
23076 The filter accepts the following options:
23077
23078 @table @option
23079 @item mode, m
23080 Set the vectorscope mode.
23081
23082 Available values are:
23083 @table @samp
23084 @item lissajous
23085 Lissajous rotated by 45 degrees.
23086
23087 @item lissajous_xy
23088 Same as above but not rotated.
23089
23090 @item polar
23091 Shape resembling half of circle.
23092 @end table
23093
23094 Default value is @samp{lissajous}.
23095
23096 @item size, s
23097 Set the video size for the output. For the syntax of this option, check the
23098 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
23099 Default value is @code{400x400}.
23100
23101 @item rate, r
23102 Set the output frame rate. Default value is @code{25}.
23103
23104 @item rc
23105 @item gc
23106 @item bc
23107 @item ac
23108 Specify the red, green, blue and alpha contrast. Default values are @code{40},
23109 @code{160}, @code{80} and @code{255}.
23110 Allowed range is @code{[0, 255]}.
23111
23112 @item rf
23113 @item gf
23114 @item bf
23115 @item af
23116 Specify the red, green, blue and alpha fade. Default values are @code{15},
23117 @code{10}, @code{5} and @code{5}.
23118 Allowed range is @code{[0, 255]}.
23119
23120 @item zoom
23121 Set the zoom factor. Default value is @code{1}. Allowed range is @code{[0, 10]}.
23122 Values lower than @var{1} will auto adjust zoom factor to maximal possible value.
23123
23124 @item draw
23125 Set the vectorscope drawing mode.
23126
23127 Available values are:
23128 @table @samp
23129 @item dot
23130 Draw dot for each sample.
23131
23132 @item line
23133 Draw line between previous and current sample.
23134 @end table
23135
23136 Default value is @samp{dot}.
23137
23138 @item scale
23139 Specify amplitude scale of audio samples.
23140
23141 Available values are:
23142 @table @samp
23143 @item lin
23144 Linear.
23145
23146 @item sqrt
23147 Square root.
23148
23149 @item cbrt
23150 Cubic root.
23151
23152 @item log
23153 Logarithmic.
23154 @end table
23155
23156 @item swap
23157 Swap left channel axis with right channel axis.
23158
23159 @item mirror
23160 Mirror axis.
23161
23162 @table @samp
23163 @item none
23164 No mirror.
23165
23166 @item x
23167 Mirror only x axis.
23168
23169 @item y
23170 Mirror only y axis.
23171
23172 @item xy
23173 Mirror both axis.
23174 @end table
23175
23176 @end table
23177
23178 @subsection Examples
23179
23180 @itemize
23181 @item
23182 Complete example using @command{ffplay}:
23183 @example
23184 ffplay -f lavfi 'amovie=input.mp3, asplit [a][out1];
23185              [a] avectorscope=zoom=1.3:rc=2:gc=200:bc=10:rf=1:gf=8:bf=7 [out0]'
23186 @end example
23187 @end itemize
23188
23189 @section bench, abench
23190
23191 Benchmark part of a filtergraph.
23192
23193 The filter accepts the following options:
23194
23195 @table @option
23196 @item action
23197 Start or stop a timer.
23198
23199 Available values are:
23200 @table @samp
23201 @item start
23202 Get the current time, set it as frame metadata (using the key
23203 @code{lavfi.bench.start_time}), and forward the frame to the next filter.
23204
23205 @item stop
23206 Get the current time and fetch the @code{lavfi.bench.start_time} metadata from
23207 the input frame metadata to get the time difference. Time difference, average,
23208 maximum and minimum time (respectively @code{t}, @code{avg}, @code{max} and
23209 @code{min}) are then printed. The timestamps are expressed in seconds.
23210 @end table
23211 @end table
23212
23213 @subsection Examples
23214
23215 @itemize
23216 @item
23217 Benchmark @ref{selectivecolor} filter:
23218 @example
23219 bench=start,selectivecolor=reds=-.2 .12 -.49,bench=stop
23220 @end example
23221 @end itemize
23222
23223 @section concat
23224
23225 Concatenate audio and video streams, joining them together one after the
23226 other.
23227
23228 The filter works on segments of synchronized video and audio streams. All
23229 segments must have the same number of streams of each type, and that will
23230 also be the number of streams at output.
23231
23232 The filter accepts the following options:
23233
23234 @table @option
23235
23236 @item n
23237 Set the number of segments. Default is 2.
23238
23239 @item v
23240 Set the number of output video streams, that is also the number of video
23241 streams in each segment. Default is 1.
23242
23243 @item a
23244 Set the number of output audio streams, that is also the number of audio
23245 streams in each segment. Default is 0.
23246
23247 @item unsafe
23248 Activate unsafe mode: do not fail if segments have a different format.
23249
23250 @end table
23251
23252 The filter has @var{v}+@var{a} outputs: first @var{v} video outputs, then
23253 @var{a} audio outputs.
23254
23255 There are @var{n}x(@var{v}+@var{a}) inputs: first the inputs for the first
23256 segment, in the same order as the outputs, then the inputs for the second
23257 segment, etc.
23258
23259 Related streams do not always have exactly the same duration, for various
23260 reasons including codec frame size or sloppy authoring. For that reason,
23261 related synchronized streams (e.g. a video and its audio track) should be
23262 concatenated at once. The concat filter will use the duration of the longest
23263 stream in each segment (except the last one), and if necessary pad shorter
23264 audio streams with silence.
23265
23266 For this filter to work correctly, all segments must start at timestamp 0.
23267
23268 All corresponding streams must have the same parameters in all segments; the
23269 filtering system will automatically select a common pixel format for video
23270 streams, and a common sample format, sample rate and channel layout for
23271 audio streams, but other settings, such as resolution, must be converted
23272 explicitly by the user.
23273
23274 Different frame rates are acceptable but will result in variable frame rate
23275 at output; be sure to configure the output file to handle it.
23276
23277 @subsection Examples
23278
23279 @itemize
23280 @item
23281 Concatenate an opening, an episode and an ending, all in bilingual version
23282 (video in stream 0, audio in streams 1 and 2):
23283 @example
23284 ffmpeg -i opening.mkv -i episode.mkv -i ending.mkv -filter_complex \
23285   '[0:0] [0:1] [0:2] [1:0] [1:1] [1:2] [2:0] [2:1] [2:2]
23286    concat=n=3:v=1:a=2 [v] [a1] [a2]' \
23287   -map '[v]' -map '[a1]' -map '[a2]' output.mkv
23288 @end example
23289
23290 @item
23291 Concatenate two parts, handling audio and video separately, using the
23292 (a)movie sources, and adjusting the resolution:
23293 @example
23294 movie=part1.mp4, scale=512:288 [v1] ; amovie=part1.mp4 [a1] ;
23295 movie=part2.mp4, scale=512:288 [v2] ; amovie=part2.mp4 [a2] ;
23296 [v1] [v2] concat [outv] ; [a1] [a2] concat=v=0:a=1 [outa]
23297 @end example
23298 Note that a desync will happen at the stitch if the audio and video streams
23299 do not have exactly the same duration in the first file.
23300
23301 @end itemize
23302
23303 @subsection Commands
23304
23305 This filter supports the following commands:
23306 @table @option
23307 @item next
23308 Close the current segment and step to the next one
23309 @end table
23310
23311 @anchor{ebur128}
23312 @section ebur128
23313
23314 EBU R128 scanner filter. This filter takes an audio stream and analyzes its loudness
23315 level. By default, it logs a message at a frequency of 10Hz with the
23316 Momentary loudness (identified by @code{M}), Short-term loudness (@code{S}),
23317 Integrated loudness (@code{I}) and Loudness Range (@code{LRA}).
23318
23319 The filter can only analyze streams which have a sampling rate of 48000 Hz and whose
23320 sample format is double-precision floating point. The input stream will be converted to
23321 this specification, if needed. Users may need to insert aformat and/or aresample filters
23322 after this filter to obtain the original parameters.
23323
23324 The filter also has a video output (see the @var{video} option) with a real
23325 time graph to observe the loudness evolution. The graphic contains the logged
23326 message mentioned above, so it is not printed anymore when this option is set,
23327 unless the verbose logging is set. The main graphing area contains the
23328 short-term loudness (3 seconds of analysis), and the gauge on the right is for
23329 the momentary loudness (400 milliseconds), but can optionally be configured
23330 to instead display short-term loudness (see @var{gauge}).
23331
23332 The green area marks a  +/- 1LU target range around the target loudness
23333 (-23LUFS by default, unless modified through @var{target}).
23334
23335 More information about the Loudness Recommendation EBU R128 on
23336 @url{http://tech.ebu.ch/loudness}.
23337
23338 The filter accepts the following options:
23339
23340 @table @option
23341
23342 @item video
23343 Activate the video output. The audio stream is passed unchanged whether this
23344 option is set or no. The video stream will be the first output stream if
23345 activated. Default is @code{0}.
23346
23347 @item size
23348 Set the video size. This option is for video only. For the syntax of this
23349 option, check the
23350 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
23351 Default and minimum resolution is @code{640x480}.
23352
23353 @item meter
23354 Set the EBU scale meter. Default is @code{9}. Common values are @code{9} and
23355 @code{18}, respectively for EBU scale meter +9 and EBU scale meter +18. Any
23356 other integer value between this range is allowed.
23357
23358 @item metadata
23359 Set metadata injection. If set to @code{1}, the audio input will be segmented
23360 into 100ms output frames, each of them containing various loudness information
23361 in metadata.  All the metadata keys are prefixed with @code{lavfi.r128.}.
23362
23363 Default is @code{0}.
23364
23365 @item framelog
23366 Force the frame logging level.
23367
23368 Available values are:
23369 @table @samp
23370 @item info
23371 information logging level
23372 @item verbose
23373 verbose logging level
23374 @end table
23375
23376 By default, the logging level is set to @var{info}. If the @option{video} or
23377 the @option{metadata} options are set, it switches to @var{verbose}.
23378
23379 @item peak
23380 Set peak mode(s).
23381
23382 Available modes can be cumulated (the option is a @code{flag} type). Possible
23383 values are:
23384 @table @samp
23385 @item none
23386 Disable any peak mode (default).
23387 @item sample
23388 Enable sample-peak mode.
23389
23390 Simple peak mode looking for the higher sample value. It logs a message
23391 for sample-peak (identified by @code{SPK}).
23392 @item true
23393 Enable true-peak mode.
23394
23395 If enabled, the peak lookup is done on an over-sampled version of the input
23396 stream for better peak accuracy. It logs a message for true-peak.
23397 (identified by @code{TPK}) and true-peak per frame (identified by @code{FTPK}).
23398 This mode requires a build with @code{libswresample}.
23399 @end table
23400
23401 @item dualmono
23402 Treat mono input files as "dual mono". If a mono file is intended for playback
23403 on a stereo system, its EBU R128 measurement will be perceptually incorrect.
23404 If set to @code{true}, this option will compensate for this effect.
23405 Multi-channel input files are not affected by this option.
23406
23407 @item panlaw
23408 Set a specific pan law to be used for the measurement of dual mono files.
23409 This parameter is optional, and has a default value of -3.01dB.
23410
23411 @item target
23412 Set a specific target level (in LUFS) used as relative zero in the visualization.
23413 This parameter is optional and has a default value of -23LUFS as specified
23414 by EBU R128. However, material published online may prefer a level of -16LUFS
23415 (e.g. for use with podcasts or video platforms).
23416
23417 @item gauge
23418 Set the value displayed by the gauge. Valid values are @code{momentary} and s
23419 @code{shortterm}. By default the momentary value will be used, but in certain
23420 scenarios it may be more useful to observe the short term value instead (e.g.
23421 live mixing).
23422
23423 @item scale
23424 Sets the display scale for the loudness. Valid parameters are @code{absolute}
23425 (in LUFS) or @code{relative} (LU) relative to the target. This only affects the
23426 video output, not the summary or continuous log output.
23427 @end table
23428
23429 @subsection Examples
23430
23431 @itemize
23432 @item
23433 Real-time graph using @command{ffplay}, with a EBU scale meter +18:
23434 @example
23435 ffplay -f lavfi -i "amovie=input.mp3,ebur128=video=1:meter=18 [out0][out1]"
23436 @end example
23437
23438 @item
23439 Run an analysis with @command{ffmpeg}:
23440 @example
23441 ffmpeg -nostats -i input.mp3 -filter_complex ebur128 -f null -
23442 @end example
23443 @end itemize
23444
23445 @section interleave, ainterleave
23446
23447 Temporally interleave frames from several inputs.
23448
23449 @code{interleave} works with video inputs, @code{ainterleave} with audio.
23450
23451 These filters read frames from several inputs and send the oldest
23452 queued frame to the output.
23453
23454 Input streams must have well defined, monotonically increasing frame
23455 timestamp values.
23456
23457 In order to submit one frame to output, these filters need to enqueue
23458 at least one frame for each input, so they cannot work in case one
23459 input is not yet terminated and will not receive incoming frames.
23460
23461 For example consider the case when one input is a @code{select} filter
23462 which always drops input frames. The @code{interleave} filter will keep
23463 reading from that input, but it will never be able to send new frames
23464 to output until the input sends an end-of-stream signal.
23465
23466 Also, depending on inputs synchronization, the filters will drop
23467 frames in case one input receives more frames than the other ones, and
23468 the queue is already filled.
23469
23470 These filters accept the following options:
23471
23472 @table @option
23473 @item nb_inputs, n
23474 Set the number of different inputs, it is 2 by default.
23475
23476 @item duration
23477 How to determine the end-of-stream.
23478
23479 @table @option
23480 @item longest
23481 The duration of the longest input. (default)
23482
23483 @item shortest
23484 The duration of the shortest input.
23485
23486 @item first
23487 The duration of the first input.
23488 @end table
23489
23490 @end table
23491
23492 @subsection Examples
23493
23494 @itemize
23495 @item
23496 Interleave frames belonging to different streams using @command{ffmpeg}:
23497 @example
23498 ffmpeg -i bambi.avi -i pr0n.mkv -filter_complex "[0:v][1:v] interleave" out.avi
23499 @end example
23500
23501 @item
23502 Add flickering blur effect:
23503 @example
23504 select='if(gt(random(0), 0.2), 1, 2)':n=2 [tmp], boxblur=2:2, [tmp] interleave
23505 @end example
23506 @end itemize
23507
23508 @section metadata, ametadata
23509
23510 Manipulate frame metadata.
23511
23512 This filter accepts the following options:
23513
23514 @table @option
23515 @item mode
23516 Set mode of operation of the filter.
23517
23518 Can be one of the following:
23519
23520 @table @samp
23521 @item select
23522 If both @code{value} and @code{key} is set, select frames
23523 which have such metadata. If only @code{key} is set, select
23524 every frame that has such key in metadata.
23525
23526 @item add
23527 Add new metadata @code{key} and @code{value}. If key is already available
23528 do nothing.
23529
23530 @item modify
23531 Modify value of already present key.
23532
23533 @item delete
23534 If @code{value} is set, delete only keys that have such value.
23535 Otherwise, delete key. If @code{key} is not set, delete all metadata values in
23536 the frame.
23537
23538 @item print
23539 Print key and its value if metadata was found. If @code{key} is not set print all
23540 metadata values available in frame.
23541 @end table
23542
23543 @item key
23544 Set key used with all modes. Must be set for all modes except @code{print} and @code{delete}.
23545
23546 @item value
23547 Set metadata value which will be used. This option is mandatory for
23548 @code{modify} and @code{add} mode.
23549
23550 @item function
23551 Which function to use when comparing metadata value and @code{value}.
23552
23553 Can be one of following:
23554
23555 @table @samp
23556 @item same_str
23557 Values are interpreted as strings, returns true if metadata value is same as @code{value}.
23558
23559 @item starts_with
23560 Values are interpreted as strings, returns true if metadata value starts with
23561 the @code{value} option string.
23562
23563 @item less
23564 Values are interpreted as floats, returns true if metadata value is less than @code{value}.
23565
23566 @item equal
23567 Values are interpreted as floats, returns true if @code{value} is equal with metadata value.
23568
23569 @item greater
23570 Values are interpreted as floats, returns true if metadata value is greater than @code{value}.
23571
23572 @item expr
23573 Values are interpreted as floats, returns true if expression from option @code{expr}
23574 evaluates to true.
23575
23576 @item ends_with
23577 Values are interpreted as strings, returns true if metadata value ends with
23578 the @code{value} option string.
23579 @end table
23580
23581 @item expr
23582 Set expression which is used when @code{function} is set to @code{expr}.
23583 The expression is evaluated through the eval API and can contain the following
23584 constants:
23585
23586 @table @option
23587 @item VALUE1
23588 Float representation of @code{value} from metadata key.
23589
23590 @item VALUE2
23591 Float representation of @code{value} as supplied by user in @code{value} option.
23592 @end table
23593
23594 @item file
23595 If specified in @code{print} mode, output is written to the named file. Instead of
23596 plain filename any writable url can be specified. Filename ``-'' is a shorthand
23597 for standard output. If @code{file} option is not set, output is written to the log
23598 with AV_LOG_INFO loglevel.
23599
23600 @item direct
23601 Reduces buffering in print mode when output is written to a URL set using @var{file}.
23602
23603 @end table
23604
23605 @subsection Examples
23606
23607 @itemize
23608 @item
23609 Print all metadata values for frames with key @code{lavfi.signalstats.YDIF} with values
23610 between 0 and 1.
23611 @example
23612 signalstats,metadata=print:key=lavfi.signalstats.YDIF:value=0:function=expr:expr='between(VALUE1,0,1)'
23613 @end example
23614 @item
23615 Print silencedetect output to file @file{metadata.txt}.
23616 @example
23617 silencedetect,ametadata=mode=print:file=metadata.txt
23618 @end example
23619 @item
23620 Direct all metadata to a pipe with file descriptor 4.
23621 @example
23622 metadata=mode=print:file='pipe\:4'
23623 @end example
23624 @end itemize
23625
23626 @section perms, aperms
23627
23628 Set read/write permissions for the output frames.
23629
23630 These filters are mainly aimed at developers to test direct path in the
23631 following filter in the filtergraph.
23632
23633 The filters accept the following options:
23634
23635 @table @option
23636 @item mode
23637 Select the permissions mode.
23638
23639 It accepts the following values:
23640 @table @samp
23641 @item none
23642 Do nothing. This is the default.
23643 @item ro
23644 Set all the output frames read-only.
23645 @item rw
23646 Set all the output frames directly writable.
23647 @item toggle
23648 Make the frame read-only if writable, and writable if read-only.
23649 @item random
23650 Set each output frame read-only or writable randomly.
23651 @end table
23652
23653 @item seed
23654 Set the seed for the @var{random} mode, must be an integer included between
23655 @code{0} and @code{UINT32_MAX}. If not specified, or if explicitly set to
23656 @code{-1}, the filter will try to use a good random seed on a best effort
23657 basis.
23658 @end table
23659
23660 Note: in case of auto-inserted filter between the permission filter and the
23661 following one, the permission might not be received as expected in that
23662 following filter. Inserting a @ref{format} or @ref{aformat} filter before the
23663 perms/aperms filter can avoid this problem.
23664
23665 @section realtime, arealtime
23666
23667 Slow down filtering to match real time approximately.
23668
23669 These filters will pause the filtering for a variable amount of time to
23670 match the output rate with the input timestamps.
23671 They are similar to the @option{re} option to @code{ffmpeg}.
23672
23673 They accept the following options:
23674
23675 @table @option
23676 @item limit
23677 Time limit for the pauses. Any pause longer than that will be considered
23678 a timestamp discontinuity and reset the timer. Default is 2 seconds.
23679 @item speed
23680 Speed factor for processing. The value must be a float larger than zero.
23681 Values larger than 1.0 will result in faster than realtime processing,
23682 smaller will slow processing down. The @var{limit} is automatically adapted
23683 accordingly. Default is 1.0.
23684
23685 A processing speed faster than what is possible without these filters cannot
23686 be achieved.
23687 @end table
23688
23689 @anchor{select}
23690 @section select, aselect
23691
23692 Select frames to pass in output.
23693
23694 This filter accepts the following options:
23695
23696 @table @option
23697
23698 @item expr, e
23699 Set expression, which is evaluated for each input frame.
23700
23701 If the expression is evaluated to zero, the frame is discarded.
23702
23703 If the evaluation result is negative or NaN, the frame is sent to the
23704 first output; otherwise it is sent to the output with index
23705 @code{ceil(val)-1}, assuming that the input index starts from 0.
23706
23707 For example a value of @code{1.2} corresponds to the output with index
23708 @code{ceil(1.2)-1 = 2-1 = 1}, that is the second output.
23709
23710 @item outputs, n
23711 Set the number of outputs. The output to which to send the selected
23712 frame is based on the result of the evaluation. Default value is 1.
23713 @end table
23714
23715 The expression can contain the following constants:
23716
23717 @table @option
23718 @item n
23719 The (sequential) number of the filtered frame, starting from 0.
23720
23721 @item selected_n
23722 The (sequential) number of the selected frame, starting from 0.
23723
23724 @item prev_selected_n
23725 The sequential number of the last selected frame. It's NAN if undefined.
23726
23727 @item TB
23728 The timebase of the input timestamps.
23729
23730 @item pts
23731 The PTS (Presentation TimeStamp) of the filtered video frame,
23732 expressed in @var{TB} units. It's NAN if undefined.
23733
23734 @item t
23735 The PTS of the filtered video frame,
23736 expressed in seconds. It's NAN if undefined.
23737
23738 @item prev_pts
23739 The PTS of the previously filtered video frame. It's NAN if undefined.
23740
23741 @item prev_selected_pts
23742 The PTS of the last previously filtered video frame. It's NAN if undefined.
23743
23744 @item prev_selected_t
23745 The PTS of the last previously selected video frame, expressed in seconds. It's NAN if undefined.
23746
23747 @item start_pts
23748 The PTS of the first video frame in the video. It's NAN if undefined.
23749
23750 @item start_t
23751 The time of the first video frame in the video. It's NAN if undefined.
23752
23753 @item pict_type @emph{(video only)}
23754 The type of the filtered frame. It can assume one of the following
23755 values:
23756 @table @option
23757 @item I
23758 @item P
23759 @item B
23760 @item S
23761 @item SI
23762 @item SP
23763 @item BI
23764 @end table
23765
23766 @item interlace_type @emph{(video only)}
23767 The frame interlace type. It can assume one of the following values:
23768 @table @option
23769 @item PROGRESSIVE
23770 The frame is progressive (not interlaced).
23771 @item TOPFIRST
23772 The frame is top-field-first.
23773 @item BOTTOMFIRST
23774 The frame is bottom-field-first.
23775 @end table
23776
23777 @item consumed_sample_n @emph{(audio only)}
23778 the number of selected samples before the current frame
23779
23780 @item samples_n @emph{(audio only)}
23781 the number of samples in the current frame
23782
23783 @item sample_rate @emph{(audio only)}
23784 the input sample rate
23785
23786 @item key
23787 This is 1 if the filtered frame is a key-frame, 0 otherwise.
23788
23789 @item pos
23790 the position in the file of the filtered frame, -1 if the information
23791 is not available (e.g. for synthetic video)
23792
23793 @item scene @emph{(video only)}
23794 value between 0 and 1 to indicate a new scene; a low value reflects a low
23795 probability for the current frame to introduce a new scene, while a higher
23796 value means the current frame is more likely to be one (see the example below)
23797
23798 @item concatdec_select
23799 The concat demuxer can select only part of a concat input file by setting an
23800 inpoint and an outpoint, but the output packets may not be entirely contained
23801 in the selected interval. By using this variable, it is possible to skip frames
23802 generated by the concat demuxer which are not exactly contained in the selected
23803 interval.
23804
23805 This works by comparing the frame pts against the @var{lavf.concat.start_time}
23806 and the @var{lavf.concat.duration} packet metadata values which are also
23807 present in the decoded frames.
23808
23809 The @var{concatdec_select} variable is -1 if the frame pts is at least
23810 start_time and either the duration metadata is missing or the frame pts is less
23811 than start_time + duration, 0 otherwise, and NaN if the start_time metadata is
23812 missing.
23813
23814 That basically means that an input frame is selected if its pts is within the
23815 interval set by the concat demuxer.
23816
23817 @end table
23818
23819 The default value of the select expression is "1".
23820
23821 @subsection Examples
23822
23823 @itemize
23824 @item
23825 Select all frames in input:
23826 @example
23827 select
23828 @end example
23829
23830 The example above is the same as:
23831 @example
23832 select=1
23833 @end example
23834
23835 @item
23836 Skip all frames:
23837 @example
23838 select=0
23839 @end example
23840
23841 @item
23842 Select only I-frames:
23843 @example
23844 select='eq(pict_type\,I)'
23845 @end example
23846
23847 @item
23848 Select one frame every 100:
23849 @example
23850 select='not(mod(n\,100))'
23851 @end example
23852
23853 @item
23854 Select only frames contained in the 10-20 time interval:
23855 @example
23856 select=between(t\,10\,20)
23857 @end example
23858
23859 @item
23860 Select only I-frames contained in the 10-20 time interval:
23861 @example
23862 select=between(t\,10\,20)*eq(pict_type\,I)
23863 @end example
23864
23865 @item
23866 Select frames with a minimum distance of 10 seconds:
23867 @example
23868 select='isnan(prev_selected_t)+gte(t-prev_selected_t\,10)'
23869 @end example
23870
23871 @item
23872 Use aselect to select only audio frames with samples number > 100:
23873 @example
23874 aselect='gt(samples_n\,100)'
23875 @end example
23876
23877 @item
23878 Create a mosaic of the first scenes:
23879 @example
23880 ffmpeg -i video.avi -vf select='gt(scene\,0.4)',scale=160:120,tile -frames:v 1 preview.png
23881 @end example
23882
23883 Comparing @var{scene} against a value between 0.3 and 0.5 is generally a sane
23884 choice.
23885
23886 @item
23887 Send even and odd frames to separate outputs, and compose them:
23888 @example
23889 select=n=2:e='mod(n, 2)+1' [odd][even]; [odd] pad=h=2*ih [tmp]; [tmp][even] overlay=y=h
23890 @end example
23891
23892 @item
23893 Select useful frames from an ffconcat file which is using inpoints and
23894 outpoints but where the source files are not intra frame only.
23895 @example
23896 ffmpeg -copyts -vsync 0 -segment_time_metadata 1 -i input.ffconcat -vf select=concatdec_select -af aselect=concatdec_select output.avi
23897 @end example
23898 @end itemize
23899
23900 @section sendcmd, asendcmd
23901
23902 Send commands to filters in the filtergraph.
23903
23904 These filters read commands to be sent to other filters in the
23905 filtergraph.
23906
23907 @code{sendcmd} must be inserted between two video filters,
23908 @code{asendcmd} must be inserted between two audio filters, but apart
23909 from that they act the same way.
23910
23911 The specification of commands can be provided in the filter arguments
23912 with the @var{commands} option, or in a file specified by the
23913 @var{filename} option.
23914
23915 These filters accept the following options:
23916 @table @option
23917 @item commands, c
23918 Set the commands to be read and sent to the other filters.
23919 @item filename, f
23920 Set the filename of the commands to be read and sent to the other
23921 filters.
23922 @end table
23923
23924 @subsection Commands syntax
23925
23926 A commands description consists of a sequence of interval
23927 specifications, comprising a list of commands to be executed when a
23928 particular event related to that interval occurs. The occurring event
23929 is typically the current frame time entering or leaving a given time
23930 interval.
23931
23932 An interval is specified by the following syntax:
23933 @example
23934 @var{START}[-@var{END}] @var{COMMANDS};
23935 @end example
23936
23937 The time interval is specified by the @var{START} and @var{END} times.
23938 @var{END} is optional and defaults to the maximum time.
23939
23940 The current frame time is considered within the specified interval if
23941 it is included in the interval [@var{START}, @var{END}), that is when
23942 the time is greater or equal to @var{START} and is lesser than
23943 @var{END}.
23944
23945 @var{COMMANDS} consists of a sequence of one or more command
23946 specifications, separated by ",", relating to that interval.  The
23947 syntax of a command specification is given by:
23948 @example
23949 [@var{FLAGS}] @var{TARGET} @var{COMMAND} @var{ARG}
23950 @end example
23951
23952 @var{FLAGS} is optional and specifies the type of events relating to
23953 the time interval which enable sending the specified command, and must
23954 be a non-null sequence of identifier flags separated by "+" or "|" and
23955 enclosed between "[" and "]".
23956
23957 The following flags are recognized:
23958 @table @option
23959 @item enter
23960 The command is sent when the current frame timestamp enters the
23961 specified interval. In other words, the command is sent when the
23962 previous frame timestamp was not in the given interval, and the
23963 current is.
23964
23965 @item leave
23966 The command is sent when the current frame timestamp leaves the
23967 specified interval. In other words, the command is sent when the
23968 previous frame timestamp was in the given interval, and the
23969 current is not.
23970
23971 @item expr
23972 The command @var{ARG} is interpreted as expression and result of
23973 expression is passed as @var{ARG}.
23974
23975 The expression is evaluated through the eval API and can contain the following
23976 constants:
23977
23978 @table @option
23979 @item POS
23980 Original position in the file of the frame, or undefined if undefined
23981 for the current frame.
23982
23983 @item PTS
23984 The presentation timestamp in input.
23985
23986 @item N
23987 The count of the input frame for video or audio, starting from 0.
23988
23989 @item T
23990 The time in seconds of the current frame.
23991
23992 @item TS
23993 The start time in seconds of the current command interval.
23994
23995 @item TE
23996 The end time in seconds of the current command interval.
23997
23998 @item TI
23999 The interpolated time of the current command interval, TI = (T - TS) / (TE - TS).
24000 @end table
24001
24002 @end table
24003
24004 If @var{FLAGS} is not specified, a default value of @code{[enter]} is
24005 assumed.
24006
24007 @var{TARGET} specifies the target of the command, usually the name of
24008 the filter class or a specific filter instance name.
24009
24010 @var{COMMAND} specifies the name of the command for the target filter.
24011
24012 @var{ARG} is optional and specifies the optional list of argument for
24013 the given @var{COMMAND}.
24014
24015 Between one interval specification and another, whitespaces, or
24016 sequences of characters starting with @code{#} until the end of line,
24017 are ignored and can be used to annotate comments.
24018
24019 A simplified BNF description of the commands specification syntax
24020 follows:
24021 @example
24022 @var{COMMAND_FLAG}  ::= "enter" | "leave"
24023 @var{COMMAND_FLAGS} ::= @var{COMMAND_FLAG} [(+|"|")@var{COMMAND_FLAG}]
24024 @var{COMMAND}       ::= ["[" @var{COMMAND_FLAGS} "]"] @var{TARGET} @var{COMMAND} [@var{ARG}]
24025 @var{COMMANDS}      ::= @var{COMMAND} [,@var{COMMANDS}]
24026 @var{INTERVAL}      ::= @var{START}[-@var{END}] @var{COMMANDS}
24027 @var{INTERVALS}     ::= @var{INTERVAL}[;@var{INTERVALS}]
24028 @end example
24029
24030 @subsection Examples
24031
24032 @itemize
24033 @item
24034 Specify audio tempo change at second 4:
24035 @example
24036 asendcmd=c='4.0 atempo tempo 1.5',atempo
24037 @end example
24038
24039 @item
24040 Target a specific filter instance:
24041 @example
24042 asendcmd=c='4.0 atempo@@my tempo 1.5',atempo@@my
24043 @end example
24044
24045 @item
24046 Specify a list of drawtext and hue commands in a file.
24047 @example
24048 # show text in the interval 5-10
24049 5.0-10.0 [enter] drawtext reinit 'fontfile=FreeSerif.ttf:text=hello world',
24050          [leave] drawtext reinit 'fontfile=FreeSerif.ttf:text=';
24051
24052 # desaturate the image in the interval 15-20
24053 15.0-20.0 [enter] hue s 0,
24054           [enter] drawtext reinit 'fontfile=FreeSerif.ttf:text=nocolor',
24055           [leave] hue s 1,
24056           [leave] drawtext reinit 'fontfile=FreeSerif.ttf:text=color';
24057
24058 # apply an exponential saturation fade-out effect, starting from time 25
24059 25 [enter] hue s exp(25-t)
24060 @end example
24061
24062 A filtergraph allowing to read and process the above command list
24063 stored in a file @file{test.cmd}, can be specified with:
24064 @example
24065 sendcmd=f=test.cmd,drawtext=fontfile=FreeSerif.ttf:text='',hue
24066 @end example
24067 @end itemize
24068
24069 @anchor{setpts}
24070 @section setpts, asetpts
24071
24072 Change the PTS (presentation timestamp) of the input frames.
24073
24074 @code{setpts} works on video frames, @code{asetpts} on audio frames.
24075
24076 This filter accepts the following options:
24077
24078 @table @option
24079
24080 @item expr
24081 The expression which is evaluated for each frame to construct its timestamp.
24082
24083 @end table
24084
24085 The expression is evaluated through the eval API and can contain the following
24086 constants:
24087
24088 @table @option
24089 @item FRAME_RATE, FR
24090 frame rate, only defined for constant frame-rate video
24091
24092 @item PTS
24093 The presentation timestamp in input
24094
24095 @item N
24096 The count of the input frame for video or the number of consumed samples,
24097 not including the current frame for audio, starting from 0.
24098
24099 @item NB_CONSUMED_SAMPLES
24100 The number of consumed samples, not including the current frame (only
24101 audio)
24102
24103 @item NB_SAMPLES, S
24104 The number of samples in the current frame (only audio)
24105
24106 @item SAMPLE_RATE, SR
24107 The audio sample rate.
24108
24109 @item STARTPTS
24110 The PTS of the first frame.
24111
24112 @item STARTT
24113 the time in seconds of the first frame
24114
24115 @item INTERLACED
24116 State whether the current frame is interlaced.
24117
24118 @item T
24119 the time in seconds of the current frame
24120
24121 @item POS
24122 original position in the file of the frame, or undefined if undefined
24123 for the current frame
24124
24125 @item PREV_INPTS
24126 The previous input PTS.
24127
24128 @item PREV_INT
24129 previous input time in seconds
24130
24131 @item PREV_OUTPTS
24132 The previous output PTS.
24133
24134 @item PREV_OUTT
24135 previous output time in seconds
24136
24137 @item RTCTIME
24138 The wallclock (RTC) time in microseconds. This is deprecated, use time(0)
24139 instead.
24140
24141 @item RTCSTART
24142 The wallclock (RTC) time at the start of the movie in microseconds.
24143
24144 @item TB
24145 The timebase of the input timestamps.
24146
24147 @end table
24148
24149 @subsection Examples
24150
24151 @itemize
24152 @item
24153 Start counting PTS from zero
24154 @example
24155 setpts=PTS-STARTPTS
24156 @end example
24157
24158 @item
24159 Apply fast motion effect:
24160 @example
24161 setpts=0.5*PTS
24162 @end example
24163
24164 @item
24165 Apply slow motion effect:
24166 @example
24167 setpts=2.0*PTS
24168 @end example
24169
24170 @item
24171 Set fixed rate of 25 frames per second:
24172 @example
24173 setpts=N/(25*TB)
24174 @end example
24175
24176 @item
24177 Set fixed rate 25 fps with some jitter:
24178 @example
24179 setpts='1/(25*TB) * (N + 0.05 * sin(N*2*PI/25))'
24180 @end example
24181
24182 @item
24183 Apply an offset of 10 seconds to the input PTS:
24184 @example
24185 setpts=PTS+10/TB
24186 @end example
24187
24188 @item
24189 Generate timestamps from a "live source" and rebase onto the current timebase:
24190 @example
24191 setpts='(RTCTIME - RTCSTART) / (TB * 1000000)'
24192 @end example
24193
24194 @item
24195 Generate timestamps by counting samples:
24196 @example
24197 asetpts=N/SR/TB
24198 @end example
24199
24200 @end itemize
24201
24202 @section setrange
24203
24204 Force color range for the output video frame.
24205
24206 The @code{setrange} filter marks the color range property for the
24207 output frames. It does not change the input frame, but only sets the
24208 corresponding property, which affects how the frame is treated by
24209 following filters.
24210
24211 The filter accepts the following options:
24212
24213 @table @option
24214
24215 @item range
24216 Available values are:
24217
24218 @table @samp
24219 @item auto
24220 Keep the same color range property.
24221
24222 @item unspecified, unknown
24223 Set the color range as unspecified.
24224
24225 @item limited, tv, mpeg
24226 Set the color range as limited.
24227
24228 @item full, pc, jpeg
24229 Set the color range as full.
24230 @end table
24231 @end table
24232
24233 @section settb, asettb
24234
24235 Set the timebase to use for the output frames timestamps.
24236 It is mainly useful for testing timebase configuration.
24237
24238 It accepts the following parameters:
24239
24240 @table @option
24241
24242 @item expr, tb
24243 The expression which is evaluated into the output timebase.
24244
24245 @end table
24246
24247 The value for @option{tb} is an arithmetic expression representing a
24248 rational. The expression can contain the constants "AVTB" (the default
24249 timebase), "intb" (the input timebase) and "sr" (the sample rate,
24250 audio only). Default value is "intb".
24251
24252 @subsection Examples
24253
24254 @itemize
24255 @item
24256 Set the timebase to 1/25:
24257 @example
24258 settb=expr=1/25
24259 @end example
24260
24261 @item
24262 Set the timebase to 1/10:
24263 @example
24264 settb=expr=0.1
24265 @end example
24266
24267 @item
24268 Set the timebase to 1001/1000:
24269 @example
24270 settb=1+0.001
24271 @end example
24272
24273 @item
24274 Set the timebase to 2*intb:
24275 @example
24276 settb=2*intb
24277 @end example
24278
24279 @item
24280 Set the default timebase value:
24281 @example
24282 settb=AVTB
24283 @end example
24284 @end itemize
24285
24286 @section showcqt
24287 Convert input audio to a video output representing frequency spectrum
24288 logarithmically using Brown-Puckette constant Q transform algorithm with
24289 direct frequency domain coefficient calculation (but the transform itself
24290 is not really constant Q, instead the Q factor is actually variable/clamped),
24291 with musical tone scale, from E0 to D#10.
24292
24293 The filter accepts the following options:
24294
24295 @table @option
24296 @item size, s
24297 Specify the video size for the output. It must be even. For the syntax of this option,
24298 check the @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
24299 Default value is @code{1920x1080}.
24300
24301 @item fps, rate, r
24302 Set the output frame rate. Default value is @code{25}.
24303
24304 @item bar_h
24305 Set the bargraph height. It must be even. Default value is @code{-1} which
24306 computes the bargraph height automatically.
24307
24308 @item axis_h
24309 Set the axis height. It must be even. Default value is @code{-1} which computes
24310 the axis height automatically.
24311
24312 @item sono_h
24313 Set the sonogram height. It must be even. Default value is @code{-1} which
24314 computes the sonogram height automatically.
24315
24316 @item fullhd
24317 Set the fullhd resolution. This option is deprecated, use @var{size}, @var{s}
24318 instead. Default value is @code{1}.
24319
24320 @item sono_v, volume
24321 Specify the sonogram volume expression. It can contain variables:
24322 @table @option
24323 @item bar_v
24324 the @var{bar_v} evaluated expression
24325 @item frequency, freq, f
24326 the frequency where it is evaluated
24327 @item timeclamp, tc
24328 the value of @var{timeclamp} option
24329 @end table
24330 and functions:
24331 @table @option
24332 @item a_weighting(f)
24333 A-weighting of equal loudness
24334 @item b_weighting(f)
24335 B-weighting of equal loudness
24336 @item c_weighting(f)
24337 C-weighting of equal loudness.
24338 @end table
24339 Default value is @code{16}.
24340
24341 @item bar_v, volume2
24342 Specify the bargraph volume expression. It can contain variables:
24343 @table @option
24344 @item sono_v
24345 the @var{sono_v} evaluated expression
24346 @item frequency, freq, f
24347 the frequency where it is evaluated
24348 @item timeclamp, tc
24349 the value of @var{timeclamp} option
24350 @end table
24351 and functions:
24352 @table @option
24353 @item a_weighting(f)
24354 A-weighting of equal loudness
24355 @item b_weighting(f)
24356 B-weighting of equal loudness
24357 @item c_weighting(f)
24358 C-weighting of equal loudness.
24359 @end table
24360 Default value is @code{sono_v}.
24361
24362 @item sono_g, gamma
24363 Specify the sonogram gamma. Lower gamma makes the spectrum more contrast,
24364 higher gamma makes the spectrum having more range. Default value is @code{3}.
24365 Acceptable range is @code{[1, 7]}.
24366
24367 @item bar_g, gamma2
24368 Specify the bargraph gamma. Default value is @code{1}. Acceptable range is
24369 @code{[1, 7]}.
24370
24371 @item bar_t
24372 Specify the bargraph transparency level. Lower value makes the bargraph sharper.
24373 Default value is @code{1}. Acceptable range is @code{[0, 1]}.
24374
24375 @item timeclamp, tc
24376 Specify the transform timeclamp. At low frequency, there is trade-off between
24377 accuracy in time domain and frequency domain. If timeclamp is lower,
24378 event in time domain is represented more accurately (such as fast bass drum),
24379 otherwise event in frequency domain is represented more accurately
24380 (such as bass guitar). Acceptable range is @code{[0.002, 1]}. Default value is @code{0.17}.
24381
24382 @item attack
24383 Set attack time in seconds. The default is @code{0} (disabled). Otherwise, it
24384 limits future samples by applying asymmetric windowing in time domain, useful
24385 when low latency is required. Accepted range is @code{[0, 1]}.
24386
24387 @item basefreq
24388 Specify the transform base frequency. Default value is @code{20.01523126408007475},
24389 which is frequency 50 cents below E0. Acceptable range is @code{[10, 100000]}.
24390
24391 @item endfreq
24392 Specify the transform end frequency. Default value is @code{20495.59681441799654},
24393 which is frequency 50 cents above D#10. Acceptable range is @code{[10, 100000]}.
24394
24395 @item coeffclamp
24396 This option is deprecated and ignored.
24397
24398 @item tlength
24399 Specify the transform length in time domain. Use this option to control accuracy
24400 trade-off between time domain and frequency domain at every frequency sample.
24401 It can contain variables:
24402 @table @option
24403 @item frequency, freq, f
24404 the frequency where it is evaluated
24405 @item timeclamp, tc
24406 the value of @var{timeclamp} option.
24407 @end table
24408 Default value is @code{384*tc/(384+tc*f)}.
24409
24410 @item count
24411 Specify the transform count for every video frame. Default value is @code{6}.
24412 Acceptable range is @code{[1, 30]}.
24413
24414 @item fcount
24415 Specify the transform count for every single pixel. Default value is @code{0},
24416 which makes it computed automatically. Acceptable range is @code{[0, 10]}.
24417
24418 @item fontfile
24419 Specify font file for use with freetype to draw the axis. If not specified,
24420 use embedded font. Note that drawing with font file or embedded font is not
24421 implemented with custom @var{basefreq} and @var{endfreq}, use @var{axisfile}
24422 option instead.
24423
24424 @item font
24425 Specify fontconfig pattern. This has lower priority than @var{fontfile}. The
24426 @code{:} in the pattern may be replaced by @code{|} to avoid unnecessary
24427 escaping.
24428
24429 @item fontcolor
24430 Specify font color expression. This is arithmetic expression that should return
24431 integer value 0xRRGGBB. It can contain variables:
24432 @table @option
24433 @item frequency, freq, f
24434 the frequency where it is evaluated
24435 @item timeclamp, tc
24436 the value of @var{timeclamp} option
24437 @end table
24438 and functions:
24439 @table @option
24440 @item midi(f)
24441 midi number of frequency f, some midi numbers: E0(16), C1(24), C2(36), A4(69)
24442 @item r(x), g(x), b(x)
24443 red, green, and blue value of intensity x.
24444 @end table
24445 Default value is @code{st(0, (midi(f)-59.5)/12);
24446 st(1, if(between(ld(0),0,1), 0.5-0.5*cos(2*PI*ld(0)), 0));
24447 r(1-ld(1)) + b(ld(1))}.
24448
24449 @item axisfile
24450 Specify image file to draw the axis. This option override @var{fontfile} and
24451 @var{fontcolor} option.
24452
24453 @item axis, text
24454 Enable/disable drawing text to the axis. If it is set to @code{0}, drawing to
24455 the axis is disabled, ignoring @var{fontfile} and @var{axisfile} option.
24456 Default value is @code{1}.
24457
24458 @item csp
24459 Set colorspace. The accepted values are:
24460 @table @samp
24461 @item unspecified
24462 Unspecified (default)
24463
24464 @item bt709
24465 BT.709
24466
24467 @item fcc
24468 FCC
24469
24470 @item bt470bg
24471 BT.470BG or BT.601-6 625
24472
24473 @item smpte170m
24474 SMPTE-170M or BT.601-6 525
24475
24476 @item smpte240m
24477 SMPTE-240M
24478
24479 @item bt2020ncl
24480 BT.2020 with non-constant luminance
24481
24482 @end table
24483
24484 @item cscheme
24485 Set spectrogram color scheme. This is list of floating point values with format
24486 @code{left_r|left_g|left_b|right_r|right_g|right_b}.
24487 The default is @code{1|0.5|0|0|0.5|1}.
24488
24489 @end table
24490
24491 @subsection Examples
24492
24493 @itemize
24494 @item
24495 Playing audio while showing the spectrum:
24496 @example
24497 ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt [out0]'
24498 @end example
24499
24500 @item
24501 Same as above, but with frame rate 30 fps:
24502 @example
24503 ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt=fps=30:count=5 [out0]'
24504 @end example
24505
24506 @item
24507 Playing at 1280x720:
24508 @example
24509 ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt=s=1280x720:count=4 [out0]'
24510 @end example
24511
24512 @item
24513 Disable sonogram display:
24514 @example
24515 sono_h=0
24516 @end example
24517
24518 @item
24519 A1 and its harmonics: A1, A2, (near)E3, A3:
24520 @example
24521 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),
24522                  asplit[a][out1]; [a] showcqt [out0]'
24523 @end example
24524
24525 @item
24526 Same as above, but with more accuracy in frequency domain:
24527 @example
24528 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),
24529                  asplit[a][out1]; [a] showcqt=timeclamp=0.5 [out0]'
24530 @end example
24531
24532 @item
24533 Custom volume:
24534 @example
24535 bar_v=10:sono_v=bar_v*a_weighting(f)
24536 @end example
24537
24538 @item
24539 Custom gamma, now spectrum is linear to the amplitude.
24540 @example
24541 bar_g=2:sono_g=2
24542 @end example
24543
24544 @item
24545 Custom tlength equation:
24546 @example
24547 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)))'
24548 @end example
24549
24550 @item
24551 Custom fontcolor and fontfile, C-note is colored green, others are colored blue:
24552 @example
24553 fontcolor='if(mod(floor(midi(f)+0.5),12), 0x0000FF, g(1))':fontfile=myfont.ttf
24554 @end example
24555
24556 @item
24557 Custom font using fontconfig:
24558 @example
24559 font='Courier New,Monospace,mono|bold'
24560 @end example
24561
24562 @item
24563 Custom frequency range with custom axis using image file:
24564 @example
24565 axisfile=myaxis.png:basefreq=40:endfreq=10000
24566 @end example
24567 @end itemize
24568
24569 @section showfreqs
24570
24571 Convert input audio to video output representing the audio power spectrum.
24572 Audio amplitude is on Y-axis while frequency is on X-axis.
24573
24574 The filter accepts the following options:
24575
24576 @table @option
24577 @item size, s
24578 Specify size of video. For the syntax of this option, check the
24579 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
24580 Default is @code{1024x512}.
24581
24582 @item mode
24583 Set display mode.
24584 This set how each frequency bin will be represented.
24585
24586 It accepts the following values:
24587 @table @samp
24588 @item line
24589 @item bar
24590 @item dot
24591 @end table
24592 Default is @code{bar}.
24593
24594 @item ascale
24595 Set amplitude scale.
24596
24597 It accepts the following values:
24598 @table @samp
24599 @item lin
24600 Linear scale.
24601
24602 @item sqrt
24603 Square root scale.
24604
24605 @item cbrt
24606 Cubic root scale.
24607
24608 @item log
24609 Logarithmic scale.
24610 @end table
24611 Default is @code{log}.
24612
24613 @item fscale
24614 Set frequency scale.
24615
24616 It accepts the following values:
24617 @table @samp
24618 @item lin
24619 Linear scale.
24620
24621 @item log
24622 Logarithmic scale.
24623
24624 @item rlog
24625 Reverse logarithmic scale.
24626 @end table
24627 Default is @code{lin}.
24628
24629 @item win_size
24630 Set window size. Allowed range is from 16 to 65536.
24631
24632 Default is @code{2048}
24633
24634 @item win_func
24635 Set windowing function.
24636
24637 It accepts the following values:
24638 @table @samp
24639 @item rect
24640 @item bartlett
24641 @item hanning
24642 @item hamming
24643 @item blackman
24644 @item welch
24645 @item flattop
24646 @item bharris
24647 @item bnuttall
24648 @item bhann
24649 @item sine
24650 @item nuttall
24651 @item lanczos
24652 @item gauss
24653 @item tukey
24654 @item dolph
24655 @item cauchy
24656 @item parzen
24657 @item poisson
24658 @item bohman
24659 @end table
24660 Default is @code{hanning}.
24661
24662 @item overlap
24663 Set window overlap. In range @code{[0, 1]}. Default is @code{1},
24664 which means optimal overlap for selected window function will be picked.
24665
24666 @item averaging
24667 Set time averaging. Setting this to 0 will display current maximal peaks.
24668 Default is @code{1}, which means time averaging is disabled.
24669
24670 @item colors
24671 Specify list of colors separated by space or by '|' which will be used to
24672 draw channel frequencies. Unrecognized or missing colors will be replaced
24673 by white color.
24674
24675 @item cmode
24676 Set channel display mode.
24677
24678 It accepts the following values:
24679 @table @samp
24680 @item combined
24681 @item separate
24682 @end table
24683 Default is @code{combined}.
24684
24685 @item minamp
24686 Set minimum amplitude used in @code{log} amplitude scaler.
24687
24688 @end table
24689
24690 @section showspatial
24691
24692 Convert stereo input audio to a video output, representing the spatial relationship
24693 between two channels.
24694
24695 The filter accepts the following options:
24696
24697 @table @option
24698 @item size, s
24699 Specify the video size for the output. For the syntax of this option, check the
24700 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
24701 Default value is @code{512x512}.
24702
24703 @item win_size
24704 Set window size. Allowed range is from @var{1024} to @var{65536}. Default size is @var{4096}.
24705
24706 @item win_func
24707 Set window function.
24708
24709 It accepts the following values:
24710 @table @samp
24711 @item rect
24712 @item bartlett
24713 @item hann
24714 @item hanning
24715 @item hamming
24716 @item blackman
24717 @item welch
24718 @item flattop
24719 @item bharris
24720 @item bnuttall
24721 @item bhann
24722 @item sine
24723 @item nuttall
24724 @item lanczos
24725 @item gauss
24726 @item tukey
24727 @item dolph
24728 @item cauchy
24729 @item parzen
24730 @item poisson
24731 @item bohman
24732 @end table
24733
24734 Default value is @code{hann}.
24735
24736 @item overlap
24737 Set ratio of overlap window. Default value is @code{0.5}.
24738 When value is @code{1} overlap is set to recommended size for specific
24739 window function currently used.
24740 @end table
24741
24742 @anchor{showspectrum}
24743 @section showspectrum
24744
24745 Convert input audio to a video output, representing the audio frequency
24746 spectrum.
24747
24748 The filter accepts the following options:
24749
24750 @table @option
24751 @item size, s
24752 Specify the video size for the output. For the syntax of this option, check the
24753 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
24754 Default value is @code{640x512}.
24755
24756 @item slide
24757 Specify how the spectrum should slide along the window.
24758
24759 It accepts the following values:
24760 @table @samp
24761 @item replace
24762 the samples start again on the left when they reach the right
24763 @item scroll
24764 the samples scroll from right to left
24765 @item fullframe
24766 frames are only produced when the samples reach the right
24767 @item rscroll
24768 the samples scroll from left to right
24769 @end table
24770
24771 Default value is @code{replace}.
24772
24773 @item mode
24774 Specify display mode.
24775
24776 It accepts the following values:
24777 @table @samp
24778 @item combined
24779 all channels are displayed in the same row
24780 @item separate
24781 all channels are displayed in separate rows
24782 @end table
24783
24784 Default value is @samp{combined}.
24785
24786 @item color
24787 Specify display color mode.
24788
24789 It accepts the following values:
24790 @table @samp
24791 @item channel
24792 each channel is displayed in a separate color
24793 @item intensity
24794 each channel is displayed using the same color scheme
24795 @item rainbow
24796 each channel is displayed using the rainbow color scheme
24797 @item moreland
24798 each channel is displayed using the moreland color scheme
24799 @item nebulae
24800 each channel is displayed using the nebulae color scheme
24801 @item fire
24802 each channel is displayed using the fire color scheme
24803 @item fiery
24804 each channel is displayed using the fiery color scheme
24805 @item fruit
24806 each channel is displayed using the fruit color scheme
24807 @item cool
24808 each channel is displayed using the cool color scheme
24809 @item magma
24810 each channel is displayed using the magma color scheme
24811 @item green
24812 each channel is displayed using the green color scheme
24813 @item viridis
24814 each channel is displayed using the viridis color scheme
24815 @item plasma
24816 each channel is displayed using the plasma color scheme
24817 @item cividis
24818 each channel is displayed using the cividis color scheme
24819 @item terrain
24820 each channel is displayed using the terrain color scheme
24821 @end table
24822
24823 Default value is @samp{channel}.
24824
24825 @item scale
24826 Specify scale used for calculating intensity color values.
24827
24828 It accepts the following values:
24829 @table @samp
24830 @item lin
24831 linear
24832 @item sqrt
24833 square root, default
24834 @item cbrt
24835 cubic root
24836 @item log
24837 logarithmic
24838 @item 4thrt
24839 4th root
24840 @item 5thrt
24841 5th root
24842 @end table
24843
24844 Default value is @samp{sqrt}.
24845
24846 @item fscale
24847 Specify frequency scale.
24848
24849 It accepts the following values:
24850 @table @samp
24851 @item lin
24852 linear
24853 @item log
24854 logarithmic
24855 @end table
24856
24857 Default value is @samp{lin}.
24858
24859 @item saturation
24860 Set saturation modifier for displayed colors. Negative values provide
24861 alternative color scheme. @code{0} is no saturation at all.
24862 Saturation must be in [-10.0, 10.0] range.
24863 Default value is @code{1}.
24864
24865 @item win_func
24866 Set window function.
24867
24868 It accepts the following values:
24869 @table @samp
24870 @item rect
24871 @item bartlett
24872 @item hann
24873 @item hanning
24874 @item hamming
24875 @item blackman
24876 @item welch
24877 @item flattop
24878 @item bharris
24879 @item bnuttall
24880 @item bhann
24881 @item sine
24882 @item nuttall
24883 @item lanczos
24884 @item gauss
24885 @item tukey
24886 @item dolph
24887 @item cauchy
24888 @item parzen
24889 @item poisson
24890 @item bohman
24891 @end table
24892
24893 Default value is @code{hann}.
24894
24895 @item orientation
24896 Set orientation of time vs frequency axis. Can be @code{vertical} or
24897 @code{horizontal}. Default is @code{vertical}.
24898
24899 @item overlap
24900 Set ratio of overlap window. Default value is @code{0}.
24901 When value is @code{1} overlap is set to recommended size for specific
24902 window function currently used.
24903
24904 @item gain
24905 Set scale gain for calculating intensity color values.
24906 Default value is @code{1}.
24907
24908 @item data
24909 Set which data to display. Can be @code{magnitude}, default or @code{phase}.
24910
24911 @item rotation
24912 Set color rotation, must be in [-1.0, 1.0] range.
24913 Default value is @code{0}.
24914
24915 @item start
24916 Set start frequency from which to display spectrogram. Default is @code{0}.
24917
24918 @item stop
24919 Set stop frequency to which to display spectrogram. Default is @code{0}.
24920
24921 @item fps
24922 Set upper frame rate limit. Default is @code{auto}, unlimited.
24923
24924 @item legend
24925 Draw time and frequency axes and legends. Default is disabled.
24926 @end table
24927
24928 The usage is very similar to the showwaves filter; see the examples in that
24929 section.
24930
24931 @subsection Examples
24932
24933 @itemize
24934 @item
24935 Large window with logarithmic color scaling:
24936 @example
24937 showspectrum=s=1280x480:scale=log
24938 @end example
24939
24940 @item
24941 Complete example for a colored and sliding spectrum per channel using @command{ffplay}:
24942 @example
24943 ffplay -f lavfi 'amovie=input.mp3, asplit [a][out1];
24944              [a] showspectrum=mode=separate:color=intensity:slide=1:scale=cbrt [out0]'
24945 @end example
24946 @end itemize
24947
24948 @section showspectrumpic
24949
24950 Convert input audio to a single video frame, representing the audio frequency
24951 spectrum.
24952
24953 The filter accepts the following options:
24954
24955 @table @option
24956 @item size, s
24957 Specify the video size for the output. For the syntax of this option, check the
24958 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
24959 Default value is @code{4096x2048}.
24960
24961 @item mode
24962 Specify display mode.
24963
24964 It accepts the following values:
24965 @table @samp
24966 @item combined
24967 all channels are displayed in the same row
24968 @item separate
24969 all channels are displayed in separate rows
24970 @end table
24971 Default value is @samp{combined}.
24972
24973 @item color
24974 Specify display color mode.
24975
24976 It accepts the following values:
24977 @table @samp
24978 @item channel
24979 each channel is displayed in a separate color
24980 @item intensity
24981 each channel is displayed using the same color scheme
24982 @item rainbow
24983 each channel is displayed using the rainbow color scheme
24984 @item moreland
24985 each channel is displayed using the moreland color scheme
24986 @item nebulae
24987 each channel is displayed using the nebulae color scheme
24988 @item fire
24989 each channel is displayed using the fire color scheme
24990 @item fiery
24991 each channel is displayed using the fiery color scheme
24992 @item fruit
24993 each channel is displayed using the fruit color scheme
24994 @item cool
24995 each channel is displayed using the cool color scheme
24996 @item magma
24997 each channel is displayed using the magma color scheme
24998 @item green
24999 each channel is displayed using the green color scheme
25000 @item viridis
25001 each channel is displayed using the viridis color scheme
25002 @item plasma
25003 each channel is displayed using the plasma color scheme
25004 @item cividis
25005 each channel is displayed using the cividis color scheme
25006 @item terrain
25007 each channel is displayed using the terrain color scheme
25008 @end table
25009 Default value is @samp{intensity}.
25010
25011 @item scale
25012 Specify scale used for calculating intensity color values.
25013
25014 It accepts the following values:
25015 @table @samp
25016 @item lin
25017 linear
25018 @item sqrt
25019 square root, default
25020 @item cbrt
25021 cubic root
25022 @item log
25023 logarithmic
25024 @item 4thrt
25025 4th root
25026 @item 5thrt
25027 5th root
25028 @end table
25029 Default value is @samp{log}.
25030
25031 @item fscale
25032 Specify frequency scale.
25033
25034 It accepts the following values:
25035 @table @samp
25036 @item lin
25037 linear
25038 @item log
25039 logarithmic
25040 @end table
25041
25042 Default value is @samp{lin}.
25043
25044 @item saturation
25045 Set saturation modifier for displayed colors. Negative values provide
25046 alternative color scheme. @code{0} is no saturation at all.
25047 Saturation must be in [-10.0, 10.0] range.
25048 Default value is @code{1}.
25049
25050 @item win_func
25051 Set window function.
25052
25053 It accepts the following values:
25054 @table @samp
25055 @item rect
25056 @item bartlett
25057 @item hann
25058 @item hanning
25059 @item hamming
25060 @item blackman
25061 @item welch
25062 @item flattop
25063 @item bharris
25064 @item bnuttall
25065 @item bhann
25066 @item sine
25067 @item nuttall
25068 @item lanczos
25069 @item gauss
25070 @item tukey
25071 @item dolph
25072 @item cauchy
25073 @item parzen
25074 @item poisson
25075 @item bohman
25076 @end table
25077 Default value is @code{hann}.
25078
25079 @item orientation
25080 Set orientation of time vs frequency axis. Can be @code{vertical} or
25081 @code{horizontal}. Default is @code{vertical}.
25082
25083 @item gain
25084 Set scale gain for calculating intensity color values.
25085 Default value is @code{1}.
25086
25087 @item legend
25088 Draw time and frequency axes and legends. Default is enabled.
25089
25090 @item rotation
25091 Set color rotation, must be in [-1.0, 1.0] range.
25092 Default value is @code{0}.
25093
25094 @item start
25095 Set start frequency from which to display spectrogram. Default is @code{0}.
25096
25097 @item stop
25098 Set stop frequency to which to display spectrogram. Default is @code{0}.
25099 @end table
25100
25101 @subsection Examples
25102
25103 @itemize
25104 @item
25105 Extract an audio spectrogram of a whole audio track
25106 in a 1024x1024 picture using @command{ffmpeg}:
25107 @example
25108 ffmpeg -i audio.flac -lavfi showspectrumpic=s=1024x1024 spectrogram.png
25109 @end example
25110 @end itemize
25111
25112 @section showvolume
25113
25114 Convert input audio volume to a video output.
25115
25116 The filter accepts the following options:
25117
25118 @table @option
25119 @item rate, r
25120 Set video rate.
25121
25122 @item b
25123 Set border width, allowed range is [0, 5]. Default is 1.
25124
25125 @item w
25126 Set channel width, allowed range is [80, 8192]. Default is 400.
25127
25128 @item h
25129 Set channel height, allowed range is [1, 900]. Default is 20.
25130
25131 @item f
25132 Set fade, allowed range is [0, 1]. Default is 0.95.
25133
25134 @item c
25135 Set volume color expression.
25136
25137 The expression can use the following variables:
25138
25139 @table @option
25140 @item VOLUME
25141 Current max volume of channel in dB.
25142
25143 @item PEAK
25144 Current peak.
25145
25146 @item CHANNEL
25147 Current channel number, starting from 0.
25148 @end table
25149
25150 @item t
25151 If set, displays channel names. Default is enabled.
25152
25153 @item v
25154 If set, displays volume values. Default is enabled.
25155
25156 @item o
25157 Set orientation, can be horizontal: @code{h} or vertical: @code{v},
25158 default is @code{h}.
25159
25160 @item s
25161 Set step size, allowed range is [0, 5]. Default is 0, which means
25162 step is disabled.
25163
25164 @item p
25165 Set background opacity, allowed range is [0, 1]. Default is 0.
25166
25167 @item m
25168 Set metering mode, can be peak: @code{p} or rms: @code{r},
25169 default is @code{p}.
25170
25171 @item ds
25172 Set display scale, can be linear: @code{lin} or log: @code{log},
25173 default is @code{lin}.
25174
25175 @item dm
25176 In second.
25177 If set to > 0., display a line for the max level
25178 in the previous seconds.
25179 default is disabled: @code{0.}
25180
25181 @item dmc
25182 The color of the max line. Use when @code{dm} option is set to > 0.
25183 default is: @code{orange}
25184 @end table
25185
25186 @section showwaves
25187
25188 Convert input audio to a video output, representing the samples waves.
25189
25190 The filter accepts the following options:
25191
25192 @table @option
25193 @item size, s
25194 Specify the video size for the output. For the syntax of this option, check the
25195 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
25196 Default value is @code{600x240}.
25197
25198 @item mode
25199 Set display mode.
25200
25201 Available values are:
25202 @table @samp
25203 @item point
25204 Draw a point for each sample.
25205
25206 @item line
25207 Draw a vertical line for each sample.
25208
25209 @item p2p
25210 Draw a point for each sample and a line between them.
25211
25212 @item cline
25213 Draw a centered vertical line for each sample.
25214 @end table
25215
25216 Default value is @code{point}.
25217
25218 @item n
25219 Set the number of samples which are printed on the same column. A
25220 larger value will decrease the frame rate. Must be a positive
25221 integer. This option can be set only if the value for @var{rate}
25222 is not explicitly specified.
25223
25224 @item rate, r
25225 Set the (approximate) output frame rate. This is done by setting the
25226 option @var{n}. Default value is "25".
25227
25228 @item split_channels
25229 Set if channels should be drawn separately or overlap. Default value is 0.
25230
25231 @item colors
25232 Set colors separated by '|' which are going to be used for drawing of each channel.
25233
25234 @item scale
25235 Set amplitude scale.
25236
25237 Available values are:
25238 @table @samp
25239 @item lin
25240 Linear.
25241
25242 @item log
25243 Logarithmic.
25244
25245 @item sqrt
25246 Square root.
25247
25248 @item cbrt
25249 Cubic root.
25250 @end table
25251
25252 Default is linear.
25253
25254 @item draw
25255 Set the draw mode. This is mostly useful to set for high @var{n}.
25256
25257 Available values are:
25258 @table @samp
25259 @item scale
25260 Scale pixel values for each drawn sample.
25261
25262 @item full
25263 Draw every sample directly.
25264 @end table
25265
25266 Default value is @code{scale}.
25267 @end table
25268
25269 @subsection Examples
25270
25271 @itemize
25272 @item
25273 Output the input file audio and the corresponding video representation
25274 at the same time:
25275 @example
25276 amovie=a.mp3,asplit[out0],showwaves[out1]
25277 @end example
25278
25279 @item
25280 Create a synthetic signal and show it with showwaves, forcing a
25281 frame rate of 30 frames per second:
25282 @example
25283 aevalsrc=sin(1*2*PI*t)*sin(880*2*PI*t):cos(2*PI*200*t),asplit[out0],showwaves=r=30[out1]
25284 @end example
25285 @end itemize
25286
25287 @section showwavespic
25288
25289 Convert input audio to a single video frame, representing the samples waves.
25290
25291 The filter accepts the following options:
25292
25293 @table @option
25294 @item size, s
25295 Specify the video size for the output. For the syntax of this option, check the
25296 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
25297 Default value is @code{600x240}.
25298
25299 @item split_channels
25300 Set if channels should be drawn separately or overlap. Default value is 0.
25301
25302 @item colors
25303 Set colors separated by '|' which are going to be used for drawing of each channel.
25304
25305 @item scale
25306 Set amplitude scale.
25307
25308 Available values are:
25309 @table @samp
25310 @item lin
25311 Linear.
25312
25313 @item log
25314 Logarithmic.
25315
25316 @item sqrt
25317 Square root.
25318
25319 @item cbrt
25320 Cubic root.
25321 @end table
25322
25323 Default is linear.
25324
25325 @item draw
25326 Set the draw mode.
25327
25328 Available values are:
25329 @table @samp
25330 @item scale
25331 Scale pixel values for each drawn sample.
25332
25333 @item full
25334 Draw every sample directly.
25335 @end table
25336
25337 Default value is @code{scale}.
25338 @end table
25339
25340 @subsection Examples
25341
25342 @itemize
25343 @item
25344 Extract a channel split representation of the wave form of a whole audio track
25345 in a 1024x800 picture using @command{ffmpeg}:
25346 @example
25347 ffmpeg -i audio.flac -lavfi showwavespic=split_channels=1:s=1024x800 waveform.png
25348 @end example
25349 @end itemize
25350
25351 @section sidedata, asidedata
25352
25353 Delete frame side data, or select frames based on it.
25354
25355 This filter accepts the following options:
25356
25357 @table @option
25358 @item mode
25359 Set mode of operation of the filter.
25360
25361 Can be one of the following:
25362
25363 @table @samp
25364 @item select
25365 Select every frame with side data of @code{type}.
25366
25367 @item delete
25368 Delete side data of @code{type}. If @code{type} is not set, delete all side
25369 data in the frame.
25370
25371 @end table
25372
25373 @item type
25374 Set side data type used with all modes. Must be set for @code{select} mode. For
25375 the list of frame side data types, refer to the @code{AVFrameSideDataType} enum
25376 in @file{libavutil/frame.h}. For example, to choose
25377 @code{AV_FRAME_DATA_PANSCAN} side data, you must specify @code{PANSCAN}.
25378
25379 @end table
25380
25381 @section spectrumsynth
25382
25383 Synthesize audio from 2 input video spectrums, first input stream represents
25384 magnitude across time and second represents phase across time.
25385 The filter will transform from frequency domain as displayed in videos back
25386 to time domain as presented in audio output.
25387
25388 This filter is primarily created for reversing processed @ref{showspectrum}
25389 filter outputs, but can synthesize sound from other spectrograms too.
25390 But in such case results are going to be poor if the phase data is not
25391 available, because in such cases phase data need to be recreated, usually
25392 it's just recreated from random noise.
25393 For best results use gray only output (@code{channel} color mode in
25394 @ref{showspectrum} filter) and @code{log} scale for magnitude video and
25395 @code{lin} scale for phase video. To produce phase, for 2nd video, use
25396 @code{data} option. Inputs videos should generally use @code{fullframe}
25397 slide mode as that saves resources needed for decoding video.
25398
25399 The filter accepts the following options:
25400
25401 @table @option
25402 @item sample_rate
25403 Specify sample rate of output audio, the sample rate of audio from which
25404 spectrum was generated may differ.
25405
25406 @item channels
25407 Set number of channels represented in input video spectrums.
25408
25409 @item scale
25410 Set scale which was used when generating magnitude input spectrum.
25411 Can be @code{lin} or @code{log}. Default is @code{log}.
25412
25413 @item slide
25414 Set slide which was used when generating inputs spectrums.
25415 Can be @code{replace}, @code{scroll}, @code{fullframe} or @code{rscroll}.
25416 Default is @code{fullframe}.
25417
25418 @item win_func
25419 Set window function used for resynthesis.
25420
25421 @item overlap
25422 Set window overlap. In range @code{[0, 1]}. Default is @code{1},
25423 which means optimal overlap for selected window function will be picked.
25424
25425 @item orientation
25426 Set orientation of input videos. Can be @code{vertical} or @code{horizontal}.
25427 Default is @code{vertical}.
25428 @end table
25429
25430 @subsection Examples
25431
25432 @itemize
25433 @item
25434 First create magnitude and phase videos from audio, assuming audio is stereo with 44100 sample rate,
25435 then resynthesize videos back to audio with spectrumsynth:
25436 @example
25437 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
25438 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
25439 ffmpeg -i magnitude.nut -i phase.nut -lavfi spectrumsynth=channels=2:sample_rate=44100:win_func=hann:overlap=0.875:slide=fullframe output.flac
25440 @end example
25441 @end itemize
25442
25443 @section split, asplit
25444
25445 Split input into several identical outputs.
25446
25447 @code{asplit} works with audio input, @code{split} with video.
25448
25449 The filter accepts a single parameter which specifies the number of outputs. If
25450 unspecified, it defaults to 2.
25451
25452 @subsection Examples
25453
25454 @itemize
25455 @item
25456 Create two separate outputs from the same input:
25457 @example
25458 [in] split [out0][out1]
25459 @end example
25460
25461 @item
25462 To create 3 or more outputs, you need to specify the number of
25463 outputs, like in:
25464 @example
25465 [in] asplit=3 [out0][out1][out2]
25466 @end example
25467
25468 @item
25469 Create two separate outputs from the same input, one cropped and
25470 one padded:
25471 @example
25472 [in] split [splitout1][splitout2];
25473 [splitout1] crop=100:100:0:0    [cropout];
25474 [splitout2] pad=200:200:100:100 [padout];
25475 @end example
25476
25477 @item
25478 Create 5 copies of the input audio with @command{ffmpeg}:
25479 @example
25480 ffmpeg -i INPUT -filter_complex asplit=5 OUTPUT
25481 @end example
25482 @end itemize
25483
25484 @section zmq, azmq
25485
25486 Receive commands sent through a libzmq client, and forward them to
25487 filters in the filtergraph.
25488
25489 @code{zmq} and @code{azmq} work as a pass-through filters. @code{zmq}
25490 must be inserted between two video filters, @code{azmq} between two
25491 audio filters. Both are capable to send messages to any filter type.
25492
25493 To enable these filters you need to install the libzmq library and
25494 headers and configure FFmpeg with @code{--enable-libzmq}.
25495
25496 For more information about libzmq see:
25497 @url{http://www.zeromq.org/}
25498
25499 The @code{zmq} and @code{azmq} filters work as a libzmq server, which
25500 receives messages sent through a network interface defined by the
25501 @option{bind_address} (or the abbreviation "@option{b}") option.
25502 Default value of this option is @file{tcp://localhost:5555}. You may
25503 want to alter this value to your needs, but do not forget to escape any
25504 ':' signs (see @ref{filtergraph escaping}).
25505
25506 The received message must be in the form:
25507 @example
25508 @var{TARGET} @var{COMMAND} [@var{ARG}]
25509 @end example
25510
25511 @var{TARGET} specifies the target of the command, usually the name of
25512 the filter class or a specific filter instance name. The default
25513 filter instance name uses the pattern @samp{Parsed_<filter_name>_<index>},
25514 but you can override this by using the @samp{filter_name@@id} syntax
25515 (see @ref{Filtergraph syntax}).
25516
25517 @var{COMMAND} specifies the name of the command for the target filter.
25518
25519 @var{ARG} is optional and specifies the optional argument list for the
25520 given @var{COMMAND}.
25521
25522 Upon reception, the message is processed and the corresponding command
25523 is injected into the filtergraph. Depending on the result, the filter
25524 will send a reply to the client, adopting the format:
25525 @example
25526 @var{ERROR_CODE} @var{ERROR_REASON}
25527 @var{MESSAGE}
25528 @end example
25529
25530 @var{MESSAGE} is optional.
25531
25532 @subsection Examples
25533
25534 Look at @file{tools/zmqsend} for an example of a zmq client which can
25535 be used to send commands processed by these filters.
25536
25537 Consider the following filtergraph generated by @command{ffplay}.
25538 In this example the last overlay filter has an instance name. All other
25539 filters will have default instance names.
25540
25541 @example
25542 ffplay -dumpgraph 1 -f lavfi "
25543 color=s=100x100:c=red  [l];
25544 color=s=100x100:c=blue [r];
25545 nullsrc=s=200x100, zmq [bg];
25546 [bg][l]   overlay     [bg+l];
25547 [bg+l][r] overlay@@my=x=100 "
25548 @end example
25549
25550 To change the color of the left side of the video, the following
25551 command can be used:
25552 @example
25553 echo Parsed_color_0 c yellow | tools/zmqsend
25554 @end example
25555
25556 To change the right side:
25557 @example
25558 echo Parsed_color_1 c pink | tools/zmqsend
25559 @end example
25560
25561 To change the position of the right side:
25562 @example
25563 echo overlay@@my x 150 | tools/zmqsend
25564 @end example
25565
25566
25567 @c man end MULTIMEDIA FILTERS
25568
25569 @chapter Multimedia Sources
25570 @c man begin MULTIMEDIA SOURCES
25571
25572 Below is a description of the currently available multimedia sources.
25573
25574 @section amovie
25575
25576 This is the same as @ref{movie} source, except it selects an audio
25577 stream by default.
25578
25579 @anchor{movie}
25580 @section movie
25581
25582 Read audio and/or video stream(s) from a movie container.
25583
25584 It accepts the following parameters:
25585
25586 @table @option
25587 @item filename
25588 The name of the resource to read (not necessarily a file; it can also be a
25589 device or a stream accessed through some protocol).
25590
25591 @item format_name, f
25592 Specifies the format assumed for the movie to read, and can be either
25593 the name of a container or an input device. If not specified, the
25594 format is guessed from @var{movie_name} or by probing.
25595
25596 @item seek_point, sp
25597 Specifies the seek point in seconds. The frames will be output
25598 starting from this seek point. The parameter is evaluated with
25599 @code{av_strtod}, so the numerical value may be suffixed by an IS
25600 postfix. The default value is "0".
25601
25602 @item streams, s
25603 Specifies the streams to read. Several streams can be specified,
25604 separated by "+". The source will then have as many outputs, in the
25605 same order. The syntax is explained in the @ref{Stream specifiers,,"Stream specifiers"
25606 section in the ffmpeg manual,ffmpeg}. Two special names, "dv" and "da" specify
25607 respectively the default (best suited) video and audio stream. Default
25608 is "dv", or "da" if the filter is called as "amovie".
25609
25610 @item stream_index, si
25611 Specifies the index of the video stream to read. If the value is -1,
25612 the most suitable video stream will be automatically selected. The default
25613 value is "-1". Deprecated. If the filter is called "amovie", it will select
25614 audio instead of video.
25615
25616 @item loop
25617 Specifies how many times to read the stream in sequence.
25618 If the value is 0, the stream will be looped infinitely.
25619 Default value is "1".
25620
25621 Note that when the movie is looped the source timestamps are not
25622 changed, so it will generate non monotonically increasing timestamps.
25623
25624 @item discontinuity
25625 Specifies the time difference between frames above which the point is
25626 considered a timestamp discontinuity which is removed by adjusting the later
25627 timestamps.
25628 @end table
25629
25630 It allows overlaying a second video on top of the main input of
25631 a filtergraph, as shown in this graph:
25632 @example
25633 input -----------> deltapts0 --> overlay --> output
25634                                     ^
25635                                     |
25636 movie --> scale--> deltapts1 -------+
25637 @end example
25638 @subsection Examples
25639
25640 @itemize
25641 @item
25642 Skip 3.2 seconds from the start of the AVI file in.avi, and overlay it
25643 on top of the input labelled "in":
25644 @example
25645 movie=in.avi:seek_point=3.2, scale=180:-1, setpts=PTS-STARTPTS [over];
25646 [in] setpts=PTS-STARTPTS [main];
25647 [main][over] overlay=16:16 [out]
25648 @end example
25649
25650 @item
25651 Read from a video4linux2 device, and overlay it on top of the input
25652 labelled "in":
25653 @example
25654 movie=/dev/video0:f=video4linux2, scale=180:-1, setpts=PTS-STARTPTS [over];
25655 [in] setpts=PTS-STARTPTS [main];
25656 [main][over] overlay=16:16 [out]
25657 @end example
25658
25659 @item
25660 Read the first video stream and the audio stream with id 0x81 from
25661 dvd.vob; the video is connected to the pad named "video" and the audio is
25662 connected to the pad named "audio":
25663 @example
25664 movie=dvd.vob:s=v:0+#0x81 [video] [audio]
25665 @end example
25666 @end itemize
25667
25668 @subsection Commands
25669
25670 Both movie and amovie support the following commands:
25671 @table @option
25672 @item seek
25673 Perform seek using "av_seek_frame".
25674 The syntax is: seek @var{stream_index}|@var{timestamp}|@var{flags}
25675 @itemize
25676 @item
25677 @var{stream_index}: If stream_index is -1, a default
25678 stream is selected, and @var{timestamp} is automatically converted
25679 from AV_TIME_BASE units to the stream specific time_base.
25680 @item
25681 @var{timestamp}: Timestamp in AVStream.time_base units
25682 or, if no stream is specified, in AV_TIME_BASE units.
25683 @item
25684 @var{flags}: Flags which select direction and seeking mode.
25685 @end itemize
25686
25687 @item get_duration
25688 Get movie duration in AV_TIME_BASE units.
25689
25690 @end table
25691
25692 @c man end MULTIMEDIA SOURCES